diff --git a/build/Android.mk b/build/Android.mk
index e4eeb0a..c65ca9c 100644
--- a/build/Android.mk
+++ b/build/Android.mk
@@ -1,3 +1,39 @@
+# ===== SDK source.property files =====
+
+# Add all files to be generated from the source.prop templates to the SDK pre-requisites
+ALL_SDK_FILES += $(patsubst \
+                   $(TOPDIR)development/sdk/%_source.prop_template, \
+                   $(HOST_OUT)/development/sdk/%_source.properties, \
+                   $(wildcard $(TOPDIR)development/sdk/*_source.prop_template)) \
+                 $(patsubst \
+                   $(TOPDIR)development/samples/%_source.prop_template, \
+                   $(HOST_OUT)/development/samples/%_source.properties, \
+                   $(wildcard $(TOPDIR)development/samples/*_source.prop_template))
+
+# Rule to convert a source.prop template into the desired source.property
+# Rewritten variables:
+# - ${PLATFORM_VERSION}          e.g. "1.0"
+# - ${PLATFORM_SDK_VERSION}      e.g. "3", aka the API level
+# - ${PLATFORM_VERSION_CODENAME} e.g. "REL" (transformed into "") or "Cupcake"
+$(HOST_OUT)/development/sdk/%_source.properties : $(TOPDIR)development/sdk/%_source.prop_template
+	@echo Generate $@
+	$(hide) mkdir -p $(dir $@)
+	$(hide) sed -e 's/$${PLATFORM_VERSION}/$(PLATFORM_VERSION)/' \
+		 -e 's/$${PLATFORM_SDK_VERSION}/$(PLATFORM_SDK_VERSION)/' \
+		 -e 's/$${PLATFORM_VERSION_CODENAME}/$(subst REL,,$(PLATFORM_VERSION_CODENAME))/' \
+		 $< > $@ && sed -i -e '/^AndroidVersion.CodeName=\s*$$/d' $@
+
+$(HOST_OUT)/development/samples/%_source.properties : $(TOPDIR)development/samples/%_source.prop_template
+	@echo Generate $@
+	$(hide) mkdir -p $(dir $@)
+	$(hide) sed -e 's/$${PLATFORM_VERSION}/$(PLATFORM_VERSION)/' \
+		 -e 's/$${PLATFORM_SDK_VERSION}/$(PLATFORM_SDK_VERSION)/' \
+		 -e 's/$${PLATFORM_VERSION_CODENAME}/$(subst REL,,$(PLATFORM_VERSION_CODENAME))/' \
+		 $< > $@ && sed -i -e '/^AndroidVersion.CodeName=\s*$$/d' $@
+
+
+# ===== Android Support/Compatibility Library =====
+
 LOCAL_PATH := $(call my-dir)
 
 # The source files for this library are _all_ generated, something we don't do
diff --git a/build/product_sdk.mk b/build/product_sdk.mk
new file mode 100644
index 0000000..ad82778
--- /dev/null
+++ b/build/product_sdk.mk
@@ -0,0 +1,53 @@
+#
+# Copyright (C) 2012 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+
+#
+# This file is included by build.git/target/product/sdk.mk
+# to define the tools that needed to be built and included
+# in an SDK.
+#
+# If you add a dependency here, you will want to then
+# modify build/tools.atree to have the new files
+# packaged in the SDK.
+#
+
+# Host tools and java libraries that are parts of the SDK.
+PRODUCT_PACKAGES += \
+	adb \
+	bios.bin \
+	commons-compress-1.0 \
+	dexdump \
+	dmtracedump \
+	emmalib \
+	etc1tool \
+	groovy-all-1.7.0 \
+	guava-tools \
+	hprof-conv \
+	jcommon-1.0.12 \
+	jfreechart-1.0.9 \
+	jfreechart-1.0.9-swt \
+	jython \
+	layoutlib \
+	layoutlib-tests \
+	org.eclipse.jface_3.6.2.M20110210-1200 \
+	org.eclipse.equinox.common_3.6.0.v20100503 \
+	org.eclipse.core.commands_3.6.0.I20100512-1500 \
+	osgi \
+	swing-worker-1.1 \
+	vgabios-cirrus.bin
+
+:qa!
diff --git a/build/sdk-darwin-x86.atree b/build/sdk-darwin-x86.atree
index 2460d5d..118ed1c 100644
--- a/build/sdk-darwin-x86.atree
+++ b/build/sdk-darwin-x86.atree
@@ -15,27 +15,9 @@
 #
 
 ##############################################################################
-# Platform Tools Component
+# Docs Component
 ##############################################################################
 
-
-
-##############################################################################
-# Tools Component
-# Legacy: this should be moved to sdk/build/tools.atree
-##############################################################################
-
-# swt
-prebuilt/darwin-x86/swt/swt.jar tools/lib/x86/swt.jar
-prebuilt/darwin-x86_64/swt/swt.jar tools/lib/x86_64/swt.jar
-
-
-# JetCreator (only available on mac/windows)
-external/sonivox/jet_tools/JetCreator tools/Jet/JetCreator
-prebuilt/darwin-x86/jetcreator/libEASLIb.dylib tools/Jet/JetCreator/libEASLIb.dylib
-external/sonivox/jet_tools/JetCreator_content tools/Jet/demo_content
-external/sonivox/jet_tools/logic_templates tools/Jet/logic_templates
-
 external/sonivox/docs/JET_Authoring_Guidelines.html docs/JetCreator/JET_Authoring_Guidelines.html
 external/sonivox/docs/JET_Authoring_Guidelines_files docs/JetCreator/JET_Authoring_Guidelines_files
 external/sonivox/docs/JET_Creator_User_Manual.html docs/JetCreator/JET_Creator_User_Manual.html
diff --git a/build/sdk-linux-x86.atree b/build/sdk-linux-x86.atree
index 1a9a890..e21785e 100644
--- a/build/sdk-linux-x86.atree
+++ b/build/sdk-linux-x86.atree
@@ -14,17 +14,4 @@
 # limitations under the License.
 #
 
-##############################################################################
-# Platform Tools Component
-##############################################################################
 
-
-
-##############################################################################
-# Tools Component
-# Legacy: this should be moved to sdk/build/tools.atree
-##############################################################################
-
-# swt
-prebuilt/linux-x86/swt/swt.jar tools/lib/x86/swt.jar
-prebuilt/linux-x86_64/swt/swt.jar tools/lib/x86_64/swt.jar
diff --git a/build/sdk-windows-x86.atree b/build/sdk-windows-x86.atree
index 3144b27..2eee75d 100644
--- a/build/sdk-windows-x86.atree
+++ b/build/sdk-windows-x86.atree
@@ -48,13 +48,6 @@
 rm platform-tools/llvm-rs-cc
 bin/llvm-rs-cc.exe                      strip platform-tools/llvm-rs-cc.exe
 
-prebuilt/windows/swt/swt.jar                  tools/lib/x86/swt.jar
-prebuilt/windows-x86_64/swt/swt.jar           tools/lib/x86_64/swt.jar
-
-external/sonivox/jet_tools/JetCreator                 tools/Jet/JetCreator
-external/sonivox/jet_tools/JetCreator_content         tools/Jet/demo_content
-external/sonivox/jet_tools/logic_templates            tools/Jet/logic_templates
-prebuilt/windows/jetcreator/EASDLL.dll                tools/Jet/JetCreator/EASDLL.dll
 external/sonivox/docs/JET_Authoring_Guidelines.html   docs/JetCreator/JET_Authoring_Guidelines.html
 external/sonivox/docs/JET_Authoring_Guidelines_files  docs/JetCreator/JET_Authoring_Guidelines_files
 external/sonivox/docs/JET_Creator_User_Manual.html    docs/JetCreator/JET_Creator_User_Manual.html
diff --git a/build/sdk.atree b/build/sdk.atree
index 323ffcf..b0d6642 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -56,12 +56,15 @@
 external/clang/lib/Headers                    platform-tools/renderscript/clang-include
 external/clang/LICENSE.TXT                    platform-tools/renderscript/clang-include/LICENSE.TXT
 
+# API database for tools such as lint
+development/sdk/api-versions.xml              platform-tools/api/api-versions.xml
+
 ##############################################################################
 # Platform Component
 ##############################################################################
 
 # version files for the SDK updater, from development.git
-development/sdk/platform_source.properties    platforms/${PLATFORM_NAME}/source.properties
+${HOST_OUT}/development/sdk/platform_source.properties platforms/${PLATFORM_NAME}/source.properties
 
 # copy build prop from out/.../sdk/
 sdk/sdk-build.prop                            platforms/${PLATFORM_NAME}/build.prop
@@ -132,7 +135,7 @@
 ##############################################################################
 
 # version files for the SDK updater, from sdk.git
-development/sdk/doc_source.properties docs/source.properties
+${HOST_OUT}/development/sdk/doc_source.properties docs/source.properties
 
 # the docs
 docs/offline-sdk docs
@@ -147,8 +150,8 @@
 #
 # the list here should match the list of samples that we generate docs for,
 # (see web_docs_sample_code_flags in frameworks/base/Android.mk)
-development/apps/GestureBuilder              samples/${PLATFORM_NAME}/GestureBuilder
-development/samples/source.properties        samples/${PLATFORM_NAME}/source.properties
+development/apps/GestureBuilder                samples/${PLATFORM_NAME}/GestureBuilder
+development/samples/samples_source.properties  samples/${PLATFORM_NAME}/source.properties
 #
 # PLEASE KEEP THE SAMPLES IN ALPHABETICAL ORDER.
 #
@@ -156,6 +159,7 @@
 development/samples/ActionBarCompat            samples/${PLATFORM_NAME}/ActionBarCompat
 development/samples/AndroidBeamDemo            samples/${PLATFORM_NAME}/AndroidBeamDemo
 development/samples/ApiDemos                   samples/${PLATFORM_NAME}/ApiDemos
+development/samples/AppNavigation              samples/${PLATFORM_NAME}/AppNavigation
 development/samples/BackupRestore              samples/${PLATFORM_NAME}/BackupRestore
 development/samples/BasicGLSurfaceView         samples/${PLATFORM_NAME}/BasicGLSurfaceView
 development/samples/BluetoothChat              samples/${PLATFORM_NAME}/BluetoothChat
@@ -221,10 +225,13 @@
 sdk/files/sdk_files_NOTICE.txt                                                                    extras/android/support/NOTICE.txt
 ${OUT_DIR}/target/common/obj/PACKAGING/android-support-v4_intermediates/android-support-v4.jar    extras/android/support/v4/android-support-v4.jar
 frameworks/support/v4                                                                             extras/android/support/v4/src
-development/samples/Support4Demos                                                                 extras/android/support/v4/samples/Support4Demos
+development/samples/Support4Demos                                                                 extras/android/support/samples/Support4Demos
+
 ${OUT_DIR}/target/common/obj/PACKAGING/android-support-v13_intermediates/android-support-v13.jar  extras/android/support/v13/android-support-v13.jar
 frameworks/support/v13                                                                            extras/android/support/v13/src
-development/samples/Support13Demos                                                                extras/android/support/v13/samples/Support13Demos
+development/samples/Support13Demos                                                                extras/android/support/samples/Support13Demos
+
+development/sdk/prebuilt/v7                                                                       extras/android/support/v7
 
 ##############################################################################
 # Tests Component
diff --git a/build/sdk_only_whitelist.mk b/build/sdk_only_whitelist.mk
new file mode 100644
index 0000000..ed27792
--- /dev/null
+++ b/build/sdk_only_whitelist.mk
@@ -0,0 +1,69 @@
+# Whitelist of SDK projects that can be built for the SDK on Windows
+
+# The Windows SDK cannot build all the projects from the SDK tree, typically
+# due to obvious compiler/architectures differences. When building the Windows
+# SDK, we only care about a subset of projects (e.g. generally the SDK tools
+# and a few platform-specific binaries.)
+#
+# This file defines a whitelist of projects that can be built in the Windows
+# SDK case. Note that whitelisting a project directory will NOT actually build
+# it -- it will only allow one to reference it as a make dependency.
+#
+# This file is included by build/core/main.mk.
+
+# Note that there are 2 flavors of this file:
+#
+# - The other file: sdk/build/sdk_only_whitelist.mk
+#   must list all projects that are that are NOT specific to a given platform.
+#   These binaries are the ones typically found in the SDK/tools directory.
+#
+# - This file: development/build/sdk_only_whitelist.mk
+#   must list all projects that are specific to a given platform. These
+#   projects generate files that are generally locates in SDK/platform-tools,
+#   or SDK/platforms/, etc.
+
+# -----
+# Whitelist of platform specific projects that do NOT need Java (e.g. C libraries)
+
+subdirs += \
+	prebuilt \
+	prebuilts \
+	build/libs/host \
+	build/tools/zipalign \
+	dalvik/dexdump \
+	dalvik/libdex \
+	dalvik/tools/dmtracedump \
+	dalvik/tools/hprof-conv \
+	development/host \
+	development/tools/etc1tool \
+	development/tools/line_endings \
+	external/clang \
+	external/easymock \
+	external/expat \
+	external/libpng \
+	external/llvm \
+	external/sqlite/dist \
+	external/zlib \
+	frameworks/base \
+	frameworks/compile \
+	system/core/adb \
+	system/core/fastboot \
+	system/core/libcutils \
+	system/core/liblog \
+	system/core/libzipfile
+
+# -----
+# Whitelist of platform specific projects that DO require Java
+
+ifneq (,$(shell which javac 2>/dev/null))
+subdirs += \
+	build/tools/signapk \
+	dalvik/dx \
+	libcore \
+	development/apps \
+	development/tools/mkstubs \
+	packages
+
+else
+$(warning SDK_ONLY: javac not available.)
+endif
diff --git a/build/tools/mk_sdk_repo_xml.sh b/build/tools/mk_sdk_repo_xml.sh
index a97ecaf..298671d 100755
--- a/build/tools/mk_sdk_repo_xml.sh
+++ b/build/tools/mk_sdk_repo_xml.sh
@@ -12,6 +12,10 @@
 TMP_DIR=$(mktemp -d -t sdkrepo.tmp.XXXXXXXX)
 trap "rm -rf $TMP_DIR" EXIT
 
+function debug() {
+  echo "DEBUG: " $@ > /dev/stderr
+}
+
 function error() {
   echo "*** ERROR: " $@
   usage
@@ -21,6 +25,7 @@
   cat <<EOFU
 Usage: $0 output.xml xml-schema [type [os zip[:dest]]*...]*
 where:
+- schema is one of 'repository' or 'addon'
 - type is one of ${TYPES// /, } (or their plural).
 - os   is one of  ${OSES// /, }.
 There can be more than one zip for the same type
@@ -40,15 +45,20 @@
 [[ -z "$OUT" ]] && error "Missing output.xml name."
 shift
 
+# Get the schema type. Must be either "repository" or "addon".
 SCHEMA="$1"
 [[ ! -f "$SCHEMA" ]] && error "Invalid XML schema name: $SCHEMA."
 shift
 
 # Get XML:NS for SDK from the schema
+# This will be something like "http://schemas.android.com/sdk/android/addon/3"
 XMLNS=$(sed -n '/xmlns:sdk="/s/.*"\(.*\)".*/\1/p' "$SCHEMA")
 [[ -z "$XMLNS" ]] && error "Failed to find xmlns:sdk in $SCHEMA."
 echo "## Using xmlns:sdk=$XMLNS"
 
+# Extract the schema version number from the XMLNS, e.g. it would extract "3"
+XSD_VERSION="${XMLNS##*/}"
+
 # Get the root element from the schema. This is the first element
 # which name starts with "sdk-" (e.g. sdk-repository, sdk-addon)
 ROOT=$(sed -n -e '/xsd:element.*name="sdk-/s/.*name="\(sdk-[^"]*\)".*/\1/p' "$SCHEMA")
@@ -77,72 +87,197 @@
   done
 }
 
-# Parse all archives.
+# Definition of the attributes we read from source.properties or manifest.ini
+# files and the equivalent XML element being generated.
 
 ATTRS=(
-  # for repository packages
-  Pkg.Revision                  revision
-  Pkg.Desc                      description
-  Platform.Version              version
-  AndroidVersion.ApiLevel       api-level
-  AndroidVersion.CodeName       codename
-  Platform.IncludedAbi          included-abi
-  Platform.MinToolsRev          min-tools-rev
-  Platform.MinPlatformToolsRev  min-platform-tools-rev
-  Extra.Vendor                  vendor
-  Extra.Path                    path
-  Extra.OldPaths                old-paths
-  Extra.MinApiLevel             min-api-level
-  Sample.MinApiLevel            min-api-level
-  SystemImage.Abi               abi
-  Layoutlib.Api                 layoutlib/api
-  Layoutlib.Revision            layoutlib/revision
-  # for addon packages
-  vendor                        vendor
-  name                          name
-  description                   description
-  api                           api-level
-  version                       revision
-  revision                      revision
+  # Columns:
+  # --------------------------+------------------------+----------------------
+  # Name read from            | XML element written    | Min-XSD version
+  # source.properties         | to repository.xml      | where XML can be used
+  # --------------------------+------------------------+----------------------
+  # from source.properties for repository.xml packages
+  Pkg.Revision                  revision                 1
+  Pkg.Desc                      description              1
+  Platform.Version              version                  1
+  AndroidVersion.ApiLevel       api-level                1
+  AndroidVersion.CodeName       codename                 1
+  Platform.IncludedAbi          included-abi             5
+  Platform.MinToolsRev          min-tools-rev            1
+  Platform.MinPlatformToolsRev  min-platform-tools-rev   3
+  Sample.MinApiLevel            min-api-level            2
+  SystemImage.Abi               abi                      5
+  Layoutlib.Api                 layoutlib/api            4
+  Layoutlib.Revision            layoutlib/revision       4
+  # from source.properties for addon.xml packages
+  # (note that vendor is mapped to different XML elements based on the XSD version)
+  Extra.VendorDisplay           vendor-display           4
+  Extra.VendorId                vendor-id                4
+  Extra.Vendor                  vendor-id                4
+  Extra.Vendor                  vendor                   1
+  Extra.NameDisplay             name-display             4
+  Extra.Path                    path                     1
+  Extra.OldPaths                old-paths                3
+  Extra.MinApiLevel             min-api-level            2
+  # from addon manifest.ini for addon.xml packages
+  # (note that vendor/name are mapped to different XML elements based on the XSD version)
+  vendor-id                     vendor-id                4
+  vendor-display                vendor-display           4
+  vendor                        vendor-display           4
+  vendor                        vendor                   1
+  name-id                       name-id                  4
+  name-display                  name-display             4
+  name                          name-display             4
+  name                          name                     1
+  description                   description              1
+  api                           api-level                1
+  version                       revision                 1
+  revision                      revision                 1
 )
 
+
+# Starting with XSD repo-7 and addon-5, some revision elements are no longer just
+# integers. Instead they are in major.minor.micro.preview format. This defines
+# which elements. This depends on the XSD root element and the XSD version.
+
+if [[ "$ROOT" == "sdk-repository" && "$XSD_VERSION" -ge 7 ]] ||
+   [[ "$ROOT" == "sdk-addon"      && "$XSD_VERSION" -ge 5 ]]; then
+FULL_REVISIONS=(
+  tool          revision
+  platform-tool revision
+  @             min-tools-rev
+  @             min-platform-tools-rev
+)
+else
+FULL_REVISIONS=()
+fi
+
+
+# Parse all archives.
+
+function needs_full_revision() {
+  local PARENT="$1"
+  local ELEMENT="$2"
+  shift
+  shift
+  local P E
+
+  while [[ "$1" ]]; do
+    P=$1
+    E=$2
+    if [[ "$E" == "$ELEMENT" ]] && [[ "$P" == "@" || "$P" == "$PARENT" ]]; then
+      return 0 # true
+    fi
+    shift
+    shift
+  done
+
+  return 1 # false
+}
+
+# Parses and print a full revision in the form "1.2.3 rc4".
+# Note that the format requires to have a # space before the
+# optional "rc" (e.g. '1 rc4', not '1rc4') and no space after
+# the rc (so not '1 rc 4' either)
+function write_full_revision() {
+  local VALUE="$1"
+  local EXTRA_SPACE="$2"
+  local KEYS="major minor micro preview"
+  local V K
+
+  while [[ -n "$VALUE" && -n "$KEYS" ]]; do
+    # Take 1st segment delimited by . or space
+    V="${VALUE%%[. ]*}"
+
+    # Print it
+    if [[ "${V:0:2}" == "rc" ]]; then
+      V="${V:2}"
+      K="preview"
+      KEYS=""
+    else
+      K="${KEYS%% *}"
+    fi
+
+    if [[ -n "$V" && -n "$K" ]]; then
+        echo "$EXTRA_SPACE            <sdk:$K>$V</sdk:$K>"
+    fi
+
+    # Take the rest.
+    K="${KEYS#* }"
+    if [[ "$K" == "$KEYS" ]]; then KEYS=""; else KEYS="$K"; fi
+    V="${VALUE#*[. ]}"
+    if [[ "$V" == "$VALUE" ]]; then VALUE=""; else VALUE="$V"; fi
+  done
+}
+
+
 function parse_attributes() {
   local PROPS="$1"
   shift
   local RESULT=""
   local VALUE
+  local REV
+  local USED
 
+  # $1 here is the ATTRS list above.
   while [[ "$1" ]]; do
-    # Parse the property, if present. Any space is replaced by @
-    VALUE=$( grep "^$1=" "$PROPS" | cut -d = -f 2 | tr ' ' '@' | tr -d '\r' )
-    if [[ -n "$VALUE" ]]; then
-      RESULT="$RESULT $2 $VALUE"
+    # Check the version in which the attribute was introduced and
+    # ignore things which are too *new* for this schema. This lets
+    # us generate old schemas for backward compatibility purposes.
+    SRC=$1
+    DST=$2
+    REV=$3
+
+    if [[ $XSD_VERSION -ge $REV ]]; then
+      # Parse the property, if present. Any space is replaced by @
+      VALUE=$( grep "^$SRC=" "$PROPS" | cut -d = -f 2 | tr ' ' '@' | tr -d '\r' )
+      if [[ -n "$VALUE" ]]; then
+        # In case an XML element would be mapped multiple times,
+        # only use its first definition.
+        if [[ "${USED/$DST/}" == "$USED" ]]; then
+          USED="$USED $DST"
+          RESULT="$RESULT $DST $VALUE"
+        fi
+      fi
     fi
     shift
     shift
+    shift
   done
 
   echo "$RESULT"
 }
 
 function output_attributes() {
-  local OUT="$1"
+  local ELEMENT="$1"
+  local OUT="$2"
+  shift
   shift
   local KEY VALUE
-  local NODE LAST_NODE
+  local NODE LAST_NODE EXTRA_SPACE
 
   while [[ "$1" ]]; do
     KEY="$1"
     VALUE="${2//@/ }"
     NODE="${KEY%%/*}"
     KEY="${KEY##*/}"
-    [[ "$NODE" == "$KEY" ]] && NODE=""
-    if [[ "$NODE" != "$LAST_NODE" ]]; then
-        [[ "$LAST_NODE" ]] && echo "          </sdk:$LAST_NODE>" >> "$OUT"
-        LAST_NODE="$NODE"
-        [[ "$NODE"      ]] && echo "          <sdk:$NODE>" >> "$OUT"
+    if [[ "$NODE" == "$KEY" ]]; then
+      NODE=""
+      EXTRA_SPACE=""
     fi
-    echo "        <sdk:$KEY>$VALUE</sdk:$KEY>" >> "$OUT"
+    if [[ "$NODE" != "$LAST_NODE" ]]; then
+      EXTRA_SPACE="    "
+      [[ "$LAST_NODE" ]] && echo "          </sdk:$LAST_NODE>" >> "$OUT"
+      LAST_NODE="$NODE"
+      [[ "$NODE"      ]] && echo "          <sdk:$NODE>" >> "$OUT"
+    fi
+    if needs_full_revision "$ELEMENT" "$KEY" ${FULL_REVISIONS[@]}; then
+      echo "$EXTRA_SPACE        <sdk:$KEY>"       >> "$OUT"
+      write_full_revision "$VALUE" "$EXTRA_SPACE" >> "$OUT"
+      echo "$EXTRA_SPACE        </sdk:$KEY>"      >> "$OUT"
+    else
+      echo "$EXTRA_SPACE        <sdk:$KEY>$VALUE</sdk:$KEY>" >> "$OUT"
+    fi
     shift
     shift
   done
@@ -235,7 +370,7 @@
 
       # Time to generate the XML for the package
       echo "    <sdk:${ELEMENT}>" >> "$OUT"
-      output_attributes "$OUT" $MAP
+      output_attributes "$ELEMENT" "$OUT" $MAP
       [[ -n "$LIBS_XML" ]] && echo "$LIBS_XML" >> "$OUT"
       echo "        <sdk:archives>" >> "$OUT"
     fi
diff --git a/build/tools/mk_sources_zip.py b/build/tools/mk_sources_zip.py
index 4aaa714..76b5b9e 100755
--- a/build/tools/mk_sources_zip.py
+++ b/build/tools/mk_sources_zip.py
@@ -39,7 +39,7 @@
         self.CNT_NOPKG = 0
         # DIR is the list of directories to scan in TOPDIR.
         self.DIR = "frameworks libcore"
-        self.IGNORE_DIR = [ "hosttests" ]
+        self.IGNORE_DIR = [ "hosttests" "tools" "tests" ]
         # IGNORE is a list of namespaces to ignore. Must be java
         # package definitions (e.g. "com.blah.foo.")
         self.IGNORE = [ "sun.", "libcore.", "dalvik.",
diff --git a/build/tools/sdk_repo.mk b/build/tools/sdk_repo.mk
index cc0d1be..deb3bdc 100644
--- a/build/tools/sdk_repo.mk
+++ b/build/tools/sdk_repo.mk
@@ -2,8 +2,10 @@
 
 .PHONY: sdk_repo
 
-SDK_REPO_DEPS :=
-SDK_REPO_XML_ARGS :=
+SDK_REPO_DEPS       :=
+SDK_REPO_XML_ARGS   :=
+SDK_EXTRAS_DEPS     :=
+SDK_EXTRAS_XML_ARGS :=
 
 # Define the name of a package zip file to generate
 # $1=OS (e.g. linux-x86, windows, etc)
@@ -88,10 +90,10 @@
 # $3=package to create, must be "sources"
 #
 define mk-sdk-repo-sources
-$(call sdk-repo-pkg-zip,$(1),$(2),$(3)): $(2) $(TOPDIR)development/sdk/source_source.properties
+$(call sdk-repo-pkg-zip,$(1),$(2),$(3)): $(2) $(HOST_OUT)/development/sdk/source_source.properties
 	@echo "Building SDK sources package"
 	$(hide) $(TOPDIR)development/build/tools/mk_sources_zip.py --exec-zip \
-			$(TOPDIR)development/sdk/source_source.properties \
+			$(HOST_OUT)/development/sdk/source_source.properties \
 			$(call sdk-repo-pkg-zip,$(1),$(2),$(3)) \
 			$(TOPDIR).
 $(call dist-for-goals, sdk_repo, $(call sdk-repo-pkg-zip,$(1),$(2),$(3)))
@@ -100,6 +102,40 @@
 endef
 
 # -----------------------------------------------------------------
+# Rules for main host sdk
+
+ifneq ($(filter sdk win_sdk,$(MAKECMDGOALS)),)
+
+# Note that extras are now located in addon.xml, not in repository.xml,
+# so we capture all extras first.
+$(eval $(call mk-sdk-repo-pkg-3,$(HOST_OS),$(MAIN_SDK_ZIP),support,extras/android))
+SDK_EXTRAS_XML_ARGS := $(SDK_REPO_XML_ARGS)
+SDK_REPO_XML_ARGS   :=
+
+SDK_EXTRAS_DEPS += \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),support)
+
+
+$(eval $(call mk-sdk-repo-pkg-1,$(HOST_OS),$(MAIN_SDK_ZIP),tools))
+$(eval $(call mk-sdk-repo-pkg-1,$(HOST_OS),$(MAIN_SDK_ZIP),platform-tools))
+$(eval $(call mk-sdk-repo-pkg-1,$(HOST_OS),$(MAIN_SDK_ZIP),docs))
+$(eval $(call mk-sdk-repo-pkg-2,$(HOST_OS),$(MAIN_SDK_ZIP),platforms))
+$(eval $(call mk-sdk-repo-pkg-2,$(HOST_OS),$(MAIN_SDK_ZIP),samples))
+$(eval $(call mk-sdk-repo-pkg-3,$(HOST_OS),$(MAIN_SDK_ZIP),system-images,system-images/*))
+$(eval $(call mk-sdk-repo-sources,$(HOST_OS),$(MAIN_SDK_ZIP),sources))
+
+SDK_REPO_DEPS += \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),tools) \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),platform-tools) \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),docs) \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),platforms) \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),samples) \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),system-images) \
+		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),sources)
+
+endif
+
+# -----------------------------------------------------------------
 # Rules for win_sdk
 
 ifneq ($(WIN_SDK_ZIP),)
@@ -115,30 +151,19 @@
 endif
 
 # -----------------------------------------------------------------
-# Rules for main host sdk
+# Pickup the most recent xml schema for repository and add-on
 
-ifneq ($(filter sdk win_sdk,$(MAKECMDGOALS)),)
+SDK_REPO_XSD := \
+	$(lastword \
+	  $(wildcard \
+	    $(TOPDIR)sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-*.xsd \
+	))
 
-$(eval $(call mk-sdk-repo-pkg-1,$(HOST_OS),$(MAIN_SDK_ZIP),tools))
-$(eval $(call mk-sdk-repo-pkg-1,$(HOST_OS),$(MAIN_SDK_ZIP),platform-tools))
-$(eval $(call mk-sdk-repo-pkg-1,$(HOST_OS),$(MAIN_SDK_ZIP),docs))
-$(eval $(call mk-sdk-repo-pkg-2,$(HOST_OS),$(MAIN_SDK_ZIP),platforms))
-$(eval $(call mk-sdk-repo-pkg-2,$(HOST_OS),$(MAIN_SDK_ZIP),samples))
-$(eval $(call mk-sdk-repo-pkg-3,$(HOST_OS),$(MAIN_SDK_ZIP),system-images,system-images/*))
-$(eval $(call mk-sdk-repo-pkg-3,$(HOST_OS),$(MAIN_SDK_ZIP),support,extras/android))
-$(eval $(call mk-sdk-repo-sources,$(HOST_OS),$(MAIN_SDK_ZIP),sources))
-
-SDK_REPO_DEPS += \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),tools) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),platform-tools) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),docs) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),platforms) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),samples) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),system-images) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),support) \
-		$(call sdk-repo-pkg-zip,$(HOST_OS),$(MAIN_SDK_ZIP),sources)
-
-endif
+SDK_ADDON_XSD := \
+	$(lastword \
+	  $(wildcard \
+	    $(TOPDIR)sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-*.xsd \
+	))
 
 # -----------------------------------------------------------------
 # Rules for sdk addon
@@ -157,12 +182,6 @@
 
 SDK_ADDON_XML := $(dir $(ADDON_SDK_ZIP))/addon.xml
 
-SDK_ADDON_XSD := \
-	$(lastword \
-	  $(wildcard \
-	    $(TOPDIR)sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-*.xsd \
-	))
-
 $(SDK_ADDON_XML): $(ADDON_SDK_ZIP)
 	$(hide) $(TOPDIR)development/build/tools/mk_sdk_repo_xml.sh \
 		$(SDK_ADDON_XML) $(SDK_ADDON_XSD) add-on $(HOST_OS) $(RENAMED_ADDON_ZIP)
@@ -174,17 +193,11 @@
 # -----------------------------------------------------------------
 # Rules for the SDK Repository XML
 
-SDK_REPO_XML := $(HOST_OUT)/sdk/repository.xml
+SDK_REPO_XML   := $(HOST_OUT)/sdk/repository.xml
+SDK_EXTRAS_XML := $(HOST_OUT)/sdk/repo-extras.xml
 
 ifneq ($(SDK_REPO_XML_ARGS),)
 
-# Pickup the most recent xml schema
-SDK_REPO_XSD := \
-	$(lastword \
-	  $(wildcard \
-	    $(TOPDIR)sdk/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-*.xsd \
-	))
-
 $(SDK_REPO_XML): $(SDK_REPO_DEPS)
 	$(hide) $(TOPDIR)development/build/tools/mk_sdk_repo_xml.sh \
 		$(SDK_REPO_XML) $(SDK_REPO_XSD) $(SDK_REPO_XML_ARGS)
@@ -197,8 +210,23 @@
 
 endif
 
+
+ifneq ($(SDK_EXTRAS_XML_ARGS),)
+
+$(SDK_EXTRAS_XML): $(SDK_EXTRAS_DEPS)
+	$(hide) $(TOPDIR)development/build/tools/mk_sdk_repo_xml.sh \
+		$(SDK_EXTRAS_XML) $(SDK_ADDON_XSD) $(SDK_EXTRAS_XML_ARGS)
+
+$(call dist-for-goals, sdk_repo, $(SDK_EXTRAS_XML))
+
+else
+
+$(SDK_EXTRAS_XML): ;
+
+endif
+
 # -----------------------------------------------------------------
 
-sdk_repo: $(SDK_REPO_DEPS) $(SDK_REPO_XML)
+sdk_repo: $(SDK_REPO_DEPS) $(SDK_REPO_XML) $(SDK_EXTRAS_XML)
 	@echo "Packing of SDK repository done"
 
diff --git a/build/tools/windows_sdk.mk b/build/tools/windows_sdk.mk
index 2a6fc74..f57ff5d 100644
--- a/build/tools/windows_sdk.mk
+++ b/build/tools/windows_sdk.mk
@@ -22,8 +22,9 @@
 $(error Need a unix2dos command. Please 'apt-get install tofrodos')
 endif
 
-# Define WIN_SDK_TARGETS, the list of targets located in topdir/sdk
-# and are tools-dependent, not platform-dependent.
+# Define WIN_SDK_TARGETS (the list of targets located in topdir/sdk)
+# and the WIN_SDK_BUILD_PREREQ (the list of build prerequisites)
+# that are tools-dependent and not platform-dependent.
 include $(TOPDIR)sdk/build/windows_sdk_tools.mk
 
 # This is the list of targets that we want to generate as
@@ -46,7 +47,8 @@
 # build prerequisites.
 WIN_BUILD_PREREQ := \
 	acp \
-	llvm-rs-cc
+	llvm-rs-cc \
+	$(WIN_SDK_BUILD_PREREQ)
 
 
 # MAIN_SDK_NAME/DIR is set in build/core/Makefile
diff --git a/cmds/monkey/src/com/android/commands/monkey/Monkey.java b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
index f3a223f..3aa2fc1 100644
--- a/cmds/monkey/src/com/android/commands/monkey/Monkey.java
+++ b/cmds/monkey/src/com/android/commands/monkey/Monkey.java
@@ -1096,7 +1096,6 @@
                     eventCounter++;
                     if (mCountEvents) {
                         cycleCounter++;
-                        writeScriptLog(cycleCounter);
                     }
                 }
             } else {
diff --git a/ndk/platforms/README.CRT.TXT b/ndk/platforms/README.CRT.TXT
new file mode 100644
index 0000000..82d0a1a
--- /dev/null
+++ b/ndk/platforms/README.CRT.TXT
@@ -0,0 +1,274 @@
+This directory contains the sources of the C runtime object files
+required by the Android NDK toolchains. This document explains
+what they are, as well as a few important details about them.
+
+The files are located under the following directories:
+
+  android-3/arch-arm/src/
+  android-9/arch-x86/src/
+  android-9/arch-mips/src/
+
+They are all *assembly* files with an .S extension, which means that
+they'll be sent to the C-preprocessor before being assembled into
+object files. They have the following names and usage:
+
+  crtbegin_static.S
+    This file contains a tiny ELF startup entry point (named '_start')
+    that is linked into every Android _static_ executable. These binaries can
+    run on any Linux ARM system, but cannot perform dynamic linking at all.
+
+    Note that the kernel calls the '_start' entry point directly when it
+    launches such an executable. The _start stub is used to call the
+    C library's runtime initialization, passing it the address of the
+    'main' function.
+
+  crtbegin_dynamic.S
+    This is equivalent to crtbegin_static.S, for for _dynamic_ executables.
+    These executables always link to the system C library dynamically.
+
+    When the kernel launches such an executable, it actually starts the
+    dynamic linker (/system/bin/linker), which loads and relocates the
+    executable (possibly loading any dependent system libraries as well),
+    then call the _start stub.
+
+  crtbegin_so.S
+    This is equivalent to crtbegin_dynamic.S, but shall be used for
+    shared libraries. One major difference is that there is no _start
+    entry point.
+
+  crtend_android.S
+    This source file shall be used when generating an executable, i.e. used
+    in association with either crtbegin_static.S or crtbegin_dynamic.S
+
+  crtend.S
+    This source file is _strictly_ equivalent to crtend_android.S.
+    Actually, it *must* be compiled into an object named 'crtend_android.o'
+    because that's the hard-coded name that the toolchain binaries expect.
+
+    (the naming difference for this source file is purely historical, it
+    could probably be removed in the future).
+
+  crtend_so.S
+    This source's object file shall be used when generating a shared library,
+    i.e. used in association with crtbegin_so.S only.
+
+Content of these files:
+
+ELF section (lists);
+
+  crtbegin_static.S + crtbegin_dynamic.S contain a '_start' entry point for
+  the corresponding executable. crtbegin_so.S doesn't need any.
+
+  all crtbegin_XXX.s files contain the head of various ELF sections, which are
+  used to list of ELF constructors and destructors. The sections are:
+
+    .init_array:
+        Contains a list of function addresses that are run at load time.
+        This means they are run *before* 'main', in the case of executables,
+        or during 'dlopen()' for shared libraries (either implicit or explicit).
+
+        The functions are called in list order (from first to last).
+
+    .fini_array:
+        Contains a list of destructor addresses that are run at unload time.
+        This means they are run *after* 'exit', in the case of executables,
+        or during 'dlclose()' for shared libraries (either implicit or explicit).
+
+        The functions are called in _reverse_ list order (from last to first).
+
+    .preinit_array:
+        This section can *only* appear in executables. It contains a list of
+        constructors that are run _before_ the ones in .init_array, or those
+        of any dependent shared library (if any).
+
+    .ctors
+        This section shall *not* be used on Android. Used on some GLibc-based
+        Linux systems to hold list of constructors. The toolchains should
+        place all constructors in .init_array instead.
+
+    .dtors
+        This section shall *not* be used on Android. Used on some GLibc-based
+        Linux systems to hold a list of destructors. The toolchains should
+        place all destructors in .fini_array instead.
+
+
+__dso_handle symbol:
+
+  To properly support the C++ ABI, a unique *local* *hidden* symbol named
+  '__dso_handle' must be defined in each shared library.
+
+  This is used to implement static C++ object initialization in a shared
+  library, as in:
+
+      static Foo  foo(10);
+
+  The statement above creates a hidden function, which address will be added
+  to the .init_array section described above. Its compiler-generated code
+  will perform the object construction, and also register static destructor
+  using a call that looks like:
+
+      __cxa_atexit( Foo::~Foo, &foo, &__dso_handle );
+
+  Where '__cxa_atexit' is a special C++ support function provided by the
+  C library. Doing this ensures that the destructor for 'foo' will be
+  automatically called when the shared library containing this code is
+  unloaded (i.e. either through 'dlclose' or at program exit).
+
+  The value of __dso_handle is normally never taken directly.
+
+  See http://sourcery.mentor.com/public/cxx-abi/abi.html#dso-dtor
+
+  WARNING: There is a big caveat regarding this symbol. Read the section
+           named 'IMPORTANT BACKWARDS COMPATIBILITY ISSUES' below.
+
+
+atexit() implementation:
+
+  The Posix standard doesn't mandate the program behaviour's when a shared
+  library which registered a function with 'atexit' is unloaded explicitely
+  (e.g. with 'dlclose()').
+
+  On most BSD systems (including OS X), unloading the library succeeds, but
+  the program will crash when it calls exit() or returns from main().
+
+  On Linux, GLibc provides an implementation that automatically unregisters
+  such atexit() handlers when the corresponding shared library is unloaded.
+
+  However, this requires that the atexit() implementation be part of the
+  shared library itself, rather than the C library.
+
+  The crtbegin_shared.S and crtbegin_static.S files contain an tiny
+  implementation of atexit() in assembler that essentially does:
+
+      void atexit(void(*myfunc)(void))
+      {
+         __cxa_atexit(myfunc, NULL, &__dso_handle);
+      }
+
+  Because it references the shared library's hidden __dso_handle symbol,
+  this code cannot be in the C library itself.
+
+  Note that crtbegin_static.S should *not* provide an atexit() function
+  (the latter should be provided by libc.a instead).
+
+  See 'BACKWARDS COMPATIBILITY ISSUES' section below.
+
+
+
+BACKWARDS COMPATIBILITY ISSUES:
+-------------------------------
+
+To maintain binary compatibility to all existing NDK-generated machine code,
+the system's C library (i.e. /system/lib/libc.so) needs to exports symbols
+that shall *not* be exported by the NDK-provided link-time libraries (i.e.
+$NDK/platforms/android-$LEVEL/arch-$ARCH/usr/lib/libc.so).
+
+Starting from NDK r7, the NDK libc.so is itself generated by a script
+(gen-platforms.sh) from a list of symbol files (see libc.so.functions.txt
+and libc.so.variables.txt) and does not contain any implementation code.
+
+The NDK libc.a, on the other hand, is a copy of a given version of the system
+C static library, and shall only be used to generate static executables (it
+is also required to build gdbserver).
+
+1. libgcc compatibility symbols:
+
+  None of the link-time NDK shared libraries should export any libgcc symbol.
+
+  However, on ARM, the system C library needs to export some of them to
+  maintain binary compatibility with 'legacy' NDK machine code. Details are
+  under bionic/libc/arch-arm/bionic/libgcc_compat.c.
+
+  Note that gen-platforms.sh takes care of this by explicitely removing any
+  libgcc symbol from the link-time shared libraries it generates. This is done
+  by using the lists under:
+
+     $NDK/build/tools/toolchain-symbols/$ARCH/libgcc.a.functions.txt
+
+  You will need to update these files when the toolchain changes.
+
+  Note that all libgcc releases should be backwards-compatible, i.e. newer
+  releases always contain all the symbols from previous ones).
+
+
+2. __dso_handle compatibility symbol:
+
+  Earlier versions of the C library exported a __dso_handle symbol
+  *incorrectly*. As such:
+
+   - the system's libc.so shall always export its __dso_handle, as *global*
+     and *public* (in ELF visibility terms). A weak symbol definition is ok
+     but not necessary. This is only to ensure binary compatibility with
+    'legacy' NDK machine code.
+
+   - the NDK link-time libc.so shall *never* export or contain any
+     __dso_handle symbol.
+
+   - The NDK's crtbegin_dynamic.S and crtbegin_so.S shall provide a *local*
+     and *hidden* __dso_handle symbol.
+
+   - The NDK's libc.a will containg a *global* and *public* __dso_handle, since
+     it is a copy of a release-specific system libc.so.
+
+   - crtbegin_static.S shall not provide any __dso_handle symbol, since static
+     executables will use the one in libc.a instead.
+
+Note that existing NDK machine code that links against the system libc's
+__dso_handle will not have their C++ destructors run correctly when the
+library is unloaded. However, this bug can be solved by simply recompiling
+/relinking against a newer NDK release, without touching the original
+sources.
+
+
+
+3. atexit compatibility symbol:
+
+  Earlier versions of the C library implemented and exported an atexit()
+  function. While this is compliant with Posix, this doesn't allow a useful
+  GLibc extension which automatically un-registers atexit() handlers when
+  a shared library is unloaded with dlclose().
+
+  To support this, while providing binary compatibility, the following
+  must apply:
+
+  - The platform's /system/lib/libc.so should *always* export a working
+    atexit() implementation (used by 'legacy' NDK machine code).
+
+  - The NDK link-time libc.so should *never* export atexit()
+
+  - crtbegin_shared.S, crtbegin_so.S shall define a *local* *hidden*
+    symbol for atexit(), with a tiny implementation that amounts to the
+    following code:
+
+         void atexit( void(*handler)(void) )
+         {
+            __cxa_atexit( handler, NULL, &__dso_handle );
+         }
+
+  - The NDK libc.a shall provide an atexit() implementation, and
+    crtbegin_static.S shall *not* provide one to avoid conflicts.
+
+Note that existing NDK machine code that links against the system libc's
+atexit symbol will not have their atexit-handler automatically unregistered
+when the library is unloaded. However, this bug can be solved by simply
+recompiling/relinking against a newer NDK release, without touching the
+original sources.
+
+4. __atomic_xxx sompatibility symbols:
+
+This issues is detailed in ndk/docs/ANDROID-ATOMICS.html and
+bionic/libc/arch-arm/bionic/atomics_arm.c. In a nutshell:
+
+   - The system C library *shall* always export on *ARM* the __atomic_cmpxchg,
+     __atomic_inc and __atomic_dec functions to support legacy NDK machine code.
+     Their implementation should have full (i.e. acquire+release) memory ordering
+     semantics.
+
+   - The system C library for other CPU architectures (e.g. x86 or mips) *shall*
+     *not* export any of these symbols.
+
+   - The NDK libc.so *shall* *not* export these symbols at all.
+
+   - The NDK <sys/atomics.h> header shall provide inlined-static versions of
+     these functions that use the built-in GCC atomic functions instead.
+    
diff --git a/ndk/platforms/android-14/arch-mips/symbols/libOpenMAXAL.so.functions.txt b/ndk/platforms/android-14/arch-mips/symbols/libOpenMAXAL.so.functions.txt
new file mode 100644
index 0000000..c3a190c
--- /dev/null
+++ b/ndk/platforms/android-14/arch-mips/symbols/libOpenMAXAL.so.functions.txt
@@ -0,0 +1,3 @@
+xaCreateEngine
+xaQueryNumSupportedEngineInterfaces
+xaQuerySupportedEngineInterfaces
diff --git a/ndk/platforms/android-14/arch-mips/symbols/libOpenMAXAL.so.variables.txt b/ndk/platforms/android-14/arch-mips/symbols/libOpenMAXAL.so.variables.txt
new file mode 100644
index 0000000..7ceda9c
--- /dev/null
+++ b/ndk/platforms/android-14/arch-mips/symbols/libOpenMAXAL.so.variables.txt
@@ -0,0 +1,41 @@
+XA_IID_ANDROIDBUFFERQUEUESOURCE
+XA_IID_AUDIODECODERCAPABILITIES
+XA_IID_AUDIOENCODER
+XA_IID_AUDIOENCODERCAPABILITIES
+XA_IID_AUDIOIODEVICECAPABILITIES
+XA_IID_CAMERA
+XA_IID_CAMERACAPABILITIES
+XA_IID_CONFIGEXTENSION
+XA_IID_DEVICEVOLUME
+XA_IID_DYNAMICINTERFACEMANAGEMENT
+XA_IID_DYNAMICSOURCE
+XA_IID_ENGINE
+XA_IID_EQUALIZER
+XA_IID_IMAGECONTROLS
+XA_IID_IMAGEDECODERCAPABILITIES
+XA_IID_IMAGEEFFECTS
+XA_IID_IMAGEENCODER
+XA_IID_IMAGEENCODERCAPABILITIES
+XA_IID_LED
+XA_IID_METADATAEXTRACTION
+XA_IID_METADATAINSERTION
+XA_IID_METADATATRAVERSAL
+XA_IID_NULL
+XA_IID_OBJECT
+XA_IID_OUTPUTMIX
+XA_IID_PLAY
+XA_IID_PLAYBACKRATE
+XA_IID_PREFETCHSTATUS
+XA_IID_RADIO
+XA_IID_RDS
+XA_IID_RECORD
+XA_IID_SEEK
+XA_IID_SNAPSHOT
+XA_IID_STREAMINFORMATION
+XA_IID_THREADSYNC
+XA_IID_VIBRA
+XA_IID_VIDEODECODERCAPABILITIES
+XA_IID_VIDEOENCODER
+XA_IID_VIDEOENCODERCAPABILITIES
+XA_IID_VIDEOPOSTPROCESSING
+XA_IID_VOLUME
diff --git a/ndk/platforms/android-14/arch-mips/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-14/arch-mips/symbols/libOpenSLES.so.functions.txt
new file mode 100644
index 0000000..f69a3e5
--- /dev/null
+++ b/ndk/platforms/android-14/arch-mips/symbols/libOpenSLES.so.functions.txt
@@ -0,0 +1,3 @@
+slCreateEngine
+slQueryNumSupportedEngineInterfaces
+slQuerySupportedEngineInterfaces
diff --git a/ndk/platforms/android-14/arch-mips/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-14/arch-mips/symbols/libOpenSLES.so.variables.txt
new file mode 100644
index 0000000..c7ee7d1
--- /dev/null
+++ b/ndk/platforms/android-14/arch-mips/symbols/libOpenSLES.so.variables.txt
@@ -0,0 +1,50 @@
+SL_IID_3DCOMMIT
+SL_IID_3DDOPPLER
+SL_IID_3DGROUPING
+SL_IID_3DLOCATION
+SL_IID_3DMACROSCOPIC
+SL_IID_3DSOURCE
+SL_IID_ANDROIDBUFFERQUEUESOURCE
+SL_IID_ANDROIDCONFIGURATION
+SL_IID_ANDROIDEFFECT
+SL_IID_ANDROIDEFFECTCAPABILITIES
+SL_IID_ANDROIDEFFECTSEND
+SL_IID_ANDROIDSIMPLEBUFFERQUEUE
+SL_IID_AUDIODECODERCAPABILITIES
+SL_IID_AUDIOENCODER
+SL_IID_AUDIOENCODERCAPABILITIES
+SL_IID_AUDIOIODEVICECAPABILITIES
+SL_IID_BASSBOOST
+SL_IID_BUFFERQUEUE
+SL_IID_DEVICEVOLUME
+SL_IID_DYNAMICINTERFACEMANAGEMENT
+SL_IID_DYNAMICSOURCE
+SL_IID_EFFECTSEND
+SL_IID_ENGINE
+SL_IID_ENGINECAPABILITIES
+SL_IID_ENVIRONMENTALREVERB
+SL_IID_EQUALIZER
+SL_IID_LED
+SL_IID_METADATAEXTRACTION
+SL_IID_METADATATRAVERSAL
+SL_IID_MIDIMESSAGE
+SL_IID_MIDIMUTESOLO
+SL_IID_MIDITEMPO
+SL_IID_MIDITIME
+SL_IID_MUTESOLO
+SL_IID_NULL
+SL_IID_OBJECT
+SL_IID_OUTPUTMIX
+SL_IID_PITCH
+SL_IID_PLAY
+SL_IID_PLAYBACKRATE
+SL_IID_PREFETCHSTATUS
+SL_IID_PRESETREVERB
+SL_IID_RATEPITCH
+SL_IID_RECORD
+SL_IID_SEEK
+SL_IID_THREADSYNC
+SL_IID_VIBRA
+SL_IID_VIRTUALIZER
+SL_IID_VISUALIZATION
+SL_IID_VOLUME
diff --git a/ndk/platforms/android-14/samples/native-media/AndroidManifest.xml b/ndk/platforms/android-14/samples/native-media/AndroidManifest.xml
new file mode 100644
index 0000000..07668cf
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/AndroidManifest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+      package="com.example.nativemedia">
+
+    <uses-feature android:glEsVersion="0x00020000" />
+
+    <application android:icon="@drawable/icon" android:label="@string/app_name">
+        <activity android:name=".NativeMedia"
+                  android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+    </application>
+
+    <uses-sdk android:minSdkVersion="14" />
+
+    <!-- INTERNET is needed to use a URI-based media player, depending on the URI -->
+    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
+
+</manifest>
diff --git a/ndk/platforms/android-14/samples/native-media/NativeMedia.ts b/ndk/platforms/android-14/samples/native-media/NativeMedia.ts
new file mode 100644
index 0000000..d9d54b2
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/NativeMedia.ts
Binary files differ
diff --git a/ndk/platforms/android-14/samples/native-media/README.txt b/ndk/platforms/android-14/samples/native-media/README.txt
index 516698a..f900e31 100644
--- a/ndk/platforms/android-14/samples/native-media/README.txt
+++ b/ndk/platforms/android-14/samples/native-media/README.txt
@@ -1,2 +1,8 @@
-The documentation for Android native media based on OpenMAX AL 1.0.1
-references this directory, but the example is not yet available.
+This sample app requires an MPEG-2 Transport Stream file to be
+placed in /sdcard/NativeMedia.ts and encoded as:
+
+  video: H.264 baseline profile
+  audio: AAC LC stereo
+
+For demonstration purposes we have supplied such a .ts file.
+Any actual stream must be created according to the MPEG-2 specification.
diff --git a/ndk/platforms/android-14/samples/native-media/default.properties b/ndk/platforms/android-14/samples/native-media/default.properties
new file mode 100644
index 0000000..2d69917
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/default.properties
@@ -0,0 +1,4 @@
+# Indicates whether an apk should be generated for each density.
+split.density=false
+# Project target.
+target=android-14
diff --git a/ndk/platforms/android-14/samples/native-media/jni/Android.mk b/ndk/platforms/android-14/samples/native-media/jni/Android.mk
new file mode 100644
index 0000000..369ccf8
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/jni/Android.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 2011 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE    := native-media-jni
+LOCAL_SRC_FILES := native-media-jni.c
+# for native multimedia
+LOCAL_LDLIBS    += -lOpenMAXAL
+# for logging
+LOCAL_LDLIBS    += -llog
+# for native windows
+LOCAL_LDLIBS    += -landroid
+
+LOCAL_CFLAGS    += -UNDEBUG
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c b/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c
new file mode 100644
index 0000000..bdf568a
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/jni/native-media-jni.c
@@ -0,0 +1,526 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* This is a JNI example where we use native methods to play video
+ * using OpenMAX AL. See the corresponding Java source file located at:
+ *
+ *   src/com/example/nativemedia/NativeMedia/NativeMedia.java
+ *
+ * In this example we use assert() for "impossible" error conditions,
+ * and explicit handling and recovery for more likely error conditions.
+ */
+
+#include <assert.h>
+#include <jni.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <string.h>
+
+// for __android_log_print(ANDROID_LOG_INFO, "YourApp", "formatted message");
+#include <android/log.h>
+#define TAG "NativeMedia"
+#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
+
+// for native media
+#include <OMXAL/OpenMAXAL.h>
+#include <OMXAL/OpenMAXAL_Android.h>
+
+// for native window JNI
+#include <android/native_window_jni.h>
+
+// engine interfaces
+static XAObjectItf engineObject = NULL;
+static XAEngineItf engineEngine = NULL;
+
+// output mix interfaces
+static XAObjectItf outputMixObject = NULL;
+
+// streaming media player interfaces
+static XAObjectItf             playerObj = NULL;
+static XAPlayItf               playerPlayItf = NULL;
+static XAAndroidBufferQueueItf playerBQItf = NULL;
+static XAStreamInformationItf  playerStreamInfoItf = NULL;
+static XAVolumeItf             playerVolItf = NULL;
+
+// number of required interfaces for the MediaPlayer creation
+#define NB_MAXAL_INTERFACES 3 // XAAndroidBufferQueueItf, XAStreamInformationItf and XAPlayItf
+
+// video sink for the player
+static ANativeWindow* theNativeWindow;
+
+// number of buffers in our buffer queue, an arbitrary number
+#define NB_BUFFERS 8
+
+// we're streaming MPEG-2 transport stream data, operate on transport stream block size
+#define MPEG2_TS_PACKET_SIZE 188
+
+// number of MPEG-2 transport stream blocks per buffer, an arbitrary number
+#define PACKETS_PER_BUFFER 10
+
+// determines how much memory we're dedicating to memory caching
+#define BUFFER_SIZE (PACKETS_PER_BUFFER*MPEG2_TS_PACKET_SIZE)
+
+// where we cache in memory the data to play
+// note this memory is re-used by the buffer queue callback
+static char dataCache[BUFFER_SIZE * NB_BUFFERS];
+
+// handle of the file to play
+static FILE *file;
+
+// has the app reached the end of the file
+static jboolean reachedEof = JNI_FALSE;
+
+// constant to identify a buffer context which is the end of the stream to decode
+static const int kEosBufferCntxt = 1980; // a magic value we can compare against
+
+// For mutual exclusion between callback thread and application thread(s).
+// The mutex protects reachedEof, discontinuity,
+// The condition is signalled when a discontinuity is acknowledged.
+
+static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+
+// whether a discontinuity is in progress
+static jboolean discontinuity = JNI_FALSE;
+
+static jboolean enqueueInitialBuffers(jboolean discontinuity);
+
+// AndroidBufferQueueItf callback to supply MPEG-2 TS packets to the media player
+static XAresult AndroidBufferQueueCallback(
+        XAAndroidBufferQueueItf caller,
+        void *pCallbackContext,        /* input */
+        void *pBufferContext,          /* input */
+        void *pBufferData,             /* input */
+        XAuint32 dataSize,             /* input */
+        XAuint32 dataUsed,             /* input */
+        const XAAndroidBufferItem *pItems,/* input */
+        XAuint32 itemsLength           /* input */)
+{
+    XAresult res;
+    int ok;
+
+    // pCallbackContext was specified as NULL at RegisterCallback and is unused here
+    assert(NULL == pCallbackContext);
+
+    // note there is never any contention on this mutex unless a discontinuity request is active
+    ok = pthread_mutex_lock(&mutex);
+    assert(0 == ok);
+
+    // was a discontinuity requested?
+    if (discontinuity) {
+        // Note: can't rewind after EOS, which we send when reaching EOF
+        // (don't send EOS if you plan to play more content through the same player)
+        if (!reachedEof) {
+            // clear the buffer queue
+            res = (*playerBQItf)->Clear(playerBQItf);
+            assert(XA_RESULT_SUCCESS == res);
+            // rewind the data source so we are guaranteed to be at an appropriate point
+            rewind(file);
+            // Enqueue the initial buffers, with a discontinuity indicator on first buffer
+            (void) enqueueInitialBuffers(JNI_TRUE);
+        }
+        // acknowledge the discontinuity request
+        discontinuity = JNI_FALSE;
+        ok = pthread_cond_signal(&cond);
+        assert(0 == ok);
+        goto exit;
+    }
+
+    if ((pBufferData == NULL) && (pBufferContext != NULL)) {
+        const int processedCommand = *(int *)pBufferContext;
+        if (kEosBufferCntxt == processedCommand) {
+            LOGV("EOS was processed\n");
+            // our buffer with the EOS message has been consumed
+            assert(0 == dataSize);
+            goto exit;
+        }
+    }
+
+    // pBufferData is a pointer to a buffer that we previously Enqueued
+    assert((dataSize > 0) && ((dataSize % MPEG2_TS_PACKET_SIZE) == 0));
+    assert(dataCache <= (char *) pBufferData && (char *) pBufferData <
+            &dataCache[BUFFER_SIZE * NB_BUFFERS]);
+    assert(0 == (((char *) pBufferData - dataCache) % BUFFER_SIZE));
+
+    // don't bother trying to read more data once we've hit EOF
+    if (reachedEof) {
+        goto exit;
+    }
+
+    size_t nbRead;
+    // note we do call fread from multiple threads, but never concurrently
+    size_t bytesRead;
+    bytesRead = fread(pBufferData, 1, BUFFER_SIZE, file);
+    if (bytesRead > 0) {
+        if ((bytesRead % MPEG2_TS_PACKET_SIZE) != 0) {
+            LOGV("Dropping last packet because it is not whole");
+        }
+        size_t packetsRead = bytesRead / MPEG2_TS_PACKET_SIZE;
+        size_t bufferSize = packetsRead * MPEG2_TS_PACKET_SIZE;
+        res = (*caller)->Enqueue(caller, NULL /*pBufferContext*/,
+                pBufferData /*pData*/,
+                bufferSize /*dataLength*/,
+                NULL /*pMsg*/,
+                0 /*msgLength*/);
+        assert(XA_RESULT_SUCCESS == res);
+    } else {
+        // EOF or I/O error, signal EOS
+        XAAndroidBufferItem msgEos[1];
+        msgEos[0].itemKey = XA_ANDROID_ITEMKEY_EOS;
+        msgEos[0].itemSize = 0;
+        // EOS message has no parameters, so the total size of the message is the size of the key
+        //   plus the size if itemSize, both XAuint32
+        res = (*caller)->Enqueue(caller, (void *)&kEosBufferCntxt /*pBufferContext*/,
+                NULL /*pData*/, 0 /*dataLength*/,
+                msgEos /*pMsg*/,
+                sizeof(XAuint32)*2 /*msgLength*/);
+        assert(XA_RESULT_SUCCESS == res);
+        reachedEof = JNI_TRUE;
+    }
+
+exit:
+    ok = pthread_mutex_unlock(&mutex);
+    assert(0 == ok);
+    return XA_RESULT_SUCCESS;
+}
+
+
+// callback invoked whenever there is new or changed stream information
+static void StreamChangeCallback(XAStreamInformationItf caller,
+        XAuint32 eventId,
+        XAuint32 streamIndex,
+        void * pEventData,
+        void * pContext )
+{
+    LOGV("StreamChangeCallback called for stream %u", streamIndex);
+    // pContext was specified as NULL at RegisterStreamChangeCallback and is unused here
+    assert(NULL == pContext);
+    switch (eventId) {
+      case XA_STREAMCBEVENT_PROPERTYCHANGE: {
+        /** From spec 1.0.1:
+            "This event indicates that stream property change has occurred.
+            The streamIndex parameter identifies the stream with the property change.
+            The pEventData parameter for this event is not used and shall be ignored."
+         */
+
+        XAresult res;
+        XAuint32 domain;
+        res = (*caller)->QueryStreamType(caller, streamIndex, &domain);
+        assert(XA_RESULT_SUCCESS == res);
+        switch (domain) {
+          case XA_DOMAINTYPE_VIDEO: {
+            XAVideoStreamInformation videoInfo;
+            res = (*caller)->QueryStreamInformation(caller, streamIndex, &videoInfo);
+            assert(XA_RESULT_SUCCESS == res);
+            LOGV("Found video size %u x %u, codec ID=%u, frameRate=%u, bitRate=%u, duration=%u ms",
+                        videoInfo.width, videoInfo.height, videoInfo.codecId, videoInfo.frameRate,
+                        videoInfo.bitRate, videoInfo.duration);
+          } break;
+          default:
+            fprintf(stderr, "Unexpected domain %u\n", domain);
+            break;
+        }
+      } break;
+      default:
+        fprintf(stderr, "Unexpected stream event ID %u\n", eventId);
+        break;
+    }
+}
+
+
+// create the engine and output mix objects
+void Java_com_example_nativemedia_NativeMedia_createEngine(JNIEnv* env, jclass clazz)
+{
+    XAresult res;
+
+    // create engine
+    res = xaCreateEngine(&engineObject, 0, NULL, 0, NULL, NULL);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // realize the engine
+    res = (*engineObject)->Realize(engineObject, XA_BOOLEAN_FALSE);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // get the engine interface, which is needed in order to create other objects
+    res = (*engineObject)->GetInterface(engineObject, XA_IID_ENGINE, &engineEngine);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // create output mix
+    res = (*engineEngine)->CreateOutputMix(engineEngine, &outputMixObject, 0, NULL, NULL);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // realize the output mix
+    res = (*outputMixObject)->Realize(outputMixObject, XA_BOOLEAN_FALSE);
+    assert(XA_RESULT_SUCCESS == res);
+
+}
+
+
+// Enqueue the initial buffers, and optionally signal a discontinuity in the first buffer
+static jboolean enqueueInitialBuffers(jboolean discontinuity)
+{
+
+    /* Fill our cache.
+     * We want to read whole packets (integral multiples of MPEG2_TS_PACKET_SIZE).
+     * fread returns units of "elements" not bytes, so we ask for 1-byte elements
+     * and then check that the number of elements is a multiple of the packet size.
+     */
+    size_t bytesRead;
+    bytesRead = fread(dataCache, 1, BUFFER_SIZE * NB_BUFFERS, file);
+    if (bytesRead <= 0) {
+        // could be premature EOF or I/O error
+        return JNI_FALSE;
+    }
+    if ((bytesRead % MPEG2_TS_PACKET_SIZE) != 0) {
+        LOGV("Dropping last packet because it is not whole");
+    }
+    size_t packetsRead = bytesRead / MPEG2_TS_PACKET_SIZE;
+    LOGV("Initially queueing %u packets", packetsRead);
+
+    /* Enqueue the content of our cache before starting to play,
+       we don't want to starve the player */
+    size_t i;
+    for (i = 0; i < NB_BUFFERS && packetsRead > 0; i++) {
+        // compute size of this buffer
+        size_t packetsThisBuffer = packetsRead;
+        if (packetsThisBuffer > PACKETS_PER_BUFFER) {
+            packetsThisBuffer = PACKETS_PER_BUFFER;
+        }
+        size_t bufferSize = packetsThisBuffer * MPEG2_TS_PACKET_SIZE;
+        XAresult res;
+        if (discontinuity) {
+            // signal discontinuity
+            XAAndroidBufferItem items[1];
+            items[0].itemKey = XA_ANDROID_ITEMKEY_DISCONTINUITY;
+            items[0].itemSize = 0;
+            // DISCONTINUITY message has no parameters,
+            //   so the total size of the message is the size of the key
+            //   plus the size if itemSize, both XAuint32
+            res = (*playerBQItf)->Enqueue(playerBQItf, NULL /*pBufferContext*/,
+                    dataCache + i*BUFFER_SIZE, bufferSize, items /*pMsg*/,
+                    sizeof(XAuint32)*2 /*msgLength*/);
+            discontinuity = JNI_FALSE;
+        } else {
+            res = (*playerBQItf)->Enqueue(playerBQItf, NULL /*pBufferContext*/,
+                    dataCache + i*BUFFER_SIZE, bufferSize, NULL, 0);
+        }
+        assert(XA_RESULT_SUCCESS == res);
+        packetsRead -= packetsThisBuffer;
+    }
+
+    return JNI_TRUE;
+}
+
+
+// create streaming media player
+jboolean Java_com_example_nativemedia_NativeMedia_createStreamingMediaPlayer(JNIEnv* env,
+        jclass clazz, jstring filename)
+{
+    XAresult res;
+
+    // convert Java string to UTF-8
+    const char *utf8 = (*env)->GetStringUTFChars(env, filename, NULL);
+    assert(NULL != utf8);
+
+    // open the file to play
+    file = fopen(utf8, "rb");
+    if (file == NULL) {
+        return JNI_FALSE;
+    }
+
+    // configure data source
+    XADataLocator_AndroidBufferQueue loc_abq = { XA_DATALOCATOR_ANDROIDBUFFERQUEUE, NB_BUFFERS };
+    XADataFormat_MIME format_mime = {
+            XA_DATAFORMAT_MIME, XA_ANDROID_MIME_MP2TS, XA_CONTAINERTYPE_MPEG_TS };
+    XADataSource dataSrc = {&loc_abq, &format_mime};
+
+    // configure audio sink
+    XADataLocator_OutputMix loc_outmix = { XA_DATALOCATOR_OUTPUTMIX, outputMixObject };
+    XADataSink audioSnk = { &loc_outmix, NULL };
+
+    // configure image video sink
+    XADataLocator_NativeDisplay loc_nd = {
+            XA_DATALOCATOR_NATIVEDISPLAY,        // locatorType
+            // the video sink must be an ANativeWindow created from a Surface or SurfaceTexture
+            (void*)theNativeWindow,              // hWindow
+            // must be NULL
+            NULL                                 // hDisplay
+    };
+    XADataSink imageVideoSink = {&loc_nd, NULL};
+
+    // declare interfaces to use
+    XAboolean     required[NB_MAXAL_INTERFACES]
+                           = {XA_BOOLEAN_TRUE, XA_BOOLEAN_TRUE,           XA_BOOLEAN_TRUE};
+    XAInterfaceID iidArray[NB_MAXAL_INTERFACES]
+                           = {XA_IID_PLAY,     XA_IID_ANDROIDBUFFERQUEUESOURCE,
+                                               XA_IID_STREAMINFORMATION};
+
+    // create media player
+    res = (*engineEngine)->CreateMediaPlayer(engineEngine, &playerObj, &dataSrc,
+            NULL, &audioSnk, &imageVideoSink, NULL, NULL,
+            NB_MAXAL_INTERFACES /*XAuint32 numInterfaces*/,
+            iidArray /*const XAInterfaceID *pInterfaceIds*/,
+            required /*const XAboolean *pInterfaceRequired*/);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // release the Java string and UTF-8
+    (*env)->ReleaseStringUTFChars(env, filename, utf8);
+
+    // realize the player
+    res = (*playerObj)->Realize(playerObj, XA_BOOLEAN_FALSE);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // get the play interface
+    res = (*playerObj)->GetInterface(playerObj, XA_IID_PLAY, &playerPlayItf);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // get the stream information interface (for video size)
+    res = (*playerObj)->GetInterface(playerObj, XA_IID_STREAMINFORMATION, &playerStreamInfoItf);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // get the volume interface
+    res = (*playerObj)->GetInterface(playerObj, XA_IID_VOLUME, &playerVolItf);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // get the Android buffer queue interface
+    res = (*playerObj)->GetInterface(playerObj, XA_IID_ANDROIDBUFFERQUEUESOURCE, &playerBQItf);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // specify which events we want to be notified of
+    res = (*playerBQItf)->SetCallbackEventsMask(playerBQItf, XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // register the callback from which OpenMAX AL can retrieve the data to play
+    res = (*playerBQItf)->RegisterCallback(playerBQItf, AndroidBufferQueueCallback, NULL);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // we want to be notified of the video size once it's found, so we register a callback for that
+    res = (*playerStreamInfoItf)->RegisterStreamChangeCallback(playerStreamInfoItf,
+            StreamChangeCallback, NULL);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // enqueue the initial buffers
+    if (!enqueueInitialBuffers(JNI_FALSE)) {
+        return JNI_FALSE;
+    }
+
+    // prepare the player
+    res = (*playerPlayItf)->SetPlayState(playerPlayItf, XA_PLAYSTATE_PAUSED);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // set the volume
+    res = (*playerVolItf)->SetVolumeLevel(playerVolItf, 0);
+    assert(XA_RESULT_SUCCESS == res);
+
+    // start the playback
+    res = (*playerPlayItf)->SetPlayState(playerPlayItf, XA_PLAYSTATE_PLAYING);
+        assert(XA_RESULT_SUCCESS == res);
+
+    return JNI_TRUE;
+}
+
+
+// set the playing state for the streaming media player
+void Java_com_example_nativemedia_NativeMedia_setPlayingStreamingMediaPlayer(JNIEnv* env,
+        jclass clazz, jboolean isPlaying)
+{
+    XAresult res;
+
+    // make sure the streaming media player was created
+    if (NULL != playerPlayItf) {
+
+        // set the player's state
+        res = (*playerPlayItf)->SetPlayState(playerPlayItf, isPlaying ?
+            XA_PLAYSTATE_PLAYING : XA_PLAYSTATE_PAUSED);
+        assert(XA_RESULT_SUCCESS == res);
+
+    }
+
+}
+
+
+// shut down the native media system
+void Java_com_example_nativemedia_NativeMedia_shutdown(JNIEnv* env, jclass clazz)
+{
+    // destroy streaming media player object, and invalidate all associated interfaces
+    if (playerObj != NULL) {
+        (*playerObj)->Destroy(playerObj);
+        playerObj = NULL;
+        playerPlayItf = NULL;
+        playerBQItf = NULL;
+        playerStreamInfoItf = NULL;
+        playerVolItf = NULL;
+    }
+
+    // destroy output mix object, and invalidate all associated interfaces
+    if (outputMixObject != NULL) {
+        (*outputMixObject)->Destroy(outputMixObject);
+        outputMixObject = NULL;
+    }
+
+    // destroy engine object, and invalidate all associated interfaces
+    if (engineObject != NULL) {
+        (*engineObject)->Destroy(engineObject);
+        engineObject = NULL;
+        engineEngine = NULL;
+    }
+
+    // close the file
+    if (file != NULL) {
+        fclose(file);
+        file = NULL;
+    }
+
+    // make sure we don't leak native windows
+    if (theNativeWindow != NULL) {
+        ANativeWindow_release(theNativeWindow);
+        theNativeWindow = NULL;
+    }
+}
+
+
+// set the surface
+void Java_com_example_nativemedia_NativeMedia_setSurface(JNIEnv *env, jclass clazz, jobject surface)
+{
+    // obtain a native window from a Java surface
+    theNativeWindow = ANativeWindow_fromSurface(env, surface);
+}
+
+
+// rewind the streaming media player
+void Java_com_example_nativemedia_NativeMedia_rewindStreamingMediaPlayer(JNIEnv *env, jclass clazz)
+{
+    XAresult res;
+
+    // make sure the streaming media player was created
+    if (NULL != playerBQItf && NULL != file) {
+        // first wait for buffers currently in queue to be drained
+        int ok;
+        ok = pthread_mutex_lock(&mutex);
+        assert(0 == ok);
+        discontinuity = JNI_TRUE;
+        // wait for discontinuity request to be observed by buffer queue callback
+        // Note: can't rewind after EOS, which we send when reaching EOF
+        // (don't send EOS if you plan to play more content through the same player)
+        while (discontinuity && !reachedEof) {
+            ok = pthread_cond_wait(&cond, &mutex);
+            assert(0 == ok);
+        }
+        ok = pthread_mutex_unlock(&mutex);
+        assert(0 == ok);
+    }
+
+}
diff --git a/ndk/platforms/android-14/samples/native-media/res/drawable/icon.png b/ndk/platforms/android-14/samples/native-media/res/drawable/icon.png
new file mode 100644
index 0000000..a07c69f
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/res/drawable/icon.png
Binary files differ
diff --git a/ndk/platforms/android-14/samples/native-media/res/layout/main.xml b/ndk/platforms/android-14/samples/native-media/res/layout/main.xml
new file mode 100644
index 0000000..0e41339
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/res/layout/main.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    >
+<TextView
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/hello"
+    />
+<TextView
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/source_select"
+    />
+<Spinner
+    android:id="@+id/source_spinner"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/source_prompt"
+    />
+<TextView
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/sink_select"
+    />
+<Spinner
+    android:id="@+id/sink_spinner"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:text="@string/sink_prompt"
+    />
+
+<LinearLayout
+    android:orientation="horizontal"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    >
+    <Button
+        android:id="@+id/start_java"
+        android:text="@string/start_java"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        />
+    <Button
+        android:id="@+id/start_native"
+        android:text="@string/start_native"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        />
+    <Button
+        android:id="@+id/finish"
+        android:text="@string/finish"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        />
+</LinearLayout>
+
+<LinearLayout
+    android:orientation="horizontal"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    >
+    <Button
+        android:id="@+id/rewind_java"
+        android:text="@string/rewind_java"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        />
+    <Button
+        android:id="@+id/rewind_native"
+        android:text="@string/rewind_native"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        />
+</LinearLayout>
+
+<LinearLayout
+    android:orientation="horizontal"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    >
+    <TextView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="S1"
+        />
+    <SurfaceView
+        android:id="@+id/surfaceview1"
+        android:layout_width="320px"
+        android:layout_height="240px"
+        />
+    <TextView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="S2"
+        />
+    <SurfaceView
+        android:id="@+id/surfaceview2"
+        android:layout_width="400px"
+        android:layout_height="224px"
+        />
+</LinearLayout>
+
+<LinearLayout
+    android:orientation="horizontal"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    >
+    <TextView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="ST1"
+        />
+    <com.example.nativemedia.MyGLSurfaceView
+        android:id="@+id/glsurfaceview1"
+        android:layout_width="320px"
+        android:layout_height="240px"
+        />
+    <TextView
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="ST2"
+        />
+    <com.example.nativemedia.MyGLSurfaceView
+        android:id="@+id/glsurfaceview2"
+        android:layout_width="320px"
+        android:layout_height="240px"
+        />
+</LinearLayout>
+
+</LinearLayout>
diff --git a/ndk/platforms/android-14/samples/native-media/res/values/strings.xml b/ndk/platforms/android-14/samples/native-media/res/values/strings.xml
new file mode 100644
index 0000000..32a9a8e
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/res/values/strings.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="hello">Hello, Android, using native media!</string>
+    <string name="app_name">NativeMedia</string>
+
+    <string name="start_java">Start/Pause\nJava MediaPlayer</string>
+    <string name="start_native">Start/Pause\nnative MediaPlayer</string>
+    <string name="finish">Finish</string>
+
+    <string name="rewind_java">Rewind\nJava MediaPlayer</string>
+    <string name="rewind_native">Rewind\nnative MediaPlayer</string>
+
+    <string name="source_select">Please select the media source</string>
+    <string name="source_prompt">Media source</string>
+    <string-array name="source_array">
+        <item>/sdcard/NativeMedia.ts</item>
+    </string-array>
+
+    <string name="sink_select">Please select the video sink</string>
+    <string name="sink_prompt">Video sink</string>
+    <string-array name="sink_array">
+        <item>Surface 1</item>
+        <item>Surface 2</item>
+        <item>SurfaceTexture 1</item>
+        <item>SurfaceTexture 2</item>
+    </string-array>
+
+</resources>
diff --git a/ndk/platforms/android-14/samples/native-media/src/com/example/nativemedia/MyGLSurfaceView.java b/ndk/platforms/android-14/samples/native-media/src/com/example/nativemedia/MyGLSurfaceView.java
new file mode 100644
index 0000000..39a7ecf
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/src/com/example/nativemedia/MyGLSurfaceView.java
@@ -0,0 +1,336 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.nativemedia;
+
+import android.graphics.SurfaceTexture;
+import android.util.Log;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.opengles.GL10;
+
+import android.content.Context;
+
+import android.opengl.GLES20;
+import android.opengl.GLSurfaceView;
+import android.opengl.Matrix;
+
+import android.util.AttributeSet;
+
+public class MyGLSurfaceView extends GLSurfaceView {
+
+    MyRenderer mRenderer;
+
+    public MyGLSurfaceView(Context context) {
+        this(context, null);
+    }
+
+    public MyGLSurfaceView(Context context, AttributeSet attributeSet) {
+        super(context, attributeSet);
+        init();
+    }
+
+    private void init() {
+        setEGLContextClientVersion(2);
+        mRenderer = new MyRenderer();
+        setRenderer(mRenderer);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+    }
+
+    public SurfaceTexture getSurfaceTexture() {
+        return mRenderer.getSurfaceTexture();
+    }
+}
+
+class MyRenderer implements GLSurfaceView.Renderer, SurfaceTexture.OnFrameAvailableListener {
+
+    public MyRenderer() {
+        mVertices = ByteBuffer.allocateDirect(mVerticesData.length
+                * FLOAT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asFloatBuffer();
+        mVertices.put(mVerticesData).position(0);
+
+        Matrix.setIdentityM(mSTMatrix, 0);
+        Matrix.setIdentityM(mMMatrix, 0);
+        Matrix.rotateM(mMMatrix, 0, 20, 0, 1, 0);
+    }
+
+    public void onDrawFrame(GL10 glUnused) {
+        synchronized(this) {
+            if (updateSurface) {
+                mSurface.updateTexImage();
+
+                mSurface.getTransformMatrix(mSTMatrix);
+                updateSurface = false;
+            }
+        }
+
+        // Ignore the passed-in GL10 interface, and use the GLES20
+        // class's static methods instead.
+        GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
+        GLES20.glUseProgram(mProgram);
+        checkGlError("glUseProgram");
+
+        GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
+        GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
+
+        mVertices.position(VERTICES_DATA_POS_OFFSET);
+        GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false,
+                VERTICES_DATA_STRIDE_BYTES, mVertices);
+        checkGlError("glVertexAttribPointer maPosition");
+        GLES20.glEnableVertexAttribArray(maPositionHandle);
+        checkGlError("glEnableVertexAttribArray maPositionHandle");
+
+        mVertices.position(VERTICES_DATA_UV_OFFSET);
+        GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+                VERTICES_DATA_STRIDE_BYTES, mVertices);
+        checkGlError("glVertexAttribPointer maTextureHandle");
+        GLES20.glEnableVertexAttribArray(maTextureHandle);
+        checkGlError("glEnableVertexAttribArray maTextureHandle");
+
+        Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0);
+        Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
+
+        GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
+        GLES20.glUniformMatrix4fv(muSTMatrixHandle, 1, false, mSTMatrix, 0);
+
+        GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
+        checkGlError("glDrawArrays");
+    }
+
+    public void onSurfaceChanged(GL10 glUnused, int width, int height) {
+        // Ignore the passed-in GL10 interface, and use the GLES20
+        // class's static methods instead.
+        GLES20.glViewport(0, 0, width, height);
+        mRatio = (float) width / height;
+        Matrix.frustumM(mProjMatrix, 0, -mRatio, mRatio, -1, 1, 3, 7);
+    }
+
+    public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
+        // Ignore the passed-in GL10 interface, and use the GLES20
+        // class's static methods instead.
+
+        /* Set up alpha blending and an Android background color */
+        GLES20.glEnable(GLES20.GL_BLEND);
+        GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA);
+        GLES20.glClearColor(0.643f, 0.776f, 0.223f, 1.0f);
+
+        /* Set up shaders and handles to their variables */
+        mProgram = createProgram(mVertexShader, mFragmentShader);
+        if (mProgram == 0) {
+            return;
+        }
+        maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
+        checkGlError("glGetAttribLocation aPosition");
+        if (maPositionHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for aPosition");
+        }
+        maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");
+        checkGlError("glGetAttribLocation aTextureCoord");
+        if (maTextureHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for aTextureCoord");
+        }
+
+        muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
+        checkGlError("glGetUniformLocation uMVPMatrix");
+        if (muMVPMatrixHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for uMVPMatrix");
+        }
+
+        muSTMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uSTMatrix");
+        checkGlError("glGetUniformLocation uSTMatrix");
+        if (muMVPMatrixHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for uSTMatrix");
+        }
+
+        checkGlError("glGetUniformLocation uCRatio");
+        if (muMVPMatrixHandle == -1) {
+            throw new RuntimeException("Could not get attrib location for uCRatio");
+        }
+
+        /*
+         * Create our texture. This has to be done each time the
+         * surface is created.
+         */
+
+        int[] textures = new int[1];
+        GLES20.glGenTextures(1, textures, 0);
+
+        mTextureID = textures[0];
+        GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
+        checkGlError("glBindTexture mTextureID");
+
+        // Can't do mipmapping with camera source
+        GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
+                GLES20.GL_NEAREST);
+        GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
+                GLES20.GL_LINEAR);
+        // Clamp to edge is the only option
+        GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
+                GLES20.GL_CLAMP_TO_EDGE);
+        GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
+                GLES20.GL_CLAMP_TO_EDGE);
+        checkGlError("glTexParameteri mTextureID");
+
+        /*
+         * Create the SurfaceTexture that will feed this textureID, and pass it to the camera
+         */
+
+        mSurface = new SurfaceTexture(mTextureID);
+        mSurface.setOnFrameAvailableListener(this);
+
+        Matrix.setLookAtM(mVMatrix, 0, 0, 0, 4f, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
+
+        synchronized(this) {
+            updateSurface = false;
+        }
+    }
+
+    synchronized public void onFrameAvailable(SurfaceTexture surface) {
+        /* For simplicity, SurfaceTexture calls here when it has new
+         * data available.  Call may come in from some random thread,
+         * so let's be safe and use synchronize. No OpenGL calls can be done here.
+         */
+        updateSurface = true;
+        //Log.v(TAG, "onFrameAvailable " + surface.getTimestamp());
+    }
+
+    private int loadShader(int shaderType, String source) {
+        int shader = GLES20.glCreateShader(shaderType);
+        if (shader != 0) {
+            GLES20.glShaderSource(shader, source);
+            GLES20.glCompileShader(shader);
+            int[] compiled = new int[1];
+            GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
+            if (compiled[0] == 0) {
+                Log.e(TAG, "Could not compile shader " + shaderType + ":");
+                Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
+                GLES20.glDeleteShader(shader);
+                shader = 0;
+            }
+        }
+        return shader;
+    }
+
+    private int createProgram(String vertexSource, String fragmentSource) {
+        int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
+        if (vertexShader == 0) {
+            return 0;
+        }
+        int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
+        if (pixelShader == 0) {
+            return 0;
+        }
+
+        int program = GLES20.glCreateProgram();
+        if (program != 0) {
+            GLES20.glAttachShader(program, vertexShader);
+            checkGlError("glAttachShader");
+            GLES20.glAttachShader(program, pixelShader);
+            checkGlError("glAttachShader");
+            GLES20.glLinkProgram(program);
+            int[] linkStatus = new int[1];
+            GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
+            if (linkStatus[0] != GLES20.GL_TRUE) {
+                Log.e(TAG, "Could not link program: ");
+                Log.e(TAG, GLES20.glGetProgramInfoLog(program));
+                GLES20.glDeleteProgram(program);
+                program = 0;
+            }
+        }
+        return program;
+    }
+
+    private void checkGlError(String op) {
+        int error;
+        while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+            Log.e(TAG, op + ": glError " + error);
+            throw new RuntimeException(op + ": glError " + error);
+        }
+    }
+
+    private static final int FLOAT_SIZE_BYTES = 4;
+    private static final int VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
+    private static final int VERTICES_DATA_POS_OFFSET = 0;
+    private static final int VERTICES_DATA_UV_OFFSET = 3;
+    private final float[] mVerticesData = {
+        // X, Y, Z, U, V
+        -1.0f, -1.0f, 0, 0.f, 0.f,
+        1.0f, -1.0f, 0, 1.f, 0.f,
+        -1.0f,  1.0f, 0, 0.f, 1.f,
+        1.0f,   1.0f, 0, 1.f, 1.f,
+    };
+
+    private FloatBuffer mVertices;
+
+    private final String mVertexShader =
+        "uniform mat4 uMVPMatrix;\n" +
+        "uniform mat4 uSTMatrix;\n" +
+        "attribute vec4 aPosition;\n" +
+        "attribute vec4 aTextureCoord;\n" +
+        "varying vec2 vTextureCoord;\n" +
+        "void main() {\n" +
+        "  gl_Position = uMVPMatrix * aPosition;\n" +
+        "  vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" +
+        "}\n";
+
+    private final String mFragmentShader =
+        "#extension GL_OES_EGL_image_external : require\n" +
+        "precision mediump float;\n" +
+        "varying vec2 vTextureCoord;\n" +
+        "uniform samplerExternalOES sTexture;\n" +
+        "void main() {\n" +
+        "  gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
+        "}\n";
+
+    private float[] mMVPMatrix = new float[16];
+    private float[] mProjMatrix = new float[16];
+    private float[] mMMatrix = new float[16];
+    private float[] mVMatrix = new float[16];
+    private float[] mSTMatrix = new float[16];
+
+    private int mProgram;
+    private int mTextureID;
+    private int muMVPMatrixHandle;
+    private int muSTMatrixHandle;
+    private int maPositionHandle;
+    private int maTextureHandle;
+
+    private float mRatio = 1.0f;
+    private SurfaceTexture mSurface;
+    private boolean updateSurface = false;
+
+    private static final String TAG = "MyRenderer";
+
+    // Magic key
+    private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65;
+
+    public SurfaceTexture getSurfaceTexture() {
+        return mSurface;
+    }
+}
diff --git a/ndk/platforms/android-14/samples/native-media/src/com/example/nativemedia/NativeMedia.java b/ndk/platforms/android-14/samples/native-media/src/com/example/nativemedia/NativeMedia.java
new file mode 100644
index 0000000..3b5f49b
--- /dev/null
+++ b/ndk/platforms/android-14/samples/native-media/src/com/example/nativemedia/NativeMedia.java
@@ -0,0 +1,407 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.nativemedia;
+
+import android.app.Activity;
+import android.graphics.SurfaceTexture;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Surface;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.Spinner;
+import java.io.IOException;
+
+public class NativeMedia extends Activity {
+    static final String TAG = "NativeMedia";
+
+    String mSourceString = null;
+    String mSinkString = null;
+
+    // member variables for Java media player
+    MediaPlayer mMediaPlayer;
+    boolean mMediaPlayerIsPrepared = false;
+    SurfaceView mSurfaceView1;
+    SurfaceHolder mSurfaceHolder1;
+
+    // member variables for native media player
+    boolean mIsPlayingStreaming = false;
+    SurfaceView mSurfaceView2;
+    SurfaceHolder mSurfaceHolder2;
+
+    VideoSink mSelectedVideoSink;
+    VideoSink mJavaMediaPlayerVideoSink;
+    VideoSink mNativeMediaPlayerVideoSink;
+
+    SurfaceHolderVideoSink mSurfaceHolder1VideoSink, mSurfaceHolder2VideoSink;
+    GLViewVideoSink mGLView1VideoSink, mGLView2VideoSink;
+
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        setContentView(R.layout.main);
+
+        mGLView1 = (MyGLSurfaceView) findViewById(R.id.glsurfaceview1);
+        mGLView2 = (MyGLSurfaceView) findViewById(R.id.glsurfaceview2);
+
+        // initialize native media system
+        createEngine();
+
+        // set up the Surface 1 video sink
+        mSurfaceView1 = (SurfaceView) findViewById(R.id.surfaceview1);
+        mSurfaceHolder1 = mSurfaceView1.getHolder();
+
+        mSurfaceHolder1.addCallback(new SurfaceHolder.Callback() {
+
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                Log.v(TAG, "surfaceChanged format=" + format + ", width=" + width + ", height="
+                        + height);
+            }
+
+            public void surfaceCreated(SurfaceHolder holder) {
+                Log.v(TAG, "surfaceCreated");
+                setSurface(holder.getSurface());
+            }
+
+            public void surfaceDestroyed(SurfaceHolder holder) {
+                Log.v(TAG, "surfaceDestroyed");
+            }
+
+        });
+
+        // set up the Surface 2 video sink
+        mSurfaceView2 = (SurfaceView) findViewById(R.id.surfaceview2);
+        mSurfaceHolder2 = mSurfaceView2.getHolder();
+
+        mSurfaceHolder2.addCallback(new SurfaceHolder.Callback() {
+
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+                Log.v(TAG, "surfaceChanged format=" + format + ", width=" + width + ", height="
+                        + height);
+            }
+
+            public void surfaceCreated(SurfaceHolder holder) {
+                Log.v(TAG, "surfaceCreated");
+                setSurface(holder.getSurface());
+            }
+
+            public void surfaceDestroyed(SurfaceHolder holder) {
+                Log.v(TAG, "surfaceDestroyed");
+            }
+
+        });
+
+        // create Java media player
+        mMediaPlayer = new MediaPlayer();
+
+        // set up Java media player listeners
+        mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
+
+            public void onPrepared(MediaPlayer mediaPlayer) {
+                int width = mediaPlayer.getVideoWidth();
+                int height = mediaPlayer.getVideoHeight();
+                Log.v(TAG, "onPrepared width=" + width + ", height=" + height);
+                if (width != 0 && height != 0 && mJavaMediaPlayerVideoSink != null) {
+                    mJavaMediaPlayerVideoSink.setFixedSize(width, height);
+                }
+                mMediaPlayerIsPrepared = true;
+                mediaPlayer.start();
+            }
+
+        });
+
+        mMediaPlayer.setOnVideoSizeChangedListener(new MediaPlayer.OnVideoSizeChangedListener() {
+
+            public void onVideoSizeChanged(MediaPlayer mediaPlayer, int width, int height) {
+                Log.v(TAG, "onVideoSizeChanged width=" + width + ", height=" + height);
+                if (width != 0 && height != 0 && mJavaMediaPlayerVideoSink != null) {
+                    mJavaMediaPlayerVideoSink.setFixedSize(width, height);
+                }
+            }
+
+        });
+
+        // initialize content source spinner
+        Spinner sourceSpinner = (Spinner) findViewById(R.id.source_spinner);
+        ArrayAdapter<CharSequence> sourceAdapter = ArrayAdapter.createFromResource(
+                this, R.array.source_array, android.R.layout.simple_spinner_item);
+        sourceAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        sourceSpinner.setAdapter(sourceAdapter);
+        sourceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+
+            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+                mSourceString = parent.getItemAtPosition(pos).toString();
+                Log.v(TAG, "onItemSelected " + mSourceString);
+            }
+
+            public void onNothingSelected(AdapterView parent) {
+                Log.v(TAG, "onNothingSelected");
+                mSourceString = null;
+            }
+
+        });
+
+        // initialize video sink spinner
+        Spinner sinkSpinner = (Spinner) findViewById(R.id.sink_spinner);
+        ArrayAdapter<CharSequence> sinkAdapter = ArrayAdapter.createFromResource(
+                this, R.array.sink_array, android.R.layout.simple_spinner_item);
+        sinkAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+        sinkSpinner.setAdapter(sinkAdapter);
+        sinkSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+
+            public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
+                mSinkString = parent.getItemAtPosition(pos).toString();
+                Log.v(TAG, "onItemSelected " + mSinkString);
+                if ("Surface 1".equals(mSinkString)) {
+                    if (mSurfaceHolder1VideoSink == null) {
+                        mSurfaceHolder1VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder1);
+                    }
+                    mSelectedVideoSink = mSurfaceHolder1VideoSink;
+                } else if ("Surface 2".equals(mSinkString)) {
+                    if (mSurfaceHolder2VideoSink == null) {
+                        mSurfaceHolder2VideoSink = new SurfaceHolderVideoSink(mSurfaceHolder2);
+                    }
+                    mSelectedVideoSink = mSurfaceHolder2VideoSink;
+                } else if ("SurfaceTexture 1".equals(mSinkString)) {
+                    if (mGLView1VideoSink == null) {
+                        mGLView1VideoSink = new GLViewVideoSink(mGLView1);
+                    }
+                    mSelectedVideoSink = mGLView1VideoSink;
+                } else if ("SurfaceTexture 2".equals(mSinkString)) {
+                    if (mGLView2VideoSink == null) {
+                        mGLView2VideoSink = new GLViewVideoSink(mGLView2);
+                    }
+                    mSelectedVideoSink = mGLView2VideoSink;
+                }
+            }
+
+            public void onNothingSelected(AdapterView parent) {
+                Log.v(TAG, "onNothingSelected");
+                mSinkString = null;
+                mSelectedVideoSink = null;
+            }
+
+        });
+
+        // initialize button click handlers
+
+        // Java MediaPlayer start/pause
+
+        ((Button) findViewById(R.id.start_java)).setOnClickListener(new View.OnClickListener() {
+
+            public void onClick(View view) {
+                if (mJavaMediaPlayerVideoSink == null) {
+                    if (mSelectedVideoSink == null) {
+                        return;
+                    }
+                    mSelectedVideoSink.useAsSinkForJava(mMediaPlayer);
+                    mJavaMediaPlayerVideoSink = mSelectedVideoSink;
+                }
+                if (!mMediaPlayerIsPrepared) {
+                    if (mSourceString != null) {
+                        try {
+                            mMediaPlayer.setDataSource(mSourceString);
+                        } catch (IOException e) {
+                            Log.e(TAG, "IOException " + e);
+                        }
+                        mMediaPlayer.prepareAsync();
+                    }
+                } else if (mMediaPlayer.isPlaying()) {
+                    mMediaPlayer.pause();
+                } else {
+                    mMediaPlayer.start();
+                }
+            }
+
+        });
+
+        // native MediaPlayer start/pause
+
+        ((Button) findViewById(R.id.start_native)).setOnClickListener(new View.OnClickListener() {
+
+            boolean created = false;
+            public void onClick(View view) {
+                if (!created) {
+                    if (mNativeMediaPlayerVideoSink == null) {
+                        if (mSelectedVideoSink == null) {
+                            return;
+                        }
+                        mSelectedVideoSink.useAsSinkForNative();
+                        mNativeMediaPlayerVideoSink = mSelectedVideoSink;
+                    }
+                    if (mSourceString != null) {
+                        created = createStreamingMediaPlayer(mSourceString);
+                    }
+                }
+                if (created) {
+                    mIsPlayingStreaming = !mIsPlayingStreaming;
+                    setPlayingStreamingMediaPlayer(mIsPlayingStreaming);
+                }
+            }
+
+        });
+
+        // finish
+
+        ((Button) findViewById(R.id.finish)).setOnClickListener(new View.OnClickListener() {
+
+            public void onClick(View view) {
+                finish();
+            }
+
+        });
+
+        // Java MediaPlayer rewind
+
+        ((Button) findViewById(R.id.rewind_java)).setOnClickListener(new View.OnClickListener() {
+
+            public void onClick(View view) {
+                if (mMediaPlayerIsPrepared) {
+                    mMediaPlayer.seekTo(0);
+                }
+            }
+
+        });
+
+        // native MediaPlayer rewind
+
+        ((Button) findViewById(R.id.rewind_native)).setOnClickListener(new View.OnClickListener() {
+
+            public void onClick(View view) {
+                if (mNativeMediaPlayerVideoSink != null) {
+                    rewindStreamingMediaPlayer();
+                }
+            }
+
+        });
+
+    }
+
+    /** Called when the activity is about to be paused. */
+    @Override
+    protected void onPause()
+    {
+        mIsPlayingStreaming = false;
+        setPlayingStreamingMediaPlayer(false);
+        mGLView1.onPause();
+        mGLView2.onPause();
+        super.onPause();
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mGLView1.onResume();
+        mGLView2.onResume();
+    }
+
+    /** Called when the activity is about to be destroyed. */
+    @Override
+    protected void onDestroy()
+    {
+        shutdown();
+        super.onDestroy();
+    }
+
+    private MyGLSurfaceView mGLView1, mGLView2;
+
+    /** Native methods, implemented in jni folder */
+    public static native void createEngine();
+    public static native boolean createStreamingMediaPlayer(String filename);
+    public static native void setPlayingStreamingMediaPlayer(boolean isPlaying);
+    public static native void shutdown();
+    public static native void setSurface(Surface surface);
+    public static native void rewindStreamingMediaPlayer();
+
+    /** Load jni .so on initialization */
+    static {
+         System.loadLibrary("native-media-jni");
+    }
+
+    // VideoSink abstracts out the difference between Surface and SurfaceTexture
+    // aka SurfaceHolder and GLSurfaceView
+    static abstract class VideoSink {
+
+        abstract void setFixedSize(int width, int height);
+        abstract void useAsSinkForJava(MediaPlayer mediaPlayer);
+        abstract void useAsSinkForNative();
+
+    }
+
+    static class SurfaceHolderVideoSink extends VideoSink {
+
+        private final SurfaceHolder mSurfaceHolder;
+
+        SurfaceHolderVideoSink(SurfaceHolder surfaceHolder) {
+            mSurfaceHolder = surfaceHolder;
+        }
+
+        void setFixedSize(int width, int height) {
+            mSurfaceHolder.setFixedSize(width, height);
+        }
+
+        void useAsSinkForJava(MediaPlayer mediaPlayer) {
+            // Use the newer MediaPlayer.setSurface(Surface) since API level 14
+            // instead of MediaPlayer.setDisplay(mSurfaceHolder) since API level 1,
+            // because setSurface also works with a Surface derived from a SurfaceTexture.
+            Surface s = mSurfaceHolder.getSurface();
+            mediaPlayer.setSurface(s);
+            s.release();
+        }
+
+        void useAsSinkForNative() {
+            Surface s = mSurfaceHolder.getSurface();
+            setSurface(s);
+            s.release();
+        }
+
+    }
+
+    static class GLViewVideoSink extends VideoSink {
+
+        private final MyGLSurfaceView mMyGLSurfaceView;
+
+        GLViewVideoSink(MyGLSurfaceView myGLSurfaceView) {
+            mMyGLSurfaceView = myGLSurfaceView;
+        }
+
+        void setFixedSize(int width, int height) {
+        }
+
+        void useAsSinkForJava(MediaPlayer mediaPlayer) {
+            SurfaceTexture st = mMyGLSurfaceView.getSurfaceTexture();
+            Surface s = new Surface(st);
+            mediaPlayer.setSurface(s);
+            s.release();
+        }
+
+        void useAsSinkForNative() {
+            SurfaceTexture st = mMyGLSurfaceView.getSurfaceTexture();
+            Surface s = new Surface(st);
+            setSurface(s);
+            s.release();
+        }
+
+    }
+
+}
diff --git a/ndk/platforms/android-3/arch-arm/include/asm/ptrace.h b/ndk/platforms/android-3/arch-arm/include/asm/ptrace.h
index c6dfea1..a04eec3 100644
--- a/ndk/platforms/android-3/arch-arm/include/asm/ptrace.h
+++ b/ndk/platforms/android-3/arch-arm/include/asm/ptrace.h
@@ -29,6 +29,9 @@
 #define PTRACE_GETCRUNCHREGS 25
 #define PTRACE_SETCRUNCHREGS 26
 
+#define PTRACE_GETVFPREGS 27
+#define PTRACE_SETVFPREGS 28
+
 #define USR26_MODE 0x00000000
 #define FIQ26_MODE 0x00000001
 #define IRQ26_MODE 0x00000002
diff --git a/ndk/platforms/android-3/arch-arm/include/asm/types.h b/ndk/platforms/android-3/arch-arm/include/asm/types.h
index ec60f10..80cea8d 100644
--- a/ndk/platforms/android-3/arch-arm/include/asm/types.h
+++ b/ndk/platforms/android-3/arch-arm/include/asm/types.h
@@ -25,7 +25,7 @@
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
 
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#ifdef __GNUC__
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
diff --git a/ndk/platforms/android-3/arch-arm/include/asm/user.h b/ndk/platforms/android-3/arch-arm/include/asm/user.h
index 5f25850..d0baecd 100644
--- a/ndk/platforms/android-3/arch-arm/include/asm/user.h
+++ b/ndk/platforms/android-3/arch-arm/include/asm/user.h
@@ -58,4 +58,15 @@
 #define HOST_TEXT_START_ADDR (u.start_code)
 #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
 
+struct user_vfp {
+ unsigned long long fpregs[32];
+ unsigned long fpscr;
+};
+
+struct user_vfp_exc {
+ unsigned long fpexc;
+ unsigned long fpinst;
+ unsigned long fpinst2;
+};
+
 #endif
diff --git a/ndk/platforms/android-3/arch-arm/lib/crtbegin_dynamic.o b/ndk/platforms/android-3/arch-arm/lib/crtbegin_dynamic.o
deleted file mode 100644
index f34cba8..0000000
--- a/ndk/platforms/android-3/arch-arm/lib/crtbegin_dynamic.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-3/arch-arm/lib/crtbegin_so.o b/ndk/platforms/android-3/arch-arm/lib/crtbegin_so.o
deleted file mode 100644
index 5230178..0000000
--- a/ndk/platforms/android-3/arch-arm/lib/crtbegin_so.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-3/arch-arm/lib/crtbegin_static.o b/ndk/platforms/android-3/arch-arm/lib/crtbegin_static.o
deleted file mode 100644
index f34cba8..0000000
--- a/ndk/platforms/android-3/arch-arm/lib/crtbegin_static.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-3/arch-arm/lib/crtend_android.o b/ndk/platforms/android-3/arch-arm/lib/crtend_android.o
deleted file mode 100644
index c57149e..0000000
--- a/ndk/platforms/android-3/arch-arm/lib/crtend_android.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-3/arch-arm/lib/crtend_so.o b/ndk/platforms/android-3/arch-arm/lib/crtend_so.o
deleted file mode 100644
index c54db97..0000000
--- a/ndk/platforms/android-3/arch-arm/lib/crtend_so.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-3/arch-arm/src/__dso_handle.S b/ndk/platforms/android-3/arch-arm/src/__dso_handle.S
new file mode 100644
index 0000000..2d78389
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/__dso_handle.S
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+# The __dso_handle global variable is used by static
+# C++ constructors and destructors in the binary.
+# See http://www.codesourcery.com/public/cxx-abi/abi.html#dso-dtor
+#
+        .data
+        .align 4
+
+/* CRT_LEGACY_WORKAROUND is only defined when building this file
+ * for the C library. This forces __dso_handle to be exported by
+ * it. This is only required to ensure binary compatibility with
+ * old NDK application machine code that contains reference to
+ * the symbol, but do not have a proper definition for it.
+ *
+ * These binaries cannot call their destructorson dlclose(), but
+ * at least they will not fail to load.
+ *
+ * When this file is built for the NDK, CRT_LEGACY_WORKAROUND
+ * should never be defined.
+ */
+
+#ifndef CRT_LEGACY_WORKAROUND
+	.hidden __dso_handle
+#endif
+
+        .globl __dso_handle
+__dso_handle:
+        .long __dso_handle
diff --git a/ndk/platforms/android-3/arch-arm/src/__dso_handle_so.S b/ndk/platforms/android-3/arch-arm/src/__dso_handle_so.S
new file mode 100644
index 0000000..77a5d7f
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/__dso_handle_so.S
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+# The __dso_handle global variable is used by static
+# C++ constructors and destructors in the binary.
+# See http://www.codesourcery.com/public/cxx-abi/abi.html#dso-dtor
+#
+	.data
+        .align 4
+	.hidden __dso_handle
+        .globl __dso_handle
+__dso_handle:
+        .long __dso_handle
diff --git a/ndk/platforms/android-3/arch-arm/src/atexit.S b/ndk/platforms/android-3/arch-arm/src/atexit.S
new file mode 100644
index 0000000..b6401ed
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/atexit.S
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/* CRT_LEGACY_WORKAROUND should only be defined when building
+ * this file as part of the platform's C library.
+ *
+ * The C library already defines a function named 'atexit()'
+ * for backwards compatibility with older NDK-generated binaries.
+ *
+ * For newer ones, 'atexit' is actually embedded in the C
+ * runtime objects that are linked into the final ELF
+ * binary (shared library or executable), and will call
+ * __cxa_atexit() in order to un-register any atexit()
+ * handler when a library is unloaded.
+ *
+ * This function must be global *and* hidden. Only the
+ * code inside the same ELF binary should be able to access it.
+ */
+#ifndef CRT_LEGACY_WORKAROUND
+	.arch armv5te
+	.fpu softvfp
+	.eabi_attribute 20, 1
+	.eabi_attribute 21, 1
+	.eabi_attribute 23, 3
+	.eabi_attribute 24, 1
+	.eabi_attribute 25, 1
+	.eabi_attribute 26, 2
+	.eabi_attribute 30, 4
+	.eabi_attribute 18, 4
+	.hidden	atexit
+	.code	16
+	.thumb_func
+        .text
+        .align 0
+        .global atexit
+        .type atexit, #function
+atexit: .fnstart
+.LFB0:
+	.save	{r4, lr}
+	push	{r4, lr}
+.LCFI0:
+	ldr	r3, .L3
+	mov	r1, #0
+	@ sp needed for prologue
+.LPIC0:
+	add	r3, pc
+	ldr	r2, [r3]
+        ldr     r3, =__cxa_atexit
+	blx     r3
+	pop	{r4, pc}
+.L4:
+	.align	2
+.L3:
+	.word	__dso_handle-(.LPIC0+4)
+.LFE0:
+        .fnend
+        .size atexit, . - atexit
+#endif
diff --git a/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S b/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S
new file mode 100644
index 0000000..6ca0845
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/crtbegin_dynamic.S
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.text
+	.align 4
+	.type _start,#function
+	.globl _start
+
+# this is the small startup code that is first run when
+# any executable that is dynamically-linked with Bionic
+# runs.
+#
+# it's purpose is to call __libc_init with appropriate
+# arguments, which are:
+#
+#    - the address of the raw data block setup by the Linux
+#      kernel ELF loader
+#
+#    - address of an "onexit" function, not used on any
+#      platform supported by Bionic
+#
+#    - address of the "main" function of the program.
+#
+#    - address of the constructor list
+#
+_start:	
+	mov	r0, sp
+	mov	r1, #0
+	ldr	r2, =main
+	adr	r3, 1f
+	ldr	r4, =__libc_init
+	bx	r4
+
+1:  .long   __PREINIT_ARRAY__
+    .long   __INIT_ARRAY__
+    .long   __FINI_ARRAY__
+    .long   __CTOR_LIST__
+
+	.section .preinit_array, "aw"
+	.globl __PREINIT_ARRAY__
+__PREINIT_ARRAY__:
+	.long -1
+
+	.section .init_array, "aw"
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+
+	.section .fini_array, "aw"
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+
+	.section .ctors, "aw"
+	.globl __CTOR_LIST__
+__CTOR_LIST__:
+	.long -1
+
+#include "__dso_handle.S"
+#include "atexit.S"
diff --git a/ndk/platforms/android-3/arch-arm/src/crtbegin_so.S b/ndk/platforms/android-3/arch-arm/src/crtbegin_so.S
new file mode 100644
index 0000000..9275b1e
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/crtbegin_so.S
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+# Implement static C++ destructors when the shared
+# library is unloaded through dlclose().
+#
+# A call to this function must be the first entry
+# in the .fini_array. See 3.3.5.3.C of C++ ABI
+# standard.
+#
+__on_dlclose:
+        adr     r0, 0f
+        ldr     r0, [r0]
+        b       __cxa_finalize
+
+0:
+        .long   __dso_handle
+
+	.section .init_array, "aw"
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+
+        .section .fini_array, "aw"
+        .globl __FINI_ARRAY__
+__FINI_ARRAY__:
+        .long -1
+        .long __on_dlclose
+
+#ifdef CRT_LEGACY_WORKAROUND
+#include "__dso_handle.S"
+#else
+#include "__dso_handle_so.S"
+#endif
+
+#include "atexit.S"
diff --git a/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S b/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S
new file mode 100644
index 0000000..ec13351
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/crtbegin_static.S
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.text
+	.align 4
+	.type _start,#function
+	.globl _start
+
+# this is the small startup code that is first run when
+# any executable that is statically-linked with Bionic
+# runs.
+#
+# it's purpose is to call __libc_init with appropriate
+# arguments, which are:
+#
+#    - the address of the raw data block setup by the Linux
+#      kernel ELF loader
+#
+#    - address of an "onexit" function, not used on any
+#      platform supported by Bionic
+#
+#    - address of the "main" function of the program.
+#
+#    - address of the constructor list
+#
+_start:	
+	mov	r0, sp
+	mov	r1, #0
+	ldr	r2, =main
+	adr	r3, 1f
+	ldr	r4, =__libc_init
+	bx	r4
+
+1:  .long   __PREINIT_ARRAY__
+    .long   __INIT_ARRAY__
+    .long   __FINI_ARRAY__
+    .long   __CTOR_LIST__
+
+	.section .preinit_array, "aw"
+	.globl __PREINIT_ARRAY__
+__PREINIT_ARRAY__:
+	.long -1
+
+	.section .init_array, "aw"
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+
+	.section .fini_array, "aw"
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+
+	.section .ctors, "aw"
+	.globl __CTOR_LIST__
+__CTOR_LIST__:
+	.long -1
+
+
+#include "__dso_handle.S"
+/* NOTE: atexit() is  not be provided by crtbegin_static.S, but by libc.a */
+
diff --git a/ndk/platforms/android-3/arch-arm/src/crtend.S b/ndk/platforms/android-3/arch-arm/src/crtend.S
new file mode 100644
index 0000000..2f3b1ed
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/crtend.S
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	
+	.section .preinit_array, "aw"
+	.long 0
+
+	.section .init_array, "aw"
+	.long 0
+
+	.section .fini_array, "aw"
+	.long 0
+
+	.section .ctors, "aw"
+	.long 0
+
diff --git a/ndk/platforms/android-3/arch-arm/src/crtend_so.S b/ndk/platforms/android-3/arch-arm/src/crtend_so.S
new file mode 100644
index 0000000..a1281c4
--- /dev/null
+++ b/ndk/platforms/android-3/arch-arm/src/crtend_so.S
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/* This is the same than crtend.S except that a shared library
+ * cannot have a .preinit_array
+ */
+	
+	.section .init_array, "aw"
+	.long 0
+
+	.section .fini_array, "aw"
+	.long 0
+
diff --git a/ndk/platforms/android-3/include/asm-generic/resource.h b/ndk/platforms/android-3/include/asm-generic/resource.h
index a7f7dec..3106473 100644
--- a/ndk/platforms/android-3/include/asm-generic/resource.h
+++ b/ndk/platforms/android-3/include/asm-generic/resource.h
@@ -43,8 +43,9 @@
 #define RLIMIT_MSGQUEUE 12  
 #define RLIMIT_NICE 13  
 #define RLIMIT_RTPRIO 14  
+#define RLIMIT_RTTIME 15  
 
-#define RLIM_NLIMITS 15
+#define RLIM_NLIMITS 16
 
 #ifndef RLIM_INFINITY
 #define RLIM_INFINITY (~0UL)
diff --git a/ndk/platforms/android-3/include/linux/ipv6.h b/ndk/platforms/android-3/include/linux/ipv6.h
new file mode 100644
index 0000000..f4ee9a1
--- /dev/null
+++ b/ndk/platforms/android-3/include/linux/ipv6.h
@@ -0,0 +1,133 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IPV6_H
+#define _IPV6_H
+
+#include <linux/types.h>
+#include <linux/in6.h>
+#include <asm/byteorder.h>
+
+#define IPV6_MIN_MTU 1280
+
+struct in6_pktinfo {
+ struct in6_addr ipi6_addr;
+ int ipi6_ifindex;
+};
+
+struct ip6_mtuinfo {
+ struct sockaddr_in6 ip6m_addr;
+ __u32 ip6m_mtu;
+};
+
+struct in6_ifreq {
+ struct in6_addr ifr6_addr;
+ __u32 ifr6_prefixlen;
+ int ifr6_ifindex;
+};
+
+#define IPV6_SRCRT_STRICT 0x01  
+#define IPV6_SRCRT_TYPE_0 0  
+#define IPV6_SRCRT_TYPE_2 2  
+
+struct ipv6_rt_hdr {
+ __u8 nexthdr;
+ __u8 hdrlen;
+ __u8 type;
+ __u8 segments_left;
+
+};
+
+struct ipv6_opt_hdr {
+ __u8 nexthdr;
+ __u8 hdrlen;
+
+} __attribute__((packed));
+
+#define ipv6_destopt_hdr ipv6_opt_hdr
+#define ipv6_hopopt_hdr ipv6_opt_hdr
+
+struct rt0_hdr {
+ struct ipv6_rt_hdr rt_hdr;
+ __u32 reserved;
+ struct in6_addr addr[0];
+
+#define rt0_type rt_hdr.type
+};
+
+struct rt2_hdr {
+ struct ipv6_rt_hdr rt_hdr;
+ __u32 reserved;
+ struct in6_addr addr;
+
+#define rt2_type rt_hdr.type
+};
+
+struct ipv6_destopt_hao {
+ __u8 type;
+ __u8 length;
+ struct in6_addr addr;
+} __attribute__((packed));
+
+struct ipv6hdr {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+ __u8 priority:4,
+ version:4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+ __u8 version:4,
+ priority:4;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+ __u8 flow_lbl[3];
+
+ __be16 payload_len;
+ __u8 nexthdr;
+ __u8 hop_limit;
+
+ struct in6_addr saddr;
+ struct in6_addr daddr;
+};
+
+enum {
+ DEVCONF_FORWARDING = 0,
+ DEVCONF_HOPLIMIT,
+ DEVCONF_MTU6,
+ DEVCONF_ACCEPT_RA,
+ DEVCONF_ACCEPT_REDIRECTS,
+ DEVCONF_AUTOCONF,
+ DEVCONF_DAD_TRANSMITS,
+ DEVCONF_RTR_SOLICITS,
+ DEVCONF_RTR_SOLICIT_INTERVAL,
+ DEVCONF_RTR_SOLICIT_DELAY,
+ DEVCONF_USE_TEMPADDR,
+ DEVCONF_TEMP_VALID_LFT,
+ DEVCONF_TEMP_PREFERED_LFT,
+ DEVCONF_REGEN_MAX_RETRY,
+ DEVCONF_MAX_DESYNC_FACTOR,
+ DEVCONF_MAX_ADDRESSES,
+ DEVCONF_FORCE_MLD_VERSION,
+ DEVCONF_ACCEPT_RA_DEFRTR,
+ DEVCONF_ACCEPT_RA_PINFO,
+ DEVCONF_ACCEPT_RA_RTR_PREF,
+ DEVCONF_RTR_PROBE_INTERVAL,
+ DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
+ DEVCONF_PROXY_NDP,
+ DEVCONF_OPTIMISTIC_DAD,
+ DEVCONF_ACCEPT_SOURCE_ROUTE,
+ DEVCONF_MC_FORWARDING,
+ DEVCONF_DISABLE_IPV6,
+ DEVCONF_ACCEPT_DAD,
+ DEVCONF_FORCE_TLLAO,
+ DEVCONF_MAX
+};
+
+#endif
diff --git a/ndk/platforms/android-9/arch-x86/include/sys/atomics.h b/ndk/platforms/android-3/include/net/ethernet.h
similarity index 62%
rename from ndk/platforms/android-9/arch-x86/include/sys/atomics.h
rename to ndk/platforms/android-3/include/net/ethernet.h
index 7aed3ae..b1b88dd 100644
--- a/ndk/platforms/android-9/arch-x86/include/sys/atomics.h
+++ b/ndk/platforms/android-3/include/net/ethernet.h
@@ -25,41 +25,8 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _SYS_ATOMICS_H
-#define _SYS_ATOMICS_H
-
-#include <sys/cdefs.h>
-#include <sys/time.h>
-
-__BEGIN_DECLS
-
-static inline __attribute__((always_inline)) int
-__atomic_cmpxchg(int old, int _new, volatile int *ptr)
-{
-  return !__sync_bool_compare_and_swap (ptr, old, _new);
-}
-
-static inline __attribute__((always_inline)) int
-__atomic_swap(int _new, volatile int *ptr)
-{
-  return __sync_lock_test_and_set(ptr, _new);
-}
-
-static inline __attribute__((always_inline)) int
-__atomic_dec(volatile int *ptr)
-{
-  return __sync_fetch_and_sub (ptr, 1);
-}
-
-static inline __attribute__((always_inline)) int
-__atomic_inc(volatile int *ptr)
-{
-  return __sync_fetch_and_add (ptr, 1);
-}
-
-int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
-int __futex_wake(volatile void *ftx, int count);
-
-__END_DECLS
-
-#endif /* _SYS_ATOMICS_H */
+#ifndef _NET_ETHERNET_H_
+#define _NET_IF_ETHERNET_H_
+#include <linux/if_ether.h>
+#include <net/if_ether.h>
+#endif /* !_NET_ETHERNET_H_ */
diff --git a/ndk/platforms/android-3/include/net/if_ether.h b/ndk/platforms/android-3/include/net/if_ether.h
index 121f9ac..8daa16b 100644
--- a/ndk/platforms/android-3/include/net/if_ether.h
+++ b/ndk/platforms/android-3/include/net/if_ether.h
@@ -34,6 +34,8 @@
 #ifndef _NET_IF_ETHER_H_
 #define _NET_IF_ETHER_H_
 
+#include <sys/types.h>
+
 #ifdef _KERNEL
 #ifdef _KERNEL_OPT
 #include "opt_mbuftrace.h"
diff --git a/ndk/platforms/android-3/include/netdb.h b/ndk/platforms/android-3/include/netdb.h
index 8d3996a..f48052d 100644
--- a/ndk/platforms/android-3/include/netdb.h
+++ b/ndk/platforms/android-3/include/netdb.h
@@ -137,10 +137,7 @@
 /*
  * Error return codes from getaddrinfo()
  */
-#if 0
-/* obsoleted */
 #define	EAI_ADDRFAMILY	 1	/* address family for hostname not supported */
-#endif
 #define	EAI_AGAIN	 2	/* temporary failure in name resolution */
 #define	EAI_BADFLAGS	 3	/* invalid value for ai_flags */
 #define	EAI_FAIL	 4	/* non-recoverable failure in name resolution */
diff --git a/ndk/platforms/android-3/include/netinet/icmp6.h b/ndk/platforms/android-3/include/netinet/icmp6.h
new file mode 100644
index 0000000..fbc8234
--- /dev/null
+++ b/ndk/platforms/android-3/include/netinet/icmp6.h
@@ -0,0 +1,730 @@
+/*	$NetBSD: icmp6.h,v 1.40 2009/10/31 22:32:17 christos Exp $	*/
+/*	$KAME: icmp6.h,v 1.84 2003/04/23 10:26:51 itojun Exp $	*/
+
+
+/*
+ * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1982, 1986, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)ip_icmp.h	8.1 (Berkeley) 6/10/93
+ */
+
+#ifndef _NETINET_ICMP6_H_
+#define _NETINET_ICMP6_H_
+
+#define ICMPV6_PLD_MAXLEN	1232	/* IPV6_MMTU - sizeof(struct ip6_hdr)
+					   - sizeof(struct icmp6_hdr) */
+
+struct icmp6_hdr {
+	u_int8_t	icmp6_type;	/* type field */
+	u_int8_t	icmp6_code;	/* code field */
+	u_int16_t	icmp6_cksum;	/* checksum field */
+	union {
+		u_int32_t	icmp6_un_data32[1]; /* type-specific field */
+		u_int16_t	icmp6_un_data16[2]; /* type-specific field */
+		u_int8_t	icmp6_un_data8[4];  /* type-specific field */
+	} icmp6_dataun;
+} __packed;
+
+#define icmp6_data32	icmp6_dataun.icmp6_un_data32
+#define icmp6_data16	icmp6_dataun.icmp6_un_data16
+#define icmp6_data8	icmp6_dataun.icmp6_un_data8
+#define icmp6_pptr	icmp6_data32[0]		/* parameter prob */
+#define icmp6_mtu	icmp6_data32[0]		/* packet too big */
+#define icmp6_id	icmp6_data16[0]		/* echo request/reply */
+#define icmp6_seq	icmp6_data16[1]		/* echo request/reply */
+#define icmp6_maxdelay	icmp6_data16[0]		/* mcast group membership */
+
+#define ICMP6_DST_UNREACH		1	/* dest unreachable, codes: */
+#define ICMP6_PACKET_TOO_BIG		2	/* packet too big */
+#define ICMP6_TIME_EXCEEDED		3	/* time exceeded, code: */
+#define ICMP6_PARAM_PROB		4	/* ip6 header bad */
+
+#define ICMP6_ECHO_REQUEST		128	/* echo service */
+#define ICMP6_ECHO_REPLY		129	/* echo reply */
+#define MLD_LISTENER_QUERY		130 	/* multicast listener query */
+#define MLD_LISTENER_REPORT		131	/* multicast listener report */
+#define MLD_LISTENER_DONE		132	/* multicast listener done */
+
+/* RFC2292 decls */
+#define ICMP6_MEMBERSHIP_QUERY		130	/* group membership query */
+#define ICMP6_MEMBERSHIP_REPORT		131	/* group membership report */
+#define ICMP6_MEMBERSHIP_REDUCTION	132	/* group membership termination */
+
+#ifndef _KERNEL
+/* the followings are for backward compatibility to old KAME apps. */
+#define MLD6_LISTENER_QUERY	MLD_LISTENER_QUERY
+#define MLD6_LISTENER_REPORT	MLD_LISTENER_REPORT
+#define MLD6_LISTENER_DONE	MLD_LISTENER_DONE
+#endif
+
+#define ND_ROUTER_SOLICIT		133	/* router solicitation */
+#define ND_ROUTER_ADVERT		134	/* router advertisement */
+#define ND_NEIGHBOR_SOLICIT		135	/* neighbor solicitation */
+#define ND_NEIGHBOR_ADVERT		136	/* neighbor advertisement */
+#define ND_REDIRECT			137	/* redirect */
+
+#define ICMP6_ROUTER_RENUMBERING	138	/* router renumbering */
+
+#define ICMP6_WRUREQUEST		139	/* who are you request */
+#define ICMP6_WRUREPLY			140	/* who are you reply */
+#define ICMP6_FQDN_QUERY		139	/* FQDN query */
+#define ICMP6_FQDN_REPLY		140	/* FQDN reply */
+#define ICMP6_NI_QUERY			139	/* node information request */
+#define ICMP6_NI_REPLY			140	/* node information reply */
+
+/* The definitions below are experimental. TBA */
+#define MLD_MTRACE_RESP			200	/* mtrace response(to sender) */
+#define MLD_MTRACE			201	/* mtrace messages */
+
+#ifndef _KERNEL
+/* the followings are for backward compatibility to old KAME apps. */
+#define MLD6_MTRACE_RESP	MLD_MTRACE_RESP
+#define MLD6_MTRACE		MLD_MTRACE
+#endif
+
+#define ICMP6_MAXTYPE			201
+
+#define ICMP6_DST_UNREACH_NOROUTE	0	/* no route to destination */
+#define ICMP6_DST_UNREACH_ADMIN	 	1	/* administratively prohibited */
+#define ICMP6_DST_UNREACH_NOTNEIGHBOR	2	/* not a neighbor(obsolete) */
+#define ICMP6_DST_UNREACH_BEYONDSCOPE	2	/* beyond scope of source address */
+#define ICMP6_DST_UNREACH_ADDR		3	/* address unreachable */
+#define ICMP6_DST_UNREACH_NOPORT	4	/* port unreachable */
+
+#define ICMP6_TIME_EXCEED_TRANSIT 	0	/* ttl==0 in transit */
+#define ICMP6_TIME_EXCEED_REASSEMBLY	1	/* ttl==0 in reass */
+
+#define ICMP6_PARAMPROB_HEADER 	 	0	/* erroneous header field */
+#define ICMP6_PARAMPROB_NEXTHEADER	1	/* unrecognized next header */
+#define ICMP6_PARAMPROB_OPTION		2	/* unrecognized option */
+
+#define ICMP6_INFOMSG_MASK		0x80	/* all informational messages */
+
+#define ICMP6_NI_SUBJ_IPV6	0	/* Query Subject is an IPv6 address */
+#define ICMP6_NI_SUBJ_FQDN	1	/* Query Subject is a Domain name */
+#define ICMP6_NI_SUBJ_IPV4	2	/* Query Subject is an IPv4 address */
+
+#define ICMP6_NI_SUCCESS	0	/* node information successful reply */
+#define ICMP6_NI_REFUSED	1	/* node information request is refused */
+#define ICMP6_NI_UNKNOWN	2	/* unknown Qtype */
+
+#define ICMP6_ROUTER_RENUMBERING_COMMAND  0	/* rr command */
+#define ICMP6_ROUTER_RENUMBERING_RESULT   1	/* rr result */
+#define ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET   255	/* rr seq num reset */
+
+/* Used in kernel only */
+#define ND_REDIRECT_ONLINK	0	/* redirect to an on-link node */
+#define ND_REDIRECT_ROUTER	1	/* redirect to a better router */
+
+/*
+ * Multicast Listener Discovery
+ */
+struct mld_hdr {
+	struct icmp6_hdr	mld_icmp6_hdr;
+	struct in6_addr		mld_addr; /* multicast address */
+} __packed;
+
+/* definitions to provide backward compatibility to old KAME applications */
+#ifndef _KERNEL
+#define mld6_hdr	mld_hdr
+#define mld6_type	mld_type
+#define mld6_code	mld_code
+#define mld6_cksum	mld_cksum
+#define mld6_maxdelay	mld_maxdelay
+#define mld6_reserved	mld_reserved
+#define mld6_addr	mld_addr
+#endif
+
+/* shortcut macro definitions */
+#define mld_type	mld_icmp6_hdr.icmp6_type
+#define mld_code	mld_icmp6_hdr.icmp6_code
+#define mld_cksum	mld_icmp6_hdr.icmp6_cksum
+#define mld_maxdelay	mld_icmp6_hdr.icmp6_data16[0]
+#define mld_reserved	mld_icmp6_hdr.icmp6_data16[1]
+
+#define MLD_MINLEN			24
+
+/*
+ * Neighbor Discovery
+ */
+
+struct nd_router_solicit {	/* router solicitation */
+	struct icmp6_hdr 	nd_rs_hdr;
+	/* could be followed by options */
+} __packed;
+
+#define nd_rs_type	nd_rs_hdr.icmp6_type
+#define nd_rs_code	nd_rs_hdr.icmp6_code
+#define nd_rs_cksum	nd_rs_hdr.icmp6_cksum
+#define nd_rs_reserved	nd_rs_hdr.icmp6_data32[0]
+
+struct nd_router_advert {	/* router advertisement */
+	struct icmp6_hdr	nd_ra_hdr;
+	u_int32_t		nd_ra_reachable;	/* reachable time */
+	u_int32_t		nd_ra_retransmit;	/* retransmit timer */
+	/* could be followed by options */
+} __packed;
+
+#define nd_ra_type		nd_ra_hdr.icmp6_type
+#define nd_ra_code		nd_ra_hdr.icmp6_code
+#define nd_ra_cksum		nd_ra_hdr.icmp6_cksum
+#define nd_ra_curhoplimit	nd_ra_hdr.icmp6_data8[0]
+#define nd_ra_flags_reserved	nd_ra_hdr.icmp6_data8[1]
+#define ND_RA_FLAG_MANAGED	0x80
+#define ND_RA_FLAG_OTHER	0x40
+#define ND_RA_FLAG_HOME_AGENT	0x20
+
+/*
+ * Router preference values based on RFC4199.
+ */
+#define ND_RA_FLAG_RTPREF_MASK	0x18 /* 00011000 */
+
+#define ND_RA_FLAG_RTPREF_HIGH	0x08 /* 00001000 */
+#define ND_RA_FLAG_RTPREF_MEDIUM	0x00 /* 00000000 */
+#define ND_RA_FLAG_RTPREF_LOW	0x18 /* 00011000 */
+#define ND_RA_FLAG_RTPREF_RSV	0x10 /* 00010000 */
+
+#define nd_ra_router_lifetime	nd_ra_hdr.icmp6_data16[1]
+
+struct nd_neighbor_solicit {	/* neighbor solicitation */
+	struct icmp6_hdr	nd_ns_hdr;
+	struct in6_addr		nd_ns_target;	/*target address */
+	/* could be followed by options */
+} __packed;
+
+#define nd_ns_type		nd_ns_hdr.icmp6_type
+#define nd_ns_code		nd_ns_hdr.icmp6_code
+#define nd_ns_cksum		nd_ns_hdr.icmp6_cksum
+#define nd_ns_reserved		nd_ns_hdr.icmp6_data32[0]
+
+struct nd_neighbor_advert {	/* neighbor advertisement */
+	struct icmp6_hdr	nd_na_hdr;
+	struct in6_addr		nd_na_target;	/* target address */
+	/* could be followed by options */
+} __packed;
+
+#define nd_na_type		nd_na_hdr.icmp6_type
+#define nd_na_code		nd_na_hdr.icmp6_code
+#define nd_na_cksum		nd_na_hdr.icmp6_cksum
+#define nd_na_flags_reserved	nd_na_hdr.icmp6_data32[0]
+#if BYTE_ORDER == BIG_ENDIAN
+#define ND_NA_FLAG_ROUTER		0x80000000
+#define ND_NA_FLAG_SOLICITED		0x40000000
+#define ND_NA_FLAG_OVERRIDE		0x20000000
+#else
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define ND_NA_FLAG_ROUTER		0x80
+#define ND_NA_FLAG_SOLICITED		0x40
+#define ND_NA_FLAG_OVERRIDE		0x20
+#endif
+#endif
+
+struct nd_redirect {		/* redirect */
+	struct icmp6_hdr	nd_rd_hdr;
+	struct in6_addr		nd_rd_target;	/* target address */
+	struct in6_addr		nd_rd_dst;	/* destination address */
+	/* could be followed by options */
+} __packed;
+
+#define nd_rd_type		nd_rd_hdr.icmp6_type
+#define nd_rd_code		nd_rd_hdr.icmp6_code
+#define nd_rd_cksum		nd_rd_hdr.icmp6_cksum
+#define nd_rd_reserved		nd_rd_hdr.icmp6_data32[0]
+
+struct nd_opt_hdr {		/* Neighbor discovery option header */
+	u_int8_t	nd_opt_type;
+	u_int8_t	nd_opt_len;
+	/* followed by option specific data*/
+} __packed;
+
+#define ND_OPT_SOURCE_LINKADDR		1
+#define ND_OPT_TARGET_LINKADDR		2
+#define ND_OPT_PREFIX_INFORMATION	3
+#define ND_OPT_REDIRECTED_HEADER	4
+#define ND_OPT_MTU			5
+#define ND_OPT_ADVINTERVAL		7
+#define ND_OPT_HOMEAGENT_INFO		8
+#define ND_OPT_SOURCE_ADDRLIST		9
+#define ND_OPT_TARGET_ADDRLIST		10
+#define ND_OPT_RDNSS			25
+/* draft-ietf-ipngwg-router-preference, not officially assigned yet */
+#define ND_OPT_ROUTE_INFO		200
+/* draft-ietf-mobileip-hmipv6, not officially assigned yet */
+#define ND_OPT_MAP			201
+
+struct nd_opt_route_info {	/* route info */
+	u_int8_t	nd_opt_rti_type;
+	u_int8_t	nd_opt_rti_len;
+	u_int8_t	nd_opt_rti_prefixlen;
+	u_int8_t	nd_opt_rti_flags;
+	u_int32_t	nd_opt_rti_lifetime;
+	/* prefix follows */
+};
+
+struct nd_opt_prefix_info {	/* prefix information */
+	u_int8_t	nd_opt_pi_type;
+	u_int8_t	nd_opt_pi_len;
+	u_int8_t	nd_opt_pi_prefix_len;
+	u_int8_t	nd_opt_pi_flags_reserved;
+	u_int32_t	nd_opt_pi_valid_time;
+	u_int32_t	nd_opt_pi_preferred_time;
+	u_int32_t	nd_opt_pi_reserved2;
+	struct in6_addr	nd_opt_pi_prefix;
+} __packed;
+
+#define ND_OPT_PI_FLAG_ONLINK		0x80
+#define ND_OPT_PI_FLAG_AUTO		0x40
+
+struct nd_opt_rd_hdr {		/* redirected header */
+	u_int8_t	nd_opt_rh_type;
+	u_int8_t	nd_opt_rh_len;
+	u_int16_t	nd_opt_rh_reserved1;
+	u_int32_t	nd_opt_rh_reserved2;
+	/* followed by IP header and data */
+} __packed;
+
+struct nd_opt_mtu {		/* MTU option */
+	u_int8_t	nd_opt_mtu_type;
+	u_int8_t	nd_opt_mtu_len;
+	u_int16_t	nd_opt_mtu_reserved;
+	u_int32_t	nd_opt_mtu_mtu;
+} __packed;
+
+struct nd_opt_rdnss {		/* RDNSS option RFC 5006 */
+	u_int8_t	nd_opt_rdnss_type;
+	u_int8_t	nd_opt_rdnss_len;
+	u_int16_t	nd_opt_rdnss_reserved;
+	u_int32_t	nd_opt_rdnss_lifetime;
+	/* followed by list of IP prefixes */
+} __packed;
+
+/*
+ * icmp6 namelookup
+ */
+
+struct icmp6_namelookup {
+	struct icmp6_hdr 	icmp6_nl_hdr;
+	u_int8_t	icmp6_nl_nonce[8];
+	int32_t		icmp6_nl_ttl;
+#if 0
+	u_int8_t	icmp6_nl_len;
+	u_int8_t	icmp6_nl_name[3];
+#endif
+	/* could be followed by options */
+} __packed;
+
+/*
+ * icmp6 node information
+ */
+struct icmp6_nodeinfo {
+	struct icmp6_hdr icmp6_ni_hdr;
+	u_int8_t icmp6_ni_nonce[8];
+	/* could be followed by reply data */
+} __packed;
+
+#define ni_type		icmp6_ni_hdr.icmp6_type
+#define ni_code		icmp6_ni_hdr.icmp6_code
+#define ni_cksum	icmp6_ni_hdr.icmp6_cksum
+#define ni_qtype	icmp6_ni_hdr.icmp6_data16[0]
+#define ni_flags	icmp6_ni_hdr.icmp6_data16[1]
+
+#define NI_QTYPE_NOOP		0 /* NOOP  */
+#define NI_QTYPE_SUPTYPES	1 /* Supported Qtypes */
+#define NI_QTYPE_FQDN		2 /* FQDN (draft 04) */
+#define NI_QTYPE_DNSNAME	2 /* DNS Name */
+#define NI_QTYPE_NODEADDR	3 /* Node Addresses */
+#define NI_QTYPE_IPV4ADDR	4 /* IPv4 Addresses */
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define NI_SUPTYPE_FLAG_COMPRESS	0x1
+#define NI_FQDN_FLAG_VALIDTTL		0x1
+#elif BYTE_ORDER == LITTLE_ENDIAN
+#define NI_SUPTYPE_FLAG_COMPRESS	0x0100
+#define NI_FQDN_FLAG_VALIDTTL		0x0100
+#endif
+
+#ifdef NAME_LOOKUPS_04
+#if BYTE_ORDER == BIG_ENDIAN
+#define NI_NODEADDR_FLAG_LINKLOCAL	0x1
+#define NI_NODEADDR_FLAG_SITELOCAL	0x2
+#define NI_NODEADDR_FLAG_GLOBAL		0x4
+#define NI_NODEADDR_FLAG_ALL		0x8
+#define NI_NODEADDR_FLAG_TRUNCATE	0x10
+#define NI_NODEADDR_FLAG_ANYCAST	0x20 /* just experimental. not in spec */
+#elif BYTE_ORDER == LITTLE_ENDIAN
+#define NI_NODEADDR_FLAG_LINKLOCAL	0x0100
+#define NI_NODEADDR_FLAG_SITELOCAL	0x0200
+#define NI_NODEADDR_FLAG_GLOBAL		0x0400
+#define NI_NODEADDR_FLAG_ALL		0x0800
+#define NI_NODEADDR_FLAG_TRUNCATE	0x1000
+#define NI_NODEADDR_FLAG_ANYCAST	0x2000 /* just experimental. not in spec */
+#endif
+#else  /* draft-ietf-ipngwg-icmp-name-lookups-05 (and later?) */
+#if BYTE_ORDER == BIG_ENDIAN
+#define NI_NODEADDR_FLAG_TRUNCATE	0x1
+#define NI_NODEADDR_FLAG_ALL		0x2
+#define NI_NODEADDR_FLAG_COMPAT		0x4
+#define NI_NODEADDR_FLAG_LINKLOCAL	0x8
+#define NI_NODEADDR_FLAG_SITELOCAL	0x10
+#define NI_NODEADDR_FLAG_GLOBAL		0x20
+#define NI_NODEADDR_FLAG_ANYCAST	0x40 /* just experimental. not in spec */
+#elif BYTE_ORDER == LITTLE_ENDIAN
+#define NI_NODEADDR_FLAG_TRUNCATE	0x0100
+#define NI_NODEADDR_FLAG_ALL		0x0200
+#define NI_NODEADDR_FLAG_COMPAT		0x0400
+#define NI_NODEADDR_FLAG_LINKLOCAL	0x0800
+#define NI_NODEADDR_FLAG_SITELOCAL	0x1000
+#define NI_NODEADDR_FLAG_GLOBAL		0x2000
+#define NI_NODEADDR_FLAG_ANYCAST	0x4000 /* just experimental. not in spec */
+#endif
+#endif
+
+struct ni_reply_fqdn {
+	u_int32_t ni_fqdn_ttl;	/* TTL */
+	u_int8_t ni_fqdn_namelen; /* length in octets of the FQDN */
+	u_int8_t ni_fqdn_name[3]; /* XXX: alignment */
+} __packed;
+
+/*
+ * Router Renumbering. as router-renum-08.txt
+ */
+struct icmp6_router_renum {	/* router renumbering header */
+	struct icmp6_hdr	rr_hdr;
+	u_int8_t	rr_segnum;
+	u_int8_t	rr_flags;
+	u_int16_t	rr_maxdelay;
+	u_int32_t	rr_reserved;
+} __packed;
+
+#define ICMP6_RR_FLAGS_TEST		0x80
+#define ICMP6_RR_FLAGS_REQRESULT	0x40
+#define ICMP6_RR_FLAGS_FORCEAPPLY	0x20
+#define ICMP6_RR_FLAGS_SPECSITE		0x10
+#define ICMP6_RR_FLAGS_PREVDONE		0x08
+
+#define rr_type		rr_hdr.icmp6_type
+#define rr_code		rr_hdr.icmp6_code
+#define rr_cksum	rr_hdr.icmp6_cksum
+#define rr_seqnum 	rr_hdr.icmp6_data32[0]
+
+struct rr_pco_match {		/* match prefix part */
+	u_int8_t	rpm_code;
+	u_int8_t	rpm_len;
+	u_int8_t	rpm_ordinal;
+	u_int8_t	rpm_matchlen;
+	u_int8_t	rpm_minlen;
+	u_int8_t	rpm_maxlen;
+	u_int16_t	rpm_reserved;
+	struct	in6_addr	rpm_prefix;
+} __packed;
+
+#define RPM_PCO_ADD		1
+#define RPM_PCO_CHANGE		2
+#define RPM_PCO_SETGLOBAL	3
+#define RPM_PCO_MAX		4
+
+struct rr_pco_use {		/* use prefix part */
+	u_int8_t	rpu_uselen;
+	u_int8_t	rpu_keeplen;
+	u_int8_t	rpu_ramask;
+	u_int8_t	rpu_raflags;
+	u_int32_t	rpu_vltime;
+	u_int32_t	rpu_pltime;
+	u_int32_t	rpu_flags;
+	struct	in6_addr rpu_prefix;
+} __packed;
+#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK	0x80
+#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO	0x40
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME     0x80000000
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME     0x40000000
+#elif BYTE_ORDER == LITTLE_ENDIAN
+#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME     0x80
+#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME     0x40
+#endif
+
+struct rr_result {		/* router renumbering result message */
+	u_int16_t	rrr_flags;
+	u_int8_t	rrr_ordinal;
+	u_int8_t	rrr_matchedlen;
+	u_int32_t	rrr_ifid;
+	struct	in6_addr rrr_prefix;
+} __packed;
+#if BYTE_ORDER == BIG_ENDIAN
+#define ICMP6_RR_RESULT_FLAGS_OOB		0x0002
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN		0x0001
+#elif BYTE_ORDER == LITTLE_ENDIAN
+#define ICMP6_RR_RESULT_FLAGS_OOB		0x0200
+#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN		0x0100
+#endif
+
+/*
+ * icmp6 filter structures.
+ */
+
+struct icmp6_filter {
+	u_int32_t icmp6_filt[8];
+};
+
+#define	ICMP6_FILTER_SETPASSALL(filterp) \
+	(void)memset(filterp, 0xff, sizeof(struct icmp6_filter))
+#define	ICMP6_FILTER_SETBLOCKALL(filterp) \
+	(void)memset(filterp, 0x00, sizeof(struct icmp6_filter))
+#define	ICMP6_FILTER_SETPASS(type, filterp) \
+	(((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31)))
+#define	ICMP6_FILTER_SETBLOCK(type, filterp) \
+	(((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))
+#define	ICMP6_FILTER_WILLPASS(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+#define	ICMP6_FILTER_WILLBLOCK(type, filterp) \
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+
+/*
+ * Variables related to this implementation
+ * of the internet control message protocol version 6.
+ */
+
+/*
+ * IPv6 ICMP statistics.
+ * Each counter is an unsigned 64-bit value.
+ */
+#define	ICMP6_STAT_ERROR	0	/* # of calls to icmp6_error */
+#define	ICMP6_STAT_CANTERROR	1	/* no error (old was icmp) */
+#define	ICMP6_STAT_TOOFREQ	2	/* no error (rate limitation) */
+#define	ICMP6_STAT_OUTHIST	3	/* # of output messages */
+		/* space for 256 counters */
+#define	ICMP6_STAT_BADCODE	259	/* icmp6_code out of range */
+#define	ICMP6_STAT_TOOSHORT	260	/* packet < sizeof(struct icmp6_hdr) */
+#define	ICMP6_STAT_CHECKSUM	261	/* bad checksum */
+#define	ICMP6_STAT_BADLEN	262	/* calculated bound mismatch */
+	/*
+	 * number of responses; this member is inherited from the netinet code,
+	 * but for netinet6 code, it is already available in outhist[].
+	 */
+#define	ICMP6_STAT_REFLECT	263
+#define	ICMP6_STAT_INHIST	264	/* # of input messages */
+		/* space for 256 counters */
+#define	ICMP6_STAT_ND_TOOMANYOPT 520	/* too many ND options */
+#define	ICMP6_STAT_OUTERRHIST	521
+		/* space for 13 counters */
+#define	ICMP6_STAT_PMTUCHG	534	/* path MTU changes */
+#define	ICMP6_STAT_ND_BADOPT	535	/* bad ND options */
+#define	ICMP6_STAT_BADNS	536	/* bad neighbor solicititation */
+#define	ICMP6_STAT_BADNA	537	/* bad neighbor advertisement */
+#define	ICMP6_STAT_BADRS	538	/* bad router solicitiation */
+#define	ICMP6_STAT_BADRA	539	/* bad router advertisement */
+#define	ICMP6_STAT_BADREDIRECT	540	/* bad redirect message */
+
+#define	ICMP6_NSTATS		541
+
+#define	ICMP6_ERRSTAT_DST_UNREACH_NOROUTE	0
+#define	ICMP6_ERRSTAT_DST_UNREACH_ADMIN		1
+#define	ICMP6_ERRSTAT_DST_UNREACH_BEYONDSCOPE	2
+#define	ICMP6_ERRSTAT_DST_UNREACH_ADDR		3
+#define	ICMP6_ERRSTAT_DST_UNREACH_NOPORT	4
+#define	ICMP6_ERRSTAT_PACKET_TOO_BIG		5
+#define	ICMP6_ERRSTAT_TIME_EXCEED_TRANSIT	6
+#define	ICMP6_ERRSTAT_TIME_EXCEED_REASSEMBLY	7
+#define	ICMP6_ERRSTAT_PARAMPROB_HEADER		8
+#define	ICMP6_ERRSTAT_PARAMPROB_NEXTHEADER	9
+#define	ICMP6_ERRSTAT_PARAMPROB_OPTION		10
+#define	ICMP6_ERRSTAT_REDIRECT			11
+#define	ICMP6_ERRSTAT_UNKNOWN			12
+
+/*
+ * Names for ICMP sysctl objects
+ */
+#define ICMPV6CTL_STATS		1
+#define ICMPV6CTL_REDIRACCEPT	2	/* accept/process redirects */
+#define ICMPV6CTL_REDIRTIMEOUT	3	/* redirect cache time */
+#if 0	/*obsoleted*/
+#define ICMPV6CTL_ERRRATELIMIT	5	/* ICMPv6 error rate limitation */
+#endif
+#define ICMPV6CTL_ND6_PRUNE	6
+#define ICMPV6CTL_ND6_DELAY	8
+#define ICMPV6CTL_ND6_UMAXTRIES	9
+#define ICMPV6CTL_ND6_MMAXTRIES		10
+#define ICMPV6CTL_ND6_USELOOPBACK	11
+/*#define ICMPV6CTL_ND6_PROXYALL	12	obsoleted, do not reuse here */
+#define ICMPV6CTL_NODEINFO	13
+#define ICMPV6CTL_ERRPPSLIMIT	14	/* ICMPv6 error pps limitation */
+#define ICMPV6CTL_ND6_MAXNUDHINT	15
+#define ICMPV6CTL_MTUDISC_HIWAT	16
+#define ICMPV6CTL_MTUDISC_LOWAT	17
+#define ICMPV6CTL_ND6_DEBUG	18
+#define ICMPV6CTL_ND6_DRLIST	19
+#define ICMPV6CTL_ND6_PRLIST	20
+#define	ICMPV6CTL_ND6_MAXQLEN	24
+#define ICMPV6CTL_MAXID		25
+
+#define ICMPV6CTL_NAMES { \
+	{ 0, 0 }, \
+	{ 0, 0 }, \
+	{ "rediraccept", CTLTYPE_INT }, \
+	{ "redirtimeout", CTLTYPE_INT }, \
+	{ 0, 0 }, \
+	{ 0, 0 }, \
+	{ "nd6_prune", CTLTYPE_INT }, \
+	{ 0, 0 }, \
+	{ "nd6_delay", CTLTYPE_INT }, \
+	{ "nd6_umaxtries", CTLTYPE_INT }, \
+	{ "nd6_mmaxtries", CTLTYPE_INT }, \
+	{ "nd6_useloopback", CTLTYPE_INT }, \
+	{ 0, 0 }, \
+	{ "nodeinfo", CTLTYPE_INT }, \
+	{ "errppslimit", CTLTYPE_INT }, \
+	{ "nd6_maxnudhint", CTLTYPE_INT }, \
+	{ "mtudisc_hiwat", CTLTYPE_INT }, \
+	{ "mtudisc_lowat", CTLTYPE_INT }, \
+	{ "nd6_debug", CTLTYPE_INT }, \
+	{ 0, 0 }, \
+	{ 0, 0 }, \
+	{ 0, 0 }, \
+	{ 0, 0 }, \
+	{ 0, 0 }, \
+	{ "nd6_maxqueuelen", CTLTYPE_INT }, \
+}
+
+#define RTF_PROBEMTU	RTF_PROTO1
+
+#ifdef _KERNEL
+struct	rtentry;
+struct	rttimer;
+struct	in6_multi;
+
+void	icmp6_init(void);
+void	icmp6_paramerror(struct mbuf *, int);
+void	icmp6_error(struct mbuf *, int, int, int);
+void	icmp6_error2(struct mbuf *, int, int, int, struct ifnet *);
+int	icmp6_input(struct mbuf **, int *, int);
+void	icmp6_fasttimo(void);
+void	icmp6_reflect(struct mbuf *, size_t);
+void	icmp6_prepare(struct mbuf *);
+void	icmp6_redirect_input(struct mbuf *, int);
+void	icmp6_redirect_output(struct mbuf *, struct rtentry *);
+int	icmp6_sysctl(int *, u_int, void *, size_t *, void *, size_t);
+
+void	icmp6_statinc(u_int);
+
+struct	ip6ctlparam;
+void	icmp6_mtudisc_update(struct ip6ctlparam *, int);
+void	icmp6_mtudisc_callback_register(void (*)(struct in6_addr *));
+
+/* XXX: is this the right place for these macros? */
+#define icmp6_ifstat_inc(ifp, tag) \
+do {								\
+	if (ifp)						\
+		((struct in6_ifextra *)((ifp)->if_afdata[AF_INET6]))->icmp6_ifstat->tag++; \
+} while (/*CONSTCOND*/ 0)
+
+#define icmp6_ifoutstat_inc(ifp, type, code) \
+do { \
+		icmp6_ifstat_inc(ifp, ifs6_out_msg); \
+		switch(type) { \
+		 case ICMP6_DST_UNREACH: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_dstunreach); \
+			 if (code == ICMP6_DST_UNREACH_ADMIN) \
+				 icmp6_ifstat_inc(ifp, ifs6_out_adminprohib); \
+			 break; \
+		 case ICMP6_PACKET_TOO_BIG: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_pkttoobig); \
+			 break; \
+		 case ICMP6_TIME_EXCEEDED: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_timeexceed); \
+			 break; \
+		 case ICMP6_PARAM_PROB: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_paramprob); \
+			 break; \
+		 case ICMP6_ECHO_REQUEST: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_echo); \
+			 break; \
+		 case ICMP6_ECHO_REPLY: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_echoreply); \
+			 break; \
+		 case MLD_LISTENER_QUERY: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_mldquery); \
+			 break; \
+		 case MLD_LISTENER_REPORT: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_mldreport); \
+			 break; \
+		 case MLD_LISTENER_DONE: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_mlddone); \
+			 break; \
+		 case ND_ROUTER_SOLICIT: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_routersolicit); \
+			 break; \
+		 case ND_ROUTER_ADVERT: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_routeradvert); \
+			 break; \
+		 case ND_NEIGHBOR_SOLICIT: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_neighborsolicit); \
+			 break; \
+		 case ND_NEIGHBOR_ADVERT: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_neighboradvert); \
+			 break; \
+		 case ND_REDIRECT: \
+			 icmp6_ifstat_inc(ifp, ifs6_out_redirect); \
+			 break; \
+		} \
+} while (/*CONSTCOND*/ 0)
+
+extern int	icmp6_rediraccept;	/* accept/process redirects */
+extern int	icmp6_redirtimeout;	/* cache time for redirect routes */
+#endif /* _KERNEL */
+
+#endif /* !_NETINET_ICMP6_H_ */
diff --git a/ndk/platforms/android-3/include/netinet/in.h b/ndk/platforms/android-3/include/netinet/in.h
index 7a4b6c7..01bf58e 100644
--- a/ndk/platforms/android-3/include/netinet/in.h
+++ b/ndk/platforms/android-3/include/netinet/in.h
@@ -32,6 +32,7 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
+#include <linux/ipv6.h>
 #include <netinet/in6.h>
 
 __BEGIN_DECLS
diff --git a/ndk/platforms/android-3/include/netinet/in6.h b/ndk/platforms/android-3/include/netinet/in6.h
index e756583..eaf3c34 100644
--- a/ndk/platforms/android-3/include/netinet/in6.h
+++ b/ndk/platforms/android-3/include/netinet/in6.h
@@ -60,6 +60,10 @@
 #define IN6_IS_ADDR_SITELOCAL(a)	\
 	(((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0))
 
+/* RFC 4193. */
+#define IN6_IS_ADDR_ULA(a)	\
+	(((a)->s6_addr[0] & 0xfe) == 0xfc)
+
 #define IN6_IS_ADDR_MULTICAST(a)	\
 	(((__const uint8_t *) (a))[0] == 0xff)
 
diff --git a/ndk/platforms/android-3/include/netinet/ip.h b/ndk/platforms/android-3/include/netinet/ip.h
index 541905c..629ed77 100644
--- a/ndk/platforms/android-3/include/netinet/ip.h
+++ b/ndk/platforms/android-3/include/netinet/ip.h
@@ -83,7 +83,7 @@
 #define	IPTOS_LOWDELAY		0x10
 #define	IPTOS_THROUGHPUT	0x08
 #define	IPTOS_RELIABILITY	0x04
-/*	IPTOS_LOWCOST		0x02 XXX */
+#define	IPTOS_MINCOST		0x02
 #if 1
 /* ECN RFC3168 obsoletes RFC2481, and these will be deprecated soon. */
 #define IPTOS_CE		0x01	/* congestion experienced */
diff --git a/ndk/platforms/android-3/include/netinet/ip6.h b/ndk/platforms/android-3/include/netinet/ip6.h
new file mode 100644
index 0000000..aa816c2
--- /dev/null
+++ b/ndk/platforms/android-3/include/netinet/ip6.h
@@ -0,0 +1,319 @@
+/*	$NetBSD: ip6.h,v 1.23 2007/12/25 18:33:46 perry Exp $	*/
+/*	$KAME: ip6.h,v 1.45 2003/06/05 04:46:38 keiichi Exp $	*/
+
+/*
+ * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1982, 1986, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)ip.h	8.1 (Berkeley) 6/10/93
+ */
+
+#ifndef _NETINET_IP6_H_
+#define _NETINET_IP6_H_
+
+/*
+ * Definition for internet protocol version 6.
+ * RFC 2460
+ */
+
+struct ip6_hdr {
+	union {
+		struct ip6_hdrctl {
+			u_int32_t ip6_un1_flow;	/* 20 bits of flow-ID */
+			u_int16_t ip6_un1_plen;	/* payload length */
+			u_int8_t  ip6_un1_nxt;	/* next header */
+			u_int8_t  ip6_un1_hlim;	/* hop limit */
+		} ip6_un1;
+		u_int8_t ip6_un2_vfc;	/* 4 bits version, top 4 bits class */
+	} ip6_ctlun;
+	struct in6_addr ip6_src;	/* source address */
+	struct in6_addr ip6_dst;	/* destination address */
+} __packed;
+
+#define ip6_vfc		ip6_ctlun.ip6_un2_vfc
+#define ip6_flow	ip6_ctlun.ip6_un1.ip6_un1_flow
+#define ip6_plen	ip6_ctlun.ip6_un1.ip6_un1_plen
+#define ip6_nxt		ip6_ctlun.ip6_un1.ip6_un1_nxt
+#define ip6_hlim	ip6_ctlun.ip6_un1.ip6_un1_hlim
+#define ip6_hops	ip6_ctlun.ip6_un1.ip6_un1_hlim
+
+#define IPV6_VERSION		0x60
+#define IPV6_VERSION_MASK	0xf0
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define IPV6_FLOWINFO_MASK	0x0fffffff	/* flow info (28 bits) */
+#define IPV6_FLOWLABEL_MASK	0x000fffff	/* flow label (20 bits) */
+#else
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define IPV6_FLOWINFO_MASK	0xffffff0f	/* flow info (28 bits) */
+#define IPV6_FLOWLABEL_MASK	0xffff0f00	/* flow label (20 bits) */
+#endif /* LITTLE_ENDIAN */
+#endif
+#if 1
+/* ECN bits proposed by Sally Floyd */
+#define IP6TOS_CE		0x01	/* congestion experienced */
+#define IP6TOS_ECT		0x02	/* ECN-capable transport */
+#endif
+
+#ifdef _KERNEL
+/*
+ * for IPv6 pseudo header checksum
+ * XXX nonstandard
+ */
+struct ip6_hdr_pseudo {
+	struct in6_addr ip6ph_src;
+	struct in6_addr ip6ph_dst;
+	u_int32_t	ip6ph_len;
+	u_int8_t	ip6ph_zero[3];
+	u_int8_t	ip6ph_nxt;
+} __packed;
+#endif
+
+/*
+ * Extension Headers
+ */
+
+struct	ip6_ext {
+	u_int8_t ip6e_nxt;
+	u_int8_t ip6e_len;
+} __packed;
+
+/* Hop-by-Hop options header */
+/* XXX should we pad it to force alignment on an 8-byte boundary? */
+struct ip6_hbh {
+	u_int8_t ip6h_nxt;	/* next header */
+	u_int8_t ip6h_len;	/* length in units of 8 octets */
+	/* followed by options */
+} __packed;
+
+/* Destination options header */
+/* XXX should we pad it to force alignment on an 8-byte boundary? */
+struct ip6_dest {
+	u_int8_t ip6d_nxt;	/* next header */
+	u_int8_t ip6d_len;	/* length in units of 8 octets */
+	/* followed by options */
+} __packed;
+
+/* Option types and related macros */
+#define IP6OPT_PAD1		0x00	/* 00 0 00000 */
+#define IP6OPT_PADN		0x01	/* 00 0 00001 */
+#define IP6OPT_JUMBO		0xC2	/* 11 0 00010 = 194 */
+#define IP6OPT_NSAP_ADDR	0xC3	/* 11 0 00011 */
+#define IP6OPT_TUNNEL_LIMIT	0x04	/* 00 0 00100 */
+#define IP6OPT_RTALERT		0x05	/* 00 0 00101 (KAME definition) */
+#define IP6OPT_ROUTER_ALERT	0x05	/* (RFC3542 def, recommended) */
+
+#define IP6OPT_RTALERT_LEN	4
+#define IP6OPT_RTALERT_MLD	0	/* Datagram contains an MLD message */
+#define IP6OPT_RTALERT_RSVP	1	/* Datagram contains an RSVP message */
+#define IP6OPT_RTALERT_ACTNET	2 	/* contains an Active Networks msg */
+#define IP6OPT_MINLEN		2
+
+#define IP6OPT_TYPE(o)		((o) & 0xC0)
+#define IP6OPT_TYPE_SKIP	0x00
+#define IP6OPT_TYPE_DISCARD	0x40
+#define IP6OPT_TYPE_FORCEICMP	0x80
+#define IP6OPT_TYPE_ICMP	0xC0
+
+#define IP6OPT_MUTABLE		0x20
+
+/* IPv6 options: common part */
+struct ip6_opt {
+	u_int8_t ip6o_type;
+	u_int8_t ip6o_len;
+} __packed;
+
+/* Jumbo Payload Option */
+struct ip6_opt_jumbo {
+	u_int8_t ip6oj_type;
+	u_int8_t ip6oj_len;
+	u_int8_t ip6oj_jumbo_len[4];
+} __packed;
+#define IP6OPT_JUMBO_LEN 6
+
+/* NSAP Address Option */
+struct ip6_opt_nsap {
+	u_int8_t ip6on_type;
+	u_int8_t ip6on_len;
+	u_int8_t ip6on_src_nsap_len;
+	u_int8_t ip6on_dst_nsap_len;
+	/* followed by source NSAP */
+	/* followed by destination NSAP */
+} __packed;
+
+/* Tunnel Limit Option */
+struct ip6_opt_tunnel {
+	u_int8_t ip6ot_type;
+	u_int8_t ip6ot_len;
+	u_int8_t ip6ot_encap_limit;
+} __packed;
+
+/* Router Alert Option */
+struct ip6_opt_router {
+	u_int8_t ip6or_type;
+	u_int8_t ip6or_len;
+	u_int8_t ip6or_value[2];
+} __packed;
+/* Router alert values (in network byte order) */
+#if BYTE_ORDER == BIG_ENDIAN
+#define IP6_ALERT_MLD	0x0000
+#define IP6_ALERT_RSVP	0x0001
+#define IP6_ALERT_AN	0x0002
+#else
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define IP6_ALERT_MLD	0x0000
+#define IP6_ALERT_RSVP	0x0100
+#define IP6_ALERT_AN	0x0200
+#endif /* LITTLE_ENDIAN */
+#endif
+
+/* Routing header */
+struct ip6_rthdr {
+	u_int8_t  ip6r_nxt;	/* next header */
+	u_int8_t  ip6r_len;	/* length in units of 8 octets */
+	u_int8_t  ip6r_type;	/* routing type */
+	u_int8_t  ip6r_segleft;	/* segments left */
+	/* followed by routing type specific data */
+} __packed;
+
+/* Type 0 Routing header */
+struct ip6_rthdr0 {
+	u_int8_t  ip6r0_nxt;		/* next header */
+	u_int8_t  ip6r0_len;		/* length in units of 8 octets */
+	u_int8_t  ip6r0_type;		/* always zero */
+	u_int8_t  ip6r0_segleft;	/* segments left */
+	u_int32_t ip6r0_reserved;	/* reserved field */
+} __packed;
+
+/* Fragment header */
+struct ip6_frag {
+	u_int8_t  ip6f_nxt;		/* next header */
+	u_int8_t  ip6f_reserved;	/* reserved field */
+	u_int16_t ip6f_offlg;		/* offset, reserved, and flag */
+	u_int32_t ip6f_ident;		/* identification */
+} __packed;
+
+#if BYTE_ORDER == BIG_ENDIAN
+#define IP6F_OFF_MASK		0xfff8	/* mask out offset from _offlg */
+#define IP6F_RESERVED_MASK	0x0006	/* reserved bits in ip6f_offlg */
+#define IP6F_MORE_FRAG		0x0001	/* more-fragments flag */
+#else /* BYTE_ORDER == LITTLE_ENDIAN */
+#define IP6F_OFF_MASK		0xf8ff	/* mask out offset from _offlg */
+#define IP6F_RESERVED_MASK	0x0600	/* reserved bits in ip6f_offlg */
+#define IP6F_MORE_FRAG		0x0100	/* more-fragments flag */
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+
+/*
+ * Internet implementation parameters.
+ */
+#define IPV6_MAXHLIM	255	/* maximum hoplimit */
+#define IPV6_DEFHLIM	64	/* default hlim */
+#define IPV6_FRAGTTL	120	/* ttl for fragment packets, in slowtimo tick */
+#define IPV6_HLIMDEC	1	/* subtracted when forwarding */
+
+#define IPV6_MMTU	1280	/* minimal MTU and reassembly. 1024 + 256 */
+#define IPV6_MAXPACKET	65535	/* ip6 max packet size without Jumbo payload*/
+
+#ifdef _KERNEL
+/*
+ * IP6_EXTHDR_GET ensures that intermediate protocol header (from "off" to
+ * "len") is located in single mbuf, on contiguous memory region.
+ * The pointer to the region will be returned to pointer variable "val",
+ * with type "typ".
+ * IP6_EXTHDR_GET0 does the same, except that it aligns the structure at the
+ * very top of mbuf.  GET0 is likely to make memory copy than GET.
+ *
+ * XXX we're now testing this, needs m_pulldown()
+ */
+#define IP6_EXTHDR_GET(val, typ, m, off, len) \
+do {									\
+	struct mbuf *_t;						\
+	int _tmp;							\
+	if ((m)->m_len >= (off) + (len))				\
+		(val) = (typ)(mtod((m), char *) + (off));		\
+	else {								\
+		_t = m_pulldown((m), (off), (len), &_tmp);		\
+		if (_t) {						\
+			if (_t->m_len < _tmp + (len))			\
+				panic("m_pulldown malfunction");	\
+			(val) = (typ)(mtod(_t, char *) + _tmp);	\
+		} else {						\
+			(val) = (typ)NULL;				\
+			(m) = NULL;					\
+		}							\
+	}								\
+} while (/*CONSTCOND*/ 0)
+
+#define IP6_EXTHDR_GET0(val, typ, m, off, len) \
+do {									\
+	struct mbuf *_t;						\
+	if ((off) == 0 && (m)->m_len >= len)				\
+		(val) = (typ)mtod((m), void *);			\
+	else {								\
+		_t = m_pulldown((m), (off), (len), NULL);		\
+		if (_t) {						\
+			if (_t->m_len < (len))				\
+				panic("m_pulldown malfunction");	\
+			(val) = (typ)mtod(_t, void *);			\
+		} else {						\
+			(val) = (typ)NULL;				\
+			(m) = NULL;					\
+		}							\
+	}								\
+} while (/*CONSTCOND*/ 0)
+#endif /*_KERNEL*/
+
+#endif /* !_NETINET_IP6_H_ */
diff --git a/ndk/platforms/android-3/include/pthread.h b/ndk/platforms/android-3/include/pthread.h
index e3afdae..2a6029d 100644
--- a/ndk/platforms/android-3/include/pthread.h
+++ b/ndk/platforms/android-3/include/pthread.h
@@ -103,7 +103,7 @@
 /*
  * Prototypes
  */
-#if __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -231,7 +231,7 @@
         __pthread_cleanup_pop( &__cleanup, (execute)); \
     } while (0);
 
-#if __cplusplus
+#ifdef __cplusplus
 } /* extern "C" */
 #endif
 
@@ -240,4 +240,4 @@
 #define LONG_LONG_MAX __LONG_LONG_MAX__
 #define LONG_LONG_MIN (-__LONG_LONG_MAX__ - 1)
 
-#endif // _PTHREAD_H_
+#endif /* _PTHREAD_H_ */
diff --git a/ndk/platforms/android-3/include/signal.h b/ndk/platforms/android-3/include/signal.h
index 5540847..0bfd550c 100644
--- a/ndk/platforms/android-3/include/signal.h
+++ b/ndk/platforms/android-3/include/signal.h
@@ -42,12 +42,15 @@
 
 typedef int sig_atomic_t;
 
-/* crepy NIG / _NSIG handling, just to be safe */
-#ifndef NSIG
-#  define NSIG  _NSIG
-#endif
+/* _NSIG is used by the SIGRTMAX definition under <asm/signal.h>, however
+ * its definition is part of a #if __KERNEL__ .. #endif block in the original
+ * kernel headers and is thus not part of our cleaned-up versions.
+ *
+ * Looking at the current kernel sources, it is defined as 64 for all
+ * architectures except for the 'mips' one which set it to 128.
+ */
 #ifndef _NSIG
-#  define _NSIG  NSIG
+#  define _NSIG  64
 #endif
 
 extern const char * const sys_siglist[];
diff --git a/ndk/platforms/android-3/include/sys/atomics.h b/ndk/platforms/android-3/include/sys/atomics.h
index d3fa145..3ada8de 100644
--- a/ndk/platforms/android-3/include/sys/atomics.h
+++ b/ndk/platforms/android-3/include/sys/atomics.h
@@ -33,10 +33,48 @@
 
 __BEGIN_DECLS
 
-extern int __atomic_cmpxchg(int old, int _new, volatile int *ptr);
-extern int __atomic_swap(int _new, volatile int *ptr);
-extern int __atomic_dec(volatile int *ptr);
-extern int __atomic_inc(volatile int *ptr);
+/* Note: atomic operations that were exported by the C library didn't
+ *       provide any memory barriers, which created potential issues on
+ *       multi-core devices. We now define them as inlined calls to
+ *       GCC sync builtins, which always provide a full barrier.
+ *
+ *       NOTE: The C library still exports atomic functions by the same
+ *              name to ensure ABI stability for existing NDK machine code.
+ *
+ *       If you are an NDK developer, we encourage you to rebuild your
+ *       unmodified sources against this header as soon as possible.
+ */
+#define __ATOMIC_INLINE__ static __inline__ __attribute__((always_inline))
+
+__ATOMIC_INLINE__ int
+__atomic_cmpxchg(int old, int _new, volatile int *ptr)
+{
+    /* We must return 0 on success */
+    return __sync_val_compare_and_swap(ptr, old, _new) != old;
+}
+
+__ATOMIC_INLINE__ int
+__atomic_swap(int _new, volatile int *ptr)
+{
+    int prev;
+    do {
+        prev = *ptr;
+    } while (__sync_val_compare_and_swap(ptr, prev, _new) != prev);
+    return prev;
+}
+
+__ATOMIC_INLINE__ int
+__atomic_dec(volatile int *ptr)
+{
+  return __sync_fetch_and_sub (ptr, 1);
+}
+
+__ATOMIC_INLINE__ int
+__atomic_inc(volatile int *ptr)
+{
+  return __sync_fetch_and_add (ptr, 1);
+}
+
 
 int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
 int __futex_wake(volatile void *ftx, int count);
diff --git a/ndk/platforms/android-3/include/sys/cdefs.h b/ndk/platforms/android-3/include/sys/cdefs.h
index 2389437..27c575c 100644
--- a/ndk/platforms/android-3/include/sys/cdefs.h
+++ b/ndk/platforms/android-3/include/sys/cdefs.h
@@ -85,7 +85,7 @@
 #define	___STRING(x)	__STRING(x)
 #define	___CONCAT(x,y)	__CONCAT(x,y)
 
-#if __STDC__ || defined(__cplusplus)
+#if defined(__STDC__) || defined(__cplusplus)
 #define	__P(protos)	protos		/* full-blown ANSI C */
 #define	__CONCAT(x,y)	x ## y
 #define	__STRING(x)	#x
@@ -219,7 +219,7 @@
  * C99 defines the restrict type qualifier keyword, which was made available
  * in GCC 2.92.
  */
-#if __STDC_VERSION__ >= 199901L
+#if defined(__STDC__VERSION__) && __STDC_VERSION__ >= 199901L
 #define	__restrict	restrict
 #else
 #if !__GNUC_PREREQ__(2, 92)
@@ -231,7 +231,7 @@
  * C99 defines __func__ predefined identifier, which was made available
  * in GCC 2.95.
  */
-#if !(__STDC_VERSION__ >= 199901L)
+#if !defined(__STDC_VERSION__) || !(__STDC_VERSION__ >= 199901L)
 #if __GNUC_PREREQ__(2, 6)
 #define	__func__	__PRETTY_FUNCTION__
 #elif __GNUC_PREREQ__(2, 4)
@@ -503,5 +503,6 @@
 #endif
 
 #define  __BIONIC__   1
+#include <android/api-level.h>
 
 #endif /* !_SYS_CDEFS_H_ */
diff --git a/ndk/platforms/android-3/include/sys/cdefs_elf.h b/ndk/platforms/android-3/include/sys/cdefs_elf.h
index e051b1d..1e57470 100644
--- a/ndk/platforms/android-3/include/sys/cdefs_elf.h
+++ b/ndk/platforms/android-3/include/sys/cdefs_elf.h
@@ -95,6 +95,10 @@
 	__asm__(".section _sec\n\t.asciz _str\n\t.previous")
 #endif
 
+/* GCC visibility helper macro */
+#define __LIBC_HIDDEN__							\
+	__attribute__ ((visibility ("hidden")))
+
 #define	__IDSTRING(_n,_s)		__SECTIONSTRING(.ident,_s)
 
 #define	__RCSID(_s)			__IDSTRING(rcsid,_s)
diff --git a/ndk/platforms/android-3/include/sys/prctl.h b/ndk/platforms/android-3/include/sys/prctl.h
index ce85bf7..359d684 100644
--- a/ndk/platforms/android-3/include/sys/prctl.h
+++ b/ndk/platforms/android-3/include/sys/prctl.h
@@ -32,8 +32,13 @@
 
 __BEGIN_DECLS
 
-extern int prctl(int option, unsigned long arg2, unsigned long arg3 , unsigned
-               long arg4, unsigned long arg5);
+/* IMPORTANT NOTE: This function is declared as taking a variable number
+ *                 of arguments to match the GLibc definition. However
+ *                 its declaration inside SYSCALLS.TXT *must* make it
+ *                 take 6 arguments to ensure consistency with the kernel
+ *                 implementation.
+ */
+extern int prctl(int option, ...);
 
 __END_DECLS
 
diff --git a/ndk/platforms/android-3/include/unistd.h b/ndk/platforms/android-3/include/unistd.h
index 25fc334..53088d4 100644
--- a/ndk/platforms/android-3/include/unistd.h
+++ b/ndk/platforms/android-3/include/unistd.h
@@ -70,8 +70,9 @@
 extern int execle(const char *, const char *, ...);
 extern int capget(cap_user_header_t hdrp, cap_user_data_t datap);
 extern int capset(cap_user_header_t hdrp, const cap_user_data_t datap);
-extern int prctl(int  option,  unsigned long arg2, unsigned long arg3,
-                 unsigned long arg4, unsigned long arg5);
+
+/* IMPORTANT: See comment under <sys/prctl.h> about this declaration */
+extern int prctl(int  option, ...);
 
 extern int nice(int);
 
@@ -121,7 +122,7 @@
 
 extern int close(int);
 extern off_t lseek(int, off_t, int);
-extern loff_t lseek64(int, loff_t, int);
+extern off64_t lseek64(int, off64_t, int);
 
 extern ssize_t read(int, void *, size_t);
 extern ssize_t write(int, const void *, size_t);
diff --git a/ndk/platforms/android-5/include/pthread.h b/ndk/platforms/android-5/include/pthread.h
index 6603b3f..a20a52d 100644
--- a/ndk/platforms/android-5/include/pthread.h
+++ b/ndk/platforms/android-5/include/pthread.h
@@ -103,7 +103,7 @@
 /*
  * Prototypes
  */
-#if __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -258,7 +258,7 @@
         __pthread_cleanup_pop( &__cleanup, (execute)); \
     } while (0);
 
-#if __cplusplus
+#ifdef __cplusplus
 } /* extern "C" */
 #endif
 
@@ -267,4 +267,4 @@
 #define LONG_LONG_MAX __LONG_LONG_MAX__
 #define LONG_LONG_MIN (-__LONG_LONG_MAX__ - 1)
 
-#endif // _PTHREAD_H_
+#endif /* _PTHREAD_H_ */
diff --git a/ndk/platforms/android-8/include/dlfcn.h b/ndk/platforms/android-8/include/dlfcn.h
index f84d1d1..7daa8f7 100644
--- a/ndk/platforms/android-8/include/dlfcn.h
+++ b/ndk/platforms/android-8/include/dlfcn.h
@@ -47,7 +47,7 @@
 extern int          dlclose(void*  handle);
 extern const char*  dlerror(void);
 extern void*        dlsym(void*  handle, const char*  symbol);
-extern int          dladdr(void* addr, Dl_info *info);
+extern int          dladdr(const void* addr, Dl_info *info);
 
 enum {
   RTLD_NOW  = 0,
diff --git a/ndk/platforms/android-8/include/pthread.h b/ndk/platforms/android-8/include/pthread.h
index eb2d169..f7a596a 100644
--- a/ndk/platforms/android-8/include/pthread.h
+++ b/ndk/platforms/android-8/include/pthread.h
@@ -103,7 +103,7 @@
 /*
  * Prototypes
  */
-#if __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -263,7 +263,7 @@
         __pthread_cleanup_pop( &__cleanup, (execute)); \
     } while (0);
 
-#if __cplusplus
+#ifdef __cplusplus
 } /* extern "C" */
 #endif
 
@@ -272,4 +272,4 @@
 #define LONG_LONG_MAX __LONG_LONG_MAX__
 #define LONG_LONG_MIN (-__LONG_LONG_MAX__ - 1)
 
-#endif // _PTHREAD_H_
+#endif /* _PTHREAD_H_ */
diff --git a/ndk/platforms/android-8/include/signal.h b/ndk/platforms/android-8/include/signal.h
index 4401164..c9a5170 100644
--- a/ndk/platforms/android-8/include/signal.h
+++ b/ndk/platforms/android-8/include/signal.h
@@ -33,6 +33,7 @@
 #include <string.h>		/* For memset() */
 #include <sys/types.h>
 #include <asm/signal.h>
+#include <asm/sigcontext.h>
 
 #define __ARCH_SI_UID_T __kernel_uid32_t
 #include <asm/siginfo.h>
@@ -42,12 +43,15 @@
 
 typedef int sig_atomic_t;
 
-/* crepy NIG / _NSIG handling, just to be safe */
-#ifndef NSIG
-#  define NSIG  _NSIG
-#endif
+/* _NSIG is used by the SIGRTMAX definition under <asm/signal.h>, however
+ * its definition is part of a #if __KERNEL__ .. #endif block in the original
+ * kernel headers and is thus not part of our cleaned-up versions.
+ *
+ * Looking at the current kernel sources, it is defined as 64 for all
+ * architectures except for the 'mips' one which set it to 128.
+ */
 #ifndef _NSIG
-#  define _NSIG  NSIG
+#  define _NSIG  64
 #endif
 
 extern const char * const sys_siglist[];
diff --git a/ndk/platforms/android-8/include/unistd.h b/ndk/platforms/android-8/include/unistd.h
index 863d56d..ab8aee2 100644
--- a/ndk/platforms/android-8/include/unistd.h
+++ b/ndk/platforms/android-8/include/unistd.h
@@ -70,8 +70,9 @@
 extern int execle(const char *, const char *, ...);
 extern int capget(cap_user_header_t hdrp, cap_user_data_t datap);
 extern int capset(cap_user_header_t hdrp, const cap_user_data_t datap);
-extern int prctl(int  option,  unsigned long arg2, unsigned long arg3,
-                 unsigned long arg4, unsigned long arg5);
+
+/* IMPORTANT: See comment under <sys/prctl.h> about this declaration */
+extern int prctl(int  option, ...);
 
 extern int nice(int);
 
@@ -125,7 +126,7 @@
 
 extern int close(int);
 extern off_t lseek(int, off_t, int);
-extern loff_t lseek64(int, loff_t, int);
+extern off64_t lseek64(int, off64_t, int);
 
 extern ssize_t read(int, void *, size_t);
 extern ssize_t write(int, const void *, size_t);
diff --git a/ndk/platforms/android-8/samples/bitmap-plasma/default.properties b/ndk/platforms/android-8/samples/bitmap-plasma/default.properties
index 9a2c9f6..0b9250e 100644
--- a/ndk/platforms/android-8/samples/bitmap-plasma/default.properties
+++ b/ndk/platforms/android-8/samples/bitmap-plasma/default.properties
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-9
+target=android-8
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/a.out.h b/ndk/platforms/android-9/arch-mips/include/asm/a.out.h
new file mode 100644
index 0000000..33c075c
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/a.out.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_A_OUT_H
+#define _ASM_A_OUT_H
+struct exec
+{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long a_info;
+ unsigned a_text;
+ unsigned a_data;
+ unsigned a_bss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned a_syms;
+ unsigned a_entry;
+ unsigned a_trsize;
+ unsigned a_drsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define N_TRSIZE(a) ((a).a_trsize)
+#define N_DRSIZE(a) ((a).a_drsize)
+#define N_SYMSIZE(a) ((a).a_syms)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/addrspace.h b/ndk/platforms/android-9/arch-mips/include/asm/addrspace.h
new file mode 100644
index 0000000..69abbd4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/addrspace.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ADDRSPACE_H
+#define _ASM_ADDRSPACE_H
+#include <spaces.h>
+#ifdef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _ATYPE_
+#define _ATYPE32_
+#define _ATYPE64_
+#define _CONST64_(x) x
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define _ATYPE_ __PTRDIFF_TYPE__
+#define _ATYPE32_ int
+#define _ATYPE64_ __s64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _CONST64_(x) x ## LL
+#endif
+#ifdef __ASSEMBLY__
+#define _ACAST32_
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _ACAST64_
+#else
+#define _ACAST32_ (_ATYPE_)(_ATYPE32_)  
+#define _ACAST64_ (_ATYPE64_)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define KSEGX(a) ((_ACAST32_ (a)) & 0xe0000000)
+#define CPHYSADDR(a) ((_ACAST32_(a)) & 0x1fffffff)
+#define XPHYSADDR(a) ((_ACAST64_(a)) &   _CONST64_(0x000000ffffffffff))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CKSEG0ADDR(a) (CPHYSADDR(a) | KSEG0)
+#define CKSEG1ADDR(a) (CPHYSADDR(a) | KSEG1)
+#define CKSEG2ADDR(a) (CPHYSADDR(a) | KSEG2)
+#define CKSEG3ADDR(a) (CPHYSADDR(a) | KSEG3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KSEG0ADDR(a) (CPHYSADDR(a) | KSEG0)
+#define KSEG1ADDR(a) (CPHYSADDR(a) | KSEG1)
+#define KSEG2ADDR(a) (CPHYSADDR(a) | KSEG2)
+#define KSEG3ADDR(a) (CPHYSADDR(a) | KSEG3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KUSEG 0x00000000
+#define KSEG0 0x80000000
+#define KSEG1 0xa0000000
+#define KSEG2 0xc0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KSEG3 0xe0000000
+#define CKUSEG 0x00000000
+#define CKSEG0 0x80000000
+#define CKSEG1 0xa0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CKSEG2 0xc0000000
+#define CKSEG3 0xe0000000
+#define K_CALG_COH_EXCL1_NOL2 0
+#define K_CALG_COH_SHRL1_NOL2 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_CALG_UNCACHED 2
+#define K_CALG_NONCOHERENT 3
+#define K_CALG_COH_EXCL 4
+#define K_CALG_COH_SHAREABLE 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_CALG_NOTUSED 6
+#define K_CALG_UNCACHED_ACCEL 7
+#define PHYS_TO_XKSEG_UNCACHED(p) PHYS_TO_XKPHYS(K_CALG_UNCACHED, (p))
+#define PHYS_TO_XKSEG_CACHED(p) PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE, (p))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XKPHYS_TO_PHYS(p) ((p) & TO_PHYS_MASK)
+#define PHYS_TO_XKPHYS(cm, a) (_CONST64_(0x8000000000000000) |   (_CONST64_(cm) << 59) | (a))
+#define TO_PHYS_MASK _CONST64_(0x07ffffffffffffff)  
+#define COMPAT_K1BASE32 _CONST64_(0xffffffffa0000000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PHYS_TO_COMPATK1(x) ((x) | COMPAT_K1BASE32)  
+#define KDM_TO_PHYS(x) (_ACAST64_ (x) & TO_PHYS_MASK)
+#define PHYS_TO_K0(x) (_ACAST64_ (x) | CAC_BASE)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/asm.h b/ndk/platforms/android-9/arch-mips/include/asm/asm.h
new file mode 100644
index 0000000..dd80aef
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/asm.h
@@ -0,0 +1,263 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_ASM_H
+#define __ASM_ASM_H
+#include <asm/sgidefs.h>
+#ifndef CAT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __STDC__
+#define __CAT(str1, str2) str1##str2
+#else
+#define __CAT(str1, str2) str1 str2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define CAT(str1, str2) __CAT(str1, str2)
+#endif
+#ifdef __PIC__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CPRESTORE(register)   .cprestore register
+#define CPADD(register)   .cpadd register
+#define CPLOAD(register)   .cpload register
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CPRESTORE(register)
+#define CPADD(register)
+#define CPLOAD(register)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LEAF(symbol)   .globl symbol;   .align 2;   .type symbol, @function;   .ent symbol, 0;  symbol: .frame sp, 0, ra
+#define NESTED(symbol, framesize, rpc)   .globl symbol;   .align 2;   .type symbol, @function;   .ent symbol, 0;  symbol: .frame sp, framesize, rpc
+#define END(function)   .end function;   .size function, .-function
+#define EXPORT(symbol)   .globl symbol;  symbol:
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FEXPORT(symbol)   .globl symbol;   .type symbol, @function;  symbol:
+#define ABS(symbol,value)   .globl symbol;  symbol = value
+#define PANIC(msg)   .set push;   .set reorder;   PTR_LA a0, 8f;   jal panic;  9: b 9b;   .set pop;   TEXT(msg)
+#define PRINT(string)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TEXT(msg)   .pushsection .data;  8: .asciiz msg;   .popsection;
+#define TTABLE(string)   .pushsection .text;   .word 1f;   .popsection   .pushsection .data;  1: .asciiz string;   .popsection
+#define PREF(hint, addr)
+#define PREFX(hint, addr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_ISA == _MIPS_ISA_MIPS1
+#define MOVN(rd, rs, rt)   .set push;   .set reorder;   beqz rt, 9f;   move rd, rs;   .set pop;  9:
+#define MOVZ(rd, rs, rt)   .set push;   .set reorder;   bnez rt, 9f;   move rd, rs;   .set pop;  9:
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_ISA == _MIPS_ISA_MIPS2 || _MIPS_ISA == _MIPS_ISA_MIPS3
+#define MOVN(rd, rs, rt)   .set push;   .set noreorder;   bnezl rt, 9f;   move rd, rs;   .set pop;  9:
+#define MOVZ(rd, rs, rt)   .set push;   .set noreorder;   beqzl rt, 9f;   move rd, rs;   .set pop;  9:
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_ISA == _MIPS_ISA_MIPS4 || _MIPS_ISA == _MIPS_ISA_MIPS5 || _MIPS_ISA == _MIPS_ISA_MIPS32 || _MIPS_ISA == _MIPS_ISA_MIPS64
+#define MOVN(rd, rs, rt)   movn rd, rs, rt
+#define MOVZ(rd, rs, rt)   movz rd, rs, rt
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+#define ALSZ 7
+#define ALMASK ~7
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _MIPS_SIM_ABI64
+#define ALSZ 15
+#define ALMASK ~15
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __mips64
+#define SZREG 8
+#else
+#define SZREG 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+#define REG_S sw
+#define REG_L lw
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REG_SUBU subu
+#define REG_ADDU addu
+#endif
+#if _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _MIPS_SIM_ABI64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REG_S sd
+#define REG_L ld
+#define REG_SUBU dsubu
+#define REG_ADDU daddu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SZINT == 32
+#define INT_ADD add
+#define INT_ADDU addu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_ADDI addi
+#define INT_ADDIU addiu
+#define INT_SUB sub
+#define INT_SUBU subu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_L lw
+#define INT_S sw
+#define INT_SLL sll
+#define INT_SLLV sllv
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_SRL srl
+#define INT_SRLV srlv
+#define INT_SRA sra
+#define INT_SRAV srav
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SZINT == 64
+#define INT_ADD dadd
+#define INT_ADDU daddu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_ADDI daddi
+#define INT_ADDIU daddiu
+#define INT_SUB dsub
+#define INT_SUBU dsubu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_L ld
+#define INT_S sd
+#define INT_SLL dsll
+#define INT_SLLV dsllv
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_SRL dsrl
+#define INT_SRLV dsrlv
+#define INT_SRA dsra
+#define INT_SRAV dsrav
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SZLONG == 32
+#define LONG_ADD add
+#define LONG_ADDU addu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG_ADDI addi
+#define LONG_ADDIU addiu
+#define LONG_SUB sub
+#define LONG_SUBU subu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG_L lw
+#define LONG_S sw
+#define LONG_SLL sll
+#define LONG_SLLV sllv
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG_SRL srl
+#define LONG_SRLV srlv
+#define LONG_SRA sra
+#define LONG_SRAV srav
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG .word
+#define LONGSIZE 4
+#define LONGMASK 3
+#define LONGLOG 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SZLONG == 64
+#define LONG_ADD dadd
+#define LONG_ADDU daddu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG_ADDI daddi
+#define LONG_ADDIU daddiu
+#define LONG_SUB dsub
+#define LONG_SUBU dsubu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG_L ld
+#define LONG_S sd
+#define LONG_SLL dsll
+#define LONG_SLLV dsllv
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG_SRL dsrl
+#define LONG_SRLV dsrlv
+#define LONG_SRA dsra
+#define LONG_SRAV dsrav
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LONG .dword
+#define LONGSIZE 8
+#define LONGMASK 7
+#define LONGLOG 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SZPTR == 32
+#define PTR_ADD add
+#define PTR_ADDU addu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_ADDI addi
+#define PTR_ADDIU addiu
+#define PTR_SUB sub
+#define PTR_SUBU subu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_L lw
+#define PTR_S sw
+#define PTR_LA la
+#define PTR_LI li
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_SLL sll
+#define PTR_SLLV sllv
+#define PTR_SRL srl
+#define PTR_SRLV srlv
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_SRA sra
+#define PTR_SRAV srav
+#define PTR_SCALESHIFT 2
+#define PTR .word
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRSIZE 4
+#define PTRLOG 2
+#endif
+#if _MIPS_SZPTR == 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_ADD dadd
+#define PTR_ADDU daddu
+#define PTR_ADDI daddi
+#define PTR_ADDIU daddiu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_SUB dsub
+#define PTR_SUBU dsubu
+#define PTR_L ld
+#define PTR_S sd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_LA dla
+#define PTR_LI dli
+#define PTR_SLL dsll
+#define PTR_SLLV dsllv
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_SRL dsrl
+#define PTR_SRLV dsrlv
+#define PTR_SRA dsra
+#define PTR_SRAV dsrav
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTR_SCALESHIFT 3
+#define PTR .dword
+#define PTRSIZE 8
+#define PTRLOG 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+#define MFC0 mfc0
+#define MTC0 mtc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SIM == _MIPS_SIM_NABI32 || _MIPS_SIM == _MIPS_SIM_ABI64
+#define MFC0 dmfc0
+#define MTC0 dmtc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define SSNOP sll zero, zero, 1
+#define R10KCBARRIER(addr)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/asmmacro.h b/ndk/platforms/android-9/arch-mips/include/asm/asmmacro.h
new file mode 100644
index 0000000..e1e9804
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/asmmacro.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ASMMACRO_H
+#define _ASM_ASMMACRO_H
+#include <asm/hazards.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/atomic.h b/ndk/platforms/android-9/arch-mips/include/asm/atomic.h
new file mode 100644
index 0000000..eea1e59
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/atomic.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ATOMIC_H
+#define _ASM_ATOMIC_H
+#include <linux/irqflags.h>
+#include <asm/barrier.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/cpu-features.h>
+#include <asm/war.h>
+#include <asm/system.h>
+typedef struct { volatile int counter; } atomic_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ATOMIC_INIT(i) { (i) }
+#define atomic_read(v) ((v)->counter)
+#define atomic_set(v, i) ((v)->counter = (i))
+#define atomic_cmpxchg(v, o, n) (cmpxchg(&((v)->counter), (o), (n)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define atomic_xchg(v, new) (xchg(&((v)->counter), (new)))
+#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+#define atomic_dec_return(v) atomic_sub_return(1, (v))
+#define atomic_inc_return(v) atomic_add_return(1, (v))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define atomic_sub_and_test(i, v) (atomic_sub_return((i), (v)) == 0)
+#define atomic_inc_and_test(v) (atomic_inc_return(v) == 0)
+#define atomic_dec_and_test(v) (atomic_sub_return(1, (v)) == 0)
+#define atomic_dec_if_positive(v) atomic_sub_if_positive(1, v)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define atomic_inc(v) atomic_add(1, (v))
+#define atomic_dec(v) atomic_sub(1, (v))
+#define atomic_add_negative(i, v) (atomic_add_return(i, (v)) < 0)
+#define smp_mb__before_atomic_dec() smp_llsc_mb()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define smp_mb__after_atomic_dec() smp_llsc_mb()
+#define smp_mb__before_atomic_inc() smp_llsc_mb()
+#define smp_mb__after_atomic_inc() smp_llsc_mb()
+#include <asm-generic/atomic.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/auxvec.h b/ndk/platforms/android-9/arch-mips/include/asm/auxvec.h
new file mode 100644
index 0000000..0c04901
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/auxvec.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_AUXVEC_H
+#define _ASM_AUXVEC_H
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/barrier.h b/ndk/platforms/android-9/arch-mips/include/asm/barrier.h
new file mode 100644
index 0000000..4aed9a7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/barrier.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_BARRIER_H
+#define __ASM_BARRIER_H
+#define read_barrier_depends() do { } while(0)
+#define smp_read_barrier_depends() do { } while(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __sync() do { } while(0)
+#define __fast_iob()   __asm__ __volatile__(   ".set	push\n\t"   ".set	noreorder\n\t"   "lw	$0,%0\n\t"   "nop\n\t"   ".set	pop"   :     : "m" (*(int *)CKSEG1)   : "memory")
+#define fast_wmb() __sync()
+#define fast_rmb() __sync()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fast_mb() __sync()
+#define fast_iob()   do {   __sync();   __fast_iob();   } while (0)
+#define wmb() fast_wmb()
+#define rmb() fast_rmb()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mb() fast_mb()
+#define iob() fast_iob()
+#define __WEAK_ORDERING_MB "		\n"
+#define __WEAK_LLSC_MB "		\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define smp_mb() __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
+#define smp_rmb() __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
+#define smp_wmb() __asm__ __volatile__(__WEAK_ORDERING_MB : : :"memory")
+#define set_mb(var, value)   do { var = value; smp_mb(); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define smp_llsc_mb() __asm__ __volatile__(__WEAK_LLSC_MB : : :"memory")
+#define smp_llsc_rmb() __asm__ __volatile__(__WEAK_LLSC_MB : : :"memory")
+#define smp_llsc_wmb() __asm__ __volatile__(__WEAK_LLSC_MB : : :"memory")
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/bitops.h b/ndk/platforms/android-9/arch-mips/include/asm/bitops.h
new file mode 100644
index 0000000..749caaa
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/bitops.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_BITOPS_H
+#define _ASM_BITOPS_H
+#ifndef _LINUX_BITOPS_H
+#error only <linux/bitops.h> can be included directly
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#include <linux/compiler.h>
+#include <linux/irqflags.h>
+#include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/barrier.h>
+#include <asm/bug.h>
+#include <asm/byteorder.h>  
+#include <asm/cpu-features.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/sgidefs.h>
+#include <asm/war.h>
+#if _MIPS_SZLONG == 32
+#define SZLONG_LOG 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SZLONG_MASK 31UL
+#define __LL "ll	"
+#define __SC "sc	"
+#define __INS "ins    "
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __EXT "ext    "
+#elif _MIPS_SZLONG == 64
+#define SZLONG_LOG 6
+#define SZLONG_MASK 63UL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __LL "lld	"
+#define __SC "scd	"
+#define __INS "dins    "
+#define __EXT "dext    "
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define smp_mb__before_clear_bit() smp_llsc_mb()
+#define smp_mb__after_clear_bit() smp_llsc_mb()
+#include <asm-generic/bitops/non-atomic.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm-generic/bitops/__ffs.h>
+#include <asm-generic/bitops/__fls.h>
+#include <asm-generic/bitops/ffs.h>
+#include <asm-generic/bitops/fls.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm-generic/bitops/fls64.h>
+#include <asm-generic/bitops/ffz.h>
+#include <asm-generic/bitops/find.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/bootinfo.h b/ndk/platforms/android-9/arch-mips/include/asm/bootinfo.h
new file mode 100644
index 0000000..97368ea
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/bootinfo.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_BOOTINFO_H
+#define _ASM_BOOTINFO_H
+#include <linux/types.h>
+#include <asm/setup.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACH_UNKNOWN 0  
+#define MACH_DSUNKNOWN 0
+#define MACH_DS23100 1  
+#define MACH_DS5100 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACH_DS5000_200 3  
+#define MACH_DS5000_1XX 4  
+#define MACH_DS5000_XX 5  
+#define MACH_DS5000_2X0 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACH_DS5400 7  
+#define MACH_DS5500 8  
+#define MACH_DS5800 9  
+#define MACH_DS5900 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACH_MSP4200_EVAL 0  
+#define MACH_MSP4200_GW 1  
+#define MACH_MSP4200_FPGA 2  
+#define MACH_MSP7120_EVAL 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACH_MSP7120_GW 4  
+#define MACH_MSP7120_FPGA 5  
+#define MACH_MSP_OTHER 255  
+#define MACH_MIKROTIK_RB532 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACH_MIKROTIK_RB532A 1  
+#define CL_SIZE COMMAND_LINE_SIZE
+#define BOOT_MEM_MAP_MAX 32
+#define BOOT_MEM_RAM 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BOOT_MEM_ROM_DATA 2
+#define BOOT_MEM_RESERVED 3
+struct boot_mem_map {
+ int nr_map;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct boot_mem_map_entry {
+ phys_t addr;
+ phys_t size;
+ long type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } map[BOOT_MEM_MAP_MAX];
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/bug.h b/ndk/platforms/android-9/arch-mips/include/asm/bug.h
new file mode 100644
index 0000000..eac3da4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/bug.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_BUG_H
+#define __ASM_BUG_H
+#include <asm/sgidefs.h>
+#include <asm-generic/bug.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/byteorder.h b/ndk/platforms/android-9/arch-mips/include/asm/byteorder.h
new file mode 100644
index 0000000..bb964d8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/byteorder.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_BYTEORDER_H
+#define _ASM_BYTEORDER_H
+#include <linux/compiler.h>
+#include <asm/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __GNUC__
+#ifndef __STRICT_ANSI__
+#define __BYTEORDER_HAS_U64__
+#define __SWAB_64_THRU_32__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
+#ifdef __MIPSEB__
+#include <linux/byteorder/big_endian.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#elif defined(__MIPSEL__)
+#include <linux/byteorder/little_endian.h>
+#else
+#error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cache.h b/ndk/platforms/android-9/arch-mips/include/asm/cache.h
new file mode 100644
index 0000000..64f1982
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cache.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_CACHE_H
+#define _ASM_CACHE_H
+#include <kmalloc.h>
+#define L1_CACHE_SHIFT CONFIG_MIPS_L1_CACHE_SHIFT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
+#define SMP_CACHE_SHIFT L1_CACHE_SHIFT
+#define SMP_CACHE_BYTES L1_CACHE_BYTES
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cachectl.h b/ndk/platforms/android-9/arch-mips/include/asm/cachectl.h
new file mode 100644
index 0000000..458c00d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cachectl.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_CACHECTL
+#define _ASM_CACHECTL
+#define ICACHE (1<<0)  
+#define DCACHE (1<<1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BCACHE (ICACHE|DCACHE)  
+#define CACHEABLE 0  
+#define UNCACHEABLE 1  
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cacheflush.h b/ndk/platforms/android-9/arch-mips/include/asm/cacheflush.h
new file mode 100644
index 0000000..00b2220
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cacheflush.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_CACHEFLUSH_H
+#define _ASM_CACHEFLUSH_H
+#include <linux/mm.h>
+#include <asm/cpu-features.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define flush_cache_dup_mm(mm) do { (void) (mm); } while (0)
+#define flush_dcache_mmap_lock(mapping) do { } while (0)
+#define flush_dcache_mmap_unlock(mapping) do { } while (0)
+#define ARCH_HAS_FLUSH_ANON_PAGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PG_dcache_dirty PG_arch_1
+#define Page_dcache_dirty(page)   test_bit(PG_dcache_dirty, &(page)->flags)
+#define SetPageDcacheDirty(page)   set_bit(PG_dcache_dirty, &(page)->flags)
+#define ClearPageDcacheDirty(page)   clear_bit(PG_dcache_dirty, &(page)->flags)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cacheops.h b/ndk/platforms/android-9/arch-mips/include/asm/cacheops.h
new file mode 100644
index 0000000..4484774
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cacheops.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_CACHEOPS_H
+#define __ASM_CACHEOPS_H
+#define Index_Invalidate_I 0x00
+#define Index_Writeback_Inv_D 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Index_Load_Tag_I 0x04
+#define Index_Load_Tag_D 0x05
+#define Index_Store_Tag_I 0x08
+#define Index_Store_Tag_D 0x09
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Hit_Invalidate_I 0x10
+#define Hit_Invalidate_D 0x11
+#define Hit_Writeback_Inv_D 0x15
+#define Create_Dirty_Excl_D 0x0d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Fill 0x14
+#define Hit_Writeback_I 0x18
+#define Hit_Writeback_D 0x19
+#define Index_Invalidate_SI 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Index_Writeback_Inv_SD 0x03
+#define Index_Load_Tag_SI 0x06
+#define Index_Load_Tag_SD 0x07
+#define Index_Store_Tag_SI 0x0A
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Index_Store_Tag_SD 0x0B
+#define Create_Dirty_Excl_SD 0x0f
+#define Hit_Invalidate_SI 0x12
+#define Hit_Invalidate_SD 0x13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Hit_Writeback_Inv_SD 0x17
+#define Hit_Writeback_SD 0x1b
+#define Hit_Set_Virtual_SI 0x1e
+#define Hit_Set_Virtual_SD 0x1f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R5K_Page_Invalidate_S 0x17
+#define Page_Invalidate_T 0x16
+#define Index_Writeback_Inv_S 0x03
+#define Index_Load_Tag_S 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Index_Store_Tag_S 0x0B
+#define Hit_Invalidate_S 0x13
+#define Cache_Barrier 0x14
+#define Hit_Writeback_Inv_S 0x17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Index_Load_Data_I 0x18
+#define Index_Load_Data_D 0x19
+#define Index_Load_Data_S 0x1b
+#define Index_Store_Data_I 0x1c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Index_Store_Data_D 0x1d
+#define Index_Store_Data_S 0x1f
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/checksum.h b/ndk/platforms/android-9/arch-mips/include/asm/checksum.h
new file mode 100644
index 0000000..df48b2a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/checksum.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_CHECKSUM_H
+#define _ASM_CHECKSUM_H
+#include <linux/in6.h>
+#include <asm/uaccess.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HAVE_CSUM_COPY_USER
+#ifdef __MIPSEL__
+#else
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _HAVE_ARCH_IPV6_CSUM
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cmpxchg.h b/ndk/platforms/android-9/arch-mips/include/asm/cmpxchg.h
new file mode 100644
index 0000000..16ba605
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cmpxchg.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_CMPXCHG_H
+#define __ASM_CMPXCHG_H
+#include <linux/irqflags.h>
+#define __HAVE_ARCH_CMPXCHG 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __cmpxchg_asm(ld, st, m, old, new)  ({   __typeof(*(m)) __ret;     if (cpu_has_llsc && R10000_LLSC_WAR) {   __asm__ __volatile__(   "	.set	push				\n"   "	.set	noat				\n"   "	.set	mips3				\n"   "1:	" ld "	%0, %2		# __cmpxchg_asm	\n"   "	bne	%0, %z3, 2f			\n"   "	.set	mips0				\n"   "	move	$1, %z4				\n"   "	.set	mips3				\n"   "	" st "	$1, %1				\n"   "	beqzl	$1, 1b				\n"   "2:						\n"   "	.set	pop				\n"   : "=&r" (__ret), "=R" (*m)   : "R" (*m), "Jr" (old), "Jr" (new)   : "memory");   } else if (cpu_has_llsc) {   __asm__ __volatile__(   "	.set	push				\n"   "	.set	noat				\n"   "	.set	mips3				\n"   "1:	" ld "	%0, %2		# __cmpxchg_asm	\n"   "	bne	%0, %z3, 2f			\n"   "	.set	mips0				\n"   "	move	$1, %z4				\n"   "	.set	mips3				\n"   "	" st "	$1, %1				\n"   "	beqz	$1, 3f				\n"   "2:						\n"   "	.subsection 2				\n"   "3:	b	1b				\n"   "	.previous				\n"   "	.set	pop				\n"   : "=&r" (__ret), "=R" (*m)   : "R" (*m), "Jr" (old), "Jr" (new)   : "memory");   } else {   unsigned long __flags;     raw_local_irq_save(__flags);   __ret = *m;   if (__ret == old)   *m = new;   raw_local_irq_restore(__flags);   }     __ret;  })
+#define __cmpxchg(ptr, old, new, barrier)  ({   __typeof__(ptr) __ptr = (ptr);   __typeof__(*(ptr)) __old = (old);   __typeof__(*(ptr)) __new = (new);   __typeof__(*(ptr)) __res = 0;     barrier;     switch (sizeof(*(__ptr))) {   case 4:   __res = __cmpxchg_asm("ll", "sc", __ptr, __old, __new);   break;   case 8:   if (sizeof(long) == 8) {   __res = __cmpxchg_asm("lld", "scd", __ptr,   __old, __new);   break;   }   default:   __cmpxchg_called_with_bad_pointer();   break;   }     barrier;     __res;  })
+#define cmpxchg(ptr, old, new) __cmpxchg(ptr, old, new, smp_llsc_mb())
+#define cmpxchg_local(ptr, old, new) __cmpxchg(ptr, old, new, )
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cmpxchg64(ptr, o, n)   ({   BUILD_BUG_ON(sizeof(*(ptr)) != 8);   cmpxchg((ptr), (o), (n));   })
+#include <asm-generic/cmpxchg-local.h>
+#define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n))
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/compiler.h b/ndk/platforms/android-9/arch-mips/include/asm/compiler.h
new file mode 100644
index 0000000..e31f272
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/compiler.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_COMPILER_H
+#define _ASM_COMPILER_H
+#if __GNUC__ > (3 || __GNUC__ == (3 && __GNUC_MINOR__ >= 4))
+#define GCC_IMM_ASM() "n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GCC_REG_ACCUM "$0"
+#else
+#define GCC_IMM_ASM() "rn"
+#define GCC_REG_ACCUM "accum"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cpu-features.h b/ndk/platforms/android-9/arch-mips/include/asm/cpu-features.h
new file mode 100644
index 0000000..b3642c2
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cpu-features.h
@@ -0,0 +1,186 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_CPU_FEATURES_H
+#define __ASM_CPU_FEATURES_H
+#include <asm/cpu.h>
+#include <asm/cpu-info.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <cpu-feature-overrides.h>
+#ifndef current_cpu_type
+#define current_cpu_type() current_cpu_data.cputype
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_tlb
+#define cpu_has_tlb (cpu_data[0].options & MIPS_CPU_TLB)
+#endif
+#ifndef cpu_has_4kex
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_4kex (cpu_data[0].options & MIPS_CPU_4KEX)
+#endif
+#ifndef cpu_has_3k_cache
+#define cpu_has_3k_cache (cpu_data[0].options & MIPS_CPU_3K_CACHE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define cpu_has_6k_cache 0
+#define cpu_has_8k_cache 0
+#ifndef cpu_has_4k_cache
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_4k_cache (cpu_data[0].options & MIPS_CPU_4K_CACHE)
+#endif
+#ifndef cpu_has_tx39_cache
+#define cpu_has_tx39_cache (cpu_data[0].options & MIPS_CPU_TX39_CACHE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_fpu
+#define cpu_has_fpu (current_cpu_data.options & MIPS_CPU_FPU)
+#define raw_cpu_has_fpu (raw_current_cpu_data.options & MIPS_CPU_FPU)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define raw_cpu_has_fpu cpu_has_fpu
+#endif
+#ifndef cpu_has_32fpr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_32fpr (cpu_data[0].options & MIPS_CPU_32FPR)
+#endif
+#ifndef cpu_has_counter
+#define cpu_has_counter (cpu_data[0].options & MIPS_CPU_COUNTER)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_watch
+#define cpu_has_watch (cpu_data[0].options & MIPS_CPU_WATCH)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_divec
+#define cpu_has_divec (cpu_data[0].options & MIPS_CPU_DIVEC)
+#endif
+#ifndef cpu_has_vce
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_vce (cpu_data[0].options & MIPS_CPU_VCE)
+#endif
+#ifndef cpu_has_cache_cdex_p
+#define cpu_has_cache_cdex_p (cpu_data[0].options & MIPS_CPU_CACHE_CDEX_P)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_cache_cdex_s
+#define cpu_has_cache_cdex_s (cpu_data[0].options & MIPS_CPU_CACHE_CDEX_S)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_prefetch
+#define cpu_has_prefetch (cpu_data[0].options & MIPS_CPU_PREFETCH)
+#endif
+#ifndef cpu_has_mcheck
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_mcheck (cpu_data[0].options & MIPS_CPU_MCHECK)
+#endif
+#ifndef cpu_has_ejtag
+#define cpu_has_ejtag (cpu_data[0].options & MIPS_CPU_EJTAG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_llsc
+#define cpu_has_llsc (cpu_data[0].options & MIPS_CPU_LLSC)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_mips16
+#define cpu_has_mips16 (cpu_data[0].ases & MIPS_ASE_MIPS16)
+#endif
+#ifndef cpu_has_mdmx
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_mdmx (cpu_data[0].ases & MIPS_ASE_MDMX)
+#endif
+#ifndef cpu_has_mips3d
+#define cpu_has_mips3d (cpu_data[0].ases & MIPS_ASE_MIPS3D)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_smartmips
+#define cpu_has_smartmips (cpu_data[0].ases & MIPS_ASE_SMARTMIPS)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_vtag_icache
+#define cpu_has_vtag_icache (cpu_data[0].icache.flags & MIPS_CACHE_VTAG)
+#endif
+#ifndef cpu_has_dc_aliases
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_dc_aliases (cpu_data[0].dcache.flags & MIPS_CACHE_ALIASES)
+#endif
+#ifndef cpu_has_ic_fills_f_dc
+#define cpu_has_ic_fills_f_dc (cpu_data[0].icache.flags & MIPS_CACHE_IC_F_DC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_pindexed_dcache
+#define cpu_has_pindexed_dcache (cpu_data[0].dcache.flags & MIPS_CACHE_PINDEX)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_icache_snoops_remote_store
+#define cpu_icache_snoops_remote_store 1
+#endif
+#ifndef cpu_has_mips32r1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_mips32r1 (cpu_data[0].isa_level & MIPS_CPU_ISA_M32R1)
+#endif
+#ifndef cpu_has_mips32r2
+#define cpu_has_mips32r2 (cpu_data[0].isa_level & MIPS_CPU_ISA_M32R2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_mips64r1
+#define cpu_has_mips64r1 (cpu_data[0].isa_level & MIPS_CPU_ISA_M64R1)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_mips64r2
+#define cpu_has_mips64r2 (cpu_data[0].isa_level & MIPS_CPU_ISA_M64R2)
+#endif
+#define cpu_has_mips32 (cpu_has_mips32r1 | cpu_has_mips32r2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_mips64 (cpu_has_mips64r1 | cpu_has_mips64r2)
+#define cpu_has_mips_r1 (cpu_has_mips32r1 | cpu_has_mips64r1)
+#define cpu_has_mips_r2 (cpu_has_mips32r2 | cpu_has_mips64r2)
+#ifndef cpu_has_dsp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_dsp (cpu_data[0].ases & MIPS_ASE_DSP)
+#endif
+#ifndef cpu_has_mipsmt
+#define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_has_userlocal
+#define cpu_has_userlocal (cpu_data[0].options & MIPS_CPU_ULRI)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_has_vint
+#define cpu_has_vint 0
+#endif
+#ifndef cpu_has_veic
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_has_veic 0
+#endif
+#ifndef cpu_has_inclusive_pcaches
+#define cpu_has_inclusive_pcaches (cpu_data[0].options & MIPS_CPU_INCLUSIVE_CACHES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef cpu_dcache_line_size
+#define cpu_dcache_line_size() cpu_data[0].dcache.linesz
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef cpu_icache_line_size
+#define cpu_icache_line_size() cpu_data[0].icache.linesz
+#endif
+#ifndef cpu_scache_line_size
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_scache_line_size() cpu_data[0].scache.linesz
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cpu-info.h b/ndk/platforms/android-9/arch-mips/include/asm/cpu-info.h
new file mode 100644
index 0000000..d8bd122
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cpu-info.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_CPU_INFO_H
+#define __ASM_CPU_INFO_H
+#include <asm/cache.h>
+struct cache_desc {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int waysize;
+ unsigned short sets;
+ unsigned char ways;
+ unsigned char linesz;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char waybit;
+ unsigned char flags;
+};
+#define MIPS_CACHE_NOT_PRESENT 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CACHE_VTAG 0x00000002  
+#define MIPS_CACHE_ALIASES 0x00000004  
+#define MIPS_CACHE_IC_F_DC 0x00000008  
+#define MIPS_IC_SNOOPS_REMOTE 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CACHE_PINDEX 0x00000020  
+struct cpuinfo_mips {
+ unsigned long udelay_val;
+ unsigned long asid_cache;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long options;
+ unsigned long ases;
+ unsigned int processor_id;
+ unsigned int fpu_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int cputype;
+ int isa_level;
+ int tlbsize;
+ struct cache_desc icache;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct cache_desc dcache;
+ struct cache_desc scache;
+ struct cache_desc tcache;
+ int srsets;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int core;
+ void *data;
+} __attribute__((aligned(SMP_CACHE_BYTES)));
+#define current_cpu_data cpu_data[smp_processor_id()]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define raw_current_cpu_data cpu_data[raw_smp_processor_id()]
+#define cpu_name_string() __cpu_name[smp_processor_id()]
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cpu.h b/ndk/platforms/android-9/arch-mips/include/asm/cpu.h
new file mode 100644
index 0000000..7b4b2d3
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cpu.h
@@ -0,0 +1,195 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_CPU_H
+#define _ASM_CPU_H
+#define PRID_COMP_LEGACY 0x000000
+#define PRID_COMP_MIPS 0x010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_COMP_BROADCOM 0x020000
+#define PRID_COMP_ALCHEMY 0x030000
+#define PRID_COMP_SIBYTE 0x040000
+#define PRID_COMP_SANDCRAFT 0x050000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_COMP_NXP 0x060000
+#define PRID_COMP_TOSHIBA 0x070000
+#define PRID_COMP_LSI 0x080000
+#define PRID_COMP_LEXRA 0x0b0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_R2000 0x0100
+#define PRID_IMP_AU1_REV1 0x0100
+#define PRID_IMP_AU1_REV2 0x0200
+#define PRID_IMP_R3000 0x0200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_R6000 0x0300  
+#define PRID_IMP_R4000 0x0400
+#define PRID_IMP_R6000A 0x0600
+#define PRID_IMP_R10000 0x0900
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_R4300 0x0b00
+#define PRID_IMP_VR41XX 0x0c00
+#define PRID_IMP_R12000 0x0e00
+#define PRID_IMP_R14000 0x0f00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_R8000 0x1000
+#define PRID_IMP_PR4450 0x1200
+#define PRID_IMP_R4600 0x2000
+#define PRID_IMP_R4700 0x2100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_TX39 0x2200
+#define PRID_IMP_R4640 0x2200
+#define PRID_IMP_R4650 0x2200  
+#define PRID_IMP_R5000 0x2300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_TX49 0x2d00
+#define PRID_IMP_SONIC 0x2400
+#define PRID_IMP_MAGIC 0x2500
+#define PRID_IMP_RM7000 0x2700
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_NEVADA 0x2800  
+#define PRID_IMP_RM9000 0x3400
+#define PRID_IMP_LOONGSON1 0x4200
+#define PRID_IMP_R5432 0x5400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_R5500 0x5500
+#define PRID_IMP_LOONGSON2 0x6300
+#define PRID_IMP_UNKNOWN 0xff00
+#define PRID_IMP_4KC 0x8000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_5KC 0x8100
+#define PRID_IMP_20KC 0x8200
+#define PRID_IMP_4KEC 0x8400
+#define PRID_IMP_4KSC 0x8600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_25KF 0x8800
+#define PRID_IMP_5KE 0x8900
+#define PRID_IMP_4KECR2 0x9000
+#define PRID_IMP_4KEMPR2 0x9100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_4KSD 0x9200
+#define PRID_IMP_24K 0x9300
+#define PRID_IMP_34K 0x9500
+#define PRID_IMP_24KE 0x9600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_74K 0x9700
+#define PRID_IMP_1004K 0x9900
+#define PRID_IMP_SB1 0x0100
+#define PRID_IMP_SB1A 0x1100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_IMP_SR71000 0x0400
+#define PRID_IMP_BCM4710 0x4000
+#define PRID_IMP_BCM3302 0x9000
+#define PRID_REV_MASK 0x00ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_REV_TX4927 0x0022
+#define PRID_REV_TX4937 0x0030
+#define PRID_REV_R4400 0x0040
+#define PRID_REV_R3000A 0x0030
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_REV_R3000 0x0020
+#define PRID_REV_R2000A 0x0010
+#define PRID_REV_TX3912 0x0010
+#define PRID_REV_TX3922 0x0030
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_REV_TX3927 0x0040
+#define PRID_REV_VR4111 0x0050
+#define PRID_REV_VR4181 0x0050  
+#define PRID_REV_VR4121 0x0060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_REV_VR4122 0x0070
+#define PRID_REV_VR4181A 0x0070  
+#define PRID_REV_VR4130 0x0080
+#define PRID_REV_34K_V1_0_2 0x0022
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRID_REV_ENCODE_44(ver, rev)   ((ver) << 4 | (rev))
+#define PRID_REV_ENCODE_332(ver, rev, patch)   ((ver) << 5 | (rev) << 2 | (patch))
+#define FPIR_IMP_NONE 0x0000
+enum cpu_type_enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ CPU_UNKNOWN,
+ CPU_R2000, CPU_R3000, CPU_R3000A, CPU_R3041, CPU_R3051, CPU_R3052,
+ CPU_R3081, CPU_R3081E,
+ CPU_R6000, CPU_R6000A,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ CPU_R4000PC, CPU_R4000SC, CPU_R4000MC, CPU_R4200, CPU_R4300, CPU_R4310,
+ CPU_R4400PC, CPU_R4400SC, CPU_R4400MC, CPU_R4600, CPU_R4640, CPU_R4650,
+ CPU_R4700, CPU_R5000, CPU_R5000A, CPU_R5500, CPU_NEVADA, CPU_R5432,
+ CPU_R10000, CPU_R12000, CPU_R14000, CPU_VR41XX, CPU_VR4111, CPU_VR4121,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ CPU_VR4122, CPU_VR4131, CPU_VR4133, CPU_VR4181, CPU_VR4181A, CPU_RM7000,
+ CPU_SR71000, CPU_RM9000, CPU_TX49XX,
+ CPU_R8000,
+ CPU_TX3912, CPU_TX3922, CPU_TX3927,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,
+ CPU_AU1000, CPU_AU1100, CPU_AU1200, CPU_AU1210, CPU_AU1250, CPU_AU1500,
+ CPU_AU1550, CPU_PR4450, CPU_BCM3302, CPU_BCM4710,
+ CPU_5KC, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ CPU_LAST
+};
+#define MIPS_CPU_ISA_I 0x00000001
+#define MIPS_CPU_ISA_II 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_ISA_III 0x00000004
+#define MIPS_CPU_ISA_IV 0x00000008
+#define MIPS_CPU_ISA_V 0x00000010
+#define MIPS_CPU_ISA_M32R1 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_ISA_M32R2 0x00000040
+#define MIPS_CPU_ISA_M64R1 0x00000080
+#define MIPS_CPU_ISA_M64R2 0x00000100
+#define MIPS_CPU_ISA_32BIT (MIPS_CPU_ISA_I | MIPS_CPU_ISA_II |   MIPS_CPU_ISA_M32R1 | MIPS_CPU_ISA_M32R2 )
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_ISA_64BIT (MIPS_CPU_ISA_III | MIPS_CPU_ISA_IV |   MIPS_CPU_ISA_V | MIPS_CPU_ISA_M64R1 | MIPS_CPU_ISA_M64R2)
+#define MIPS_CPU_TLB 0x00000001  
+#define MIPS_CPU_4KEX 0x00000002  
+#define MIPS_CPU_3K_CACHE 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_4K_CACHE 0x00000008  
+#define MIPS_CPU_TX39_CACHE 0x00000010  
+#define MIPS_CPU_FPU 0x00000020  
+#define MIPS_CPU_32FPR 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_COUNTER 0x00000080  
+#define MIPS_CPU_WATCH 0x00000100  
+#define MIPS_CPU_DIVEC 0x00000200  
+#define MIPS_CPU_VCE 0x00000400  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_CACHE_CDEX_P 0x00000800  
+#define MIPS_CPU_CACHE_CDEX_S 0x00001000  
+#define MIPS_CPU_MCHECK 0x00002000  
+#define MIPS_CPU_EJTAG 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_NOFPUEX 0x00008000  
+#define MIPS_CPU_LLSC 0x00010000  
+#define MIPS_CPU_INCLUSIVE_CACHES 0x00020000  
+#define MIPS_CPU_PREFETCH 0x00040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CPU_VINT 0x00080000  
+#define MIPS_CPU_VEIC 0x00100000  
+#define MIPS_CPU_ULRI 0x00200000  
+#define MIPS_ASE_MIPS16 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_ASE_MDMX 0x00000002  
+#define MIPS_ASE_MIPS3D 0x00000004  
+#define MIPS_ASE_SMARTMIPS 0x00000008  
+#define MIPS_ASE_DSP 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_ASE_MIPSMT 0x00000020  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/cputime.h b/ndk/platforms/android-9/arch-mips/include/asm/cputime.h
new file mode 100644
index 0000000..5a71223
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/cputime.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __MIPS_CPUTIME_H
+#define __MIPS_CPUTIME_H
+#include <asm-generic/cputime.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/current.h b/ndk/platforms/android-9/arch-mips/include/asm/current.h
new file mode 100644
index 0000000..439b61e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/current.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_CURRENT_H
+#define _ASM_CURRENT_H
+#include <linux/thread_info.h>
+struct task_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define current get_current()
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/debug.h b/ndk/platforms/android-9/arch-mips/include/asm/debug.h
new file mode 100644
index 0000000..1345bdf
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/debug.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DEBUG_H
+#define _ASM_DEBUG_H
+#define db_assert(x)
+#define db_warn(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define db_verify(x, y) x
+#define db_verify_warn(x, y) x
+#define db_run(x)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dec/ecc.h b/ndk/platforms/android-9/arch-mips/include/asm/dec/ecc.h
new file mode 100644
index 0000000..51342a5
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dec/ecc.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_DEC_ECC_H
+#define __ASM_MIPS_DEC_ECC_H
+#define KN0X_EAR_VALID (1<<31)  
+#define KN0X_EAR_CPU (1<<30)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN0X_EAR_WRITE (1<<29)  
+#define KN0X_EAR_ECCERR (1<<28)  
+#define KN0X_EAR_RES_27 (1<<27)  
+#define KN0X_EAR_ADDRESS (0x7ffffff<<0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN0X_ESR_VLDHI (1<<31)  
+#define KN0X_ESR_CHKHI (0x7f<<24)  
+#define KN0X_ESR_SNGHI (1<<23)  
+#define KN0X_ESR_SYNHI (0x7f<<16)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN0X_ESR_VLDLO (1<<15)  
+#define KN0X_ESR_CHKLO (0x7f<<8)  
+#define KN0X_ESR_SNGLO (1<<7)  
+#define KN0X_ESR_SYNLO (0x7f<<0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+#include <linux/interrupt.h>
+struct pt_regs;
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dec/ioasic_addrs.h b/ndk/platforms/android-9/arch-mips/include/asm/dec/ioasic_addrs.h
new file mode 100644
index 0000000..99774a1
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dec/ioasic_addrs.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_DEC_IOASIC_ADDRS_H
+#define __ASM_MIPS_DEC_IOASIC_ADDRS_H
+#define IOASIC_SLOT_SIZE 0x00040000
+#define IOASIC_SYS_ROM (0*IOASIC_SLOT_SIZE)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOASIC_IOCTL (1*IOASIC_SLOT_SIZE)  
+#define IOASIC_ESAR (2*IOASIC_SLOT_SIZE)  
+#define IOASIC_LANCE (3*IOASIC_SLOT_SIZE)  
+#define IOASIC_SCC0 (4*IOASIC_SLOT_SIZE)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOASIC_VDAC_HI (5*IOASIC_SLOT_SIZE)  
+#define IOASIC_SCC1 (6*IOASIC_SLOT_SIZE)  
+#define IOASIC_VDAC_LO (7*IOASIC_SLOT_SIZE)  
+#define IOASIC_TOY (8*IOASIC_SLOT_SIZE)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOASIC_ISDN (9*IOASIC_SLOT_SIZE)  
+#define IOASIC_ERRADDR (9*IOASIC_SLOT_SIZE)  
+#define IOASIC_CHKSYN (10*IOASIC_SLOT_SIZE)  
+#define IOASIC_ACC_BUS (10*IOASIC_SLOT_SIZE)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOASIC_MCR (11*IOASIC_SLOT_SIZE)  
+#define IOASIC_FLOPPY (11*IOASIC_SLOT_SIZE)  
+#define IOASIC_SCSI (12*IOASIC_SLOT_SIZE)  
+#define IOASIC_FDC_DMA (13*IOASIC_SLOT_SIZE)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOASIC_SCSI_DMA (14*IOASIC_SLOT_SIZE)  
+#define IOASIC_RES_15 (15*IOASIC_SLOT_SIZE)  
+#define IO_REG_SCSI_DMA_P 0x00  
+#define IO_REG_SCSI_DMA_BP 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_LANCE_DMA_P 0x20  
+#define IO_REG_SCC0A_T_DMA_P 0x30  
+#define IO_REG_SCC0A_R_DMA_P 0x40  
+#define IO_REG_SCC1A_T_DMA_P 0x50  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_SCC1A_R_DMA_P 0x60  
+#define IO_REG_AB_T_DMA_P 0x50  
+#define IO_REG_AB_R_DMA_P 0x60  
+#define IO_REG_FLOPPY_DMA_P 0x70  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_ISDN_T_DMA_P 0x80  
+#define IO_REG_ISDN_T_DMA_BP 0x90  
+#define IO_REG_ISDN_R_DMA_P 0xa0  
+#define IO_REG_ISDN_R_DMA_BP 0xb0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_DATA_0 0xc0  
+#define IO_REG_DATA_1 0xd0  
+#define IO_REG_DATA_2 0xe0  
+#define IO_REG_DATA_3 0xf0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_SSR 0x100  
+#define IO_REG_SIR 0x110  
+#define IO_REG_SIMR 0x120  
+#define IO_REG_SAR 0x130  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_ISDN_T_DATA 0x140  
+#define IO_REG_ISDN_R_DATA 0x150  
+#define IO_REG_LANCE_SLOT 0x160  
+#define IO_REG_SCSI_SLOT 0x170  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_SCC0A_SLOT 0x180  
+#define IO_REG_SCC1A_SLOT 0x190  
+#define IO_REG_AB_SLOT 0x190  
+#define IO_REG_FLOPPY_SLOT 0x1a0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_SCSI_SCR 0x1b0  
+#define IO_REG_SCSI_SDR0 0x1c0  
+#define IO_REG_SCSI_SDR1 0x1d0  
+#define IO_REG_FCTR 0x1e0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_REG_RES_31 0x1f0  
+#define IO_SSR_SCC0A_TX_DMA_EN (1<<31)  
+#define IO_SSR_SCC0A_RX_DMA_EN (1<<30)  
+#define IO_SSR_RES_27 (1<<27)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_SSR_RES_26 (1<<26)  
+#define IO_SSR_RES_25 (1<<25)  
+#define IO_SSR_RES_24 (1<<24)  
+#define IO_SSR_RES_23 (1<<23)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_SSR_SCSI_DMA_DIR (1<<18)  
+#define IO_SSR_SCSI_DMA_EN (1<<17)  
+#define IO_SSR_LANCE_DMA_EN (1<<16)  
+#define IO_SSR_SCC1A_TX_DMA_EN (1<<29)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_SSR_SCC1A_RX_DMA_EN (1<<28)  
+#define IO_SSR_RES_22 (1<<22)  
+#define IO_SSR_RES_21 (1<<21)  
+#define IO_SSR_RES_20 (1<<20)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_SSR_RES_19 (1<<19)  
+#define IO_SSR_AB_TX_DMA_EN (1<<29)  
+#define IO_SSR_AB_RX_DMA_EN (1<<28)  
+#define IO_SSR_FLOPPY_DMA_DIR (1<<22)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_SSR_FLOPPY_DMA_EN (1<<21)  
+#define IO_SSR_ISDN_TX_DMA_EN (1<<20)  
+#define IO_SSR_ISDN_RX_DMA_EN (1<<19)  
+#define KN0X_IO_SSR_DIAGDN (1<<15)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN0X_IO_SSR_SCC_RST (1<<11)  
+#define KN0X_IO_SSR_RTC_RST (1<<10)  
+#define KN0X_IO_SSR_ASC_RST (1<<9)  
+#define KN0X_IO_SSR_LANCE_RST (1<<8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dec/kn02xa.h b/ndk/platforms/android-9/arch-mips/include/asm/dec/kn02xa.h
new file mode 100644
index 0000000..6078c8b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dec/kn02xa.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_DEC_KN02XA_H
+#define __ASM_MIPS_DEC_KN02XA_H
+#include <asm/dec/ioasic_addrs.h>
+#define KN02XA_SLOT_BASE 0x1c000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_MER 0x0c400000  
+#define KN02XA_MSR 0x0c800000  
+#define KN02XA_MEM_CONF 0x0e000000  
+#define KN02XA_EAR 0x0e000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_BOOT0 0x0e000008  
+#define KN02XA_MEM_INTR 0x0e00000c  
+#define KN02XA_MER_RES_28 (0xf<<28)  
+#define KN02XA_MER_RES_17 (0x3ff<<17)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_MER_PAGERR (1<<16)  
+#define KN02XA_MER_TRANSERR (1<<15)  
+#define KN02XA_MER_PARDIS (1<<14)  
+#define KN02XA_MER_SIZE (1<<13)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_MER_RES_12 (1<<12)  
+#define KN02XA_MER_BYTERR (0xf<<8)  
+#define KN02XA_MER_BYTERR_3 (0x8<<8)  
+#define KN02XA_MER_BYTERR_2 (0x4<<8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_MER_BYTERR_1 (0x2<<8)  
+#define KN02XA_MER_BYTERR_0 (0x1<<8)  
+#define KN02XA_MER_RES_0 (0xff<<0)  
+#define KN02XA_MSR_RES_27 (0x1f<<27)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_MSR_RES_14 (0x7<<14)  
+#define KN02XA_MSR_SIZE (1<<13)  
+#define KN02XA_MSR_RES_0 (0x1fff<<0)  
+#define KN02XA_EAR_RES_29 (0x7<<29)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KN02XA_EAR_ADDRESS (0x7ffffff<<2)  
+#define KN02XA_EAR_RES_0 (0x3<<0)  
+#ifndef __ASSEMBLY__
+#include <linux/interrupt.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct pt_regs;
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dec/system.h b/ndk/platforms/android-9/arch-mips/include/asm/dec/system.h
new file mode 100644
index 0000000..94cf431
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dec/system.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_DEC_SYSTEM_H
+#define __ASM_DEC_SYSTEM_H
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/delay.h b/ndk/platforms/android-9/arch-mips/include/asm/delay.h
new file mode 100644
index 0000000..a184a93
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/delay.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DELAY_H
+#define _ASM_DELAY_H
+#include <linux/param.h>
+#include <linux/smp.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/compiler.h>
+#include <asm/war.h>
+#define __udelay_val cpu_data[raw_smp_processor_id()].udelay_val
+#define udelay(usecs) __udelay((usecs), __udelay_val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if HZ >= 1000
+#define MAX_UDELAY_MS 1
+#elif HZ <= 200
+#define MAX_UDELAY_MS 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define MAX_UDELAY_MS (1000 / HZ)
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/device.h b/ndk/platforms/android-9/arch-mips/include/asm/device.h
new file mode 100644
index 0000000..535031e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/device.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/device.h>
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/div64.h b/ndk/platforms/android-9/arch-mips/include/asm/div64.h
new file mode 100644
index 0000000..a542b46
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/div64.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DIV64_H
+#define _ASM_DIV64_H
+#include <linux/types.h>
+#if _MIPS_SZLONG == 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/compiler.h>
+#define do_div64_32(res, high, low, base) ({   unsigned long __quot32, __mod32;   unsigned long __cf, __tmp, __tmp2, __i;     __asm__(".set	push\n\t"   ".set	noat\n\t"   ".set	noreorder\n\t"   "move	%2, $0\n\t"   "move	%3, $0\n\t"   "b	1f\n\t"   " li	%4, 0x21\n"   "0:\n\t"   "sll	$1, %0, 0x1\n\t"   "srl	%3, %0, 0x1f\n\t"   "or	%0, $1, %5\n\t"   "sll	%1, %1, 0x1\n\t"   "sll	%2, %2, 0x1\n"   "1:\n\t"   "bnez	%3, 2f\n\t"   " sltu	%5, %0, %z6\n\t"   "bnez	%5, 3f\n"   "2:\n\t"   " addiu	%4, %4, -1\n\t"   "subu	%0, %0, %z6\n\t"   "addiu	%2, %2, 1\n"   "3:\n\t"   "bnez	%4, 0b\n\t"   " srl	%5, %1, 0x1f\n\t"   ".set	pop"   : "=&r" (__mod32), "=&r" (__tmp),   "=&r" (__quot32), "=&r" (__cf),   "=&r" (__i), "=&r" (__tmp2)   : "Jr" (base), "0" (high), "1" (low));     (res) = __quot32;   __mod32; })
+#define do_div(n, base) ({   unsigned long long __quot;   unsigned long __mod;   unsigned long long __div;   unsigned long __upper, __low, __high, __base;     __div = (n);   __base = (base);     __high = __div >> 32;   __low = __div;   __upper = __high;     if (__high)   __asm__("divu	$0, %z2, %z3"   : "=h" (__upper), "=l" (__high)   : "Jr" (__high), "Jr" (__base)   : GCC_REG_ACCUM);     __mod = do_div64_32(__low, __upper, __low, __base);     __quot = __high;   __quot = __quot << 32 | __low;   (n) = __quot;   __mod; })
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SZLONG == 64
+#define do_div(n, base) ({   unsigned long __quot;   unsigned int __mod;   unsigned long __div;   unsigned int __base;     __div = (n);   __base = (base);     __mod = __div % __base;   __quot = __div / __base;     (n) = __quot;   __mod; })
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dma-mapping.h b/ndk/platforms/android-9/arch-mips/include/asm/dma-mapping.h
new file mode 100644
index 0000000..e521fd7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dma-mapping.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DMA_MAPPING_H
+#define _ASM_DMA_MAPPING_H
+#include <asm/scatterlist.h>
+#include <asm/cache.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dma.h b/ndk/platforms/android-9/arch-mips/include/asm/dma.h
new file mode 100644
index 0000000..aedb5dd
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dma.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DMA_H
+#define _ASM_DMA_H
+#include <asm/io.h>  
+#include <linux/spinlock.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/delay.h>
+#include <asm/system.h>
+#ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
+#define dma_outb outb_p
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define dma_outb outb
+#endif
+#define dma_inb inb
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAX_DMA_CHANNELS 8
+#define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x01000000)
+#define MAX_DMA_PFN PFN_DOWN(virt_to_phys((void *)MAX_DMA_ADDRESS))
+#define MAX_DMA32_PFN (1UL << (32 - PAGE_SHIFT))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO_DMA1_BASE 0x00  
+#define IO_DMA2_BASE 0xC0  
+#define DMA1_CMD_REG 0x08  
+#define DMA1_STAT_REG 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA1_REQ_REG 0x09  
+#define DMA1_MASK_REG 0x0A  
+#define DMA1_MODE_REG 0x0B  
+#define DMA1_CLEAR_FF_REG 0x0C  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA1_TEMP_REG 0x0D  
+#define DMA1_RESET_REG 0x0D  
+#define DMA1_CLR_MASK_REG 0x0E  
+#define DMA1_MASK_ALL_REG 0x0F  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA2_CMD_REG 0xD0  
+#define DMA2_STAT_REG 0xD0  
+#define DMA2_REQ_REG 0xD2  
+#define DMA2_MASK_REG 0xD4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA2_MODE_REG 0xD6  
+#define DMA2_CLEAR_FF_REG 0xD8  
+#define DMA2_TEMP_REG 0xDA  
+#define DMA2_RESET_REG 0xDA  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA2_CLR_MASK_REG 0xDC  
+#define DMA2_MASK_ALL_REG 0xDE  
+#define DMA_ADDR_0 0x00  
+#define DMA_ADDR_1 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_ADDR_2 0x04
+#define DMA_ADDR_3 0x06
+#define DMA_ADDR_4 0xC0
+#define DMA_ADDR_5 0xC4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_ADDR_6 0xC8
+#define DMA_ADDR_7 0xCC
+#define DMA_CNT_0 0x01  
+#define DMA_CNT_1 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_CNT_2 0x05
+#define DMA_CNT_3 0x07
+#define DMA_CNT_4 0xC2
+#define DMA_CNT_5 0xC6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_CNT_6 0xCA
+#define DMA_CNT_7 0xCE
+#define DMA_PAGE_0 0x87  
+#define DMA_PAGE_1 0x83
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_PAGE_2 0x81
+#define DMA_PAGE_3 0x82
+#define DMA_PAGE_5 0x8B
+#define DMA_PAGE_6 0x89
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_PAGE_7 0x8A
+#define DMA_MODE_READ 0x44  
+#define DMA_MODE_WRITE 0x48  
+#define DMA_MODE_CASCADE 0xC0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DMA_AUTOINIT 0x10
+#define isa_dma_bridge_buggy (0)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ds1286.h b/ndk/platforms/android-9/arch-mips/include/asm/ds1286.h
new file mode 100644
index 0000000..319f219
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ds1286.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DS1286_H
+#define _ASM_DS1286_H
+#include <ds1286.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/dsp.h b/ndk/platforms/android-9/arch-mips/include/asm/dsp.h
new file mode 100644
index 0000000..3d60be5
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/dsp.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_DSP_H
+#define _ASM_DSP_H
+#include <asm/cpu.h>
+#include <asm/cpu-features.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/hazards.h>
+#include <asm/mipsregs.h>
+#define DSP_DEFAULT 0x00000000
+#define DSP_MASK 0x3ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __enable_dsp_hazard()  do {   asm("_ehb");  } while (0)
+#define __save_dsp(tsk)  do {   tsk->thread.dsp.dspr[0] = mfhi1();   tsk->thread.dsp.dspr[1] = mflo1();   tsk->thread.dsp.dspr[2] = mfhi2();   tsk->thread.dsp.dspr[3] = mflo2();   tsk->thread.dsp.dspr[4] = mfhi3();   tsk->thread.dsp.dspr[5] = mflo3();   tsk->thread.dsp.dspcontrol = rddsp(DSP_MASK);  } while (0)
+#define save_dsp(tsk)  do {   if (cpu_has_dsp)   __save_dsp(tsk);  } while (0)
+#define __restore_dsp(tsk)  do {   mthi1(tsk->thread.dsp.dspr[0]);   mtlo1(tsk->thread.dsp.dspr[1]);   mthi2(tsk->thread.dsp.dspr[2]);   mtlo2(tsk->thread.dsp.dspr[3]);   mthi3(tsk->thread.dsp.dspr[4]);   mtlo3(tsk->thread.dsp.dspr[5]);   wrdsp(tsk->thread.dsp.dspcontrol, DSP_MASK);  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define restore_dsp(tsk)  do {   if (cpu_has_dsp)   __restore_dsp(tsk);  } while (0)
+#define __get_dsp_regs(tsk)  ({   if (tsk == current)   __save_dsp(current);     tsk->thread.dsp.dspr;  })
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/elf.h b/ndk/platforms/android-9/arch-mips/include/asm/elf.h
new file mode 100644
index 0000000..6ccb622
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/elf.h
@@ -0,0 +1,214 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ELF_H
+#define _ASM_ELF_H
+#define EF_MIPS_ARCH_1 0x00000000  
+#define EF_MIPS_ARCH_2 0x10000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_MIPS_ARCH_3 0x20000000  
+#define EF_MIPS_ARCH_4 0x30000000  
+#define EF_MIPS_ARCH_5 0x40000000  
+#define EF_MIPS_ARCH_32 0x50000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_MIPS_ARCH_64 0x60000000  
+#define EF_MIPS_ARCH_32R2 0x70000000  
+#define EF_MIPS_ARCH_64R2 0x80000000  
+#define EF_MIPS_ABI_O32 0x00001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_MIPS_ABI_O64 0x00002000  
+#define PT_MIPS_REGINFO 0x70000000
+#define PT_MIPS_RTPROC 0x70000001
+#define PT_MIPS_OPTIONS 0x70000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_MIPS_NOREORDER 0x00000001
+#define EF_MIPS_PIC 0x00000002
+#define EF_MIPS_CPIC 0x00000004
+#define EF_MIPS_ABI2 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_MIPS_OPTIONS_FIRST 0x00000080
+#define EF_MIPS_32BITMODE 0x00000100
+#define EF_MIPS_ABI 0x0000f000
+#define EF_MIPS_ARCH 0xf0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DT_MIPS_RLD_VERSION 0x70000001
+#define DT_MIPS_TIME_STAMP 0x70000002
+#define DT_MIPS_ICHECKSUM 0x70000003
+#define DT_MIPS_IVERSION 0x70000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DT_MIPS_FLAGS 0x70000005
+#define RHF_NONE 0x00000000
+#define RHF_HARDWAY 0x00000001
+#define RHF_NOTPOT 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RHF_SGI_ONLY 0x00000010
+#define DT_MIPS_BASE_ADDRESS 0x70000006
+#define DT_MIPS_CONFLICT 0x70000008
+#define DT_MIPS_LIBLIST 0x70000009
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DT_MIPS_LOCAL_GOTNO 0x7000000a
+#define DT_MIPS_CONFLICTNO 0x7000000b
+#define DT_MIPS_LIBLISTNO 0x70000010
+#define DT_MIPS_SYMTABNO 0x70000011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DT_MIPS_UNREFEXTNO 0x70000012
+#define DT_MIPS_GOTSYM 0x70000013
+#define DT_MIPS_HIPAGENO 0x70000014
+#define DT_MIPS_RLD_MAP 0x70000016
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_NONE 0
+#define R_MIPS_16 1
+#define R_MIPS_32 2
+#define R_MIPS_REL32 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_26 4
+#define R_MIPS_HI16 5
+#define R_MIPS_LO16 6
+#define R_MIPS_GPREL16 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_LITERAL 8
+#define R_MIPS_GOT16 9
+#define R_MIPS_PC16 10
+#define R_MIPS_CALL16 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_GPREL32 12
+#define R_MIPS_UNUSED1 13
+#define R_MIPS_UNUSED2 14
+#define R_MIPS_UNUSED3 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_SHIFT5 16
+#define R_MIPS_SHIFT6 17
+#define R_MIPS_64 18
+#define R_MIPS_GOT_DISP 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_GOT_PAGE 20
+#define R_MIPS_GOT_OFST 21
+#define R_MIPS_GOTHI16 22
+#define R_MIPS_GOTLO16 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_SUB 24
+#define R_MIPS_INSERT_A 25
+#define R_MIPS_INSERT_B 26
+#define R_MIPS_DELETE 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_HIGHER 28
+#define R_MIPS_HIGHEST 29
+#define R_MIPS_CALLHI16 30
+#define R_MIPS_CALLLO16 31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R_MIPS_LOVENDOR 100
+#define R_MIPS_HIVENDOR 127
+#define SHN_MIPS_ACCOMON 0xff00  
+#define SHN_MIPS_TEXT 0xff01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHN_MIPS_DATA 0xff02  
+#define SHN_MIPS_SCOMMON 0xff03  
+#define SHN_MIPS_SUNDEFINED 0xff04  
+#define SHT_MIPS_LIST 0x70000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_CONFLICT 0x70000002
+#define SHT_MIPS_GPTAB 0x70000003
+#define SHT_MIPS_UCODE 0x70000004
+#define SHT_MIPS_DEBUG 0x70000005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_REGINFO 0x70000006
+#define SHT_MIPS_PACKAGE 0x70000007
+#define SHT_MIPS_PACKSYM 0x70000008
+#define SHT_MIPS_RELD 0x70000009
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_IFACE 0x7000000b
+#define SHT_MIPS_CONTENT 0x7000000c
+#define SHT_MIPS_OPTIONS 0x7000000d
+#define SHT_MIPS_SHDR 0x70000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_FDESC 0x70000011
+#define SHT_MIPS_EXTSYM 0x70000012
+#define SHT_MIPS_DENSE 0x70000013
+#define SHT_MIPS_PDESC 0x70000014
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_LOCSYM 0x70000015
+#define SHT_MIPS_AUXSYM 0x70000016
+#define SHT_MIPS_OPTSYM 0x70000017
+#define SHT_MIPS_LOCSTR 0x70000018
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_LINE 0x70000019
+#define SHT_MIPS_RFDESC 0x7000001a
+#define SHT_MIPS_DELTASYM 0x7000001b
+#define SHT_MIPS_DELTAINST 0x7000001c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_DELTACLASS 0x7000001d
+#define SHT_MIPS_DWARF 0x7000001e
+#define SHT_MIPS_DELTADECL 0x7000001f
+#define SHT_MIPS_SYMBOL_LIB 0x70000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_EVENTS 0x70000021
+#define SHT_MIPS_TRANSLATE 0x70000022
+#define SHT_MIPS_PIXIE 0x70000023
+#define SHT_MIPS_XLATE 0x70000024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_XLATE_DEBUG 0x70000025
+#define SHT_MIPS_WHIRL 0x70000026
+#define SHT_MIPS_EH_REGION 0x70000027
+#define SHT_MIPS_XLATE_OLD 0x70000028
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+#define SHF_MIPS_GPREL 0x10000000
+#define SHF_MIPS_MERGE 0x20000000
+#define SHF_MIPS_ADDR 0x40000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHF_MIPS_STRING 0x80000000
+#define SHF_MIPS_NOSTRIP 0x08000000
+#define SHF_MIPS_LOCAL 0x04000000
+#define SHF_MIPS_NAMES 0x02000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHF_MIPS_NODUPES 0x01000000
+#ifndef ELF_ARCH
+#define ELF_NGREG 45
+#define ELF_NFPREG 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned long elf_greg_t;
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+typedef double elf_fpreg_t;
+typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __MIPSEB__
+#define ELF_DATA ELFDATA2MSB
+#elif __MIPSEL__
+#define ELF_DATA ELFDATA2LSB
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define ELF_ARCH EM_MIPS
+#endif
+struct mips_abi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct task_struct;
+#define ELF_CORE_COPY_REGS(elf_regs, regs)   elf_dump_regs((elf_greg_t *)&(elf_regs), regs);
+#define ELF_CORE_COPY_TASK_REGS(tsk, elf_regs) dump_task_regs(tsk, elf_regs)
+#define ELF_CORE_COPY_FPREGS(tsk, elf_fpregs)   dump_task_fpu(tsk, elf_fpregs)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE PAGE_SIZE
+#define ELF_HWCAP (0)
+#define ELF_PLATFORM (NULL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ELF_PLAT_INIT(_r, load_addr) do {   _r->regs[1] = _r->regs[2] = _r->regs[3] = _r->regs[4] = 0;   _r->regs[5] = _r->regs[6] = _r->regs[7] = _r->regs[8] = 0;   _r->regs[9] = _r->regs[10] = _r->regs[11] = _r->regs[12] = 0;   _r->regs[13] = _r->regs[14] = _r->regs[15] = _r->regs[16] = 0;   _r->regs[17] = _r->regs[18] = _r->regs[19] = _r->regs[20] = 0;   _r->regs[21] = _r->regs[22] = _r->regs[23] = _r->regs[24] = 0;   _r->regs[25] = _r->regs[26] = _r->regs[27] = _r->regs[28] = 0;   _r->regs[30] = _r->regs[31] = 0;  } while (0)
+#ifndef ELF_ET_DYN_BASE
+#define ELF_ET_DYN_BASE (TASK_SIZE / 3 * 2)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/errno.h b/ndk/platforms/android-9/arch-mips/include/asm/errno.h
new file mode 100644
index 0000000..f8ba438
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/errno.h
@@ -0,0 +1,146 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ERRNO_H
+#define _ASM_ERRNO_H
+#include <asm-generic/errno-base.h>
+#define ENOMSG 35  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EIDRM 36  
+#define ECHRNG 37  
+#define EL2NSYNC 38  
+#define EL3HLT 39  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EL3RST 40  
+#define ELNRNG 41  
+#define EUNATCH 42  
+#define ENOCSI 43  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EL2HLT 44  
+#define EDEADLK 45  
+#define ENOLCK 46  
+#define EBADE 50  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EBADR 51  
+#define EXFULL 52  
+#define ENOANO 53  
+#define EBADRQC 54  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EBADSLT 55  
+#define EDEADLOCK 56  
+#define EBFONT 59  
+#define ENOSTR 60  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENODATA 61  
+#define ETIME 62  
+#define ENOSR 63  
+#define ENONET 64  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENOPKG 65  
+#define EREMOTE 66  
+#define ENOLINK 67  
+#define EADV 68  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ESRMNT 69  
+#define ECOMM 70  
+#define EPROTO 71  
+#define EDOTDOT 73  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EMULTIHOP 74  
+#define EBADMSG 77  
+#define ENAMETOOLONG 78  
+#define EOVERFLOW 79  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENOTUNIQ 80  
+#define EBADFD 81  
+#define EREMCHG 82  
+#define ELIBACC 83  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ELIBBAD 84  
+#define ELIBSCN 85  
+#define ELIBMAX 86  
+#define ELIBEXEC 87  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EILSEQ 88  
+#define ENOSYS 89  
+#define ELOOP 90  
+#define ERESTART 91  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ESTRPIPE 92  
+#define ENOTEMPTY 93  
+#define EUSERS 94  
+#define ENOTSOCK 95  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EDESTADDRREQ 96  
+#define EMSGSIZE 97  
+#define EPROTOTYPE 98  
+#define ENOPROTOOPT 99  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EPROTONOSUPPORT 120  
+#define ESOCKTNOSUPPORT 121  
+#define EOPNOTSUPP 122  
+#define EPFNOSUPPORT 123  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EAFNOSUPPORT 124  
+#define EADDRINUSE 125  
+#define EADDRNOTAVAIL 126  
+#define ENETDOWN 127  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENETUNREACH 128  
+#define ENETRESET 129  
+#define ECONNABORTED 130  
+#define ECONNRESET 131  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENOBUFS 132  
+#define EISCONN 133  
+#define ENOTCONN 134  
+#define EUCLEAN 135  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENOTNAM 137  
+#define ENAVAIL 138  
+#define EISNAM 139  
+#define EREMOTEIO 140  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EINIT 141  
+#define EREMDEV 142  
+#define ESHUTDOWN 143  
+#define ETOOMANYREFS 144  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETIMEDOUT 145  
+#define ECONNREFUSED 146  
+#define EHOSTDOWN 147  
+#define EHOSTUNREACH 148  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EWOULDBLOCK EAGAIN  
+#define EALREADY 149  
+#define EINPROGRESS 150  
+#define ESTALE 151  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ECANCELED 158  
+#define ENOMEDIUM 159  
+#define EMEDIUMTYPE 160  
+#define ENOKEY 161  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EKEYEXPIRED 162  
+#define EKEYREVOKED 163  
+#define EKEYREJECTED 164  
+#define EOWNERDEAD 165  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ENOTRECOVERABLE 166  
+#define EDQUOT 1133  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/fcntl.h b/ndk/platforms/android-9/arch-mips/include/asm/fcntl.h
new file mode 100644
index 0000000..2686340
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/fcntl.h
@@ -0,0 +1,48 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_FCNTL_H
+#define _ASM_FCNTL_H
+#define O_APPEND 0x0008
+#define O_SYNC 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define O_NONBLOCK 0x0080
+#define O_CREAT 0x0100  
+#define O_TRUNC 0x0200  
+#define O_EXCL 0x0400  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define O_NOCTTY 0x0800  
+#define FASYNC 0x1000  
+#define O_LARGEFILE 0x2000  
+#define O_DIRECT 0x8000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define F_GETLK 14
+#define F_SETLK 6
+#define F_SETLKW 7
+#define F_SETOWN 24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define F_GETOWN 23  
+#ifndef __mips64
+#define F_GETLK64 33  
+#define F_SETLK64 34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define F_SETLKW64 35
+#endif
+#include <asm-generic/fcntl.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/fixmap.h b/ndk/platforms/android-9/arch-mips/include/asm/fixmap.h
new file mode 100644
index 0000000..659d51d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/fixmap.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_FIXMAP_H
+#define _ASM_FIXMAP_H
+#include <asm/page.h>
+enum fixed_addresses {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FIX_N_COLOURS 8
+ FIX_CMAP_BEGIN,
+ FIX_CMAP_END = FIX_CMAP_BEGIN + FIX_N_COLOURS,
+ __end_of_fixed_addresses
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define FIXADDR_TOP ((unsigned long)(long)(int)0xfffe0000)
+#define FIXADDR_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
+#define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
+#define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/floppy.h b/ndk/platforms/android-9/arch-mips/include/asm/floppy.h
new file mode 100644
index 0000000..769b3f9
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/floppy.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_FLOPPY_H
+#define _ASM_FLOPPY_H
+#include <linux/dma-mapping.h>
+#define MAX_BUFFER_SECTORS 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FLOPPY0_TYPE fd_drive_type(0)
+#define FLOPPY1_TYPE fd_drive_type(1)
+#define FDC1 fd_getfdaddr1();
+#define N_FDC 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_DRIVE 8
+#define CROSS_64KB(a, s) ((unsigned long)(a)/K_64 != ((unsigned long)(a) + (s) - 1) / K_64)
+#define EXTRA_FLOPPY_PARAMS
+#include <floppy.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/fpregdef.h b/ndk/platforms/android-9/arch-mips/include/asm/fpregdef.h
new file mode 100644
index 0000000..046f750
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/fpregdef.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_FPREGDEF_H
+#define _ASM_FPREGDEF_H
+#include <asm/sgidefs.h>
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fv0 $f0  
+#define fv0f $f1
+#define fv1 $f2
+#define fv1f $f3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fa0 $f12  
+#define fa0f $f13
+#define fa1 $f14
+#define fa1f $f15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ft0 $f4  
+#define ft0f $f5
+#define ft1 $f6
+#define ft1f $f7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ft2 $f8
+#define ft2f $f9
+#define ft3 $f10
+#define ft3f $f11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ft4 $f16
+#define ft4f $f17
+#define ft5 $f18
+#define ft5f $f19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fs0 $f20  
+#define fs0f $f21
+#define fs1 $f22
+#define fs1f $f23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fs2 $f24
+#define fs2f $f25
+#define fs3 $f26
+#define fs3f $f27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fs4 $f28
+#define fs4f $f29
+#define fs5 $f30
+#define fs5f $f31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fcr31 $31  
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
+#define fv0 $f0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fv1 $f2
+#define fa0 $f12  
+#define fa1 $f13
+#define fa2 $f14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fa3 $f15
+#define fa4 $f16
+#define fa5 $f17
+#define fa6 $f18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fa7 $f19
+#define ft0 $f4  
+#define ft1 $f5
+#define ft2 $f6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ft3 $f7
+#define ft4 $f8
+#define ft5 $f9
+#define ft6 $f10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ft7 $f11
+#define ft8 $f20
+#define ft9 $f21
+#define ft10 $f22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ft11 $f23
+#define ft12 $f1
+#define ft13 $f3
+#define fs0 $f24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fs1 $f25
+#define fs2 $f26
+#define fs3 $f27
+#define fs4 $f28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define fs5 $f29
+#define fs6 $f30
+#define fs7 $f31
+#define fcr31 $31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/fw/arc/types.h b/ndk/platforms/android-9/arch-mips/include/asm/fw/arc/types.h
new file mode 100644
index 0000000..62f89f8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/fw/arc/types.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_ARC_TYPES_H
+#define _ASM_ARC_TYPES_H
+typedef CHAR *PCHAR;
+typedef SHORT *PSHORT;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef LARGE_INTEGER *PLARGE_INTEGER;
+typedef LONG *PLONG;
+typedef UCHAR *PUCHAR;
+typedef USHORT *PUSHORT;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef ULONG *PULONG;
+typedef VOID *PVOID;
+typedef struct {
+ USHORT CursorXPosition;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ USHORT CursorYPosition;
+ USHORT CursorMaxXPosition;
+ USHORT CursorMaxYPosition;
+ USHORT ForegroundColor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ USHORT BackgroundColor;
+ UCHAR HighIntensity;
+ UCHAR Underscored;
+ UCHAR ReverseVideo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} DISPLAY_STATUS;
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/gt64120.h b/ndk/platforms/android-9/arch-mips/include/asm/gt64120.h
new file mode 100644
index 0000000..d4cda0d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/gt64120.h
@@ -0,0 +1,530 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_GT64120_H
+#define _ASM_GT64120_H
+#include <linux/clocksource.h>
+#include <asm/addrspace.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/byteorder.h>
+#define MSK(n) ((1 << (n)) - 1)
+#define GT_CPU_OFS 0x000
+#define GT_MULTI_OFS 0x120
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SCS10LD_OFS 0x008
+#define GT_SCS10HD_OFS 0x010
+#define GT_SCS32LD_OFS 0x018
+#define GT_SCS32HD_OFS 0x020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CS20LD_OFS 0x028
+#define GT_CS20HD_OFS 0x030
+#define GT_CS3BOOTLD_OFS 0x038
+#define GT_CS3BOOTHD_OFS 0x040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0IOLD_OFS 0x048
+#define GT_PCI0IOHD_OFS 0x050
+#define GT_PCI0M0LD_OFS 0x058
+#define GT_PCI0M0HD_OFS 0x060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_ISD_OFS 0x068
+#define GT_PCI0M1LD_OFS 0x080
+#define GT_PCI0M1HD_OFS 0x088
+#define GT_PCI1IOLD_OFS 0x090
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1IOHD_OFS 0x098
+#define GT_PCI1M0LD_OFS 0x0a0
+#define GT_PCI1M0HD_OFS 0x0a8
+#define GT_PCI1M1LD_OFS 0x0b0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1M1HD_OFS 0x0b8
+#define GT_PCI1M1LD_OFS 0x0b0
+#define GT_PCI1M1HD_OFS 0x0b8
+#define GT_SCS10AR_OFS 0x0d0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SCS32AR_OFS 0x0d8
+#define GT_CS20R_OFS 0x0e0
+#define GT_CS3BOOTR_OFS 0x0e8
+#define GT_PCI0IOREMAP_OFS 0x0f0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0M0REMAP_OFS 0x0f8
+#define GT_PCI0M1REMAP_OFS 0x100
+#define GT_PCI1IOREMAP_OFS 0x108
+#define GT_PCI1M0REMAP_OFS 0x110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1M1REMAP_OFS 0x118
+#define GT_CPUERR_ADDRLO_OFS 0x070
+#define GT_CPUERR_ADDRHI_OFS 0x078
+#define GT_CPUERR_DATALO_OFS 0x128  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CPUERR_DATAHI_OFS 0x130  
+#define GT_CPUERR_PARITY_OFS 0x138  
+#define GT_PCI0SYNC_OFS 0x0c0
+#define GT_PCI1SYNC_OFS 0x0c8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SCS0LD_OFS 0x400
+#define GT_SCS0HD_OFS 0x404
+#define GT_SCS1LD_OFS 0x408
+#define GT_SCS1HD_OFS 0x40c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SCS2LD_OFS 0x410
+#define GT_SCS2HD_OFS 0x414
+#define GT_SCS3LD_OFS 0x418
+#define GT_SCS3HD_OFS 0x41c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CS0LD_OFS 0x420
+#define GT_CS0HD_OFS 0x424
+#define GT_CS1LD_OFS 0x428
+#define GT_CS1HD_OFS 0x42c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CS2LD_OFS 0x430
+#define GT_CS2HD_OFS 0x434
+#define GT_CS3LD_OFS 0x438
+#define GT_CS3HD_OFS 0x43c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_BOOTLD_OFS 0x440
+#define GT_BOOTHD_OFS 0x444
+#define GT_ADERR_OFS 0x470
+#define GT_SDRAM_CFG_OFS 0x448
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_OPMODE_OFS 0x474
+#define GT_SDRAM_BM_OFS 0x478
+#define GT_SDRAM_ADDRDECODE_OFS 0x47c
+#define GT_SDRAM_B0_OFS 0x44c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B1_OFS 0x450
+#define GT_SDRAM_B2_OFS 0x454
+#define GT_SDRAM_B3_OFS 0x458
+#define GT_DEV_B0_OFS 0x45c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DEV_B1_OFS 0x460
+#define GT_DEV_B2_OFS 0x464
+#define GT_DEV_B3_OFS 0x468
+#define GT_DEV_BOOT_OFS 0x46c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_ECC_ERRDATALO 0x480  
+#define GT_ECC_ERRDATAHI 0x484  
+#define GT_ECC_MEM 0x488  
+#define GT_ECC_CALC 0x48c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_ECC_ERRADDR 0x490  
+#define GT_DMA0_CNT_OFS 0x800
+#define GT_DMA1_CNT_OFS 0x804
+#define GT_DMA2_CNT_OFS 0x808
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DMA3_CNT_OFS 0x80c
+#define GT_DMA0_SA_OFS 0x810
+#define GT_DMA1_SA_OFS 0x814
+#define GT_DMA2_SA_OFS 0x818
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DMA3_SA_OFS 0x81c
+#define GT_DMA0_DA_OFS 0x820
+#define GT_DMA1_DA_OFS 0x824
+#define GT_DMA2_DA_OFS 0x828
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DMA3_DA_OFS 0x82c
+#define GT_DMA0_NEXT_OFS 0x830
+#define GT_DMA1_NEXT_OFS 0x834
+#define GT_DMA2_NEXT_OFS 0x838
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DMA3_NEXT_OFS 0x83c
+#define GT_DMA0_CUR_OFS 0x870
+#define GT_DMA1_CUR_OFS 0x874
+#define GT_DMA2_CUR_OFS 0x878
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DMA3_CUR_OFS 0x87c
+#define GT_DMA0_CTRL_OFS 0x840
+#define GT_DMA1_CTRL_OFS 0x844
+#define GT_DMA2_CTRL_OFS 0x848
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DMA3_CTRL_OFS 0x84c
+#define GT_DMA_ARB_OFS 0x860
+#define GT_TC0_OFS 0x850
+#define GT_TC1_OFS 0x854
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_TC2_OFS 0x858
+#define GT_TC3_OFS 0x85c
+#define GT_TC_CONTROL_OFS 0x864
+#define GT_PCI0_CMD_OFS 0xc00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_TOR_OFS 0xc04
+#define GT_PCI0_BS_SCS10_OFS 0xc08
+#define GT_PCI0_BS_SCS32_OFS 0xc0c
+#define GT_PCI0_BS_CS20_OFS 0xc10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BS_CS3BT_OFS 0xc14
+#define GT_PCI1_IACK_OFS 0xc30
+#define GT_PCI0_IACK_OFS 0xc34
+#define GT_PCI0_BARE_OFS 0xc3c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_PREFMBR_OFS 0xc40
+#define GT_PCI0_SCS10_BAR_OFS 0xc48
+#define GT_PCI0_SCS32_BAR_OFS 0xc4c
+#define GT_PCI0_CS20_BAR_OFS 0xc50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CS3BT_BAR_OFS 0xc54
+#define GT_PCI0_SSCS10_BAR_OFS 0xc58
+#define GT_PCI0_SSCS32_BAR_OFS 0xc5c
+#define GT_PCI0_SCS3BT_BAR_OFS 0xc64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1_CMD_OFS 0xc80
+#define GT_PCI1_TOR_OFS 0xc84
+#define GT_PCI1_BS_SCS10_OFS 0xc88
+#define GT_PCI1_BS_SCS32_OFS 0xc8c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1_BS_CS20_OFS 0xc90
+#define GT_PCI1_BS_CS3BT_OFS 0xc94
+#define GT_PCI1_BARE_OFS 0xcbc
+#define GT_PCI1_PREFMBR_OFS 0xcc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1_SCS10_BAR_OFS 0xcc8
+#define GT_PCI1_SCS32_BAR_OFS 0xccc
+#define GT_PCI1_CS20_BAR_OFS 0xcd0
+#define GT_PCI1_CS3BT_BAR_OFS 0xcd4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1_SSCS10_BAR_OFS 0xcd8
+#define GT_PCI1_SSCS32_BAR_OFS 0xcdc
+#define GT_PCI1_SCS3BT_BAR_OFS 0xce4
+#define GT_PCI1_CFGADDR_OFS 0xcf0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1_CFGDATA_OFS 0xcf4
+#define GT_PCI0_CFGADDR_OFS 0xcf8
+#define GT_PCI0_CFGDATA_OFS 0xcfc
+#define GT_INTRCAUSE_OFS 0xc18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_INTRMASK_OFS 0xc1c
+#define GT_PCI0_ICMASK_OFS 0xc24
+#define GT_PCI0_SERR0MASK_OFS 0xc28
+#define GT_CPU_INTSEL_OFS 0xc70
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_INTSEL_OFS 0xc74
+#define GT_HINTRCAUSE_OFS 0xc98
+#define GT_HINTRMASK_OFS 0xc9c
+#define GT_PCI0_HICMASK_OFS 0xca4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI1_SERR1MASK_OFS 0xca8
+#define INBOUND_MESSAGE_REGISTER0_PCI_SIDE 0x010
+#define INBOUND_MESSAGE_REGISTER1_PCI_SIDE 0x014
+#define OUTBOUND_MESSAGE_REGISTER0_PCI_SIDE 0x018
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OUTBOUND_MESSAGE_REGISTER1_PCI_SIDE 0x01c
+#define INBOUND_DOORBELL_REGISTER_PCI_SIDE 0x020
+#define INBOUND_INTERRUPT_CAUSE_REGISTER_PCI_SIDE 0x024
+#define INBOUND_INTERRUPT_MASK_REGISTER_PCI_SIDE 0x028
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OUTBOUND_DOORBELL_REGISTER_PCI_SIDE 0x02c
+#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_PCI_SIDE 0x030
+#define OUTBOUND_INTERRUPT_MASK_REGISTER_PCI_SIDE 0x034
+#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI_SIDE 0x040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_PCI_SIDE 0x044
+#define QUEUE_CONTROL_REGISTER_PCI_SIDE 0x050
+#define QUEUE_BASE_ADDRESS_REGISTER_PCI_SIDE 0x054
+#define INBOUND_FREE_HEAD_POINTER_REGISTER_PCI_SIDE 0x060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INBOUND_FREE_TAIL_POINTER_REGISTER_PCI_SIDE 0x064
+#define INBOUND_POST_HEAD_POINTER_REGISTER_PCI_SIDE 0x068
+#define INBOUND_POST_TAIL_POINTER_REGISTER_PCI_SIDE 0x06c
+#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_PCI_SIDE 0x070
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_PCI_SIDE 0x074
+#define OUTBOUND_POST_HEAD_POINTER_REGISTER_PCI_SIDE 0x078
+#define OUTBOUND_POST_TAIL_POINTER_REGISTER_PCI_SIDE 0x07c
+#define INBOUND_MESSAGE_REGISTER0_CPU_SIDE 0x1c10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INBOUND_MESSAGE_REGISTER1_CPU_SIDE 0x1c14
+#define OUTBOUND_MESSAGE_REGISTER0_CPU_SIDE 0x1c18
+#define OUTBOUND_MESSAGE_REGISTER1_CPU_SIDE 0x1c1c
+#define INBOUND_DOORBELL_REGISTER_CPU_SIDE 0x1c20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INBOUND_INTERRUPT_CAUSE_REGISTER_CPU_SIDE 0x1c24
+#define INBOUND_INTERRUPT_MASK_REGISTER_CPU_SIDE 0x1c28
+#define OUTBOUND_DOORBELL_REGISTER_CPU_SIDE 0x1c2c
+#define OUTBOUND_INTERRUPT_CAUSE_REGISTER_CPU_SIDE 0x1c30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OUTBOUND_INTERRUPT_MASK_REGISTER_CPU_SIDE 0x1c34
+#define INBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU_SIDE 0x1c40
+#define OUTBOUND_QUEUE_PORT_VIRTUAL_REGISTER_CPU_SIDE 0x1c44
+#define QUEUE_CONTROL_REGISTER_CPU_SIDE 0x1c50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define QUEUE_BASE_ADDRESS_REGISTER_CPU_SIDE 0x1c54
+#define INBOUND_FREE_HEAD_POINTER_REGISTER_CPU_SIDE 0x1c60
+#define INBOUND_FREE_TAIL_POINTER_REGISTER_CPU_SIDE 0x1c64
+#define INBOUND_POST_HEAD_POINTER_REGISTER_CPU_SIDE 0x1c68
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INBOUND_POST_TAIL_POINTER_REGISTER_CPU_SIDE 0x1c6c
+#define OUTBOUND_FREE_HEAD_POINTER_REGISTER_CPU_SIDE 0x1c70
+#define OUTBOUND_FREE_TAIL_POINTER_REGISTER_CPU_SIDE 0x1c74
+#define OUTBOUND_POST_HEAD_POINTER_REGISTER_CPU_SIDE 0x1c78
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OUTBOUND_POST_TAIL_POINTER_REGISTER_CPU_SIDE 0x1c7c
+#define GT_CPU_ENDIAN_SHF 12
+#define GT_CPU_ENDIAN_MSK (MSK(1) << GT_CPU_ENDIAN_SHF)
+#define GT_CPU_ENDIAN_BIT GT_CPU_ENDIAN_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CPU_WR_SHF 16
+#define GT_CPU_WR_MSK (MSK(1) << GT_CPU_WR_SHF)
+#define GT_CPU_WR_BIT GT_CPU_WR_MSK
+#define GT_CPU_WR_DXDXDXDX 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CPU_WR_DDDD 1
+#define GT_PCI_DCRM_SHF 21
+#define GT_PCI_LD_SHF 0
+#define GT_PCI_LD_MSK (MSK(15) << GT_PCI_LD_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI_HD_SHF 0
+#define GT_PCI_HD_MSK (MSK(7) << GT_PCI_HD_SHF)
+#define GT_PCI_REMAP_SHF 0
+#define GT_PCI_REMAP_MSK (MSK(11) << GT_PCI_REMAP_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CFGADDR_CFGEN_SHF 31
+#define GT_CFGADDR_CFGEN_MSK (MSK(1) << GT_CFGADDR_CFGEN_SHF)
+#define GT_CFGADDR_CFGEN_BIT GT_CFGADDR_CFGEN_MSK
+#define GT_CFGADDR_BUSNUM_SHF 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CFGADDR_BUSNUM_MSK (MSK(8) << GT_CFGADDR_BUSNUM_SHF)
+#define GT_CFGADDR_DEVNUM_SHF 11
+#define GT_CFGADDR_DEVNUM_MSK (MSK(5) << GT_CFGADDR_DEVNUM_SHF)
+#define GT_CFGADDR_FUNCNUM_SHF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_CFGADDR_FUNCNUM_MSK (MSK(3) << GT_CFGADDR_FUNCNUM_SHF)
+#define GT_CFGADDR_REGNUM_SHF 2
+#define GT_CFGADDR_REGNUM_MSK (MSK(6) << GT_CFGADDR_REGNUM_SHF)
+#define GT_SDRAM_BM_ORDER_SHF 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_BM_ORDER_MSK (MSK(1) << GT_SDRAM_BM_ORDER_SHF)
+#define GT_SDRAM_BM_ORDER_BIT GT_SDRAM_BM_ORDER_MSK
+#define GT_SDRAM_BM_ORDER_SUB 1
+#define GT_SDRAM_BM_ORDER_LIN 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_BM_RSVD_ALL1 0xffb
+#define GT_SDRAM_ADDRDECODE_ADDR_SHF 0
+#define GT_SDRAM_ADDRDECODE_ADDR_MSK (MSK(3) << GT_SDRAM_ADDRDECODE_ADDR_SHF)
+#define GT_SDRAM_ADDRDECODE_ADDR_0 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_ADDRDECODE_ADDR_1 1
+#define GT_SDRAM_ADDRDECODE_ADDR_2 2
+#define GT_SDRAM_ADDRDECODE_ADDR_3 3
+#define GT_SDRAM_ADDRDECODE_ADDR_4 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_ADDRDECODE_ADDR_5 5
+#define GT_SDRAM_ADDRDECODE_ADDR_6 6
+#define GT_SDRAM_ADDRDECODE_ADDR_7 7
+#define GT_SDRAM_B0_CASLAT_SHF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_CASLAT_MSK (MSK(2) << GT_SDRAM_B0__SHF)
+#define GT_SDRAM_B0_CASLAT_2 1
+#define GT_SDRAM_B0_CASLAT_3 2
+#define GT_SDRAM_B0_FTDIS_SHF 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_FTDIS_MSK (MSK(1) << GT_SDRAM_B0_FTDIS_SHF)
+#define GT_SDRAM_B0_FTDIS_BIT GT_SDRAM_B0_FTDIS_MSK
+#define GT_SDRAM_B0_SRASPRCHG_SHF 3
+#define GT_SDRAM_B0_SRASPRCHG_MSK (MSK(1) << GT_SDRAM_B0_SRASPRCHG_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_SRASPRCHG_BIT GT_SDRAM_B0_SRASPRCHG_MSK
+#define GT_SDRAM_B0_SRASPRCHG_2 0
+#define GT_SDRAM_B0_SRASPRCHG_3 1
+#define GT_SDRAM_B0_B0COMPAB_SHF 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_B0COMPAB_MSK (MSK(1) << GT_SDRAM_B0_B0COMPAB_SHF)
+#define GT_SDRAM_B0_B0COMPAB_BIT GT_SDRAM_B0_B0COMPAB_MSK
+#define GT_SDRAM_B0_64BITINT_SHF 5
+#define GT_SDRAM_B0_64BITINT_MSK (MSK(1) << GT_SDRAM_B0_64BITINT_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_64BITINT_BIT GT_SDRAM_B0_64BITINT_MSK
+#define GT_SDRAM_B0_64BITINT_2 0
+#define GT_SDRAM_B0_64BITINT_4 1
+#define GT_SDRAM_B0_BW_SHF 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_BW_MSK (MSK(1) << GT_SDRAM_B0_BW_SHF)
+#define GT_SDRAM_B0_BW_BIT GT_SDRAM_B0_BW_MSK
+#define GT_SDRAM_B0_BW_32 0
+#define GT_SDRAM_B0_BW_64 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_BLODD_SHF 7
+#define GT_SDRAM_B0_BLODD_MSK (MSK(1) << GT_SDRAM_B0_BLODD_SHF)
+#define GT_SDRAM_B0_BLODD_BIT GT_SDRAM_B0_BLODD_MSK
+#define GT_SDRAM_B0_PAR_SHF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_PAR_MSK (MSK(1) << GT_SDRAM_B0_PAR_SHF)
+#define GT_SDRAM_B0_PAR_BIT GT_SDRAM_B0_PAR_MSK
+#define GT_SDRAM_B0_BYPASS_SHF 9
+#define GT_SDRAM_B0_BYPASS_MSK (MSK(1) << GT_SDRAM_B0_BYPASS_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_BYPASS_BIT GT_SDRAM_B0_BYPASS_MSK
+#define GT_SDRAM_B0_SRAS2SCAS_SHF 10
+#define GT_SDRAM_B0_SRAS2SCAS_MSK (MSK(1) << GT_SDRAM_B0_SRAS2SCAS_SHF)
+#define GT_SDRAM_B0_SRAS2SCAS_BIT GT_SDRAM_B0_SRAS2SCAS_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_SRAS2SCAS_2 0
+#define GT_SDRAM_B0_SRAS2SCAS_3 1
+#define GT_SDRAM_B0_SIZE_SHF 11
+#define GT_SDRAM_B0_SIZE_MSK (MSK(1) << GT_SDRAM_B0_SIZE_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_SIZE_BIT GT_SDRAM_B0_SIZE_MSK
+#define GT_SDRAM_B0_SIZE_16M 0
+#define GT_SDRAM_B0_SIZE_64M 1
+#define GT_SDRAM_B0_EXTPAR_SHF 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_EXTPAR_MSK (MSK(1) << GT_SDRAM_B0_EXTPAR_SHF)
+#define GT_SDRAM_B0_EXTPAR_BIT GT_SDRAM_B0_EXTPAR_MSK
+#define GT_SDRAM_B0_BLEN_SHF 13
+#define GT_SDRAM_B0_BLEN_MSK (MSK(1) << GT_SDRAM_B0_BLEN_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_B0_BLEN_BIT GT_SDRAM_B0_BLEN_MSK
+#define GT_SDRAM_B0_BLEN_8 0
+#define GT_SDRAM_B0_BLEN_4 1
+#define GT_SDRAM_CFG_REFINT_SHF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_CFG_REFINT_MSK (MSK(14) << GT_SDRAM_CFG_REFINT_SHF)
+#define GT_SDRAM_CFG_NINTERLEAVE_SHF 14
+#define GT_SDRAM_CFG_NINTERLEAVE_MSK (MSK(1) << GT_SDRAM_CFG_NINTERLEAVE_SHF)
+#define GT_SDRAM_CFG_NINTERLEAVE_BIT GT_SDRAM_CFG_NINTERLEAVE_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_CFG_RMW_SHF 15
+#define GT_SDRAM_CFG_RMW_MSK (MSK(1) << GT_SDRAM_CFG_RMW_SHF)
+#define GT_SDRAM_CFG_RMW_BIT GT_SDRAM_CFG_RMW_MSK
+#define GT_SDRAM_CFG_NONSTAGREF_SHF 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_CFG_NONSTAGREF_MSK (MSK(1) << GT_SDRAM_CFG_NONSTAGREF_SHF)
+#define GT_SDRAM_CFG_NONSTAGREF_BIT GT_SDRAM_CFG_NONSTAGREF_MSK
+#define GT_SDRAM_CFG_DUPCNTL_SHF 19
+#define GT_SDRAM_CFG_DUPCNTL_MSK (MSK(1) << GT_SDRAM_CFG_DUPCNTL_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_CFG_DUPCNTL_BIT GT_SDRAM_CFG_DUPCNTL_MSK
+#define GT_SDRAM_CFG_DUPBA_SHF 20
+#define GT_SDRAM_CFG_DUPBA_MSK (MSK(1) << GT_SDRAM_CFG_DUPBA_SHF)
+#define GT_SDRAM_CFG_DUPBA_BIT GT_SDRAM_CFG_DUPBA_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_CFG_DUPEOT0_SHF 21
+#define GT_SDRAM_CFG_DUPEOT0_MSK (MSK(1) << GT_SDRAM_CFG_DUPEOT0_SHF)
+#define GT_SDRAM_CFG_DUPEOT0_BIT GT_SDRAM_CFG_DUPEOT0_MSK
+#define GT_SDRAM_CFG_DUPEOT1_SHF 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_CFG_DUPEOT1_MSK (MSK(1) << GT_SDRAM_CFG_DUPEOT1_SHF)
+#define GT_SDRAM_CFG_DUPEOT1_BIT GT_SDRAM_CFG_DUPEOT1_MSK
+#define GT_SDRAM_OPMODE_OP_SHF 0
+#define GT_SDRAM_OPMODE_OP_MSK (MSK(3) << GT_SDRAM_OPMODE_OP_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_OPMODE_OP_NORMAL 0
+#define GT_SDRAM_OPMODE_OP_NOP 1
+#define GT_SDRAM_OPMODE_OP_PRCHG 2
+#define GT_SDRAM_OPMODE_OP_MODE 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_SDRAM_OPMODE_OP_CBR 4
+#define GT_TC_CONTROL_ENTC0_SHF 0
+#define GT_TC_CONTROL_ENTC0_MSK (MSK(1) << GT_TC_CONTROL_ENTC0_SHF)
+#define GT_TC_CONTROL_ENTC0_BIT GT_TC_CONTROL_ENTC0_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_TC_CONTROL_SELTC0_SHF 1
+#define GT_TC_CONTROL_SELTC0_MSK (MSK(1) << GT_TC_CONTROL_SELTC0_SHF)
+#define GT_TC_CONTROL_SELTC0_BIT GT_TC_CONTROL_SELTC0_MSK
+#define GT_PCI0_BARE_SWSCS3BOOTDIS_SHF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_SWSCS3BOOTDIS_MSK (MSK(1) << GT_PCI0_BARE_SWSCS3BOOTDIS_SHF)
+#define GT_PCI0_BARE_SWSCS3BOOTDIS_BIT GT_PCI0_BARE_SWSCS3BOOTDIS_MSK
+#define GT_PCI0_BARE_SWSCS32DIS_SHF 1
+#define GT_PCI0_BARE_SWSCS32DIS_MSK (MSK(1) << GT_PCI0_BARE_SWSCS32DIS_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_SWSCS32DIS_BIT GT_PCI0_BARE_SWSCS32DIS_MSK
+#define GT_PCI0_BARE_SWSCS10DIS_SHF 2
+#define GT_PCI0_BARE_SWSCS10DIS_MSK (MSK(1) << GT_PCI0_BARE_SWSCS10DIS_SHF)
+#define GT_PCI0_BARE_SWSCS10DIS_BIT GT_PCI0_BARE_SWSCS10DIS_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_INTIODIS_SHF 3
+#define GT_PCI0_BARE_INTIODIS_MSK (MSK(1) << GT_PCI0_BARE_INTIODIS_SHF)
+#define GT_PCI0_BARE_INTIODIS_BIT GT_PCI0_BARE_INTIODIS_MSK
+#define GT_PCI0_BARE_INTMEMDIS_SHF 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_INTMEMDIS_MSK (MSK(1) << GT_PCI0_BARE_INTMEMDIS_SHF)
+#define GT_PCI0_BARE_INTMEMDIS_BIT GT_PCI0_BARE_INTMEMDIS_MSK
+#define GT_PCI0_BARE_CS3BOOTDIS_SHF 5
+#define GT_PCI0_BARE_CS3BOOTDIS_MSK (MSK(1) << GT_PCI0_BARE_CS3BOOTDIS_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_CS3BOOTDIS_BIT GT_PCI0_BARE_CS3BOOTDIS_MSK
+#define GT_PCI0_BARE_CS20DIS_SHF 6
+#define GT_PCI0_BARE_CS20DIS_MSK (MSK(1) << GT_PCI0_BARE_CS20DIS_SHF)
+#define GT_PCI0_BARE_CS20DIS_BIT GT_PCI0_BARE_CS20DIS_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_SCS32DIS_SHF 7
+#define GT_PCI0_BARE_SCS32DIS_MSK (MSK(1) << GT_PCI0_BARE_SCS32DIS_SHF)
+#define GT_PCI0_BARE_SCS32DIS_BIT GT_PCI0_BARE_SCS32DIS_MSK
+#define GT_PCI0_BARE_SCS10DIS_SHF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_BARE_SCS10DIS_MSK (MSK(1) << GT_PCI0_BARE_SCS10DIS_SHF)
+#define GT_PCI0_BARE_SCS10DIS_BIT GT_PCI0_BARE_SCS10DIS_MSK
+#define GT_INTRCAUSE_MASABORT0_SHF 18
+#define GT_INTRCAUSE_MASABORT0_MSK (MSK(1) << GT_INTRCAUSE_MASABORT0_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_INTRCAUSE_MASABORT0_BIT GT_INTRCAUSE_MASABORT0_MSK
+#define GT_INTRCAUSE_TARABORT0_SHF 19
+#define GT_INTRCAUSE_TARABORT0_MSK (MSK(1) << GT_INTRCAUSE_TARABORT0_SHF)
+#define GT_INTRCAUSE_TARABORT0_BIT GT_INTRCAUSE_TARABORT0_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CFGADDR_REGNUM_SHF 2
+#define GT_PCI0_CFGADDR_REGNUM_MSK (MSK(6) << GT_PCI0_CFGADDR_REGNUM_SHF)
+#define GT_PCI0_CFGADDR_FUNCTNUM_SHF 8
+#define GT_PCI0_CFGADDR_FUNCTNUM_MSK (MSK(3) << GT_PCI0_CFGADDR_FUNCTNUM_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CFGADDR_DEVNUM_SHF 11
+#define GT_PCI0_CFGADDR_DEVNUM_MSK (MSK(5) << GT_PCI0_CFGADDR_DEVNUM_SHF)
+#define GT_PCI0_CFGADDR_BUSNUM_SHF 16
+#define GT_PCI0_CFGADDR_BUSNUM_MSK (MSK(8) << GT_PCI0_CFGADDR_BUSNUM_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CFGADDR_CONFIGEN_SHF 31
+#define GT_PCI0_CFGADDR_CONFIGEN_MSK (MSK(1) << GT_PCI0_CFGADDR_CONFIGEN_SHF)
+#define GT_PCI0_CFGADDR_CONFIGEN_BIT GT_PCI0_CFGADDR_CONFIGEN_MSK
+#define GT_PCI0_CMD_MBYTESWAP_SHF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CMD_MBYTESWAP_MSK (MSK(1) << GT_PCI0_CMD_MBYTESWAP_SHF)
+#define GT_PCI0_CMD_MBYTESWAP_BIT GT_PCI0_CMD_MBYTESWAP_MSK
+#define GT_PCI0_CMD_MWORDSWAP_SHF 10
+#define GT_PCI0_CMD_MWORDSWAP_MSK (MSK(1) << GT_PCI0_CMD_MWORDSWAP_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CMD_MWORDSWAP_BIT GT_PCI0_CMD_MWORDSWAP_MSK
+#define GT_PCI0_CMD_SBYTESWAP_SHF 16
+#define GT_PCI0_CMD_SBYTESWAP_MSK (MSK(1) << GT_PCI0_CMD_SBYTESWAP_SHF)
+#define GT_PCI0_CMD_SBYTESWAP_BIT GT_PCI0_CMD_SBYTESWAP_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_PCI0_CMD_SWORDSWAP_SHF 11
+#define GT_PCI0_CMD_SWORDSWAP_MSK (MSK(1) << GT_PCI0_CMD_SWORDSWAP_SHF)
+#define GT_PCI0_CMD_SWORDSWAP_BIT GT_PCI0_CMD_SWORDSWAP_MSK
+#define GT_INTR_T0EXP_SHF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_INTR_T0EXP_MSK (MSK(1) << GT_INTR_T0EXP_SHF)
+#define GT_INTR_T0EXP_BIT GT_INTR_T0EXP_MSK
+#define GT_INTR_RETRYCTR0_SHF 20
+#define GT_INTR_RETRYCTR0_MSK (MSK(1) << GT_INTR_RETRYCTR0_SHF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_INTR_RETRYCTR0_BIT GT_INTR_RETRYCTR0_MSK
+#define GT_DEF_PCI0_IO_BASE 0x10000000UL
+#define GT_DEF_PCI0_IO_SIZE 0x02000000UL
+#define GT_DEF_PCI0_MEM0_BASE 0x12000000UL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_DEF_PCI0_MEM0_SIZE 0x02000000UL
+#define GT_DEF_BASE 0x14000000UL
+#define GT_MAX_BANKSIZE (256 * 1024 * 1024)  
+#define GT_LATTIM_MIN 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <mach-gt64120.h>
+#define __GT_READ(ofs)   (*(volatile u32 *)(GT64120_BASE+(ofs)))
+#define __GT_WRITE(ofs, data)   do { *(volatile u32 *)(GT64120_BASE+(ofs)) = (data); } while (0)
+#define GT_READ(ofs) le32_to_cpu(__GT_READ(ofs))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT_WRITE(ofs, data) __GT_WRITE(ofs, cpu_to_le32(data))
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/hardirq.h b/ndk/platforms/android-9/arch-mips/include/asm/hardirq.h
new file mode 100644
index 0000000..f3a05b4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/hardirq.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_HARDIRQ_H
+#define _ASM_HARDIRQ_H
+#include <linux/threads.h>
+#include <linux/irq.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct {
+ unsigned int __softirq_pending;
+} ____cacheline_aligned irq_cpustat_t;
+#include <linux/irq_cpustat.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/hazards.h b/ndk/platforms/android-9/arch-mips/include/asm/hazards.h
new file mode 100644
index 0000000..dc6b205
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/hazards.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_HAZARDS_H
+#define _ASM_HAZARDS_H
+#ifdef __ASSEMBLY__
+#define ASMMACRO(name, code...) .macro name; code; .endm
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#include <asm/cpu-features.h>
+#define ASMMACRO(name, code...)  __asm__(".macro " #name "; " #code "; .endm");    static inline void name(void)  {   __asm__ __volatile__ (#name);  }
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define instruction_hazard() do { } while (0)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/hw_irq.h b/ndk/platforms/android-9/arch-mips/include/asm/hw_irq.h
new file mode 100644
index 0000000..60f0e7b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/hw_irq.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_HW_IRQ_H
+#define __ASM_HW_IRQ_H
+#include <asm/atomic.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/i8253.h b/ndk/platforms/android-9/arch-mips/include/asm/i8253.h
new file mode 100644
index 0000000..735d79f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/i8253.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_I8253_H
+#define __ASM_I8253_H
+#include <linux/spinlock.h>
+#define PIT_MODE 0x43
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PIT_CH0 0x40
+#define PIT_CH2 0x42
+#define PIT_TICK_RATE 1193182UL
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/i8259.h b/ndk/platforms/android-9/arch-mips/include/asm/i8259.h
new file mode 100644
index 0000000..a78521b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/i8259.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_I8259_H
+#define _ASM_I8259_H
+#include <linux/compiler.h>
+#include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/io.h>
+#include <irq.h>
+#define PIC_MASTER_CMD 0x20
+#define PIC_MASTER_IMR 0x21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PIC_MASTER_ISR PIC_MASTER_CMD
+#define PIC_MASTER_POLL PIC_MASTER_ISR
+#define PIC_MASTER_OCW3 PIC_MASTER_ISR
+#define PIC_SLAVE_CMD 0xa0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PIC_SLAVE_IMR 0xa1
+#define PIC_CASCADE_IR 2
+#define MASTER_ICW4_DEFAULT 0x01
+#define SLAVE_ICW4_DEFAULT 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PIC_ICW4_AEOI 2
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ide.h b/ndk/platforms/android-9/arch-mips/include/asm/ide.h
new file mode 100644
index 0000000..aa45292
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ide.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_IDE_H
+#define __ASM_IDE_H
+#include <ide.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/io.h b/ndk/platforms/android-9/arch-mips/include/asm/io.h
new file mode 100644
index 0000000..b30e51a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/io.h
@@ -0,0 +1,113 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_IO_H
+#define _ASM_IO_H
+#include <linux/compiler.h>
+#include <linux/kernel.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/types.h>
+#include <asm/addrspace.h>
+#include <asm/byteorder.h>
+#include <asm/cpu.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/cpu-features.h>
+#include <asm-generic/iomap.h>
+#include <asm/page.h>
+#include <asm/pgtable-bits.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/processor.h>
+#include <asm/string.h>
+#include <ioremap.h>
+#include <mangle-port.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef CONF_SLOWDOWN_IO
+#define __raw_ioswabb(a, x) (x)
+#define __raw_ioswabw(a, x) (x)
+#define __raw_ioswabl(a, x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __raw_ioswabq(a, x) (x)
+#define ____raw_ioswabq(a, x) (x)
+#define IO_SPACE_LIMIT 0xffff
+#define __SLOW_DOWN_IO   __asm__ __volatile__(   "sb\t$0,0x80(%0)"   : : "r" (mips_io_port_base));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef CONF_SLOWDOWN_IO
+#ifdef REALLY_SLOW_IO
+#define SLOW_DOWN_IO { __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; __SLOW_DOWN_IO; }
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SLOW_DOWN_IO __SLOW_DOWN_IO
+#endif
+#else
+#define SLOW_DOWN_IO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define isa_page_to_bus page_to_phys
+#define virt_to_bus virt_to_phys
+#define bus_to_virt phys_to_virt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define page_to_phys(page) ((dma_addr_t)page_to_pfn(page) << PAGE_SHIFT)
+#define __IS_LOW512(addr) (!((phys_t)(addr) & (phys_t) ~0x1fffffffULL))
+#undef __IS_LOW512
+#define ioremap(offset, size)   __ioremap_mode((offset), (size), _CACHE_UNCACHED)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ioremap_nocache(offset, size)   __ioremap_mode((offset), (size), _CACHE_UNCACHED)
+#define ioremap_cachable(offset, size)   __ioremap_mode((offset), (size), _page_cachable_default)
+#define ioremap_cacheable_cow(offset, size)   __ioremap_mode((offset), (size), _CACHE_CACHABLE_COW)
+#define ioremap_uncached_accelerated(offset, size)   __ioremap_mode((offset), (size), _CACHE_UNCACHED_ACCELERATED)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __IS_KSEG1(addr) (((unsigned long)(addr) & ~0x1fffffffUL) == CKSEG1)
+#undef __IS_KSEG1
+#define __BUILD_MEMORY_SINGLE(pfx, bwlq, type, irq)    static inline void pfx##write##bwlq(type val,   volatile void __iomem *mem)  {   volatile type *__mem;   type __val;     __mem = (void *)__swizzle_addr_##bwlq((unsigned long)(mem));     __val = pfx##ioswab##bwlq(__mem, val);     if (sizeof(type) != sizeof(u64) || sizeof(u64) == sizeof(long))   *__mem = __val;   else if (cpu_has_64bits) {   unsigned long __flags;   type __tmp;     if (irq)   local_irq_save(__flags);   __asm__ __volatile__(   ".set	mips3" "\t\t# __writeq""\n\t"   "dsll32	%L0, %L0, 0" "\n\t"   "dsrl32	%L0, %L0, 0" "\n\t"   "dsll32	%M0, %M0, 0" "\n\t"   "or	%L0, %L0, %M0" "\n\t"   "sd	%L0, %2" "\n\t"   ".set	mips0" "\n"   : "=r" (__tmp)   : "0" (__val), "m" (*__mem));   if (irq)   local_irq_restore(__flags);   } else   BUG();  }    static inline type pfx##read##bwlq(const volatile void __iomem *mem)  {   volatile type *__mem;   type __val;     __mem = (void *)__swizzle_addr_##bwlq((unsigned long)(mem));     if (sizeof(type) != sizeof(u64) || sizeof(u64) == sizeof(long))   __val = *__mem;   else if (cpu_has_64bits) {   unsigned long __flags;     if (irq)   local_irq_save(__flags);   __asm__ __volatile__(   ".set	mips3" "\t\t# __readq" "\n\t"   "ld	%L0, %1" "\n\t"   "dsra32	%M0, %L0, 0" "\n\t"   "sll	%L0, %L0, 0" "\n\t"   ".set	mips0" "\n"   : "=r" (__val)   : "m" (*__mem));   if (irq)   local_irq_restore(__flags);   } else {   __val = 0;   BUG();   }     return pfx##ioswab##bwlq(__mem, __val);  }
+#define __BUILD_IOPORT_SINGLE(pfx, bwlq, type, p, slow)    static inline void pfx##out##bwlq##p(type val, unsigned long port)  {   volatile type *__addr;   type __val;     __addr = (void *)__swizzle_addr_##bwlq(mips_io_port_base + port);     __val = pfx##ioswab##bwlq(__addr, val);         BUILD_BUG_ON(sizeof(type) > sizeof(unsigned long));     *__addr = __val;   slow;  }    static inline type pfx##in##bwlq##p(unsigned long port)  {   volatile type *__addr;   type __val;     __addr = (void *)__swizzle_addr_##bwlq(mips_io_port_base + port);     BUILD_BUG_ON(sizeof(type) > sizeof(unsigned long));     __val = *__addr;   slow;     return pfx##ioswab##bwlq(__addr, __val);  }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __BUILD_MEMORY_PFX(bus, bwlq, type)    __BUILD_MEMORY_SINGLE(bus, bwlq, type, 1)
+#define BUILDIO_MEM(bwlq, type)    __BUILD_MEMORY_PFX(__raw_, bwlq, type)  __BUILD_MEMORY_PFX(, bwlq, type)  __BUILD_MEMORY_PFX(__mem_, bwlq, type)  
+#define __BUILD_IOPORT_PFX(bus, bwlq, type)   __BUILD_IOPORT_SINGLE(bus, bwlq, type, ,)   __BUILD_IOPORT_SINGLE(bus, bwlq, type, _p, SLOW_DOWN_IO)
+#define BUILDIO_IOPORT(bwlq, type)   __BUILD_IOPORT_PFX(, bwlq, type)   __BUILD_IOPORT_PFX(__mem_, bwlq, type)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __BUILDIO(bwlq, type)    __BUILD_MEMORY_SINGLE(____raw_, bwlq, type, 0)
+#define readb_relaxed readb
+#define readw_relaxed readw
+#define readl_relaxed readl
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define readq_relaxed readq
+#define readq readq
+#define writeq writeq
+#define __BUILD_MEMORY_STRING(bwlq, type)    static inline void writes##bwlq(volatile void __iomem *mem,   const void *addr, unsigned int count)  {   const volatile type *__addr = addr;     while (count--) {   __mem_write##bwlq(*__addr, mem);   __addr++;   }  }    static inline void reads##bwlq(volatile void __iomem *mem, void *addr,   unsigned int count)  {   volatile type *__addr = addr;     while (count--) {   *__addr = __mem_read##bwlq(mem);   __addr++;   }  }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __BUILD_IOPORT_STRING(bwlq, type)    static inline void outs##bwlq(unsigned long port, const void *addr,   unsigned int count)  {   const volatile type *__addr = addr;     while (count--) {   __mem_out##bwlq(*__addr, port);   __addr++;   }  }    static inline void ins##bwlq(unsigned long port, void *addr,   unsigned int count)  {   volatile type *__addr = addr;     while (count--) {   *__addr = __mem_in##bwlq(port);   __addr++;   }  }
+#define BUILDSTRING(bwlq, type)    __BUILD_MEMORY_STRING(bwlq, type)  __BUILD_IOPORT_STRING(bwlq, type)
+#define mmiowb() asm volatile ("sync" ::: "memory")
+#define dma_cache_wback_inv(start,size)   do { (void) (start); (void) (size); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define dma_cache_wback(start,size)   do { (void) (start); (void) (size); } while (0)
+#define dma_cache_inv(start,size)   do { (void) (start); (void) (size); } while (0)
+#ifdef __MIPSEB__
+#define __CSR_32_ADJUST 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define __CSR_32_ADJUST 0
+#endif
+#define csr_out32(v, a) (*(volatile u32 *)((unsigned long)(a) + __CSR_32_ADJUST) = (v))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define csr_in32(a) (*(volatile u32 *)((unsigned long)(a) + __CSR_32_ADJUST))
+#define xlate_dev_mem_ptr(p) __va(p)
+#define xlate_dev_kmem_ptr(p) p
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ioctl.h b/ndk/platforms/android-9/arch-mips/include/asm/ioctl.h
new file mode 100644
index 0000000..09dd951
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ioctl.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_IOCTL_H
+#define _ASM_IOCTL_H
+#define _IOC_NRBITS 8
+#define _IOC_TYPEBITS 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOC_SIZEBITS 13
+#define _IOC_DIRBITS 3
+#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1)
+#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1)
+#define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1)
+#define _IOC_NRSHIFT 0
+#define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS)
+#define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS)
+#define _IOC_NONE 1U
+#define _IOC_READ 2U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOC_WRITE 4U
+#define _IOC_VOID 0x20000000
+#define _IOC_OUT 0x40000000
+#define _IOC_IN 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOC_INOUT (IOC_IN|IOC_OUT)
+#define _IOC(dir, type, nr, size)   (((dir) << _IOC_DIRSHIFT) |   ((type) << _IOC_TYPESHIFT) |   ((nr) << _IOC_NRSHIFT) |   ((size) << _IOC_SIZESHIFT))
+extern unsigned int __invalid_size_argument_for_IOC;
+#define _IOC_TYPECHECK(t)   ((sizeof(t) == sizeof(t[1]) &&   sizeof(t) < (1 << _IOC_SIZEBITS)) ?   sizeof(t) : __invalid_size_argument_for_IOC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IO(type, nr) _IOC(_IOC_NONE, (type), (nr), 0)
+#define _IOR(type, nr, size) _IOC(_IOC_READ, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOW(type, nr, size) _IOC(_IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+#define _IOWR(type, nr, size) _IOC(_IOC_READ|_IOC_WRITE, (type), (nr), (_IOC_TYPECHECK(size)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOR_BAD(type, nr, size) _IOC(_IOC_READ, (type), (nr), sizeof(size))
+#define _IOW_BAD(type, nr, size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOWR_BAD(type, nr, size) _IOC(_IOC_READ|_IOC_WRITE, (type), (nr), sizeof(size))
+#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
+#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
+#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
+#define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
+#define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
+#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
+#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ioctls.h b/ndk/platforms/android-9/arch-mips/include/asm/ioctls.h
new file mode 100644
index 0000000..20a02e8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ioctls.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_IOCTLS_H
+#define __ASM_IOCTLS_H
+#include <asm/ioctl.h>
+#define TCGETA 0x5401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSETA 0x5402  
+#define TCSETAW 0x5403
+#define TCSETAF 0x5404
+#define TCSBRK 0x5405
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCXONC 0x5406
+#define TCFLSH 0x5407
+#define TCGETS 0x540d
+#define TCSETS 0x540e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSETSW 0x540f
+#define TCSETSF 0x5410
+#define TIOCEXCL 0x740d  
+#define TIOCNXCL 0x740e  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCOUTQ 0x7472  
+#define TIOCSTI 0x5472  
+#define TIOCMGET 0x741d  
+#define TIOCMBIS 0x741b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCMBIC 0x741c  
+#define TIOCMSET 0x741a  
+#define TIOCPKT 0x5470  
+#define TIOCPKT_DATA 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCPKT_FLUSHREAD 0x01  
+#define TIOCPKT_FLUSHWRITE 0x02  
+#define TIOCPKT_STOP 0x04  
+#define TIOCPKT_START 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCPKT_NOSTOP 0x10  
+#define TIOCPKT_DOSTOP 0x20  
+#define TIOCSWINSZ _IOW('t', 103, struct winsize)  
+#define TIOCGWINSZ _IOR('t', 104, struct winsize)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCNOTTY 0x5471  
+#define TIOCSETD 0x7401
+#define TIOCGETD 0x7400
+#define FIOCLEX 0x6601
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FIONCLEX 0x6602
+#define FIOASYNC 0x667d
+#define FIONBIO 0x667e
+#define FIOQSIZE 0x667f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCGLTC 0x7474  
+#define TIOCSLTC 0x7475  
+#define TIOCSPGRP _IOW('t', 118, int)  
+#define TIOCGPGRP _IOR('t', 119, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCCONS _IOW('t', 120, int)  
+#define FIONREAD 0x467f
+#define TIOCINQ FIONREAD
+#define TIOCGETP 0x7408
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCSETP 0x7409
+#define TIOCSETN 0x740a  
+#define TIOCSBRK 0x5427  
+#define TIOCCBRK 0x5428  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCGSID 0x7416  
+#define TCGETS2 _IOR('T', 0x2A, struct termios2)
+#define TCSETS2 _IOW('T', 0x2B, struct termios2)
+#define TCSETSW2 _IOW('T', 0x2C, struct termios2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSETSF2 _IOW('T', 0x2D, struct termios2)
+#define TIOCGPTN _IOR('T', 0x30, unsigned int)  
+#define TIOCSPTLCK _IOW('T', 0x31, int)  
+#define TIOCSCTTY 0x5480  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCGSOFTCAR 0x5481
+#define TIOCSSOFTCAR 0x5482
+#define TIOCLINUX 0x5483
+#define TIOCGSERIAL 0x5484
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCSSERIAL 0x5485
+#define TCSBRKP 0x5486  
+#define TIOCSERCONFIG 0x5488
+#define TIOCSERGWILD 0x5489
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCSERSWILD 0x548a
+#define TIOCGLCKTRMIOS 0x548b
+#define TIOCSLCKTRMIOS 0x548c
+#define TIOCSERGSTRUCT 0x548d  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCSERGETLSR 0x548e  
+#define TIOCSERGETMULTI 0x548f  
+#define TIOCSERSETMULTI 0x5490  
+#define TIOCMIWAIT 0x5491  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCGICOUNT 0x5492  
+#define TIOCGHAYESESP 0x5493  
+#define TIOCSHAYESESP 0x5494  
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ip32/crime.h b/ndk/platforms/android-9/arch-mips/include/asm/ip32/crime.h
new file mode 100644
index 0000000..a979708
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ip32/crime.h
@@ -0,0 +1,171 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_CRIME_H__
+#define __ASM_CRIME_H__
+#define CRIME_BASE 0x14000000  
+struct sgi_crime {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long id;
+#define CRIME_ID_MASK 0xff
+#define CRIME_ID_IDBITS 0xf0
+#define CRIME_ID_IDVALUE 0xa0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_ID_REV 0x0f
+#define CRIME_REV_PETTY 0x00
+#define CRIME_REV_11 0x11
+#define CRIME_REV_13 0x13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_REV_14 0x14
+ volatile unsigned long control;
+#define CRIME_CONTROL_MASK 0x3fff
+#define CRIME_CONTROL_TRITON_SYSADC 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_CONTROL_CRIME_SYSADC 0x1000
+#define CRIME_CONTROL_HARD_RESET 0x0800
+#define CRIME_CONTROL_SOFT_RESET 0x0400
+#define CRIME_CONTROL_DOG_ENA 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_CONTROL_ENDIANESS 0x0100
+#define CRIME_CONTROL_ENDIAN_BIG 0x0100
+#define CRIME_CONTROL_ENDIAN_LITTLE 0x0000
+#define CRIME_CONTROL_CQUEUE_HWM 0x000f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_CONTROL_CQUEUE_SHFT 0
+#define CRIME_CONTROL_WBUF_HWM 0x00f0
+#define CRIME_CONTROL_WBUF_SHFT 8
+ volatile unsigned long istat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long imask;
+ volatile unsigned long soft_int;
+ volatile unsigned long hard_int;
+#define MACE_VID_IN1_INT BIT(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACE_VID_IN2_INT BIT(1)
+#define MACE_VID_OUT_INT BIT(2)
+#define MACE_ETHERNET_INT BIT(3)
+#define MACE_SUPERIO_INT BIT(4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACE_MISC_INT BIT(5)
+#define MACE_AUDIO_INT BIT(6)
+#define MACE_PCI_BRIDGE_INT BIT(7)
+#define MACEPCI_SCSI0_INT BIT(8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_SCSI1_INT BIT(9)
+#define MACEPCI_SLOT0_INT BIT(10)
+#define MACEPCI_SLOT1_INT BIT(11)
+#define MACEPCI_SLOT2_INT BIT(12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_SHARED0_INT BIT(13)
+#define MACEPCI_SHARED1_INT BIT(14)
+#define MACEPCI_SHARED2_INT BIT(15)
+#define CRIME_GBE0_INT BIT(16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_GBE1_INT BIT(17)
+#define CRIME_GBE2_INT BIT(18)
+#define CRIME_GBE3_INT BIT(19)
+#define CRIME_CPUERR_INT BIT(20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MEMERR_INT BIT(21)
+#define CRIME_RE_EMPTY_E_INT BIT(22)
+#define CRIME_RE_FULL_E_INT BIT(23)
+#define CRIME_RE_IDLE_E_INT BIT(24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_RE_EMPTY_L_INT BIT(25)
+#define CRIME_RE_FULL_L_INT BIT(26)
+#define CRIME_RE_IDLE_L_INT BIT(27)
+#define CRIME_SOFT0_INT BIT(28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_SOFT1_INT BIT(29)
+#define CRIME_SOFT2_INT BIT(30)
+#define CRIME_SYSCORERR_INT CRIME_SOFT2_INT
+#define CRIME_VICE_INT BIT(31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MACE_INT_MASK 0x8f
+#define CRIME_MACEISA_INT_MASK 0x70
+#define CRIME_MACEPCI_INT_MASK 0xff00
+#define CRIME_CRIME_INT_MASK 0xffff0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long watchdog;
+#define CRIME_DOG_POWER_ON_RESET 0x00010000
+#define CRIME_DOG_WARM_RESET 0x00080000
+#define CRIME_DOG_TIMEOUT (CRIME_DOG_POWER_ON_RESET|CRIME_DOG_WARM_RESET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_DOG_VALUE 0x00007fff
+ volatile unsigned long timer;
+#define CRIME_MASTER_FREQ 66666500  
+#define CRIME_NS_PER_TICK 15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long cpu_error_addr;
+#define CRIME_CPU_ERROR_ADDR_MASK 0x3ffffffff
+ volatile unsigned long cpu_error_stat;
+#define CRIME_CPU_ERROR_MASK 0x7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_CPU_ERROR_CPU_ILL_ADDR 0x4
+#define CRIME_CPU_ERROR_VICE_WRT_PRTY 0x2
+#define CRIME_CPU_ERROR_CPU_WRT_PRTY 0x1
+ unsigned long _pad0[54];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long mc_ctrl;
+ volatile unsigned long bank_ctrl[8];
+#define CRIME_MEM_BANK_CONTROL_MASK 0x11f  
+#define CRIME_MEM_BANK_CONTROL_ADDR 0x01f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MEM_BANK_CONTROL_SDRAM_SIZE 0x100
+#define CRIME_MAXBANKS 8
+ volatile unsigned long mem_ref_counter;
+#define CRIME_MEM_REF_COUNTER_MASK 0x3ff  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long mem_error_stat;
+#define CRIME_MEM_ERROR_STAT_MASK 0x0ff7ffff  
+#define CRIME_MEM_ERROR_MACE_ID 0x0000007f
+#define CRIME_MEM_ERROR_MACE_ACCESS 0x00000080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MEM_ERROR_RE_ID 0x00007f00
+#define CRIME_MEM_ERROR_RE_ACCESS 0x00008000
+#define CRIME_MEM_ERROR_GBE_ACCESS 0x00010000
+#define CRIME_MEM_ERROR_VICE_ACCESS 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MEM_ERROR_CPU_ACCESS 0x00040000
+#define CRIME_MEM_ERROR_RESERVED 0x00080000
+#define CRIME_MEM_ERROR_SOFT_ERR 0x00100000
+#define CRIME_MEM_ERROR_HARD_ERR 0x00200000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MEM_ERROR_MULTIPLE 0x00400000
+#define CRIME_MEM_ERROR_ECC 0x01800000
+#define CRIME_MEM_ERROR_MEM_ECC_RD 0x00800000
+#define CRIME_MEM_ERROR_MEM_ECC_RMW 0x01000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRIME_MEM_ERROR_INV 0x0e000000
+#define CRIME_MEM_ERROR_INV_MEM_ADDR_RD 0x02000000
+#define CRIME_MEM_ERROR_INV_MEM_ADDR_WR 0x04000000
+#define CRIME_MEM_ERROR_INV_MEM_ADDR_RMW 0x08000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long mem_error_addr;
+#define CRIME_MEM_ERROR_ADDR_MASK 0x3fffffff
+ volatile unsigned long mem_ecc_syn;
+#define CRIME_MEM_ERROR_ECC_SYN_MASK 0xffffffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long mem_ecc_chk;
+#define CRIME_MEM_ERROR_ECC_CHK_MASK 0xffffffff
+ volatile unsigned long mem_ecc_repl;
+#define CRIME_MEM_ERROR_ECC_REPL_MASK 0xffffffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define CRIME_HI_MEM_BASE 0x40000000  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ip32/mace.h b/ndk/platforms/android-9/arch-mips/include/asm/ip32/mace.h
new file mode 100644
index 0000000..c2c149d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ip32/mace.h
@@ -0,0 +1,351 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MACE_H__
+#define __ASM_MACE_H__
+#define MACE_BASE 0x1f000000  
+struct mace_pci {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned int error_addr;
+ volatile unsigned int error;
+#define MACEPCI_ERROR_MASTER_ABORT BIT(31)
+#define MACEPCI_ERROR_TARGET_ABORT BIT(30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_ERROR_DATA_PARITY_ERR BIT(29)
+#define MACEPCI_ERROR_RETRY_ERR BIT(28)
+#define MACEPCI_ERROR_ILLEGAL_CMD BIT(27)
+#define MACEPCI_ERROR_SYSTEM_ERR BIT(26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_ERROR_INTERRUPT_TEST BIT(25)
+#define MACEPCI_ERROR_PARITY_ERR BIT(24)
+#define MACEPCI_ERROR_OVERRUN BIT(23)
+#define MACEPCI_ERROR_RSVD BIT(22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_ERROR_MEMORY_ADDR BIT(21)
+#define MACEPCI_ERROR_CONFIG_ADDR BIT(20)
+#define MACEPCI_ERROR_MASTER_ABORT_ADDR_VALID BIT(19)
+#define MACEPCI_ERROR_TARGET_ABORT_ADDR_VALID BIT(18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_ERROR_DATA_PARITY_ADDR_VALID BIT(17)
+#define MACEPCI_ERROR_RETRY_ADDR_VALID BIT(16)
+#define MACEPCI_ERROR_SIG_TABORT BIT(4)
+#define MACEPCI_ERROR_DEVSEL_MASK 0xc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_ERROR_DEVSEL_FAST 0
+#define MACEPCI_ERROR_DEVSEL_MED 0x40
+#define MACEPCI_ERROR_DEVSEL_SLOW 0x80
+#define MACEPCI_ERROR_FBB BIT(1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_ERROR_66MHZ BIT(0)
+ volatile unsigned int control;
+#define MACEPCI_CONTROL_INT(x) BIT(x)
+#define MACEPCI_CONTROL_INT_MASK 0xff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_CONTROL_SERR_ENA BIT(8)
+#define MACEPCI_CONTROL_ARB_N6 BIT(9)
+#define MACEPCI_CONTROL_PARITY_ERR BIT(10)
+#define MACEPCI_CONTROL_MRMRA_ENA BIT(11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_CONTROL_ARB_N3 BIT(12)
+#define MACEPCI_CONTROL_ARB_N4 BIT(13)
+#define MACEPCI_CONTROL_ARB_N5 BIT(14)
+#define MACEPCI_CONTROL_PARK_LIU BIT(15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_CONTROL_INV_INT(x) BIT(16+x)
+#define MACEPCI_CONTROL_INV_INT_MASK 0x00ff0000
+#define MACEPCI_CONTROL_OVERRUN_INT BIT(24)
+#define MACEPCI_CONTROL_PARITY_INT BIT(25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_CONTROL_SERR_INT BIT(26)
+#define MACEPCI_CONTROL_IT_INT BIT(27)
+#define MACEPCI_CONTROL_RE_INT BIT(28)
+#define MACEPCI_CONTROL_DPED_INT BIT(29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_CONTROL_TAR_INT BIT(30)
+#define MACEPCI_CONTROL_MAR_INT BIT(31)
+ volatile unsigned int rev;
+ unsigned int _pad[0xcf8/4 - 4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned int config_addr;
+ union {
+ volatile unsigned char b[4];
+ volatile unsigned short w[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned int l;
+ } config_data;
+};
+#define MACEPCI_LOW_MEMORY 0x1a000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_LOW_IO 0x18000000
+#define MACEPCI_SWAPPED_VIEW 0
+#define MACEPCI_NATIVE_VIEW 0x40000000
+#define MACEPCI_IO 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPCI_HI_MEMORY 0x280000000
+#define MACEPCI_HI_IO 0x100000000
+struct mace_video {
+ unsigned long xxx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct mace_ethernet {
+ volatile unsigned long mac_ctrl;
+ volatile unsigned long int_stat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long dma_ctrl;
+ volatile unsigned long timer;
+ volatile unsigned long tx_int_al;
+ volatile unsigned long rx_int_al;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long tx_info;
+ volatile unsigned long tx_info_al;
+ volatile unsigned long rx_buff;
+ volatile unsigned long rx_buff_al1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long rx_buff_al2;
+ volatile unsigned long diag;
+ volatile unsigned long phy_data;
+ volatile unsigned long phy_regs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long phy_trans_go;
+ volatile unsigned long backoff_seed;
+ volatile unsigned long imq_reserved[4];
+ volatile unsigned long mac_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long mac_addr2;
+ volatile unsigned long mcast_filter;
+ volatile unsigned long tx_ring_base;
+ volatile unsigned long tx_pkt1_hdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long tx_pkt1_ptr[3];
+ volatile unsigned long tx_pkt2_hdr;
+ volatile unsigned long tx_pkt2_ptr[3];
+ volatile unsigned long rx_fifo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct mace_audio {
+ volatile unsigned long control;
+ volatile unsigned long codec_control;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long codec_mask;
+ volatile unsigned long codec_read;
+ struct {
+ volatile unsigned long control;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long read_ptr;
+ volatile unsigned long write_ptr;
+ volatile unsigned long depth;
+ } chan[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct mace_parport {
+#define MACEPAR_CONTEXT_LASTFLAG BIT(63)
+#define MACEPAR_CONTEXT_DATA_BOUND 0x0000000000001000UL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPAR_CONTEXT_DATALEN_MASK 0x00000fff00000000UL
+#define MACEPAR_CONTEXT_DATALEN_SHIFT 32
+#define MACEPAR_CONTEXT_BASEADDR_MASK 0x00000000ffffffffUL
+ volatile u64 context_a;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u64 context_b;
+#define MACEPAR_CTLSTAT_DIRECTION BIT(0)
+#define MACEPAR_CTLSTAT_ENABLE BIT(1)
+#define MACEPAR_CTLSTAT_RESET BIT(2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPAR_CTLSTAT_CTXB_VALID BIT(3)
+#define MACEPAR_CTLSTAT_CTXA_VALID BIT(4)
+ volatile u64 cntlstat;
+#define MACEPAR_DIAG_CTXINUSE BIT(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEPAR_DIAG_DMACTIVE BIT(1)
+#define MACEPAR_DIAG_CTRMASK 0x0000000000003ffcUL
+#define MACEPAR_DIAG_CTRSHIFT 2
+ volatile u64 diagnostic;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct mace_isactrl {
+ volatile unsigned long ringbase;
+#define MACEISA_RINGBUFFERS_SIZE (8 * 4096)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long misc;
+#define MACEISA_FLASH_WE BIT(0)  
+#define MACEISA_PWD_CLEAR BIT(1)  
+#define MACEISA_NIC_DEASSERT BIT(2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_NIC_DATA BIT(3)
+#define MACEISA_LED_RED BIT(4)  
+#define MACEISA_LED_GREEN BIT(5)  
+#define MACEISA_DP_RAM_ENABLE BIT(6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long istat;
+ volatile unsigned long imask;
+#define MACEISA_AUDIO_SW_INT BIT(0)
+#define MACEISA_AUDIO_SC_INT BIT(1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_AUDIO1_DMAT_INT BIT(2)
+#define MACEISA_AUDIO1_OF_INT BIT(3)
+#define MACEISA_AUDIO2_DMAT_INT BIT(4)
+#define MACEISA_AUDIO2_MERR_INT BIT(5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_AUDIO3_DMAT_INT BIT(6)
+#define MACEISA_AUDIO3_MERR_INT BIT(7)
+#define MACEISA_RTC_INT BIT(8)
+#define MACEISA_KEYB_INT BIT(9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_KEYB_POLL_INT BIT(10)
+#define MACEISA_MOUSE_INT BIT(11)
+#define MACEISA_MOUSE_POLL_INT BIT(12)
+#define MACEISA_TIMER0_INT BIT(13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_TIMER1_INT BIT(14)
+#define MACEISA_TIMER2_INT BIT(15)
+#define MACEISA_PARALLEL_INT BIT(16)
+#define MACEISA_PAR_CTXA_INT BIT(17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_PAR_CTXB_INT BIT(18)
+#define MACEISA_PAR_MERR_INT BIT(19)
+#define MACEISA_SERIAL1_INT BIT(20)
+#define MACEISA_SERIAL1_TDMAT_INT BIT(21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_SERIAL1_TDMAPR_INT BIT(22)
+#define MACEISA_SERIAL1_TDMAME_INT BIT(23)
+#define MACEISA_SERIAL1_RDMAT_INT BIT(24)
+#define MACEISA_SERIAL1_RDMAOR_INT BIT(25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_SERIAL2_INT BIT(26)
+#define MACEISA_SERIAL2_TDMAT_INT BIT(27)
+#define MACEISA_SERIAL2_TDMAPR_INT BIT(28)
+#define MACEISA_SERIAL2_TDMAME_INT BIT(29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEISA_SERIAL2_RDMAT_INT BIT(30)
+#define MACEISA_SERIAL2_RDMAOR_INT BIT(31)
+ volatile unsigned long _pad[0x2000/8 - 4];
+ volatile unsigned long dp_ram[0x400];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct mace_parport parport;
+};
+struct mace_ps2port {
+ volatile unsigned long tx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long rx;
+ volatile unsigned long control;
+ volatile unsigned long status;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mace_ps2 {
+ struct mace_ps2port keyb;
+ struct mace_ps2port mouse;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mace_i2c {
+ volatile unsigned long config;
+#define MACEI2C_RESET BIT(0)
+#define MACEI2C_FAST BIT(1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACEI2C_DATA_OVERRIDE BIT(2)
+#define MACEI2C_CLOCK_OVERRIDE BIT(3)
+#define MACEI2C_DATA_STATUS BIT(4)
+#define MACEI2C_CLOCK_STATUS BIT(5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long control;
+ volatile unsigned long data;
+};
+typedef union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long ust_msc;
+ struct reg {
+ volatile unsigned int ust;
+ volatile unsigned int msc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } reg;
+} timer_reg;
+struct mace_timers {
+ volatile unsigned long ust;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MACE_UST_PERIOD_NS 960
+ volatile unsigned long compare1;
+ volatile unsigned long compare2;
+ volatile unsigned long compare3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ timer_reg audio_in;
+ timer_reg audio_out1;
+ timer_reg audio_out2;
+ timer_reg video_in1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ timer_reg video_in2;
+ timer_reg video_out;
+};
+struct mace_perif {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct mace_audio audio;
+ char _pad0[0x10000 - sizeof(struct mace_audio)];
+ struct mace_isactrl ctrl;
+ char _pad1[0x10000 - sizeof(struct mace_isactrl)];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct mace_ps2 ps2;
+ char _pad2[0x10000 - sizeof(struct mace_ps2)];
+ struct mace_i2c i2c;
+ char _pad3[0x10000 - sizeof(struct mace_i2c)];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct mace_timers timers;
+ char _pad4[0x10000 - sizeof(struct mace_timers)];
+};
+struct mace_parallel {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct mace_ecp1284 {
+};
+struct mace_serial {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile unsigned long xxx;
+};
+struct mace_isa {
+ struct mace_parallel parallel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char _pad1[0x8000 - sizeof(struct mace_parallel)];
+ struct mace_ecp1284 ecp1284;
+ char _pad2[0x8000 - sizeof(struct mace_ecp1284)];
+ struct mace_serial serial1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char _pad3[0x8000 - sizeof(struct mace_serial)];
+ struct mace_serial serial2;
+ char _pad4[0x8000 - sizeof(struct mace_serial)];
+ volatile unsigned char rtc[0x10000];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct sgi_mace {
+ char _reserved[0x80000];
+ struct mace_pci pci;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char _pad0[0x80000 - sizeof(struct mace_pci)];
+ struct mace_video video_in1;
+ char _pad1[0x80000 - sizeof(struct mace_video)];
+ struct mace_video video_in2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char _pad2[0x80000 - sizeof(struct mace_video)];
+ struct mace_video video_out;
+ char _pad3[0x80000 - sizeof(struct mace_video)];
+ struct mace_ethernet eth;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char _pad4[0x80000 - sizeof(struct mace_ethernet)];
+ struct mace_perif perif;
+ char _pad5[0x80000 - sizeof(struct mace_perif)];
+ struct mace_isa isa;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char _pad6[0x80000 - sizeof(struct mace_isa)];
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ipcbuf.h b/ndk/platforms/android-9/arch-mips/include/asm/ipcbuf.h
new file mode 100644
index 0000000..9be3da8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ipcbuf.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_IPCBUF_H
+#define _ASM_IPCBUF_H
+struct ipc64_perm
+{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __kernel_key_t key;
+ __kernel_uid_t uid;
+ __kernel_gid_t gid;
+ __kernel_uid_t cuid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __kernel_gid_t cgid;
+ __kernel_mode_t mode;
+ unsigned short seq;
+ unsigned short __pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long __unused1;
+ unsigned long __unused2;
+};
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/irq.h b/ndk/platforms/android-9/arch-mips/include/asm/irq.h
new file mode 100644
index 0000000..042c951
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/irq.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_IRQ_H
+#define _ASM_IRQ_H
+#include <linux/linkage.h>
+#include <asm/mipsmtregs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <irq.h>
+#define irq_canonicalize(irq) (irq)  
+#define IRQ_AFFINITY_HOOK(irq) do { } while (0)
+#define __DO_IRQ_SMTC_HOOK(irq)  do {   IRQ_AFFINITY_HOOK(irq);  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NO_AFFINITY_IRQ_SMTC_HOOK(irq) do { } while (0)
+#define do_IRQ(irq)  do {   irq_enter();   __DO_IRQ_SMTC_HOOK(irq);   generic_handle_irq(irq);   irq_exit();  } while (0)
+#define CP0_LEGACY_COMPARE_IRQ 7
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/irq_gt641xx.h b/ndk/platforms/android-9/arch-mips/include/asm/irq_gt641xx.h
new file mode 100644
index 0000000..2a341d8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/irq_gt641xx.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_IRQ_GT641XX_H
+#define _ASM_IRQ_GT641XX_H
+#ifndef GT641XX_IRQ_BASE
+#define GT641XX_IRQ_BASE 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define GT641XX_MEMORY_OUT_OF_RANGE_IRQ (GT641XX_IRQ_BASE + 1)
+#define GT641XX_DMA_OUT_OF_RANGE_IRQ (GT641XX_IRQ_BASE + 2)
+#define GT641XX_CPU_ACCESS_OUT_OF_RANGE_IRQ (GT641XX_IRQ_BASE + 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_DMA0_IRQ (GT641XX_IRQ_BASE + 4)
+#define GT641XX_DMA1_IRQ (GT641XX_IRQ_BASE + 5)
+#define GT641XX_DMA2_IRQ (GT641XX_IRQ_BASE + 6)
+#define GT641XX_DMA3_IRQ (GT641XX_IRQ_BASE + 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_TIMER0_IRQ (GT641XX_IRQ_BASE + 8)
+#define GT641XX_TIMER1_IRQ (GT641XX_IRQ_BASE + 9)
+#define GT641XX_TIMER2_IRQ (GT641XX_IRQ_BASE + 10)
+#define GT641XX_TIMER3_IRQ (GT641XX_IRQ_BASE + 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_PCI_0_MASTER_READ_ERROR_IRQ (GT641XX_IRQ_BASE + 12)
+#define GT641XX_PCI_0_SLAVE_WRITE_ERROR_IRQ (GT641XX_IRQ_BASE + 13)
+#define GT641XX_PCI_0_MASTER_WRITE_ERROR_IRQ (GT641XX_IRQ_BASE + 14)
+#define GT641XX_PCI_0_SLAVE_READ_ERROR_IRQ (GT641XX_IRQ_BASE + 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_PCI_0_ADDRESS_ERROR_IRQ (GT641XX_IRQ_BASE + 16)
+#define GT641XX_MEMORY_ERROR_IRQ (GT641XX_IRQ_BASE + 17)
+#define GT641XX_PCI_0_MASTER_ABORT_IRQ (GT641XX_IRQ_BASE + 18)
+#define GT641XX_PCI_0_TARGET_ABORT_IRQ (GT641XX_IRQ_BASE + 19)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_PCI_0_RETRY_TIMEOUT_IRQ (GT641XX_IRQ_BASE + 20)
+#define GT641XX_CPU_INT0_IRQ (GT641XX_IRQ_BASE + 21)
+#define GT641XX_CPU_INT1_IRQ (GT641XX_IRQ_BASE + 22)
+#define GT641XX_CPU_INT2_IRQ (GT641XX_IRQ_BASE + 23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_CPU_INT3_IRQ (GT641XX_IRQ_BASE + 24)
+#define GT641XX_CPU_INT4_IRQ (GT641XX_IRQ_BASE + 25)
+#define GT641XX_PCI_INT0_IRQ (GT641XX_IRQ_BASE + 26)
+#define GT641XX_PCI_INT1_IRQ (GT641XX_IRQ_BASE + 27)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GT641XX_PCI_INT2_IRQ (GT641XX_IRQ_BASE + 28)
+#define GT641XX_PCI_INT3_IRQ (GT641XX_IRQ_BASE + 29)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/irq_regs.h b/ndk/platforms/android-9/arch-mips/include/asm/irq_regs.h
new file mode 100644
index 0000000..5745c5f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/irq_regs.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_IRQ_REGS_H
+#define __ASM_IRQ_REGS_H
+#define ARCH_HAS_OWN_IRQ_REGS
+#include <linux/thread_info.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/jazz.h b/ndk/platforms/android-9/arch-mips/include/asm/jazz.h
new file mode 100644
index 0000000..5e6ea8f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/jazz.h
@@ -0,0 +1,168 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_JAZZ_H
+#define __ASM_JAZZ_H
+#define JAZZ_LOCAL_IO_SPACE 0xe0000000
+#define PICA_ASIC_REVISION 0xe0000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PICA_LED 0xe000f000
+#define LED_DOT 0x01
+#define LED_SPACE 0x00
+#define LED_0 0xfc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LED_1 0x60
+#define LED_2 0xda
+#define LED_3 0xf2
+#define LED_4 0x66
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LED_5 0xb6
+#define LED_6 0xbe
+#define LED_7 0xe0
+#define LED_8 0xfe
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LED_9 0xf6
+#define LED_A 0xee
+#define LED_b 0x3e
+#define LED_C 0x9c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LED_d 0x7a
+#define LED_E 0x9e
+#define LED_F 0x8e
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define JAZZ_ETHERNET_BASE 0xe0001000
+#define JAZZ_SCSI_BASE 0xe0002000
+#define JAZZ_KEYBOARD_ADDRESS 0xe0005000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_KEYBOARD_DATA 0xe0005000
+#define JAZZ_KEYBOARD_COMMAND 0xe0005001
+#ifndef __ASSEMBLY__
+typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char data;
+ unsigned char command;
+} jazz_keyboard_hardware;
+#define jazz_kh ((keyboard_hardware *) JAZZ_KEYBOARD_ADDRESS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct {
+ unsigned char pad0[3];
+ unsigned char data;
+ unsigned char pad1[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char command;
+} mips_keyboard_hardware;
+#define keyboard_hardware jazz_keyboard_hardware
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_KEYBOARD_ADDRESS 0xb9005000
+#define MIPS_KEYBOARD_DATA 0xb9005003
+#define MIPS_KEYBOARD_COMMAND 0xb9005007
+#define JAZZ_SERIAL1_BASE (unsigned int)0xe0006000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_SERIAL2_BASE (unsigned int)0xe0007000
+#define JAZZ_PARALLEL_BASE (unsigned int)0xe0008000
+#define JAZZ_DUMMY_DEVICE 0xe000d000
+#define JAZZ_TIMER_INTERVAL 0xe0000228
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_TIMER_REGISTER 0xe0000230
+#ifndef __ASSEMBLY__
+#ifdef __MIPSEL__
+typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int bank2 : 3;
+ unsigned int bank1 : 3;
+ unsigned int mem_bus_width : 1;
+ unsigned int reserved2 : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int page_mode : 1;
+ unsigned int reserved1 : 23;
+} dram_configuration;
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct {
+ unsigned int reserved1 : 23;
+ unsigned int page_mode : 1;
+ unsigned int reserved2 : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int mem_bus_width : 1;
+ unsigned int bank1 : 3;
+ unsigned int bank2 : 3;
+} dram_configuration;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
+#define PICA_DRAM_CONFIG 0xe00fffe0
+#define JAZZ_IO_IRQ_SOURCE 0xe0010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_IO_IRQ_ENABLE 0xe0010002
+#define JAZZ_IRQ_START 24
+#define JAZZ_IRQ_END (24 + 9)
+#define JAZZ_PARALLEL_IRQ (JAZZ_IRQ_START + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_FLOPPY_IRQ (JAZZ_IRQ_START + 1)
+#define JAZZ_SOUND_IRQ (JAZZ_IRQ_START + 2)
+#define JAZZ_VIDEO_IRQ (JAZZ_IRQ_START + 3)
+#define JAZZ_ETHERNET_IRQ (JAZZ_IRQ_START + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_SCSI_IRQ (JAZZ_IRQ_START + 5)
+#define JAZZ_KEYBOARD_IRQ (JAZZ_IRQ_START + 6)
+#define JAZZ_MOUSE_IRQ (JAZZ_IRQ_START + 7)
+#define JAZZ_SERIAL1_IRQ (JAZZ_IRQ_START + 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_SERIAL2_IRQ (JAZZ_IRQ_START + 9)
+#define JAZZ_TIMER_IRQ (MIPS_CPU_IRQ_BASE+6)
+#define JAZZ_SCSI_DMA 0  
+#define JAZZ_FLOPPY_DMA 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_AUDIOL_DMA 2  
+#define JAZZ_AUDIOR_DMA 3  
+#define JAZZ_R4030_CONFIG 0xE0000000  
+#define JAZZ_R4030_REVISION 0xE0000008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_R4030_INV_ADDR 0xE0000010  
+#define JAZZ_R4030_TRSTBL_BASE 0xE0000018  
+#define JAZZ_R4030_TRSTBL_LIM 0xE0000020  
+#define JAZZ_R4030_TRSTBL_INV 0xE0000028  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_R4030_CACHE_MTNC 0xE0000030  
+#define JAZZ_R4030_R_FAIL_ADDR 0xE0000038  
+#define JAZZ_R4030_M_FAIL_ADDR 0xE0000040  
+#define JAZZ_R4030_CACHE_PTAG 0xE0000048  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_R4030_CACHE_LTAG 0xE0000050  
+#define JAZZ_R4030_CACHE_BMASK 0xE0000058  
+#define JAZZ_R4030_CACHE_BWIN 0xE0000060  
+#define JAZZ_R4030_REM_SPEED 0xE0000070  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_R4030_IRQ_ENABLE 0xE00000E8  
+#define JAZZ_R4030_INVAL_ADDR 0xE0000010  
+#define JAZZ_R4030_IRQ_SOURCE 0xE0000200  
+#define JAZZ_R4030_I386_ERROR 0xE0000208  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_EISA_IRQ_ACK 0xE0000238  
+#ifndef __ASSEMBLY__
+#endif
+#define JAZZ_FDC_BASE 0xe0003000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_RTC_BASE 0xe0004000
+#define JAZZ_PORT_BASE 0xe2000000
+#define JAZZ_EISA_BASE 0xe3000000
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/jazzdma.h b/ndk/platforms/android-9/arch-mips/include/asm/jazzdma.h
new file mode 100644
index 0000000..7426807
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/jazzdma.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_JAZZDMA_H
+#define _ASM_JAZZDMA_H
+#define VDMA_PAGESIZE 4096
+#define VDMA_PGTBL_ENTRIES 4096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VDMA_PGTBL_SIZE (sizeof(VDMA_PGTBL_ENTRY) * VDMA_PGTBL_ENTRIES)
+#define VDMA_PAGE_EMPTY 0xff000000
+#define VDMA_PAGE(a) ((unsigned int)(a) >> 12)
+#define VDMA_OFFSET(a) ((unsigned int)(a) & (VDMA_PAGESIZE-1))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VDMA_ERROR 0xffffffff
+typedef volatile struct VDMA_PGTBL_ENTRY {
+ unsigned int frame;
+ unsigned int owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} VDMA_PGTBL_ENTRY;
+#define JAZZ_R4030_CHNL_MODE 0xE0000100  
+#define JAZZ_R4030_CHNL_ENABLE 0xE0000108  
+#define JAZZ_R4030_CHNL_COUNT 0xE0000110  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define JAZZ_R4030_CHNL_ADDR 0xE0000118  
+#define R4030_CHNL_ENABLE (1<<0)
+#define R4030_CHNL_WRITE (1<<1)
+#define R4030_TC_INTR (1<<8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R4030_MEM_INTR (1<<9)
+#define R4030_ADDR_INTR (1<<10)
+#define R4030_MODE_ATIME_40 (0)  
+#define R4030_MODE_ATIME_80 (1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R4030_MODE_ATIME_120 (2)
+#define R4030_MODE_ATIME_160 (3)
+#define R4030_MODE_ATIME_200 (4)
+#define R4030_MODE_ATIME_240 (5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R4030_MODE_ATIME_280 (6)
+#define R4030_MODE_ATIME_320 (7)
+#define R4030_MODE_WIDTH_8 (1<<3)  
+#define R4030_MODE_WIDTH_16 (2<<3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R4030_MODE_WIDTH_32 (3<<3)
+#define R4030_MODE_INTR_EN (1<<5)
+#define R4030_MODE_BURST (1<<6)  
+#define R4030_MODE_FAST_ACK (1<<7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/kdebug.h b/ndk/platforms/android-9/arch-mips/include/asm/kdebug.h
new file mode 100644
index 0000000..695346d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/kdebug.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MIPS_KDEBUG_H
+#define _ASM_MIPS_KDEBUG_H
+#include <linux/notifier.h>
+enum die_val {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ DIE_OOPS = 1,
+ DIE_FP,
+ DIE_TRAP,
+ DIE_RI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/kmap_types.h b/ndk/platforms/android-9/arch-mips/include/asm/kmap_types.h
new file mode 100644
index 0000000..e8b888d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/kmap_types.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_KMAP_TYPES_H
+#define _ASM_KMAP_TYPES_H
+#define D(n)
+enum km_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+D(0) KM_BOUNCE_READ,
+D(1) KM_SKB_SUNRPC_DATA,
+D(2) KM_SKB_DATA_SOFTIRQ,
+D(3) KM_USER0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+D(4) KM_USER1,
+D(5) KM_BIO_SRC_IRQ,
+D(6) KM_BIO_DST_IRQ,
+D(7) KM_PTE0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+D(8) KM_PTE1,
+D(9) KM_IRQ0,
+D(10) KM_IRQ1,
+D(11) KM_SOFTIRQ0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+D(12) KM_SOFTIRQ1,
+D(13) KM_TYPE_NR
+};
+#undef D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/lasat/lasat.h b/ndk/platforms/android-9/arch-mips/include/asm/lasat/lasat.h
new file mode 100644
index 0000000..aa255f6
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/lasat/lasat.h
@@ -0,0 +1,209 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LASAT_H
+#define _LASAT_H
+#ifndef _LANGUAGE_ASSEMBLY
+enum lasat_mtdparts {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LASAT_MTD_BOOTLOADER,
+ LASAT_MTD_SERVICE,
+ LASAT_MTD_NORMAL,
+ LASAT_MTD_CONFIG,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LASAT_MTD_FS,
+ LASAT_MTD_LAST
+};
+#include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_EEPROM_VERSION 7
+struct lasat_eeprom_struct {
+ unsigned int version;
+ unsigned int cfg[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char hwaddr[6];
+ unsigned char print_partno[12];
+ unsigned char term0;
+ unsigned char print_serial[14];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char term1;
+ unsigned char prod_partno[12];
+ unsigned char term2;
+ unsigned char prod_serial[14];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char term3;
+ unsigned char passwd_hash[16];
+ unsigned char pwdnull;
+ unsigned char vendid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char ts_ref;
+ unsigned char ts_signoff;
+ unsigned char reserved[11];
+ unsigned char debugaccess;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short prid;
+ unsigned int serviceflag;
+ unsigned int ipaddr;
+ unsigned int netmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int crc32;
+};
+struct lasat_eeprom_struct_pre7 {
+ unsigned int version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int flags[3];
+ unsigned char hwaddr0[6];
+ unsigned char hwaddr1[6];
+ unsigned char print_partno[9];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char term0;
+ unsigned char print_serial[14];
+ unsigned char term1;
+ unsigned char prod_partno[9];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char term2;
+ unsigned char prod_serial[14];
+ unsigned char term3;
+ unsigned char passwd_hash[24];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char pwdnull;
+ unsigned char vendor;
+ unsigned char ts_ref;
+ unsigned char ts_signoff;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char reserved[6];
+ unsigned int writecount;
+ unsigned int ipaddr;
+ unsigned int netmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int crc32;
+};
+#define LASAT_W0_DSCTYPE(v) (((v)) & 0xf)
+#define LASAT_W0_BMID(v) (((v) >> 0x04) & 0xf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_W0_CPUTYPE(v) (((v) >> 0x08) & 0xf)
+#define LASAT_W0_BUSSPEED(v) (((v) >> 0x0c) & 0xf)
+#define LASAT_W0_CPUCLK(v) (((v) >> 0x10) & 0xf)
+#define LASAT_W0_SDRAMBANKSZ(v) (((v) >> 0x14) & 0xf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_W0_SDRAMBANKS(v) (((v) >> 0x18) & 0xf)
+#define LASAT_W0_L2CACHE(v) (((v) >> 0x1c) & 0xf)
+#define LASAT_W1_EDHAC(v) (((v)) & 0xf)
+#define LASAT_W1_HIFN(v) (((v) >> 0x04) & 0x1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_W1_ISDN(v) (((v) >> 0x05) & 0x1)
+#define LASAT_W1_IDE(v) (((v) >> 0x06) & 0x1)
+#define LASAT_W1_HDLC(v) (((v) >> 0x07) & 0x1)
+#define LASAT_W1_USVERSION(v) (((v) >> 0x08) & 0x1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_W1_4MACS(v) (((v) >> 0x09) & 0x1)
+#define LASAT_W1_EXTSERIAL(v) (((v) >> 0x0a) & 0x1)
+#define LASAT_W1_FLASHSIZE(v) (((v) >> 0x0c) & 0xf)
+#define LASAT_W1_PCISLOTS(v) (((v) >> 0x10) & 0xf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_W1_PCI1OPT(v) (((v) >> 0x14) & 0xf)
+#define LASAT_W1_PCI2OPT(v) (((v) >> 0x18) & 0xf)
+#define LASAT_W1_PCI3OPT(v) (((v) >> 0x1c) & 0xf)
+#define LASAT_BMID_MASQUERADE2 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_BMID_MASQUERADEPRO 1
+#define LASAT_BMID_SAFEPIPE25 2
+#define LASAT_BMID_SAFEPIPE50 3
+#define LASAT_BMID_SAFEPIPE100 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_BMID_SAFEPIPE5000 5
+#define LASAT_BMID_SAFEPIPE7000 6
+#define LASAT_BMID_SAFEPIPE1000 7
+#define LASAT_BMID_UNKNOWN 0xf
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_MAX_BMID_NAMES 9  
+#define LASAT_HAS_EDHAC (1 << 0)
+#define LASAT_EDHAC_FAST (1 << 1)
+#define LASAT_HAS_EADI (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_HAS_HIFN (1 << 3)
+#define LASAT_HAS_ISDN (1 << 4)
+#define LASAT_HAS_LEASEDLINE_IF (1 << 5)
+#define LASAT_HAS_HDC (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_PRID_MASQUERADE2 0
+#define LASAT_PRID_MASQUERADEPRO 1
+#define LASAT_PRID_SAFEPIPE25 2
+#define LASAT_PRID_SAFEPIPE50 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_PRID_SAFEPIPE100 4
+#define LASAT_PRID_SAFEPIPE5000 5
+#define LASAT_PRID_SAFEPIPE7000 6
+#define LASAT_PRID_SAFEPIPE30 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_PRID_SAFEPIPE5100 8
+#define LASAT_PRID_SAFEPIPE7100 9
+#define LASAT_PRID_SAFEPIPE1110 10
+#define LASAT_PRID_SAFEPIPE3020 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_PRID_SAFEPIPE3030 12
+#define LASAT_PRID_SAFEPIPE5020 13
+#define LASAT_PRID_SAFEPIPE5030 14
+#define LASAT_PRID_SAFEPIPE1120 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_PRID_SAFEPIPE1130 16
+#define LASAT_PRID_SAFEPIPE6010 17
+#define LASAT_PRID_SAFEPIPE6110 18
+#define LASAT_PRID_SAFEPIPE6210 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_PRID_SAFEPIPE1020 20
+#define LASAT_PRID_SAFEPIPE1040 21
+#define LASAT_PRID_SAFEPIPE1060 22
+struct lasat_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int li_cpu_hz;
+ unsigned int li_bus_hz;
+ unsigned int li_bmid;
+ unsigned int li_memsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int li_flash_size;
+ unsigned int li_prid;
+ unsigned char li_bmstr[16];
+ unsigned char li_namestr[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char li_typestr[16];
+ unsigned int li_flash_base;
+ unsigned long li_flashpart_base[LASAT_MTD_LAST];
+ unsigned long li_flashpart_size[LASAT_MTD_LAST];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct lasat_eeprom_struct li_eeprom_info;
+ unsigned int li_eeprom_upgrade_version;
+ unsigned int li_debugaccess;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_MACHTYPES 2
+#include <linux/delay.h>
+#define LASAT_100_DIVIDER 20
+#define LASAT_200_DIVIDER 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IS_LASAT_200() (current_cpu_data.cputype == CPU_R5000)
+#endif
+#define LASAT_SERVICEMODE_MAGIC_1 0xdeadbeef
+#define LASAT_SERVICEMODE_MAGIC_2 0xfedeabba
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LASAT_GT_BASE (KSEG1ADDR(0x14000000))
+#define Vrc5074_PHYS_BASE 0x1fa00000
+#define Vrc5074_BASE (KSEG1ADDR(Vrc5074_PHYS_BASE))
+#define PCI_WINDOW1 0x1a000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/linkage.h b/ndk/platforms/android-9/arch-mips/include/asm/linkage.h
new file mode 100644
index 0000000..0c77e27
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/linkage.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_LINKAGE_H
+#define __ASM_LINKAGE_H
+#ifdef __ASSEMBLY__
+#include <asm/asm.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define __weak __attribute__((weak))
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/local.h b/ndk/platforms/android-9/arch-mips/include/asm/local.h
new file mode 100644
index 0000000..9d2172b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/local.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ARCH_MIPS_LOCAL_H
+#define _ARCH_MIPS_LOCAL_H
+#include <linux/percpu.h>
+#include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/atomic.h>
+#include <asm/cmpxchg.h>
+#include <asm/war.h>
+typedef struct
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+{
+ atomic_long_t a;
+} local_t;
+#define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define local_read(l) atomic_long_read(&(l)->a)
+#define local_set(l, i) atomic_long_set(&(l)->a, (i))
+#define local_add(i, l) atomic_long_add((i), (&(l)->a))
+#define local_sub(i, l) atomic_long_sub((i), (&(l)->a))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define local_inc(l) atomic_long_inc(&(l)->a)
+#define local_dec(l) atomic_long_dec(&(l)->a)
+#define local_cmpxchg(l, o, n)   ((long)cmpxchg_local(&((l)->a.counter), (o), (n)))
+#define local_xchg(l, n) (xchg_local(&((l)->a.counter), (n)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define local_add_unless(l, a, u)  ({   long c, old;   c = local_read(l);   while (c != (u) && (old = local_cmpxchg((l), c, c + (a))) != c)   c = old;   c != (u);  })
+#define local_inc_not_zero(l) local_add_unless((l), 1, 0)
+#define local_dec_return(l) local_sub_return(1, (l))
+#define local_inc_return(l) local_add_return(1, (l))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define local_sub_and_test(i, l) (local_sub_return((i), (l)) == 0)
+#define local_inc_and_test(l) (local_inc_return(l) == 0)
+#define local_dec_and_test(l) (local_sub_return(1, (l)) == 0)
+#define local_add_negative(i, l) (local_add_return(i, (l)) < 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __local_inc(l) ((l)->a.counter++)
+#define __local_dec(l) ((l)->a.counter++)
+#define __local_add(i, l) ((l)->a.counter+=(i))
+#define __local_sub(i, l) ((l)->a.counter-=(i))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_local_wrap_v(l)   ({ local_t res__;   preempt_disable();   res__ = (l);   preempt_enable();   res__; })
+#define cpu_local_wrap(l)   ({ preempt_disable();   l;   preempt_enable(); })  
+#define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var(l)))
+#define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var(l), (i)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var(l)))
+#define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var(l)))
+#define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var(l)))
+#define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var(l)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __cpu_local_inc(l) cpu_local_inc(l)
+#define __cpu_local_dec(l) cpu_local_dec(l)
+#define __cpu_local_add(i, l) cpu_local_add((i), (l))
+#define __cpu_local_sub(i, l) cpu_local_sub((i), (l))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mach-au1x00/au1000.h b/ndk/platforms/android-9/arch-mips/include/asm/mach-au1x00/au1000.h
new file mode 100644
index 0000000..c331879
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mach-au1x00/au1000.h
@@ -0,0 +1,898 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _AU1000_H_
+#define _AU1000_H_
+#ifndef _LANGUAGE_ASSEMBLY
+#include <linux/delay.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/types.h>
+#include <linux/io.h>
+#include <linux/irq.h>
+struct au1xxx_irqmap {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int im_irq;
+ int im_type;
+ int im_request;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define MEM_STCFG0 0xB4001000
+#define MEM_STTIME0 0xB4001004
+#define MEM_STADDR0 0xB4001008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEM_STCFG1 0xB4001010
+#define MEM_STTIME1 0xB4001014
+#define MEM_STADDR1 0xB4001018
+#define MEM_STCFG2 0xB4001020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEM_STTIME2 0xB4001024
+#define MEM_STADDR2 0xB4001028
+#define MEM_STCFG3 0xB4001030
+#define MEM_STTIME3 0xB4001034
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEM_STADDR3 0xB4001038
+#define IC0_CFG0RD 0xB0400040
+#define IC0_CFG0SET 0xB0400040
+#define IC0_CFG0CLR 0xB0400044
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_CFG1RD 0xB0400048
+#define IC0_CFG1SET 0xB0400048
+#define IC0_CFG1CLR 0xB040004C
+#define IC0_CFG2RD 0xB0400050
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_CFG2SET 0xB0400050
+#define IC0_CFG2CLR 0xB0400054
+#define IC0_REQ0INT 0xB0400054
+#define IC0_SRCRD 0xB0400058
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_SRCSET 0xB0400058
+#define IC0_SRCCLR 0xB040005C
+#define IC0_REQ1INT 0xB040005C
+#define IC0_ASSIGNRD 0xB0400060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_ASSIGNSET 0xB0400060
+#define IC0_ASSIGNCLR 0xB0400064
+#define IC0_WAKERD 0xB0400068
+#define IC0_WAKESET 0xB0400068
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_WAKECLR 0xB040006C
+#define IC0_MASKRD 0xB0400070
+#define IC0_MASKSET 0xB0400070
+#define IC0_MASKCLR 0xB0400074
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_RISINGRD 0xB0400078
+#define IC0_RISINGCLR 0xB0400078
+#define IC0_FALLINGRD 0xB040007C
+#define IC0_FALLINGCLR 0xB040007C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC0_TESTBIT 0xB0400080
+#define IC1_CFG0RD 0xB1800040
+#define IC1_CFG0SET 0xB1800040
+#define IC1_CFG0CLR 0xB1800044
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_CFG1RD 0xB1800048
+#define IC1_CFG1SET 0xB1800048
+#define IC1_CFG1CLR 0xB180004C
+#define IC1_CFG2RD 0xB1800050
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_CFG2SET 0xB1800050
+#define IC1_CFG2CLR 0xB1800054
+#define IC1_REQ0INT 0xB1800054
+#define IC1_SRCRD 0xB1800058
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_SRCSET 0xB1800058
+#define IC1_SRCCLR 0xB180005C
+#define IC1_REQ1INT 0xB180005C
+#define IC1_ASSIGNRD 0xB1800060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_ASSIGNSET 0xB1800060
+#define IC1_ASSIGNCLR 0xB1800064
+#define IC1_WAKERD 0xB1800068
+#define IC1_WAKESET 0xB1800068
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_WAKECLR 0xB180006C
+#define IC1_MASKRD 0xB1800070
+#define IC1_MASKSET 0xB1800070
+#define IC1_MASKCLR 0xB1800074
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_RISINGRD 0xB1800078
+#define IC1_RISINGCLR 0xB1800078
+#define IC1_FALLINGRD 0xB180007C
+#define IC1_FALLINGCLR 0xB180007C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IC1_TESTBIT 0xB1800080
+#define INTC_INT_DISABLED 0x0
+#define INTC_INT_RISE_EDGE 0x1
+#define INTC_INT_FALL_EDGE 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INTC_INT_RISE_AND_FALL_EDGE 0x3
+#define INTC_INT_HIGH_LEVEL 0x5
+#define INTC_INT_LOW_LEVEL 0x6
+#define INTC_INT_HIGH_AND_LOW_LEVEL 0x7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AU1000_INTC0_INT_BASE (MIPS_CPU_IRQ_BASE + 8)
+#define AU1000_INTC0_INT_LAST (AU1000_INTC0_INT_BASE + 31)
+#define AU1000_INTC1_INT_BASE (AU1000_INTC0_INT_BASE + 32)
+#define AU1000_INTC1_INT_LAST (AU1000_INTC1_INT_BASE + 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AU1000_MAX_INTR AU1000_INTC1_INT_LAST
+#define INTX 0xFF  
+#define SYS_BASE 0xB1900000
+#define SYS_COUNTER_CNTRL (SYS_BASE + 0x14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CNTRL_E1S (1 << 23)
+#define SYS_CNTRL_T1S (1 << 20)
+#define SYS_CNTRL_M21 (1 << 19)
+#define SYS_CNTRL_M11 (1 << 18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CNTRL_M01 (1 << 17)
+#define SYS_CNTRL_C1S (1 << 16)
+#define SYS_CNTRL_BP (1 << 14)
+#define SYS_CNTRL_EN1 (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CNTRL_BT1 (1 << 12)
+#define SYS_CNTRL_EN0 (1 << 11)
+#define SYS_CNTRL_BT0 (1 << 10)
+#define SYS_CNTRL_E0 (1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CNTRL_E0S (1 << 7)
+#define SYS_CNTRL_32S (1 << 5)
+#define SYS_CNTRL_T0S (1 << 4)
+#define SYS_CNTRL_M20 (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CNTRL_M10 (1 << 2)
+#define SYS_CNTRL_M00 (1 << 1)
+#define SYS_CNTRL_C0S (1 << 0)
+#define SYS_TOYTRIM (SYS_BASE + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_TOYWRITE (SYS_BASE + 4)
+#define SYS_TOYMATCH0 (SYS_BASE + 8)
+#define SYS_TOYMATCH1 (SYS_BASE + 0xC)
+#define SYS_TOYMATCH2 (SYS_BASE + 0x10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_TOYREAD (SYS_BASE + 0x40)
+#define SYS_RTCTRIM (SYS_BASE + 0x44)
+#define SYS_RTCWRITE (SYS_BASE + 0x48)
+#define SYS_RTCMATCH0 (SYS_BASE + 0x4C)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_RTCMATCH1 (SYS_BASE + 0x50)
+#define SYS_RTCMATCH2 (SYS_BASE + 0x54)
+#define SYS_RTCREAD (SYS_BASE + 0x58)
+#define I2S_DATA 0xB1000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_DATA_MASK 0xffffff
+#define I2S_CONFIG 0xB1000004
+#define I2S_CONFIG_XU (1 << 25)
+#define I2S_CONFIG_XO (1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_CONFIG_RU (1 << 23)
+#define I2S_CONFIG_RO (1 << 22)
+#define I2S_CONFIG_TR (1 << 21)
+#define I2S_CONFIG_TE (1 << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_CONFIG_TF (1 << 19)
+#define I2S_CONFIG_RR (1 << 18)
+#define I2S_CONFIG_RE (1 << 17)
+#define I2S_CONFIG_RF (1 << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_CONFIG_PD (1 << 11)
+#define I2S_CONFIG_LB (1 << 10)
+#define I2S_CONFIG_IC (1 << 9)
+#define I2S_CONFIG_FM_BIT 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_CONFIG_FM_MASK (0x3 << I2S_CONFIG_FM_BIT)
+#define I2S_CONFIG_FM_I2S (0x0 << I2S_CONFIG_FM_BIT)
+#define I2S_CONFIG_FM_LJ (0x1 << I2S_CONFIG_FM_BIT)
+#define I2S_CONFIG_FM_RJ (0x2 << I2S_CONFIG_FM_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_CONFIG_TN (1 << 6)
+#define I2S_CONFIG_RN (1 << 5)
+#define I2S_CONFIG_SZ_BIT 0
+#define I2S_CONFIG_SZ_MASK (0x1F << I2S_CONFIG_SZ_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define I2S_CONTROL 0xB1000008
+#define I2S_CONTROL_D (1 << 1)
+#define I2S_CONTROL_CE (1 << 0)
+#ifndef USB_OHCI_LEN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USB_OHCI_LEN 0x00100000
+#endif
+#define USBD_EP0RD 0xB0200000
+#define USBD_EP0WR 0xB0200004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBD_EP2WR 0xB0200008
+#define USBD_EP3WR 0xB020000C
+#define USBD_EP4RD 0xB0200010
+#define USBD_EP5RD 0xB0200014
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBD_INTEN 0xB0200018
+#define USBD_INTSTAT 0xB020001C
+#define USBDEV_INT_SOF (1 << 12)
+#define USBDEV_INT_HF_BIT 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBDEV_INT_HF_MASK (0x3f << USBDEV_INT_HF_BIT)
+#define USBDEV_INT_CMPLT_BIT 0
+#define USBDEV_INT_CMPLT_MASK (0x3f << USBDEV_INT_CMPLT_BIT)
+#define USBD_CONFIG 0xB0200020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBD_EP0CS 0xB0200024
+#define USBD_EP2CS 0xB0200028
+#define USBD_EP3CS 0xB020002C
+#define USBD_EP4CS 0xB0200030
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBD_EP5CS 0xB0200034
+#define USBDEV_CS_SU (1 << 14)
+#define USBDEV_CS_NAK (1 << 13)
+#define USBDEV_CS_ACK (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBDEV_CS_BUSY (1 << 11)
+#define USBDEV_CS_TSIZE_BIT 1
+#define USBDEV_CS_TSIZE_MASK (0x3ff << USBDEV_CS_TSIZE_BIT)
+#define USBDEV_CS_STALL (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBD_EP0RDSTAT 0xB0200040
+#define USBD_EP0WRSTAT 0xB0200044
+#define USBD_EP2WRSTAT 0xB0200048
+#define USBD_EP3WRSTAT 0xB020004C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBD_EP4RDSTAT 0xB0200050
+#define USBD_EP5RDSTAT 0xB0200054
+#define USBDEV_FSTAT_FLUSH (1 << 6)
+#define USBDEV_FSTAT_UF (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBDEV_FSTAT_OF (1 << 4)
+#define USBDEV_FSTAT_FCNT_BIT 0
+#define USBDEV_FSTAT_FCNT_MASK (0x0f << USBDEV_FSTAT_FCNT_BIT)
+#define USBD_ENABLE 0xB0200058
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define USBDEV_ENABLE (1 << 1)
+#define USBDEV_CE (1 << 0)
+#define MAC_CONTROL 0x0
+#define MAC_RX_ENABLE (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_TX_ENABLE (1 << 3)
+#define MAC_DEF_CHECK (1 << 5)
+#define MAC_SET_BL(X) (((X) & 0x3) << 6)
+#define MAC_AUTO_PAD (1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_DISABLE_RETRY (1 << 10)
+#define MAC_DISABLE_BCAST (1 << 11)
+#define MAC_LATE_COL (1 << 12)
+#define MAC_HASH_MODE (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_HASH_ONLY (1 << 15)
+#define MAC_PASS_ALL (1 << 16)
+#define MAC_INVERSE_FILTER (1 << 17)
+#define MAC_PROMISCUOUS (1 << 18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_PASS_ALL_MULTI (1 << 19)
+#define MAC_FULL_DUPLEX (1 << 20)
+#define MAC_NORMAL_MODE 0
+#define MAC_INT_LOOPBACK (1 << 21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_EXT_LOOPBACK (1 << 22)
+#define MAC_DISABLE_RX_OWN (1 << 23)
+#define MAC_BIG_ENDIAN (1 << 30)
+#define MAC_RX_ALL (1 << 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_ADDRESS_HIGH 0x4
+#define MAC_ADDRESS_LOW 0x8
+#define MAC_MCAST_HIGH 0xC
+#define MAC_MCAST_LOW 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_MII_CNTRL 0x14
+#define MAC_MII_BUSY (1 << 0)
+#define MAC_MII_READ 0
+#define MAC_MII_WRITE (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_SET_MII_SELECT_REG(X) (((X) & 0x1f) << 6)
+#define MAC_SET_MII_SELECT_PHY(X) (((X) & 0x1f) << 11)
+#define MAC_MII_DATA 0x18
+#define MAC_FLOW_CNTRL 0x1C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_FLOW_CNTRL_BUSY (1 << 0)
+#define MAC_FLOW_CNTRL_ENABLE (1 << 1)
+#define MAC_PASS_CONTROL (1 << 2)
+#define MAC_SET_PAUSE(X) (((X) & 0xffff) << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_VLAN1_TAG 0x20
+#define MAC_VLAN2_TAG 0x24
+#define MAC_EN_CLOCK_ENABLE (1 << 0)
+#define MAC_EN_RESET0 (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_EN_TOSS (0 << 2)
+#define MAC_EN_CACHEABLE (1 << 3)
+#define MAC_EN_RESET1 (1 << 4)
+#define MAC_EN_RESET2 (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_DMA_RESET (1 << 6)
+#define MAC0_TX_DMA_ADDR 0xB4004000
+#define MAC1_TX_DMA_ADDR 0xB4004200
+#define MAC_TX_BUFF0_STATUS 0x0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX_FRAME_ABORTED (1 << 0)
+#define TX_JAB_TIMEOUT (1 << 1)
+#define TX_NO_CARRIER (1 << 2)
+#define TX_LOSS_CARRIER (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX_EXC_DEF (1 << 4)
+#define TX_LATE_COLL_ABORT (1 << 5)
+#define TX_EXC_COLL (1 << 6)
+#define TX_UNDERRUN (1 << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX_DEFERRED (1 << 8)
+#define TX_LATE_COLL (1 << 9)
+#define TX_COLL_CNT_MASK (0xF << 10)
+#define TX_PKT_RETRY (1 << 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_TX_BUFF0_ADDR 0x4
+#define TX_DMA_ENABLE (1 << 0)
+#define TX_T_DONE (1 << 1)
+#define TX_GET_DMA_BUFFER(X) (((X) >> 2) & 0x3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_TX_BUFF0_LEN 0x8
+#define MAC_TX_BUFF1_STATUS 0x10
+#define MAC_TX_BUFF1_ADDR 0x14
+#define MAC_TX_BUFF1_LEN 0x18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_TX_BUFF2_STATUS 0x20
+#define MAC_TX_BUFF2_ADDR 0x24
+#define MAC_TX_BUFF2_LEN 0x28
+#define MAC_TX_BUFF3_STATUS 0x30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_TX_BUFF3_ADDR 0x34
+#define MAC_TX_BUFF3_LEN 0x38
+#define MAC0_RX_DMA_ADDR 0xB4004100
+#define MAC1_RX_DMA_ADDR 0xB4004300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_RX_BUFF0_STATUS 0x0
+#define RX_FRAME_LEN_MASK 0x3fff
+#define RX_WDOG_TIMER (1 << 14)
+#define RX_RUNT (1 << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_OVERLEN (1 << 16)
+#define RX_COLL (1 << 17)
+#define RX_ETHER (1 << 18)
+#define RX_MII_ERROR (1 << 19)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_DRIBBLING (1 << 20)
+#define RX_CRC_ERROR (1 << 21)
+#define RX_VLAN1 (1 << 22)
+#define RX_VLAN2 (1 << 23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_LEN_ERROR (1 << 24)
+#define RX_CNTRL_FRAME (1 << 25)
+#define RX_U_CNTRL_FRAME (1 << 26)
+#define RX_MCAST_FRAME (1 << 27)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_BCAST_FRAME (1 << 28)
+#define RX_FILTER_FAIL (1 << 29)
+#define RX_PACKET_FILTER (1 << 30)
+#define RX_MISSED_FRAME (1 << 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_ERROR (RX_WDOG_TIMER | RX_RUNT | RX_OVERLEN |   RX_COLL | RX_MII_ERROR | RX_CRC_ERROR |   RX_LEN_ERROR | RX_U_CNTRL_FRAME | RX_MISSED_FRAME)
+#define MAC_RX_BUFF0_ADDR 0x4
+#define RX_DMA_ENABLE (1 << 0)
+#define RX_T_DONE (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RX_GET_DMA_BUFFER(X) (((X) >> 2) & 0x3)
+#define RX_SET_BUFF_ADDR(X) ((X) & 0xffffffc0)
+#define MAC_RX_BUFF1_STATUS 0x10
+#define MAC_RX_BUFF1_ADDR 0x14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAC_RX_BUFF2_STATUS 0x20
+#define MAC_RX_BUFF2_ADDR 0x24
+#define MAC_RX_BUFF3_STATUS 0x30
+#define MAC_RX_BUFF3_ADDR 0x34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_BASE UART0_ADDR
+#define UART_DEBUG_BASE UART3_ADDR
+#define UART_RX 0  
+#define UART_TX 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_IER 8  
+#define UART_IIR 0xC  
+#define UART_FCR 0x10  
+#define UART_LCR 0x14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_MCR 0x18  
+#define UART_LSR 0x1C  
+#define UART_MSR 0x20  
+#define UART_CLK 0x28  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_MOD_CNTRL 0x100  
+#define UART_FCR_ENABLE_FIFO 0x01  
+#define UART_FCR_CLEAR_RCVR 0x02  
+#define UART_FCR_CLEAR_XMIT 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_FCR_DMA_SELECT 0x08  
+#define UART_FCR_TRIGGER_MASK 0xF0  
+#define UART_FCR_R_TRIGGER_1 0x00  
+#define UART_FCR_R_TRIGGER_4 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_FCR_R_TRIGGER_8 0x80  
+#define UART_FCR_R_TRIGGER_14 0xA0  
+#define UART_FCR_T_TRIGGER_0 0x00  
+#define UART_FCR_T_TRIGGER_4 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_FCR_T_TRIGGER_8 0x20  
+#define UART_FCR_T_TRIGGER_12 0x30  
+#define UART_LCR_SBC 0x40  
+#define UART_LCR_SPAR 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_LCR_EPAR 0x10  
+#define UART_LCR_PARITY 0x08  
+#define UART_LCR_STOP 0x04  
+#define UART_LCR_WLEN5 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_LCR_WLEN6 0x01  
+#define UART_LCR_WLEN7 0x02  
+#define UART_LCR_WLEN8 0x03  
+#define UART_LSR_TEMT 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_LSR_THRE 0x20  
+#define UART_LSR_BI 0x10  
+#define UART_LSR_FE 0x08  
+#define UART_LSR_PE 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_LSR_OE 0x02  
+#define UART_LSR_DR 0x01  
+#define UART_IIR_NO_INT 0x01  
+#define UART_IIR_ID 0x06  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_IIR_MSI 0x00  
+#define UART_IIR_THRI 0x02  
+#define UART_IIR_RDI 0x04  
+#define UART_IIR_RLSI 0x06  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_IER_MSI 0x08  
+#define UART_IER_RLSI 0x04  
+#define UART_IER_THRI 0x02  
+#define UART_IER_RDI 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_MCR_LOOP 0x10  
+#define UART_MCR_OUT2 0x08  
+#define UART_MCR_OUT1 0x04  
+#define UART_MCR_RTS 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_MCR_DTR 0x01  
+#define UART_MSR_DCD 0x80  
+#define UART_MSR_RI 0x40  
+#define UART_MSR_DSR 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_MSR_CTS 0x10  
+#define UART_MSR_DDCD 0x08  
+#define UART_MSR_TERI 0x04  
+#define UART_MSR_DDSR 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UART_MSR_DCTS 0x01  
+#define UART_MSR_ANY_DELTA 0x0F  
+#define SSI0_STATUS 0xB1600000
+#define SSI_STATUS_BF (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_STATUS_OF (1 << 3)
+#define SSI_STATUS_UF (1 << 2)
+#define SSI_STATUS_D (1 << 1)
+#define SSI_STATUS_B (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI0_INT 0xB1600004
+#define SSI_INT_OI (1 << 3)
+#define SSI_INT_UI (1 << 2)
+#define SSI_INT_DI (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI0_INT_ENABLE 0xB1600008
+#define SSI_INTE_OIE (1 << 3)
+#define SSI_INTE_UIE (1 << 2)
+#define SSI_INTE_DIE (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI0_CONFIG 0xB1600020
+#define SSI_CONFIG_AO (1 << 24)
+#define SSI_CONFIG_DO (1 << 23)
+#define SSI_CONFIG_ALEN_BIT 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_ALEN_MASK (0x7 << 20)
+#define SSI_CONFIG_DLEN_BIT 16
+#define SSI_CONFIG_DLEN_MASK (0x7 << 16)
+#define SSI_CONFIG_DD (1 << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_AD (1 << 10)
+#define SSI_CONFIG_BM_BIT 8
+#define SSI_CONFIG_BM_MASK (0x3 << 8)
+#define SSI_CONFIG_CE (1 << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_DP (1 << 6)
+#define SSI_CONFIG_DL (1 << 5)
+#define SSI_CONFIG_EP (1 << 4)
+#define SSI0_ADATA 0xB1600024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_AD_D (1 << 24)
+#define SSI_AD_ADDR_BIT 16
+#define SSI_AD_ADDR_MASK (0xff << 16)
+#define SSI_AD_DATA_BIT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_AD_DATA_MASK (0xfff << 0)
+#define SSI0_CLKDIV 0xB1600028
+#define SSI0_CONTROL 0xB1600100
+#define SSI_CONTROL_CD (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONTROL_E (1 << 0)
+#define SSI1_STATUS 0xB1680000
+#define SSI1_INT 0xB1680004
+#define SSI1_INT_ENABLE 0xB1680008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI1_CONFIG 0xB1680020
+#define SSI1_ADATA 0xB1680024
+#define SSI1_CLKDIV 0xB1680028
+#define SSI1_ENABLE 0xB1680100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_STATUS_BF (1 << 4)
+#define SSI_STATUS_OF (1 << 3)
+#define SSI_STATUS_UF (1 << 2)
+#define SSI_STATUS_D (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_STATUS_B (1 << 0)
+#define SSI_INT_OI (1 << 3)
+#define SSI_INT_UI (1 << 2)
+#define SSI_INT_DI (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_INTEN_OIE (1 << 3)
+#define SSI_INTEN_UIE (1 << 2)
+#define SSI_INTEN_DIE (1 << 1)
+#define SSI_CONFIG_AO (1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_DO (1 << 23)
+#define SSI_CONFIG_ALEN (7 << 20)
+#define SSI_CONFIG_DLEN (15 << 16)
+#define SSI_CONFIG_DD (1 << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_AD (1 << 10)
+#define SSI_CONFIG_BM (3 << 8)
+#define SSI_CONFIG_CE (1 << 7)
+#define SSI_CONFIG_DP (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_DL (1 << 5)
+#define SSI_CONFIG_EP (1 << 4)
+#define SSI_CONFIG_ALEN_N(N) ((N-1) << 20)
+#define SSI_CONFIG_DLEN_N(N) ((N-1) << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_CONFIG_BM_HI (0 << 8)
+#define SSI_CONFIG_BM_LO (1 << 8)
+#define SSI_CONFIG_BM_CY (2 << 8)
+#define SSI_ADATA_D (1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_ADATA_ADDR (0xFF << 16)
+#define SSI_ADATA_DATA 0x0FFF
+#define SSI_ADATA_ADDR_N(N) (N << 16)
+#define SSI_ENABLE_CD (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSI_ENABLE_E (1 << 0)
+#define IRDA_BASE 0xB0300000
+#define IR_RING_PTR_STATUS (IRDA_BASE + 0x00)
+#define IR_RING_BASE_ADDR_H (IRDA_BASE + 0x04)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_RING_BASE_ADDR_L (IRDA_BASE + 0x08)
+#define IR_RING_SIZE (IRDA_BASE + 0x0C)
+#define IR_RING_PROMPT (IRDA_BASE + 0x10)
+#define IR_RING_ADDR_CMPR (IRDA_BASE + 0x14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_INT_CLEAR (IRDA_BASE + 0x18)
+#define IR_CONFIG_1 (IRDA_BASE + 0x20)
+#define IR_RX_INVERT_LED (1 << 0)
+#define IR_TX_INVERT_LED (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_ST (1 << 2)
+#define IR_SF (1 << 3)
+#define IR_SIR (1 << 4)
+#define IR_MIR (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_FIR (1 << 6)
+#define IR_16CRC (1 << 7)
+#define IR_TD (1 << 8)
+#define IR_RX_ALL (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_DMA_ENABLE (1 << 10)
+#define IR_RX_ENABLE (1 << 11)
+#define IR_TX_ENABLE (1 << 12)
+#define IR_LOOPBACK (1 << 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_SIR_MODE (IR_SIR | IR_DMA_ENABLE |   IR_RX_ALL | IR_RX_ENABLE | IR_SF | IR_16CRC)
+#define IR_SIR_FLAGS (IRDA_BASE + 0x24)
+#define IR_ENABLE (IRDA_BASE + 0x28)
+#define IR_RX_STATUS (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_TX_STATUS (1 << 10)
+#define IR_READ_PHY_CONFIG (IRDA_BASE + 0x2C)
+#define IR_WRITE_PHY_CONFIG (IRDA_BASE + 0x30)
+#define IR_MAX_PKT_LEN (IRDA_BASE + 0x34)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_RX_BYTE_CNT (IRDA_BASE + 0x38)
+#define IR_CONFIG_2 (IRDA_BASE + 0x3C)
+#define IR_MODE_INV (1 << 0)
+#define IR_ONE_PIN (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IR_INTERFACE_CONFIG (IRDA_BASE + 0x40)
+#define SYS_PINFUNC 0xB190002C
+#define SYS_PF_USB (1 << 15)  
+#define SYS_PF_U3 (1 << 14)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_U2 (1 << 13)  
+#define SYS_PF_U1 (1 << 12)  
+#define SYS_PF_SRC (1 << 11)  
+#define SYS_PF_CK5 (1 << 10)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_CK4 (1 << 9)  
+#define SYS_PF_IRF (1 << 8)  
+#define SYS_PF_UR3 (1 << 7)  
+#define SYS_PF_I2D (1 << 6)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_I2S (1 << 5)  
+#define SYS_PF_NI2 (1 << 4)  
+#define SYS_PF_U0 (1 << 3)  
+#define SYS_PF_RD (1 << 2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_A97 (1 << 1)  
+#define SYS_PF_S0 (1 << 0)  
+#define SYS_PF_PC (1 << 18)  
+#define SYS_PF_LCD (1 << 17)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_CS (1 << 16)  
+#define SYS_PF_EX0 (1 << 9)  
+#define SYS_PF_PSC2_MASK (7 << 17)
+#define SYS_PF_PSC2_AC97 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_PSC2_SPI 0
+#define SYS_PF_PSC2_I2S (1 << 17)
+#define SYS_PF_PSC2_SMBUS (3 << 17)
+#define SYS_PF_PSC2_GPIO (7 << 17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_PSC3_MASK (7 << 20)
+#define SYS_PF_PSC3_AC97 0
+#define SYS_PF_PSC3_SPI 0
+#define SYS_PF_PSC3_I2S (1 << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_PF_PSC3_SMBUS (3 << 20)
+#define SYS_PF_PSC3_GPIO (7 << 20)
+#define SYS_PF_PSC1_S1 (1 << 1)
+#define SYS_PF_MUST_BE_SET ((1 << 5) | (1 << 2))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_TRIOUTRD 0xB1900100
+#define SYS_TRIOUTCLR 0xB1900100
+#define SYS_OUTPUTRD 0xB1900108
+#define SYS_OUTPUTSET 0xB1900108
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_OUTPUTCLR 0xB190010C
+#define SYS_PINSTATERD 0xB1900110
+#define SYS_PININPUTEN 0xB1900110
+#define GPIO2_BASE 0xB1700000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GPIO2_DIR (GPIO2_BASE + 0)
+#define GPIO2_OUTPUT (GPIO2_BASE + 8)
+#define GPIO2_PINSTATE (GPIO2_BASE + 0xC)
+#define GPIO2_INTENABLE (GPIO2_BASE + 0x10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GPIO2_ENABLE (GPIO2_BASE + 0x14)
+#define SYS_SCRATCH0 0xB1900018
+#define SYS_SCRATCH1 0xB190001C
+#define SYS_WAKEMSK 0xB1900034
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_ENDIAN 0xB1900038
+#define SYS_POWERCTRL 0xB190003C
+#define SYS_WAKESRC 0xB190005C
+#define SYS_SLPPWR 0xB1900078
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_SLEEP 0xB190007C
+#define SYS_FREQCTRL0 0xB1900020
+#define SYS_FC_FRDIV2_BIT 22
+#define SYS_FC_FRDIV2_MASK (0xff << SYS_FC_FRDIV2_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_FC_FE2 (1 << 21)
+#define SYS_FC_FS2 (1 << 20)
+#define SYS_FC_FRDIV1_BIT 12
+#define SYS_FC_FRDIV1_MASK (0xff << SYS_FC_FRDIV1_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_FC_FE1 (1 << 11)
+#define SYS_FC_FS1 (1 << 10)
+#define SYS_FC_FRDIV0_BIT 2
+#define SYS_FC_FRDIV0_MASK (0xff << SYS_FC_FRDIV0_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_FC_FE0 (1 << 1)
+#define SYS_FC_FS0 (1 << 0)
+#define SYS_FREQCTRL1 0xB1900024
+#define SYS_FC_FRDIV5_BIT 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_FC_FRDIV5_MASK (0xff << SYS_FC_FRDIV5_BIT)
+#define SYS_FC_FE5 (1 << 21)
+#define SYS_FC_FS5 (1 << 20)
+#define SYS_FC_FRDIV4_BIT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_FC_FRDIV4_MASK (0xff << SYS_FC_FRDIV4_BIT)
+#define SYS_FC_FE4 (1 << 11)
+#define SYS_FC_FS4 (1 << 10)
+#define SYS_FC_FRDIV3_BIT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_FC_FRDIV3_MASK (0xff << SYS_FC_FRDIV3_BIT)
+#define SYS_FC_FE3 (1 << 1)
+#define SYS_FC_FS3 (1 << 0)
+#define SYS_CLKSRC 0xB1900028
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_ME1_BIT 27
+#define SYS_CS_ME1_MASK (0x7 << SYS_CS_ME1_BIT)
+#define SYS_CS_DE1 (1 << 26)
+#define SYS_CS_CE1 (1 << 25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_ME0_BIT 22
+#define SYS_CS_ME0_MASK (0x7 << SYS_CS_ME0_BIT)
+#define SYS_CS_DE0 (1 << 21)
+#define SYS_CS_CE0 (1 << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_MI2_BIT 17
+#define SYS_CS_MI2_MASK (0x7 << SYS_CS_MI2_BIT)
+#define SYS_CS_DI2 (1 << 16)
+#define SYS_CS_CI2 (1 << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_MUH_BIT 12
+#define SYS_CS_MUH_MASK (0x7 << SYS_CS_MUH_BIT)
+#define SYS_CS_DUH (1 << 11)
+#define SYS_CS_CUH (1 << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_MUD_BIT 7
+#define SYS_CS_MUD_MASK (0x7 << SYS_CS_MUD_BIT)
+#define SYS_CS_DUD (1 << 6)
+#define SYS_CS_CUD (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_MIR_BIT 2
+#define SYS_CS_MIR_MASK (0x7 << SYS_CS_MIR_BIT)
+#define SYS_CS_DIR (1 << 1)
+#define SYS_CS_CIR (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_MUX_AUX 0x1
+#define SYS_CS_MUX_FQ0 0x2
+#define SYS_CS_MUX_FQ1 0x3
+#define SYS_CS_MUX_FQ2 0x4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_CS_MUX_FQ3 0x5
+#define SYS_CS_MUX_FQ4 0x6
+#define SYS_CS_MUX_FQ5 0x7
+#define SYS_CPUPLL 0xB1900060
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_AUXPLL 0xB1900064
+#define AC97C_CONFIG 0xB0000000
+#define AC97C_RECV_SLOTS_BIT 13
+#define AC97C_RECV_SLOTS_MASK (0x3ff << AC97C_RECV_SLOTS_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_XMIT_SLOTS_BIT 3
+#define AC97C_XMIT_SLOTS_MASK (0x3ff << AC97C_XMIT_SLOTS_BIT)
+#define AC97C_SG (1 << 2)
+#define AC97C_SYNC (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_RESET (1 << 0)
+#define AC97C_STATUS 0xB0000004
+#define AC97C_XU (1 << 11)
+#define AC97C_XO (1 << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_RU (1 << 9)
+#define AC97C_RO (1 << 8)
+#define AC97C_READY (1 << 7)
+#define AC97C_CP (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_TR (1 << 5)
+#define AC97C_TE (1 << 4)
+#define AC97C_TF (1 << 3)
+#define AC97C_RR (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_RE (1 << 1)
+#define AC97C_RF (1 << 0)
+#define AC97C_DATA 0xB0000008
+#define AC97C_CMD 0xB000000C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_WD_BIT 16
+#define AC97C_READ (1 << 7)
+#define AC97C_INDEX_MASK 0x7f
+#define AC97C_CNTRL 0xB0000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97C_RS (1 << 1)
+#define AC97C_CE (1 << 0)
+#define SD0_XMIT_FIFO 0xB0600000
+#define SD0_RECV_FIFO 0xB0600004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SD1_XMIT_FIFO 0xB0680000
+#define SD1_RECV_FIFO 0xB0680004
+#define IOPORT_RESOURCE_START 0x10000000
+#define IOPORT_RESOURCE_END 0xffffffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOMEM_RESOURCE_START 0x10000000
+#define IOMEM_RESOURCE_END 0xffffffff
+#define PCI_IO_START 0
+#define PCI_IO_END 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_MEM_START 0
+#define PCI_MEM_END 0
+#define PCI_FIRST_DEVFN 0
+#define PCI_LAST_DEVFN 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef _LANGUAGE_ASSEMBLY
+typedef volatile struct {
+   u32 toytrim;
+   u32 toywrite;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 toymatch0;
+   u32 toymatch1;
+   u32 toymatch2;
+   u32 cntrctrl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 scratch0;
+   u32 scratch1;
+   u32 freqctrl0;
+   u32 freqctrl1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 clksrc;
+   u32 pinfunc;
+   u32 reserved0;
+   u32 wakemsk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 endian;
+   u32 powerctrl;
+   u32 toyread;
+   u32 rtctrim;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 rtcwrite;
+   u32 rtcmatch0;
+   u32 rtcmatch1;
+   u32 rtcmatch2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 rtcread;
+   u32 wakesrc;
+   u32 cpupll;
+   u32 auxpll;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 reserved1;
+   u32 reserved2;
+   u32 reserved3;
+   u32 reserved4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 slppwr;
+   u32 sleep;
+   u32 reserved5[32];
+   u32 trioutrd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define trioutclr trioutrd
+   u32 reserved6;
+   u32 outputrd;
+#define outputset outputrd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+   u32 outputclr;
+   u32 pinstaterd;
+#define pininputen pinstaterd
+} AU1X00_SYS;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef _LANGUAGE_ASSEMBLY
+struct cpu_spec {
+ unsigned int prid_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int prid_value;
+ char *cpu_name;
+ unsigned char cpu_od;
+ unsigned char cpu_bclk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char cpu_pll_wo;
+};
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mach-au1x00/au1xxx_psc.h b/ndk/platforms/android-9/arch-mips/include/asm/mach-au1x00/au1xxx_psc.h
new file mode 100644
index 0000000..2f01be0
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mach-au1x00/au1xxx_psc.h
@@ -0,0 +1,449 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _AU1000_PSC_H_
+#define _AU1000_PSC_H_
+#define PSC_SEL_OFFSET 0x00000000
+#define PSC_CTRL_OFFSET 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SEL_CLK_MASK (3 << 4)
+#define PSC_SEL_CLK_INTCLK (0 << 4)
+#define PSC_SEL_CLK_EXTCLK (1 << 4)
+#define PSC_SEL_CLK_SERCLK (2 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SEL_PS_MASK 0x00000007
+#define PSC_SEL_PS_DISABLED 0
+#define PSC_SEL_PS_SPIMODE 2
+#define PSC_SEL_PS_I2SMODE 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SEL_PS_AC97MODE 4
+#define PSC_SEL_PS_SMBUSMODE 5
+#define PSC_CTRL_DISABLE 0
+#define PSC_CTRL_SUSPEND 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_CTRL_ENABLE 3
+#define PSC_AC97CFG_OFFSET 0x00000008
+#define PSC_AC97MSK_OFFSET 0x0000000c
+#define PSC_AC97PCR_OFFSET 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97STAT_OFFSET 0x00000014
+#define PSC_AC97EVNT_OFFSET 0x00000018
+#define PSC_AC97TXRX_OFFSET 0x0000001c
+#define PSC_AC97CDC_OFFSET 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97RST_OFFSET 0x00000024
+#define PSC_AC97GPO_OFFSET 0x00000028
+#define PSC_AC97GPI_OFFSET 0x0000002c
+#define AC97_PSC_SEL (AC97_PSC_BASE + PSC_SEL_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define AC97_PSC_CTRL (AC97_PSC_BASE + PSC_CTRL_OFFSET)
+#define PSC_AC97CFG (AC97_PSC_BASE + PSC_AC97CFG_OFFSET)
+#define PSC_AC97MSK (AC97_PSC_BASE + PSC_AC97MSK_OFFSET)
+#define PSC_AC97PCR (AC97_PSC_BASE + PSC_AC97PCR_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97STAT (AC97_PSC_BASE + PSC_AC97STAT_OFFSET)
+#define PSC_AC97EVNT (AC97_PSC_BASE + PSC_AC97EVNT_OFFSET)
+#define PSC_AC97TXRX (AC97_PSC_BASE + PSC_AC97TXRX_OFFSET)
+#define PSC_AC97CDC (AC97_PSC_BASE + PSC_AC97CDC_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97RST (AC97_PSC_BASE + PSC_AC97RST_OFFSET)
+#define PSC_AC97GPO (AC97_PSC_BASE + PSC_AC97GPO_OFFSET)
+#define PSC_AC97GPI (AC97_PSC_BASE + PSC_AC97GPI_OFFSET)
+#define PSC_AC97CFG_RT_MASK (3 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97CFG_RT_FIFO1 (0 << 30)
+#define PSC_AC97CFG_RT_FIFO2 (1 << 30)
+#define PSC_AC97CFG_RT_FIFO4 (2 << 30)
+#define PSC_AC97CFG_RT_FIFO8 (3 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97CFG_TT_MASK (3 << 28)
+#define PSC_AC97CFG_TT_FIFO1 (0 << 28)
+#define PSC_AC97CFG_TT_FIFO2 (1 << 28)
+#define PSC_AC97CFG_TT_FIFO4 (2 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97CFG_TT_FIFO8 (3 << 28)
+#define PSC_AC97CFG_DD_DISABLE (1 << 27)
+#define PSC_AC97CFG_DE_ENABLE (1 << 26)
+#define PSC_AC97CFG_SE_ENABLE (1 << 25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97CFG_LEN_MASK (0xf << 21)
+#define PSC_AC97CFG_TXSLOT_MASK (0x3ff << 11)
+#define PSC_AC97CFG_RXSLOT_MASK (0x3ff << 1)
+#define PSC_AC97CFG_GE_ENABLE (1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97CFG_TXSLOT_ENA(x) (1 << (((x) - 3) + 11))
+#define PSC_AC97CFG_RXSLOT_ENA(x) (1 << (((x) - 3) + 1))
+#define PSC_AC97CFG_SET_LEN(x) (((((x) - 2) / 2) & 0xf) << 21)
+#define PSC_AC97CFG_GET_LEN(x) (((((x) >> 21) & 0xf) * 2) + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97MSK_GR (1 << 25)
+#define PSC_AC97MSK_CD (1 << 24)
+#define PSC_AC97MSK_RR (1 << 13)
+#define PSC_AC97MSK_RO (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97MSK_RU (1 << 11)
+#define PSC_AC97MSK_TR (1 << 10)
+#define PSC_AC97MSK_TO (1 << 9)
+#define PSC_AC97MSK_TU (1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97MSK_RD (1 << 5)
+#define PSC_AC97MSK_TD (1 << 4)
+#define PSC_AC97MSK_ALLMASK (PSC_AC97MSK_GR | PSC_AC97MSK_CD |   PSC_AC97MSK_RR | PSC_AC97MSK_RO |   PSC_AC97MSK_RU | PSC_AC97MSK_TR |   PSC_AC97MSK_TO | PSC_AC97MSK_TU |   PSC_AC97MSK_RD | PSC_AC97MSK_TD)
+#define PSC_AC97PCR_RC (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97PCR_RP (1 << 5)
+#define PSC_AC97PCR_RS (1 << 4)
+#define PSC_AC97PCR_TC (1 << 2)
+#define PSC_AC97PCR_TP (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97PCR_TS (1 << 0)
+#define PSC_AC97STAT_CB (1 << 26)
+#define PSC_AC97STAT_CP (1 << 25)
+#define PSC_AC97STAT_CR (1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97STAT_RF (1 << 13)
+#define PSC_AC97STAT_RE (1 << 12)
+#define PSC_AC97STAT_RR (1 << 11)
+#define PSC_AC97STAT_TF (1 << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97STAT_TE (1 << 9)
+#define PSC_AC97STAT_TR (1 << 8)
+#define PSC_AC97STAT_RB (1 << 5)
+#define PSC_AC97STAT_TB (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97STAT_DI (1 << 2)
+#define PSC_AC97STAT_DR (1 << 1)
+#define PSC_AC97STAT_SR (1 << 0)
+#define PSC_AC97EVNT_GR (1 << 25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97EVNT_CD (1 << 24)
+#define PSC_AC97EVNT_RR (1 << 13)
+#define PSC_AC97EVNT_RO (1 << 12)
+#define PSC_AC97EVNT_RU (1 << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97EVNT_TR (1 << 10)
+#define PSC_AC97EVNT_TO (1 << 9)
+#define PSC_AC97EVNT_TU (1 << 8)
+#define PSC_AC97EVNT_RD (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97EVNT_TD (1 << 4)
+#define PSC_AC97CDC_RD (1 << 25)
+#define PSC_AC97CDC_ID_MASK (3 << 23)
+#define PSC_AC97CDC_INDX_MASK (0x7f << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_AC97CDC_ID(x) (((x) & 0x03) << 23)
+#define PSC_AC97CDC_INDX(x) (((x) & 0x7f) << 16)
+#define PSC_AC97RST_RST (1 << 1)
+#define PSC_AC97RST_SNC (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct psc_i2s {
+ u32 psc_sel;
+ u32 psc_ctrl;
+ u32 psc_i2scfg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 psc_i2smsk;
+ u32 psc_i2spcr;
+ u32 psc_i2sstat;
+ u32 psc_i2sevent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 psc_i2stxrx;
+ u32 psc_i2sudf;
+} psc_i2s_t;
+#define PSC_I2SCFG_OFFSET 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SMASK_OFFSET 0x0C
+#define PSC_I2SPCR_OFFSET 0x10
+#define PSC_I2SSTAT_OFFSET 0x14
+#define PSC_I2SEVENT_OFFSET 0x18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SRXTX_OFFSET 0x1C
+#define PSC_I2SUDF_OFFSET 0x20
+#define PSC_I2SCFG_RT_MASK (3 << 30)
+#define PSC_I2SCFG_RT_FIFO1 (0 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_RT_FIFO2 (1 << 30)
+#define PSC_I2SCFG_RT_FIFO4 (2 << 30)
+#define PSC_I2SCFG_RT_FIFO8 (3 << 30)
+#define PSC_I2SCFG_TT_MASK (3 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_TT_FIFO1 (0 << 28)
+#define PSC_I2SCFG_TT_FIFO2 (1 << 28)
+#define PSC_I2SCFG_TT_FIFO4 (2 << 28)
+#define PSC_I2SCFG_TT_FIFO8 (3 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_DD_DISABLE (1 << 27)
+#define PSC_I2SCFG_DE_ENABLE (1 << 26)
+#define PSC_I2SCFG_SET_WS(x) (((((x) / 2) - 1) & 0x7f) << 16)
+#define PSC_I2SCFG_WS(n) ((n & 0xFF) << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_WS_MASK (PSC_I2SCFG_WS(0x3F))
+#define PSC_I2SCFG_WI (1 << 15)
+#define PSC_I2SCFG_DIV_MASK (3 << 13)
+#define PSC_I2SCFG_DIV2 (0 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_DIV4 (1 << 13)
+#define PSC_I2SCFG_DIV8 (2 << 13)
+#define PSC_I2SCFG_DIV16 (3 << 13)
+#define PSC_I2SCFG_BI (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_BUF (1 << 11)
+#define PSC_I2SCFG_MLJ (1 << 10)
+#define PSC_I2SCFG_XM (1 << 9)
+#define PSC_I2SCFG_SET_LEN(x) ((((x) - 1) & 0x1f) << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SCFG_GET_LEN(x) ((((x) >> 4) & 0x1f) + 1)
+#define PSC_I2SCFG_LB (1 << 2)
+#define PSC_I2SCFG_MLF (1 << 1)
+#define PSC_I2SCFG_MS (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SMSK_RR (1 << 13)
+#define PSC_I2SMSK_RO (1 << 12)
+#define PSC_I2SMSK_RU (1 << 11)
+#define PSC_I2SMSK_TR (1 << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SMSK_TO (1 << 9)
+#define PSC_I2SMSK_TU (1 << 8)
+#define PSC_I2SMSK_RD (1 << 5)
+#define PSC_I2SMSK_TD (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SMSK_ALLMASK (PSC_I2SMSK_RR | PSC_I2SMSK_RO |   PSC_I2SMSK_RU | PSC_I2SMSK_TR |   PSC_I2SMSK_TO | PSC_I2SMSK_TU |   PSC_I2SMSK_RD | PSC_I2SMSK_TD)
+#define PSC_I2SPCR_RC (1 << 6)
+#define PSC_I2SPCR_RP (1 << 5)
+#define PSC_I2SPCR_RS (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SPCR_TC (1 << 2)
+#define PSC_I2SPCR_TP (1 << 1)
+#define PSC_I2SPCR_TS (1 << 0)
+#define PSC_I2SSTAT_RF (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SSTAT_RE (1 << 12)
+#define PSC_I2SSTAT_RR (1 << 11)
+#define PSC_I2SSTAT_TF (1 << 10)
+#define PSC_I2SSTAT_TE (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SSTAT_TR (1 << 8)
+#define PSC_I2SSTAT_RB (1 << 5)
+#define PSC_I2SSTAT_TB (1 << 4)
+#define PSC_I2SSTAT_DI (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SSTAT_DR (1 << 1)
+#define PSC_I2SSTAT_SR (1 << 0)
+#define PSC_I2SEVNT_RR (1 << 13)
+#define PSC_I2SEVNT_RO (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SEVNT_RU (1 << 11)
+#define PSC_I2SEVNT_TR (1 << 10)
+#define PSC_I2SEVNT_TO (1 << 9)
+#define PSC_I2SEVNT_TU (1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_I2SEVNT_RD (1 << 5)
+#define PSC_I2SEVNT_TD (1 << 4)
+typedef struct psc_spi {
+ u32 psc_sel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 psc_ctrl;
+ u32 psc_spicfg;
+ u32 psc_spimsk;
+ u32 psc_spipcr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 psc_spistat;
+ u32 psc_spievent;
+ u32 psc_spitxrx;
+} psc_spi_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_RT_MASK (3 << 30)
+#define PSC_SPICFG_RT_FIFO1 (0 << 30)
+#define PSC_SPICFG_RT_FIFO2 (1 << 30)
+#define PSC_SPICFG_RT_FIFO4 (2 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_RT_FIFO8 (3 << 30)
+#define PSC_SPICFG_TT_MASK (3 << 28)
+#define PSC_SPICFG_TT_FIFO1 (0 << 28)
+#define PSC_SPICFG_TT_FIFO2 (1 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_TT_FIFO4 (2 << 28)
+#define PSC_SPICFG_TT_FIFO8 (3 << 28)
+#define PSC_SPICFG_DD_DISABLE (1 << 27)
+#define PSC_SPICFG_DE_ENABLE (1 << 26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_CLR_BAUD(x) ((x) & ~((0x3f) << 15))
+#define PSC_SPICFG_SET_BAUD(x) (((x) & 0x3f) << 15)
+#define PSC_SPICFG_SET_DIV(x) (((x) & 0x03) << 13)
+#define PSC_SPICFG_DIV2 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_DIV4 1
+#define PSC_SPICFG_DIV8 2
+#define PSC_SPICFG_DIV16 3
+#define PSC_SPICFG_BI (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_PSE (1 << 11)
+#define PSC_SPICFG_CGE (1 << 10)
+#define PSC_SPICFG_CDE (1 << 9)
+#define PSC_SPICFG_CLR_LEN(x) ((x) & ~((0x1f) << 4))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPICFG_SET_LEN(x) (((x-1) & 0x1f) << 4)
+#define PSC_SPICFG_LB (1 << 3)
+#define PSC_SPICFG_MLF (1 << 1)
+#define PSC_SPICFG_MO (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPIMSK_MM (1 << 16)
+#define PSC_SPIMSK_RR (1 << 13)
+#define PSC_SPIMSK_RO (1 << 12)
+#define PSC_SPIMSK_RU (1 << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPIMSK_TR (1 << 10)
+#define PSC_SPIMSK_TO (1 << 9)
+#define PSC_SPIMSK_TU (1 << 8)
+#define PSC_SPIMSK_SD (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPIMSK_MD (1 << 4)
+#define PSC_SPIMSK_ALLMASK (PSC_SPIMSK_MM | PSC_SPIMSK_RR |   PSC_SPIMSK_RO | PSC_SPIMSK_TO |   PSC_SPIMSK_TU | PSC_SPIMSK_SD |   PSC_SPIMSK_MD)
+#define PSC_SPIPCR_RC (1 << 6)
+#define PSC_SPIPCR_SP (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPIPCR_SS (1 << 4)
+#define PSC_SPIPCR_TC (1 << 2)
+#define PSC_SPIPCR_MS (1 << 0)
+#define PSC_SPISTAT_RF (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPISTAT_RE (1 << 12)
+#define PSC_SPISTAT_RR (1 << 11)
+#define PSC_SPISTAT_TF (1 << 10)
+#define PSC_SPISTAT_TE (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPISTAT_TR (1 << 8)
+#define PSC_SPISTAT_SB (1 << 5)
+#define PSC_SPISTAT_MB (1 << 4)
+#define PSC_SPISTAT_DI (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPISTAT_DR (1 << 1)
+#define PSC_SPISTAT_SR (1 << 0)
+#define PSC_SPIEVNT_MM (1 << 16)
+#define PSC_SPIEVNT_RR (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPIEVNT_RO (1 << 12)
+#define PSC_SPIEVNT_RU (1 << 11)
+#define PSC_SPIEVNT_TR (1 << 10)
+#define PSC_SPIEVNT_TO (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPIEVNT_TU (1 << 8)
+#define PSC_SPIEVNT_SD (1 << 5)
+#define PSC_SPIEVNT_MD (1 << 4)
+#define PSC_SPITXRX_LC (1 << 29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SPITXRX_SR (1 << 28)
+typedef struct psc_smb {
+ u32 psc_sel;
+ u32 psc_ctrl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 psc_smbcfg;
+ u32 psc_smbmsk;
+ u32 psc_smbpcr;
+ u32 psc_smbstat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 psc_smbevnt;
+ u32 psc_smbtxrx;
+ u32 psc_smbtmr;
+} psc_smb_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBCFG_RT_MASK (3 << 30)
+#define PSC_SMBCFG_RT_FIFO1 (0 << 30)
+#define PSC_SMBCFG_RT_FIFO2 (1 << 30)
+#define PSC_SMBCFG_RT_FIFO4 (2 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBCFG_RT_FIFO8 (3 << 30)
+#define PSC_SMBCFG_TT_MASK (3 << 28)
+#define PSC_SMBCFG_TT_FIFO1 (0 << 28)
+#define PSC_SMBCFG_TT_FIFO2 (1 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBCFG_TT_FIFO4 (2 << 28)
+#define PSC_SMBCFG_TT_FIFO8 (3 << 28)
+#define PSC_SMBCFG_DD_DISABLE (1 << 27)
+#define PSC_SMBCFG_DE_ENABLE (1 << 26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBCFG_SET_DIV(x) (((x) & 0x03) << 13)
+#define PSC_SMBCFG_DIV2 0
+#define PSC_SMBCFG_DIV4 1
+#define PSC_SMBCFG_DIV8 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBCFG_DIV16 3
+#define PSC_SMBCFG_GCE (1 << 9)
+#define PSC_SMBCFG_SFM (1 << 8)
+#define PSC_SMBCFG_SET_SLV(x) (((x) & 0x7f) << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBMSK_DN (1 << 30)
+#define PSC_SMBMSK_AN (1 << 29)
+#define PSC_SMBMSK_AL (1 << 28)
+#define PSC_SMBMSK_RR (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBMSK_RO (1 << 12)
+#define PSC_SMBMSK_RU (1 << 11)
+#define PSC_SMBMSK_TR (1 << 10)
+#define PSC_SMBMSK_TO (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBMSK_TU (1 << 8)
+#define PSC_SMBMSK_SD (1 << 5)
+#define PSC_SMBMSK_MD (1 << 4)
+#define PSC_SMBMSK_ALLMASK (PSC_SMBMSK_DN | PSC_SMBMSK_AN |   PSC_SMBMSK_AL | PSC_SMBMSK_RR |   PSC_SMBMSK_RO | PSC_SMBMSK_TO |   PSC_SMBMSK_TU | PSC_SMBMSK_SD |   PSC_SMBMSK_MD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBPCR_DC (1 << 2)
+#define PSC_SMBPCR_MS (1 << 0)
+#define PSC_SMBSTAT_BB (1 << 28)
+#define PSC_SMBSTAT_RF (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBSTAT_RE (1 << 12)
+#define PSC_SMBSTAT_RR (1 << 11)
+#define PSC_SMBSTAT_TF (1 << 10)
+#define PSC_SMBSTAT_TE (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBSTAT_TR (1 << 8)
+#define PSC_SMBSTAT_SB (1 << 5)
+#define PSC_SMBSTAT_MB (1 << 4)
+#define PSC_SMBSTAT_DI (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBSTAT_DR (1 << 1)
+#define PSC_SMBSTAT_SR (1 << 0)
+#define PSC_SMBEVNT_DN (1 << 30)
+#define PSC_SMBEVNT_AN (1 << 29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBEVNT_AL (1 << 28)
+#define PSC_SMBEVNT_RR (1 << 13)
+#define PSC_SMBEVNT_RO (1 << 12)
+#define PSC_SMBEVNT_RU (1 << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBEVNT_TR (1 << 10)
+#define PSC_SMBEVNT_TO (1 << 9)
+#define PSC_SMBEVNT_TU (1 << 8)
+#define PSC_SMBEVNT_SD (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBEVNT_MD (1 << 4)
+#define PSC_SMBEVNT_ALLCLR (PSC_SMBEVNT_DN | PSC_SMBEVNT_AN |   PSC_SMBEVNT_AL | PSC_SMBEVNT_RR |   PSC_SMBEVNT_RO | PSC_SMBEVNT_TO |   PSC_SMBEVNT_TU | PSC_SMBEVNT_SD |   PSC_SMBEVNT_MD)
+#define PSC_SMBTXRX_RSR (1 << 28)
+#define PSC_SMBTXRX_STP (1 << 29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBTXRX_DATAMASK 0xff
+#define PSC_SMBTMR_SET_TH(x) (((x) & 0x03) << 30)
+#define PSC_SMBTMR_SET_PS(x) (((x) & 0x1f) << 25)
+#define PSC_SMBTMR_SET_PU(x) (((x) & 0x1f) << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PSC_SMBTMR_SET_SH(x) (((x) & 0x1f) << 15)
+#define PSC_SMBTMR_SET_SU(x) (((x) & 0x1f) << 10)
+#define PSC_SMBTMR_SET_CL(x) (((x) & 0x1f) << 5)
+#define PSC_SMBTMR_SET_CH(x) (((x) & 0x1f) << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mach-generic/spaces.h b/ndk/platforms/android-9/arch-mips/include/asm/mach-generic/spaces.h
new file mode 100644
index 0000000..cbda237
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mach-generic/spaces.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MACH_GENERIC_SPACES_H
+#define _ASM_MACH_GENERIC_SPACES_H
+#include <linux/const.h>
+#ifndef PHYS_OFFSET
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PHYS_OFFSET _AC(0, UL)
+#endif
+#ifndef PAGE_OFFSET
+#define PAGE_OFFSET (CAC_BASE + PHYS_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mach-ip22/ds1286.h b/ndk/platforms/android-9/arch-mips/include/asm/mach-ip22/ds1286.h
new file mode 100644
index 0000000..1ea8a7d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mach-ip22/ds1286.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MACH_IP22_DS1286_H
+#define __ASM_MACH_IP22_DS1286_H
+#include <asm/sgi/hpc3.h>
+#define rtc_read(reg) (hpc3c0->rtcregs[(reg)] & 0xff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define rtc_write(data, reg) do { hpc3c0->rtcregs[(reg)] = (data); } while(0)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mc146818rtc.h b/ndk/platforms/android-9/arch-mips/include/asm/mc146818rtc.h
new file mode 100644
index 0000000..6887ef4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mc146818rtc.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MC146818RTC_H
+#define _ASM_MC146818RTC_H
+#include <mc146818rtc.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/bonito64.h b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/bonito64.h
new file mode 100644
index 0000000..7561bbb
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/bonito64.h
@@ -0,0 +1,363 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MIPS_BOARDS_BONITO64_H
+#define _ASM_MIPS_BOARDS_BONITO64_H
+#ifdef __ASSEMBLY__
+#define BONITO(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO(x) *(volatile u32 *)(_pcictrl_bonito + (x))
+#define BONITO_BOOT_BASE 0x1fc00000
+#define BONITO_BOOT_SIZE 0x00100000
+#define BONITO_BOOT_TOP (BONITO_BOOT_BASE+BONITO_BOOT_SIZE-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_FLASH_BASE 0x1c000000
+#define BONITO_FLASH_SIZE 0x03000000
+#define BONITO_FLASH_TOP (BONITO_FLASH_BASE+BONITO_FLASH_SIZE-1)
+#define BONITO_SOCKET_BASE 0x1f800000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SOCKET_SIZE 0x00400000
+#define BONITO_SOCKET_TOP (BONITO_SOCKET_BASE+BONITO_SOCKET_SIZE-1)
+#define BONITO_REG_BASE 0x1fe00000
+#define BONITO_REG_SIZE 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_REG_TOP (BONITO_REG_BASE+BONITO_REG_SIZE-1)
+#define BONITO_DEV_BASE 0x1ff00000
+#define BONITO_DEV_SIZE 0x00100000
+#define BONITO_DEV_TOP (BONITO_DEV_BASE+BONITO_DEV_SIZE-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCILO_BASE 0x10000000
+#define BONITO_PCILO_SIZE 0x0c000000
+#define BONITO_PCILO_TOP (BONITO_PCILO_BASE+BONITO_PCILO_SIZE-1)
+#define BONITO_PCILO0_BASE 0x10000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCILO1_BASE 0x14000000
+#define BONITO_PCILO2_BASE 0x18000000
+#define BONITO_PCIHI_BASE 0x20000000
+#define BONITO_PCIHI_SIZE 0x20000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIHI_TOP (BONITO_PCIHI_BASE+BONITO_PCIHI_SIZE-1)
+#define BONITO_PCIIO_BASE 0x1fd00000
+#define BONITO_PCIIO_SIZE 0x00100000
+#define BONITO_PCIIO_TOP (BONITO_PCIIO_BASE+BONITO_PCIIO_SIZE-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICFG_BASE 0x1fe80000
+#define BONITO_PCICFG_SIZE 0x00080000
+#define BONITO_PCICFG_TOP (BONITO_PCICFG_BASE+BONITO_PCICFG_SIZE-1)
+#define BONITO_PCICONFIGBASE 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_REGBASE 0x100
+#define BONITO_PCI_REG(x) BONITO(BONITO_PCICONFIGBASE + (x))
+#define BONITO_PCIDID BONITO_PCI_REG(0x00)
+#define BONITO_PCICMD BONITO_PCI_REG(0x04)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICLASS BONITO_PCI_REG(0x08)
+#define BONITO_PCILTIMER BONITO_PCI_REG(0x0c)
+#define BONITO_PCIBASE0 BONITO_PCI_REG(0x10)
+#define BONITO_PCIBASE1 BONITO_PCI_REG(0x14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIBASE2 BONITO_PCI_REG(0x18)
+#define BONITO_PCIEXPRBASE BONITO_PCI_REG(0x30)
+#define BONITO_PCIINT BONITO_PCI_REG(0x3c)
+#define BONITO_PCICMD_PERR_CLR 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICMD_SERR_CLR 0x40000000
+#define BONITO_PCICMD_MABORT_CLR 0x20000000
+#define BONITO_PCICMD_MTABORT_CLR 0x10000000
+#define BONITO_PCICMD_TABORT_CLR 0x08000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICMD_MPERR_CLR 0x01000000
+#define BONITO_PCICMD_PERRRESPEN 0x00000040
+#define BONITO_PCICMD_ASTEPEN 0x00000080
+#define BONITO_PCICMD_SERREN 0x00000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCILTIMER_BUSLATENCY 0x0000ff00
+#define BONITO_PCILTIMER_BUSLATENCY_SHIFT 8
+#define BONITO_BONPONCFG BONITO(BONITO_REGBASE + 0x00)
+#define BONITO_BONPONCFG_SYSCONTROLLERRD 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONPONCFG_ROMCS1SAMP 0x00020000
+#define BONITO_BONPONCFG_ROMCS0SAMP 0x00010000
+#define BONITO_BONPONCFG_CPUBIGEND 0x00004000
+#define BONITO_BONPONCFG_BURSTORDER 0x00001000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONPONCFG_CPUPARITY 0x00002000
+#define BONITO_BONPONCFG_CPUTYPE 0x00000007
+#define BONITO_BONPONCFG_CPUTYPE_SHIFT 0
+#define BONITO_BONPONCFG_PCIRESET_OUT 0x00000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONPONCFG_IS_ARBITER 0x00000010
+#define BONITO_BONPONCFG_ROMBOOT 0x000000c0
+#define BONITO_BONPONCFG_ROMBOOT_SHIFT 6
+#define BONITO_BONPONCFG_ROMBOOT_FLASH (0x0<<BONITO_BONPONCFG_ROMBOOT_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONPONCFG_ROMBOOT_SOCKET (0x1<<BONITO_BONPONCFG_ROMBOOT_SHIFT)
+#define BONITO_BONPONCFG_ROMBOOT_SDRAM (0x2<<BONITO_BONPONCFG_ROMBOOT_SHIFT)
+#define BONITO_BONPONCFG_ROMBOOT_CPURESET (0x3<<BONITO_BONPONCFG_ROMBOOT_SHIFT)
+#define BONITO_BONPONCFG_ROMCS0WIDTH 0x00000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONPONCFG_ROMCS1WIDTH 0x00000200
+#define BONITO_BONPONCFG_ROMCS0FAST 0x00000400
+#define BONITO_BONPONCFG_ROMCS1FAST 0x00000800
+#define BONITO_BONPONCFG_CONFIG_DIS 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONGENCFG_OFFSET 0x4
+#define BONITO_BONGENCFG BONITO(BONITO_REGBASE + BONITO_BONGENCFG_OFFSET)
+#define BONITO_BONGENCFG_DEBUGMODE 0x00000001
+#define BONITO_BONGENCFG_SNOOPEN 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONGENCFG_CPUSELFRESET 0x00000004
+#define BONITO_BONGENCFG_FORCE_IRQA 0x00000008
+#define BONITO_BONGENCFG_IRQA_ISOUT 0x00000010
+#define BONITO_BONGENCFG_IRQA_FROM_INT1 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONGENCFG_BYTESWAP 0x00000040
+#define BONITO_BONGENCFG_UNCACHED 0x00000080
+#define BONITO_BONGENCFG_PREFETCHEN 0x00000100
+#define BONITO_BONGENCFG_WBEHINDEN 0x00000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONGENCFG_CACHEALG 0x00000c00
+#define BONITO_BONGENCFG_CACHEALG_SHIFT 10
+#define BONITO_BONGENCFG_PCIQUEUE 0x00001000
+#define BONITO_BONGENCFG_CACHESTOP 0x00002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONGENCFG_MSTRBYTESWAP 0x00004000
+#define BONITO_BONGENCFG_BUSERREN 0x00008000
+#define BONITO_BONGENCFG_NORETRYTIMEOUT 0x00010000
+#define BONITO_BONGENCFG_SHORTCOPYTIMEOUT 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IODEVCFG BONITO(BONITO_REGBASE + 0x08)
+#define BONITO_SDCFG BONITO(BONITO_REGBASE + 0x0c)
+#define BONITO_PCIMAP BONITO(BONITO_REGBASE + 0x10)
+#define BONITO_PCIMEMBASECFG BONITO(BONITO_REGBASE + 0x14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMAP_CFG BONITO(BONITO_REGBASE + 0x18)
+#define BONITO_GPIODATA_OFFSET 0x1c
+#define BONITO_GPIODATA BONITO(BONITO_REGBASE + BONITO_GPIODATA_OFFSET)
+#define BONITO_GPIOIE BONITO(BONITO_REGBASE + 0x20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_INTEDGE BONITO(BONITO_REGBASE + 0x24)
+#define BONITO_INTSTEER BONITO(BONITO_REGBASE + 0x28)
+#define BONITO_INTPOL BONITO(BONITO_REGBASE + 0x2c)
+#define BONITO_INTENSET BONITO(BONITO_REGBASE + 0x30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_INTENCLR BONITO(BONITO_REGBASE + 0x34)
+#define BONITO_INTEN BONITO(BONITO_REGBASE + 0x38)
+#define BONITO_INTISR BONITO(BONITO_REGBASE + 0x3c)
+#define BONITO_PCIMAIL0_OFFSET 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMAIL1_OFFSET 0x44
+#define BONITO_PCIMAIL2_OFFSET 0x48
+#define BONITO_PCIMAIL3_OFFSET 0x4c
+#define BONITO_PCIMAIL0 BONITO(BONITO_REGBASE + 0x40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMAIL1 BONITO(BONITO_REGBASE + 0x44)
+#define BONITO_PCIMAIL2 BONITO(BONITO_REGBASE + 0x48)
+#define BONITO_PCIMAIL3 BONITO(BONITO_REGBASE + 0x4c)
+#define BONITO_PCICACHECTRL BONITO(BONITO_REGBASE + 0x50)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICACHETAG BONITO(BONITO_REGBASE + 0x54)
+#define BONITO_PCIBADADDR BONITO(BONITO_REGBASE + 0x58)
+#define BONITO_PCIMSTAT BONITO(BONITO_REGBASE + 0x5c)
+#define BONITO_CONFIGBASE 0x000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_BONITOBASE 0x100
+#define BONITO_LDMABASE 0x200
+#define BONITO_COPBASE 0x300
+#define BONITO_REG_BLOCKMASK 0x300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_LDMACTRL BONITO(BONITO_LDMABASE + 0x0)
+#define BONITO_LDMASTAT BONITO(BONITO_LDMABASE + 0x0)
+#define BONITO_LDMAADDR BONITO(BONITO_LDMABASE + 0x4)
+#define BONITO_LDMAGO BONITO(BONITO_LDMABASE + 0x8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_LDMADATA BONITO(BONITO_LDMABASE + 0xc)
+#define BONITO_COPCTRL BONITO(BONITO_COPBASE + 0x0)
+#define BONITO_COPSTAT BONITO(BONITO_COPBASE + 0x0)
+#define BONITO_COPPADDR BONITO(BONITO_COPBASE + 0x4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_COPDADDR BONITO(BONITO_COPBASE + 0x8)
+#define BONITO_COPGO BONITO(BONITO_COPBASE + 0xc)
+#define BONITO_IDECOPDADDR_DMA_DADDR 0x0ffffffc
+#define BONITO_IDECOPDADDR_DMA_DADDR_SHIFT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IDECOPPADDR_DMA_PADDR 0xfffffffc
+#define BONITO_IDECOPPADDR_DMA_PADDR_SHIFT 2
+#define BONITO_IDECOPGO_DMA_SIZE 0x0000fffe
+#define BONITO_IDECOPGO_DMA_SIZE_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IDECOPGO_DMA_WRITE 0x00010000
+#define BONITO_IDECOPGO_DMAWCOUNT 0x000f0000
+#define BONITO_IDECOPGO_DMAWCOUNT_SHIFT 16
+#define BONITO_IDECOPCTRL_DMA_STARTBIT 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IDECOPCTRL_DMA_RSTBIT 0x40000000
+#define BONITO_SDCFG_AROWBITS 0x00000003
+#define BONITO_SDCFG_AROWBITS_SHIFT 0
+#define BONITO_SDCFG_ACOLBITS 0x0000000c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SDCFG_ACOLBITS_SHIFT 2
+#define BONITO_SDCFG_ABANKBIT 0x00000010
+#define BONITO_SDCFG_ASIDES 0x00000020
+#define BONITO_SDCFG_AABSENT 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SDCFG_AWIDTH64 0x00000080
+#define BONITO_SDCFG_BROWBITS 0x00000300
+#define BONITO_SDCFG_BROWBITS_SHIFT 8
+#define BONITO_SDCFG_BCOLBITS 0x00000c00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SDCFG_BCOLBITS_SHIFT 10
+#define BONITO_SDCFG_BBANKBIT 0x00001000
+#define BONITO_SDCFG_BSIDES 0x00002000
+#define BONITO_SDCFG_BABSENT 0x00004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SDCFG_BWIDTH64 0x00008000
+#define BONITO_SDCFG_EXTRDDATA 0x00010000
+#define BONITO_SDCFG_EXTRASCAS 0x00020000
+#define BONITO_SDCFG_EXTPRECH 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SDCFG_EXTRASWIDTH 0x00180000
+#define BONITO_SDCFG_EXTRASWIDTH_SHIFT 19
+#define BONITO_SDCFG_DRAMMODESET 0x00200000
+#define BONITO_SDCFG_DRAMEXTREGS 0x00400000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_SDCFG_DRAMPARITY 0x00800000
+#define BONITO_SDCFG_DRAMBURSTLEN 0x03000000
+#define BONITO_SDCFG_DRAMBURSTLEN_SHIFT 24
+#define BONITO_SDCFG_DRAMMODESET_DONE 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICACHECTRL_CACHECMD 0x00000007
+#define BONITO_PCICACHECTRL_CACHECMD_SHIFT 0
+#define BONITO_PCICACHECTRL_CACHECMDLINE 0x00000018
+#define BONITO_PCICACHECTRL_CACHECMDLINE_SHIFT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICACHECTRL_CMDEXEC 0x00000020
+#define BONITO_PCICACHECTRL_IOBCCOH_PRES 0x00000100
+#define BONITO_PCICACHECTRL_IOBCCOH_EN 0x00000200
+#define BONITO_PCICACHECTRL_CPUCOH_PRES 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCICACHECTRL_CPUCOH_EN 0x00000800
+#define BONITO_IODEVCFG_BUFFBIT_CS0 0x00000001
+#define BONITO_IODEVCFG_SPEEDBIT_CS0 0x00000002
+#define BONITO_IODEVCFG_MOREABITS_CS0 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IODEVCFG_BUFFBIT_CS1 0x00000008
+#define BONITO_IODEVCFG_SPEEDBIT_CS1 0x00000010
+#define BONITO_IODEVCFG_MOREABITS_CS1 0x00000020
+#define BONITO_IODEVCFG_BUFFBIT_CS2 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IODEVCFG_SPEEDBIT_CS2 0x00000080
+#define BONITO_IODEVCFG_MOREABITS_CS2 0x00000100
+#define BONITO_IODEVCFG_BUFFBIT_CS3 0x00000200
+#define BONITO_IODEVCFG_SPEEDBIT_CS3 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IODEVCFG_MOREABITS_CS3 0x00000800
+#define BONITO_IODEVCFG_BUFFBIT_IDE 0x00001000
+#define BONITO_IODEVCFG_SPEEDBIT_IDE 0x00002000
+#define BONITO_IODEVCFG_WORDSWAPBIT_IDE 0x00004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IODEVCFG_MODEBIT_IDE 0x00008000
+#define BONITO_IODEVCFG_DMAON_IDE 0x001f0000
+#define BONITO_IODEVCFG_DMAON_IDE_SHIFT 16
+#define BONITO_IODEVCFG_DMAOFF_IDE 0x01e00000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_IODEVCFG_DMAOFF_IDE_SHIFT 21
+#define BONITO_IODEVCFG_EPROMSPLIT 0x02000000
+#define BONITO_IODEVCFG_CPUCLOCKPERIOD 0xfc000000
+#define BONITO_IODEVCFG_CPUCLOCKPERIOD_SHIFT 26
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_GPIO_GPIOW 0x000003ff
+#define BONITO_GPIO_GPIOW_SHIFT 0
+#define BONITO_GPIO_GPIOR 0x01ff0000
+#define BONITO_GPIO_GPIOR_SHIFT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_GPIO_GPINR 0xfe000000
+#define BONITO_GPIO_GPINR_SHIFT 25
+#define BONITO_GPIO_IOW(N) (1<<(BONITO_GPIO_GPIOW_SHIFT+(N)))
+#define BONITO_GPIO_IOR(N) (1<<(BONITO_GPIO_GPIOR_SHIFT+(N)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_GPIO_INR(N) (1<<(BONITO_GPIO_GPINR_SHIFT+(N)))
+#define BONITO_ICU_MBOXES 0x0000000f
+#define BONITO_ICU_MBOXES_SHIFT 0
+#define BONITO_ICU_DMARDY 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_ICU_DMAEMPTY 0x00000020
+#define BONITO_ICU_COPYRDY 0x00000040
+#define BONITO_ICU_COPYEMPTY 0x00000080
+#define BONITO_ICU_COPYERR 0x00000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_ICU_PCIIRQ 0x00000200
+#define BONITO_ICU_MASTERERR 0x00000400
+#define BONITO_ICU_SYSTEMERR 0x00000800
+#define BONITO_ICU_DRAMPERR 0x00001000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_ICU_RETRYERR 0x00002000
+#define BONITO_ICU_GPIOS 0x01ff0000
+#define BONITO_ICU_GPIOS_SHIFT 16
+#define BONITO_ICU_GPINS 0x7e000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_ICU_GPINS_SHIFT 25
+#define BONITO_ICU_MBOX(N) (1<<(BONITO_ICU_MBOXES_SHIFT+(N)))
+#define BONITO_ICU_GPIO(N) (1<<(BONITO_ICU_GPIOS_SHIFT+(N)))
+#define BONITO_ICU_GPIN(N) (1<<(BONITO_ICU_GPINS_SHIFT+(N)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMAP_PCIMAP_LO0 0x0000003f
+#define BONITO_PCIMAP_PCIMAP_LO0_SHIFT 0
+#define BONITO_PCIMAP_PCIMAP_LO1 0x00000fc0
+#define BONITO_PCIMAP_PCIMAP_LO1_SHIFT 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMAP_PCIMAP_LO2 0x0003f000
+#define BONITO_PCIMAP_PCIMAP_LO2_SHIFT 12
+#define BONITO_PCIMAP_PCIMAP_2 0x00040000
+#define BONITO_PCIMAP_WIN(WIN, ADDR) ((((ADDR)>>26) & BONITO_PCIMAP_PCIMAP_LO0) << ((WIN)*6))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMAP_WINSIZE (1<<26)
+#define BONITO_PCIMAP_WINOFFSET(ADDR) ((ADDR) & (BONITO_PCIMAP_WINSIZE - 1))
+#define BONITO_PCIMAP_WINBASE(ADDR) ((ADDR) << 26)
+#define BONITO_PCIMEMBASECFG_MASK 0xf0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMEMBASECFG_MEMBASE0_MASK 0x0000001f
+#define BONITO_PCIMEMBASECFG_MEMBASE0_MASK_SHIFT 0
+#define BONITO_PCIMEMBASECFG_MEMBASE0_TRANS 0x000003e0
+#define BONITO_PCIMEMBASECFG_MEMBASE0_TRANS_SHIFT 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMEMBASECFG_MEMBASE0_CACHED 0x00000400
+#define BONITO_PCIMEMBASECFG_MEMBASE0_IO 0x00000800
+#define BONITO_PCIMEMBASECFG_MEMBASE1_MASK 0x0001f000
+#define BONITO_PCIMEMBASECFG_MEMBASE1_MASK_SHIFT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMEMBASECFG_MEMBASE1_TRANS 0x003e0000
+#define BONITO_PCIMEMBASECFG_MEMBASE1_TRANS_SHIFT 17
+#define BONITO_PCIMEMBASECFG_MEMBASE1_CACHED 0x00400000
+#define BONITO_PCIMEMBASECFG_MEMBASE1_IO 0x00800000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMEMBASECFG_ASHIFT 23
+#define BONITO_PCIMEMBASECFG_AMASK 0x007fffff
+#define BONITO_PCIMEMBASECFGSIZE(WIN, SIZE) (((~((SIZE)-1))>>(BONITO_PCIMEMBASECFG_ASHIFT-BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK_SHIFT)) & BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK)
+#define BONITO_PCIMEMBASECFGBASE(WIN, BASE) (((BASE)>>(BONITO_PCIMEMBASECFG_ASHIFT-BONITO_PCIMEMBASECFG_MEMBASE##WIN##_TRANS_SHIFT)) & BONITO_PCIMEMBASECFG_MEMBASE##WIN##_TRANS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCIMEMBASECFG_SIZE(WIN, CFG) (((((~(CFG)) & BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK)) << (BONITO_PCIMEMBASECFG_ASHIFT - BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK_SHIFT)) | BONITO_PCIMEMBASECFG_AMASK)
+#define BONITO_PCIMEMBASECFG_ADDRMASK(WIN, CFG) ((((CFG) & BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK) >> BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK_SHIFT) << BONITO_PCIMEMBASECFG_ASHIFT)
+#define BONITO_PCIMEMBASECFG_ADDRMASK(WIN, CFG) ((((CFG) & BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK) >> BONITO_PCIMEMBASECFG_MEMBASE##WIN##_MASK_SHIFT) << BONITO_PCIMEMBASECFG_ASHIFT)
+#define BONITO_PCIMEMBASECFG_ADDRTRANS(WIN, CFG) ((((CFG) & BONITO_PCIMEMBASECFG_MEMBASE##WIN##_TRANS) >> BONITO_PCIMEMBASECFG_MEMBASE##WIN##_TRANS_SHIFT) << BONITO_PCIMEMBASECFG_ASHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BONITO_PCITOPHYS(WIN, ADDR, CFG) (   (((ADDR) & (~(BONITO_PCIMEMBASECFG_MASK))) & (~(BONITO_PCIMEMBASECFG_ADDRMASK(WIN, CFG)))) |   (BONITO_PCIMEMBASECFG_ADDRTRANS(WIN, CFG))   )
+#define BONITO_PCICMD_MEMEN 0x00000002
+#define BONITO_PCICMD_MSTREN 0x00000004
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/generic.h b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/generic.h
new file mode 100644
index 0000000..fe07137
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/generic.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_BOARDS_GENERIC_H
+#define __ASM_MIPS_BOARDS_GENERIC_H
+#include <asm/addrspace.h>
+#include <asm/byteorder.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/mips-boards/bonito64.h>
+#define ASCII_DISPLAY_WORD_BASE 0x1f000410
+#define ASCII_DISPLAY_POS_BASE 0x1f000418
+#define YAMON_PROM_PRINT_ADDR 0x1fc00504
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SOFTRES_REG 0x1f000500
+#define GORESET 0x42
+#define MIPS_REVISION_REG 0x1fc00010
+#define MIPS_REVISION_CORID_QED_RM5261 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_CORID_CORE_LV 1
+#define MIPS_REVISION_CORID_BONITO64 2
+#define MIPS_REVISION_CORID_CORE_20K 3
+#define MIPS_REVISION_CORID_CORE_FPGA 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_CORID_CORE_MSC 5
+#define MIPS_REVISION_CORID_CORE_EMUL 6
+#define MIPS_REVISION_CORID_CORE_FPGA2 7
+#define MIPS_REVISION_CORID_CORE_FPGAR2 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_CORID_CORE_FPGA3 9
+#define MIPS_REVISION_CORID_CORE_24K 10
+#define MIPS_REVISION_CORID_CORE_FPGA4 11
+#define MIPS_REVISION_CORID_CORE_FPGA5 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_CORID_CORE_EMUL_BON -1
+#define MIPS_REVISION_CORID_CORE_EMUL_MSC -2
+#define MIPS_REVISION_CORID (((*(volatile u32 *)ioremap(MIPS_REVISION_REG, 4)) >> 10) & 0x3f)
+#define MIPS_REVISION_SCON_OTHER 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_SCON_SOCITSC 1
+#define MIPS_REVISION_SCON_SOCITSCP 2
+#define MIPS_REVISION_SCON_UNKNOWN -1
+#define MIPS_REVISION_SCON_GT64120 -2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_SCON_BONITO -3
+#define MIPS_REVISION_SCON_BRTL -4
+#define MIPS_REVISION_SCON_SOCIT -5
+#define MIPS_REVISION_SCON_ROCIT -6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_REVISION_SCONID (((*(volatile u32 *)ioremap(MIPS_REVISION_REG, 4)) >> 24) & 0xff)
+#define mips_pcibios_init() do { } while (0)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/malta.h b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/malta.h
new file mode 100644
index 0000000..7cef7e0
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/malta.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_BOARDS_MALTA_H
+#define __ASM_MIPS_BOARDS_MALTA_H
+#include <asm/addrspace.h>
+#include <asm/io.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/mips-boards/msc01_pci.h>
+#include <asm/gt64120.h>
+#define MIPS_MSC01_IC_REG_BASE 0x1bc40000
+#define MIPS_SOCITSC_IC_REG_BASE 0x1ffa0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MALTA_GT_PORT_BASE get_gt_port_base(GT_PCI0IOLD_OFS)
+#define MALTA_BONITO_PORT_BASE ((unsigned long)ioremap (0x1fd00000, 0x10000))
+#define MALTA_MSC_PORT_BASE get_msc_port_base(MSC01_PCI_SC2PIOBASL)
+#define GCMP_BASE_ADDR 0x1fbf8000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GCMP_ADDRSPACE_SZ (256 * 1024)
+#define GIC_BASE_ADDR 0x1bdc0000
+#define GIC_ADDRSPACE_SZ (128 * 1024)
+#define MSC01_BIU_REG_BASE 0x1bc80000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_BIU_ADDRSPACE_SZ (256 * 1024)
+#define MSC01_SC_CFG_OFS 0x0110
+#define MSC01_SC_CFG_GICPRES_MSK 0x00000004
+#define MSC01_SC_CFG_GICPRES_SHF 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_SC_CFG_GICENA_SHF 3
+#define MALTA_RTC_ADR_REG 0x70
+#define MALTA_RTC_DAT_REG 0x71
+#define SMSC_CONFIG_REG 0x3f0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SMSC_DATA_REG 0x3f1
+#define SMSC_CONFIG_DEVNUM 0x7
+#define SMSC_CONFIG_ACTIVATE 0x30
+#define SMSC_CONFIG_ENTER 0x55
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SMSC_CONFIG_EXIT 0xaa
+#define SMSC_CONFIG_DEVNUM_FLOPPY 0
+#define SMSC_CONFIG_ACTIVATE_ENABLE 1
+#define SMSC_WRITE(x, a) outb(x, a)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MALTA_JMPRS_REG 0x1f000210
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/msc01_pci.h b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/msc01_pci.h
new file mode 100644
index 0000000..6235847
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mips-boards/msc01_pci.h
@@ -0,0 +1,270 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_BOARDS_MSC01_PCI_H
+#define __ASM_MIPS_BOARDS_MSC01_PCI_H
+#define MSC01_PCI_ID_OFS 0x0000
+#define MSC01_PCI_SC2PMBASL_OFS 0x0208
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SC2PMMSKL_OFS 0x0218
+#define MSC01_PCI_SC2PMMAPL_OFS 0x0228
+#define MSC01_PCI_SC2PIOBASL_OFS 0x0248
+#define MSC01_PCI_SC2PIOMSKL_OFS 0x0258
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SC2PIOMAPL_OFS 0x0268
+#define MSC01_PCI_P2SCMSKL_OFS 0x0308
+#define MSC01_PCI_P2SCMAPL_OFS 0x0318
+#define MSC01_PCI_INTCFG_OFS 0x0600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_OFS 0x0608
+#define MSC01_PCI_CFGADDR_OFS 0x0610
+#define MSC01_PCI_CFGDATA_OFS 0x0618
+#define MSC01_PCI_IACK_OFS 0x0620
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD0_OFS 0x2000  
+#define MSC01_PCI_HEAD1_OFS 0x2008  
+#define MSC01_PCI_HEAD2_OFS 0x2010  
+#define MSC01_PCI_HEAD3_OFS 0x2018  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD4_OFS 0x2020  
+#define MSC01_PCI_HEAD5_OFS 0x2028  
+#define MSC01_PCI_HEAD6_OFS 0x2030  
+#define MSC01_PCI_HEAD7_OFS 0x2038  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD8_OFS 0x2040  
+#define MSC01_PCI_HEAD9_OFS 0x2048  
+#define MSC01_PCI_HEAD10_OFS 0x2050  
+#define MSC01_PCI_HEAD11_OFS 0x2058  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD12_OFS 0x2060  
+#define MSC01_PCI_HEAD13_OFS 0x2068  
+#define MSC01_PCI_HEAD14_OFS 0x2070  
+#define MSC01_PCI_HEAD15_OFS 0x2078  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_BAR0_OFS 0x2220
+#define MSC01_PCI_CFG_OFS 0x2380
+#define MSC01_PCI_SWAP_OFS 0x2388
+#define MSC01_PCI_ID_ID_SHF 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_ID_ID_MSK 0x00ff0000
+#define MSC01_PCI_ID_ID_HOSTBRIDGE 82
+#define MSC01_PCI_ID_MAR_SHF 8
+#define MSC01_PCI_ID_MAR_MSK 0x0000ff00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_ID_MIR_SHF 0
+#define MSC01_PCI_ID_MIR_MSK 0x000000ff
+#define MSC01_PCI_SC2PMBASL_BAS_SHF 24
+#define MSC01_PCI_SC2PMBASL_BAS_MSK 0xff000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SC2PMMSKL_MSK_SHF 24
+#define MSC01_PCI_SC2PMMSKL_MSK_MSK 0xff000000
+#define MSC01_PCI_SC2PMMAPL_MAP_SHF 24
+#define MSC01_PCI_SC2PMMAPL_MAP_MSK 0xff000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SC2PIOBASL_BAS_SHF 24
+#define MSC01_PCI_SC2PIOBASL_BAS_MSK 0xff000000
+#define MSC01_PCI_SC2PIOMSKL_MSK_SHF 24
+#define MSC01_PCI_SC2PIOMSKL_MSK_MSK 0xff000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SC2PIOMAPL_MAP_SHF 24
+#define MSC01_PCI_SC2PIOMAPL_MAP_MSK 0xff000000
+#define MSC01_PCI_P2SCMSKL_MSK_SHF 24
+#define MSC01_PCI_P2SCMSKL_MSK_MSK 0xff000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_P2SCMAPL_MAP_SHF 24
+#define MSC01_PCI_P2SCMAPL_MAP_MSK 0xff000000
+#define MSC01_PCI_INTCFG_RST_SHF 10
+#define MSC01_PCI_INTCFG_RST_MSK 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_RST_BIT 0x00000400
+#define MSC01_PCI_INTCFG_MWE_SHF 9
+#define MSC01_PCI_INTCFG_MWE_MSK 0x00000200
+#define MSC01_PCI_INTCFG_MWE_BIT 0x00000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_DTO_SHF 8
+#define MSC01_PCI_INTCFG_DTO_MSK 0x00000100
+#define MSC01_PCI_INTCFG_DTO_BIT 0x00000100
+#define MSC01_PCI_INTCFG_MA_SHF 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_MA_MSK 0x00000080
+#define MSC01_PCI_INTCFG_MA_BIT 0x00000080
+#define MSC01_PCI_INTCFG_TA_SHF 6
+#define MSC01_PCI_INTCFG_TA_MSK 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_TA_BIT 0x00000040
+#define MSC01_PCI_INTCFG_RTY_SHF 5
+#define MSC01_PCI_INTCFG_RTY_MSK 0x00000020
+#define MSC01_PCI_INTCFG_RTY_BIT 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_MWP_SHF 4
+#define MSC01_PCI_INTCFG_MWP_MSK 0x00000010
+#define MSC01_PCI_INTCFG_MWP_BIT 0x00000010
+#define MSC01_PCI_INTCFG_MRP_SHF 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_MRP_MSK 0x00000008
+#define MSC01_PCI_INTCFG_MRP_BIT 0x00000008
+#define MSC01_PCI_INTCFG_SWP_SHF 2
+#define MSC01_PCI_INTCFG_SWP_MSK 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_SWP_BIT 0x00000004
+#define MSC01_PCI_INTCFG_SRP_SHF 1
+#define MSC01_PCI_INTCFG_SRP_MSK 0x00000002
+#define MSC01_PCI_INTCFG_SRP_BIT 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTCFG_SE_SHF 0
+#define MSC01_PCI_INTCFG_SE_MSK 0x00000001
+#define MSC01_PCI_INTCFG_SE_BIT 0x00000001
+#define MSC01_PCI_INTSTAT_RST_SHF 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_RST_MSK 0x00000400
+#define MSC01_PCI_INTSTAT_RST_BIT 0x00000400
+#define MSC01_PCI_INTSTAT_MWE_SHF 9
+#define MSC01_PCI_INTSTAT_MWE_MSK 0x00000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_MWE_BIT 0x00000200
+#define MSC01_PCI_INTSTAT_DTO_SHF 8
+#define MSC01_PCI_INTSTAT_DTO_MSK 0x00000100
+#define MSC01_PCI_INTSTAT_DTO_BIT 0x00000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_MA_SHF 7
+#define MSC01_PCI_INTSTAT_MA_MSK 0x00000080
+#define MSC01_PCI_INTSTAT_MA_BIT 0x00000080
+#define MSC01_PCI_INTSTAT_TA_SHF 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_TA_MSK 0x00000040
+#define MSC01_PCI_INTSTAT_TA_BIT 0x00000040
+#define MSC01_PCI_INTSTAT_RTY_SHF 5
+#define MSC01_PCI_INTSTAT_RTY_MSK 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_RTY_BIT 0x00000020
+#define MSC01_PCI_INTSTAT_MWP_SHF 4
+#define MSC01_PCI_INTSTAT_MWP_MSK 0x00000010
+#define MSC01_PCI_INTSTAT_MWP_BIT 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_MRP_SHF 3
+#define MSC01_PCI_INTSTAT_MRP_MSK 0x00000008
+#define MSC01_PCI_INTSTAT_MRP_BIT 0x00000008
+#define MSC01_PCI_INTSTAT_SWP_SHF 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_SWP_MSK 0x00000004
+#define MSC01_PCI_INTSTAT_SWP_BIT 0x00000004
+#define MSC01_PCI_INTSTAT_SRP_SHF 1
+#define MSC01_PCI_INTSTAT_SRP_MSK 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_INTSTAT_SRP_BIT 0x00000002
+#define MSC01_PCI_INTSTAT_SE_SHF 0
+#define MSC01_PCI_INTSTAT_SE_MSK 0x00000001
+#define MSC01_PCI_INTSTAT_SE_BIT 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFGADDR_BNUM_SHF 16
+#define MSC01_PCI_CFGADDR_BNUM_MSK 0x00ff0000
+#define MSC01_PCI_CFGADDR_DNUM_SHF 11
+#define MSC01_PCI_CFGADDR_DNUM_MSK 0x0000f800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFGADDR_FNUM_SHF 8
+#define MSC01_PCI_CFGADDR_FNUM_MSK 0x00000700
+#define MSC01_PCI_CFGADDR_RNUM_SHF 2
+#define MSC01_PCI_CFGADDR_RNUM_MSK 0x000000fc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFGDATA_DATA_SHF 0
+#define MSC01_PCI_CFGDATA_DATA_MSK 0xffffffff
+#define MSC01_PCI_BAR0_SIZE_SHF 4
+#define MSC01_PCI_BAR0_SIZE_MSK 0xfffffff0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_BAR0_P_SHF 3
+#define MSC01_PCI_BAR0_P_MSK 0x00000008
+#define MSC01_PCI_BAR0_P_BIT MSC01_PCI_BAR0_P_MSK
+#define MSC01_PCI_BAR0_D_SHF 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_BAR0_D_MSK 0x00000006
+#define MSC01_PCI_BAR0_T_SHF 0
+#define MSC01_PCI_BAR0_T_MSK 0x00000001
+#define MSC01_PCI_BAR0_T_BIT MSC01_PCI_BAR0_T_MSK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFG_RA_SHF 17
+#define MSC01_PCI_CFG_RA_MSK 0x00020000
+#define MSC01_PCI_CFG_RA_BIT MSC01_PCI_CFG_RA_MSK
+#define MSC01_PCI_CFG_G_SHF 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFG_G_MSK 0x00010000
+#define MSC01_PCI_CFG_G_BIT MSC01_PCI_CFG_G_MSK
+#define MSC01_PCI_CFG_EN_SHF 15
+#define MSC01_PCI_CFG_EN_MSK 0x00008000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFG_EN_BIT MSC01_PCI_CFG_EN_MSK
+#define MSC01_PCI_CFG_MAXRTRY_SHF 0
+#define MSC01_PCI_CFG_MAXRTRY_MSK 0x00000fff
+#define MSC01_PCI_SWAP_IO_SHF 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SWAP_IO_MSK 0x000c0000
+#define MSC01_PCI_SWAP_MEM_SHF 16
+#define MSC01_PCI_SWAP_MEM_MSK 0x00030000
+#define MSC01_PCI_SWAP_BAR0_SHF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SWAP_BAR0_MSK 0x00000003
+#define MSC01_PCI_SWAP_NOSWAP 0
+#define MSC01_PCI_SWAP_BYTESWAP 1
+#define MIPS_MSC01_PCI_REG_BASE 0x1bd00000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_SOCITSC_PCI_REG_BASE 0x1ff10000
+#define MSC01_PCI_REG_BASE _pcictrl_msc
+#define MSC_WRITE(reg, data) do { *(volatile u32 *)(reg) = data; } while (0)
+#define MSC_READ(reg, data) do { data = *(volatile u32 *)(reg); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_ID (MSC01_PCI_REG_BASE + MSC01_PCI_ID_OFS)
+#define MSC01_PCI_SC2PMBASL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PMBASL_OFS)
+#define MSC01_PCI_SC2PMMSKL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PMMSKL_OFS)
+#define MSC01_PCI_SC2PMMAPL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PMMAPL_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SC2PIOBASL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PIOBASL_OFS)
+#define MSC01_PCI_SC2PIOMSKL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PIOMSKL_OFS)
+#define MSC01_PCI_SC2PIOMAPL (MSC01_PCI_REG_BASE + MSC01_PCI_SC2PIOMAPL_OFS)
+#define MSC01_PCI_P2SCMSKL (MSC01_PCI_REG_BASE + MSC01_PCI_P2SCMSKL_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_P2SCMAPL (MSC01_PCI_REG_BASE + MSC01_PCI_P2SCMAPL_OFS)
+#define MSC01_PCI_INTCFG (MSC01_PCI_REG_BASE + MSC01_PCI_INTCFG_OFS)
+#define MSC01_PCI_INTSTAT (MSC01_PCI_REG_BASE + MSC01_PCI_INTSTAT_OFS)
+#define MSC01_PCI_CFGADDR (MSC01_PCI_REG_BASE + MSC01_PCI_CFGADDR_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_CFGDATA (MSC01_PCI_REG_BASE + MSC01_PCI_CFGDATA_OFS)
+#define MSC01_PCI_IACK (MSC01_PCI_REG_BASE + MSC01_PCI_IACK_OFS)
+#define MSC01_PCI_HEAD0 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD0_OFS)
+#define MSC01_PCI_HEAD1 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD1_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD2 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD2_OFS)
+#define MSC01_PCI_HEAD3 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD3_OFS)
+#define MSC01_PCI_HEAD4 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD4_OFS)
+#define MSC01_PCI_HEAD5 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD5_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD6 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD6_OFS)
+#define MSC01_PCI_HEAD7 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD7_OFS)
+#define MSC01_PCI_HEAD8 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD8_OFS)
+#define MSC01_PCI_HEAD9 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD9_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD10 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD10_OFS)
+#define MSC01_PCI_HEAD11 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
+#define MSC01_PCI_HEAD12 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
+#define MSC01_PCI_HEAD13 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_HEAD14 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
+#define MSC01_PCI_HEAD15 (MSC01_PCI_REG_BASE + MSC01_PCI_HEAD11_OFS)
+#define MSC01_PCI_BAR0 (MSC01_PCI_REG_BASE + MSC01_PCI_BAR0_OFS)
+#define MSC01_PCI_CFG (MSC01_PCI_REG_BASE + MSC01_PCI_CFG_OFS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSC01_PCI_SWAP (MSC01_PCI_REG_BASE + MSC01_PCI_SWAP_OFS)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mips_mt.h b/ndk/platforms/android-9/arch-mips/include/asm/mips_mt.h
new file mode 100644
index 0000000..90f726a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mips_mt.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_MT_H
+#define __ASM_MIPS_MT_H
+#include <linux/cpumask.h>
+struct class;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mipsmtregs.h b/ndk/platforms/android-9/arch-mips/include/asm/mipsmtregs.h
new file mode 100644
index 0000000..1d4f342
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mipsmtregs.h
@@ -0,0 +1,214 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MIPSMTREGS_H
+#define _ASM_MIPSMTREGS_H
+#include <asm/mipsregs.h>
+#include <asm/war.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+#define read_c0_mvpcontrol() __read_32bit_c0_register($0, 1)
+#define write_c0_mvpcontrol(val) __write_32bit_c0_register($0, 1, val)
+#define read_c0_mvpconf0() __read_32bit_c0_register($0, 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_mvpconf1() __read_32bit_c0_register($0, 3)
+#define read_c0_vpecontrol() __read_32bit_c0_register($1, 1)
+#define write_c0_vpecontrol(val) __write_32bit_c0_register($1, 1, val)
+#define read_c0_vpeconf0() __read_32bit_c0_register($1, 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_vpeconf0(val) __write_32bit_c0_register($1, 2, val)
+#define read_c0_tcstatus() __read_32bit_c0_register($2, 1)
+#define write_c0_tcstatus(val) __write_32bit_c0_register($2, 1, val)
+#define read_c0_tcbind() __read_32bit_c0_register($2, 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_tccontext() __read_32bit_c0_register($2, 5)
+#define write_c0_tccontext(val) __write_32bit_c0_register($2, 5, val)
+#else
+#define CP0_MVPCONTROL $0, 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_MVPCONF0 $0, 2
+#define CP0_MVPCONF1 $0, 3
+#define CP0_VPECONTROL $1, 1
+#define CP0_VPECONF0 $1, 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_VPECONF1 $1, 3
+#define CP0_YQMASK $1, 4
+#define CP0_VPESCHEDULE $1, 5
+#define CP0_VPESCHEFBK $1, 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_TCSTATUS $2, 1
+#define CP0_TCBIND $2, 2
+#define CP0_TCRESTART $2, 3
+#define CP0_TCHALT $2, 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_TCCONTEXT $2, 5
+#define CP0_TCSCHEDULE $2, 6
+#define CP0_TCSCHEFBK $2, 7
+#define CP0_SRSCONF0 $6, 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_SRSCONF1 $6, 2
+#define CP0_SRSCONF2 $6, 3
+#define CP0_SRSCONF3 $6, 4
+#define CP0_SRSCONF4 $6, 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define MVPCONTROL_EVP (_ULCAST_(1))
+#define MVPCONTROL_VPC_SHIFT 1
+#define MVPCONTROL_VPC (_ULCAST_(1) << MVPCONTROL_VPC_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MVPCONTROL_STLB_SHIFT 2
+#define MVPCONTROL_STLB (_ULCAST_(1) << MVPCONTROL_STLB_SHIFT)
+#define MVPCONF0_PTC_SHIFT 0
+#define MVPCONF0_PTC ( _ULCAST_(0xff))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MVPCONF0_PVPE_SHIFT 10
+#define MVPCONF0_PVPE ( _ULCAST_(0xf) << MVPCONF0_PVPE_SHIFT)
+#define MVPCONF0_TCA_SHIFT 15
+#define MVPCONF0_TCA ( _ULCAST_(1) << MVPCONF0_TCA_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MVPCONF0_PTLBE_SHIFT 16
+#define MVPCONF0_PTLBE (_ULCAST_(0x3ff) << MVPCONF0_PTLBE_SHIFT)
+#define MVPCONF0_TLBS_SHIFT 29
+#define MVPCONF0_TLBS (_ULCAST_(1) << MVPCONF0_TLBS_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MVPCONF0_M_SHIFT 31
+#define MVPCONF0_M (_ULCAST_(0x1) << MVPCONF0_M_SHIFT)
+#define CONFIG3_MT_SHIFT 2
+#define CONFIG3_MT (_ULCAST_(1) << CONFIG3_MT_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VPECONTROL_TARGTC (_ULCAST_(0xff))
+#define VPECONTROL_TE_SHIFT 15
+#define VPECONTROL_TE (_ULCAST_(1) << VPECONTROL_TE_SHIFT)
+#define VPECONTROL_EXCPT_SHIFT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VPECONTROL_EXCPT (_ULCAST_(0x7) << VPECONTROL_EXCPT_SHIFT)
+#define THREX_TU 0
+#define THREX_TO 1
+#define THREX_IYQ 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define THREX_GSX 3
+#define THREX_YSCH 4
+#define THREX_GSSCH 5
+#define VPECONTROL_GSI_SHIFT 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VPECONTROL_GSI (_ULCAST_(1) << VPECONTROL_GSI_SHIFT)
+#define VPECONTROL_YSI_SHIFT 21
+#define VPECONTROL_YSI (_ULCAST_(1) << VPECONTROL_YSI_SHIFT)
+#define VPECONF0_VPA_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VPECONF0_VPA (_ULCAST_(1) << VPECONF0_VPA_SHIFT)
+#define VPECONF0_MVP_SHIFT 1
+#define VPECONF0_MVP (_ULCAST_(1) << VPECONF0_MVP_SHIFT)
+#define VPECONF0_XTC_SHIFT 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VPECONF0_XTC (_ULCAST_(0xff) << VPECONF0_XTC_SHIFT)
+#define TCSTATUS_TASID (_ULCAST_(0xff))
+#define TCSTATUS_IXMT_SHIFT 10
+#define TCSTATUS_IXMT (_ULCAST_(1) << TCSTATUS_IXMT_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSTATUS_TKSU_SHIFT 11
+#define TCSTATUS_TKSU (_ULCAST_(3) << TCSTATUS_TKSU_SHIFT)
+#define TCSTATUS_A_SHIFT 13
+#define TCSTATUS_A (_ULCAST_(1) << TCSTATUS_A_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSTATUS_DA_SHIFT 15
+#define TCSTATUS_DA (_ULCAST_(1) << TCSTATUS_DA_SHIFT)
+#define TCSTATUS_DT_SHIFT 20
+#define TCSTATUS_DT (_ULCAST_(1) << TCSTATUS_DT_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSTATUS_TDS_SHIFT 21
+#define TCSTATUS_TDS (_ULCAST_(1) << TCSTATUS_TDS_SHIFT)
+#define TCSTATUS_TSST_SHIFT 22
+#define TCSTATUS_TSST (_ULCAST_(1) << TCSTATUS_TSST_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSTATUS_RNST_SHIFT 23
+#define TCSTATUS_RNST (_ULCAST_(3) << TCSTATUS_RNST_SHIFT)
+#define TC_RUNNING 0
+#define TC_WAITING 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TC_YIELDING 2
+#define TC_GATED 3
+#define TCSTATUS_TMX_SHIFT 27
+#define TCSTATUS_TMX (_ULCAST_(1) << TCSTATUS_TMX_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCBIND_CURVPE_SHIFT 0
+#define TCBIND_CURVPE (_ULCAST_(0xf))
+#define TCBIND_CURTC_SHIFT 21
+#define TCBIND_CURTC (_ULCAST_(0xff) << TCBIND_CURTC_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCHALT_H (_ULCAST_(1))
+#ifndef __ASSEMBLY__
+#define EVPE_ENABLE MVPCONTROL_EVP
+#define EMT_ENABLE VPECONTROL_TE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mftc0(rt,sel)  ({   unsigned long __res;     __asm__ __volatile__(   "	.set	push					\n"   "	.set	mips32r2				\n"   "	.set	noat					\n"   "	# mftc0	$1, $" #rt ", " #sel "			\n"   "	.word	0x41000800 | (" #rt " << 16) | " #sel "	\n"   "	move	%0, $1					\n"   "	.set	pop					\n"   : "=r" (__res));     __res;  })
+#define mftgpr(rt)  ({   unsigned long __res;     __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	.set	mips32r2				\n"   "	# mftgpr $1," #rt "				\n"   "	.word	0x41000820 | (" #rt " << 16)		\n"   "	move	%0, $1					\n"   "	.set	pop					\n"   : "=r" (__res));     __res;  })
+#define mftr(rt, u, sel)  ({   unsigned long __res;     __asm__ __volatile__(   "	mftr	%0, " #rt ", " #u ", " #sel "		\n"   : "=r" (__res));     __res;  })
+#define mttgpr(rd,v)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	mips32r2				\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mttgpr $1, " #rd "				\n"   "	.word	0x41810020 | (" #rd " << 11)		\n"   "	.set	pop					\n"   : : "r" (v));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mttc0(rd, sel, v)  ({   __asm__ __volatile__(   "	.set	push					\n"   "	.set	mips32r2				\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mttc0 %0," #rd ", " #sel "			\n"   "	.word	0x41810000 | (" #rd " << 11) | " #sel "	\n"   "	.set	pop					\n"   :   : "r" (v));  })
+#define mttr(rd, u, sel, v)  ({   __asm__ __volatile__(   "mttr	%0," #rd ", " #u ", " #sel   : : "r" (v));  })
+#define settc(tc)  do {   write_c0_vpecontrol((read_c0_vpecontrol()&~VPECONTROL_TARGTC) | (tc));   ehb();  } while (0)
+#define read_vpe_c0_vpecontrol() mftc0(1, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_vpe_c0_vpecontrol(val) mttc0(1, 1, val)
+#define read_vpe_c0_vpeconf0() mftc0(1, 2)
+#define write_vpe_c0_vpeconf0(val) mttc0(1, 2, val)
+#define read_vpe_c0_count() mftc0(9, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_vpe_c0_count(val) mttc0(9, 0, val)
+#define read_vpe_c0_status() mftc0(12, 0)
+#define write_vpe_c0_status(val) mttc0(12, 0, val)
+#define read_vpe_c0_cause() mftc0(13, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_vpe_c0_cause(val) mttc0(13, 0, val)
+#define read_vpe_c0_config() mftc0(16, 0)
+#define write_vpe_c0_config(val) mttc0(16, 0, val)
+#define read_vpe_c0_config1() mftc0(16, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_vpe_c0_config1(val) mttc0(16, 1, val)
+#define read_vpe_c0_config7() mftc0(16, 7)
+#define write_vpe_c0_config7(val) mttc0(16, 7, val)
+#define read_vpe_c0_ebase() mftc0(15, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_vpe_c0_ebase(val) mttc0(15, 1, val)
+#define write_vpe_c0_compare(val) mttc0(11, 0, val)
+#define read_vpe_c0_badvaddr() mftc0(8, 0)
+#define read_vpe_c0_epc() mftc0(14, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_vpe_c0_epc(val) mttc0(14, 0, val)
+#define read_tc_c0_tcstatus() mftc0(2, 1)
+#define write_tc_c0_tcstatus(val) mttc0(2, 1, val)
+#define read_tc_c0_tcbind() mftc0(2, 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_tc_c0_tcbind(val) mttc0(2, 2, val)
+#define read_tc_c0_tcrestart() mftc0(2, 3)
+#define write_tc_c0_tcrestart(val) mttc0(2, 3, val)
+#define read_tc_c0_tchalt() mftc0(2, 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_tc_c0_tchalt(val) mttc0(2, 4, val)
+#define read_tc_c0_tccontext() mftc0(2, 5)
+#define write_tc_c0_tccontext(val) mttc0(2, 5, val)
+#define read_tc_gpr_sp() mftgpr(29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_tc_gpr_sp(val) mttgpr(29, val)
+#define read_tc_gpr_gp() mftgpr(28)
+#define write_tc_gpr_gp(val) mttgpr(28, val)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mipsregs.h b/ndk/platforms/android-9/arch-mips/include/asm/mipsregs.h
new file mode 100644
index 0000000..0976939
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mipsregs.h
@@ -0,0 +1,721 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MIPSREGS_H
+#define _ASM_MIPSREGS_H
+#include <linux/linkage.h>
+#include <asm/hazards.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/war.h>
+#ifndef __STR
+#define __STR(x) #x
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef STR
+#define STR(x) __STR(x)
+#endif
+#ifdef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _ULCAST_
+#else
+#define _ULCAST_ (unsigned long)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_INDEX $0
+#define CP0_RANDOM $1
+#define CP0_ENTRYLO0 $2
+#define CP0_ENTRYLO1 $3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_CONF $3
+#define CP0_CONTEXT $4
+#define CP0_PAGEMASK $5
+#define CP0_WIRED $6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_INFO $7
+#define CP0_BADVADDR $8
+#define CP0_COUNT $9
+#define CP0_ENTRYHI $10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_COMPARE $11
+#define CP0_STATUS $12
+#define CP0_CAUSE $13
+#define CP0_EPC $14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_PRID $15
+#define CP0_CONFIG $16
+#define CP0_LLADDR $17
+#define CP0_WATCHLO $18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_WATCHHI $19
+#define CP0_XCONTEXT $20
+#define CP0_FRAMEMASK $21
+#define CP0_DIAGNOSTIC $22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_DEBUG $23
+#define CP0_DEPC $24
+#define CP0_PERFORMANCE $25
+#define CP0_ECC $26
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_CACHEERR $27
+#define CP0_TAGLO $28
+#define CP0_TAGHI $29
+#define CP0_ERROREPC $30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_DESAVE $31
+#define CP0_IBASE $0
+#define CP0_IBOUND $1
+#define CP0_DBASE $2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_DBOUND $3
+#define CP0_CALG $17
+#define CP0_IWATCH $18
+#define CP0_DWATCH $19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_S1_DERRADDR0 $26
+#define CP0_S1_DERRADDR1 $27
+#define CP0_S1_INTCONTROL $20
+#define CP0_S2_SRSCTL $12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CP0_S3_SRSMAP $12  
+#define CP0_TX39_CACHE $7
+#define CP1_REVISION $0
+#define CP1_STATUS $31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_FLUSH 0x01000000  
+#define FPU_CSR_COND 0x00800000  
+#define FPU_CSR_COND0 0x00800000  
+#define FPU_CSR_COND1 0x02000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_COND2 0x04000000  
+#define FPU_CSR_COND3 0x08000000  
+#define FPU_CSR_COND4 0x10000000  
+#define FPU_CSR_COND5 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_COND6 0x40000000  
+#define FPU_CSR_COND7 0x80000000  
+#define FPU_CSR_ALL_X 0x0003f000
+#define FPU_CSR_UNI_X 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_INV_X 0x00010000
+#define FPU_CSR_DIV_X 0x00008000
+#define FPU_CSR_OVF_X 0x00004000
+#define FPU_CSR_UDF_X 0x00002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_INE_X 0x00001000
+#define FPU_CSR_ALL_E 0x00000f80
+#define FPU_CSR_INV_E 0x00000800
+#define FPU_CSR_DIV_E 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_OVF_E 0x00000200
+#define FPU_CSR_UDF_E 0x00000100
+#define FPU_CSR_INE_E 0x00000080
+#define FPU_CSR_ALL_S 0x0000007c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_INV_S 0x00000040
+#define FPU_CSR_DIV_S 0x00000020
+#define FPU_CSR_OVF_S 0x00000010
+#define FPU_CSR_UDF_S 0x00000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_INE_S 0x00000004
+#define FPU_CSR_RN 0x0  
+#define FPU_CSR_RZ 0x1  
+#define FPU_CSR_RU 0x2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPU_CSR_RD 0x3  
+#define PM_4K 0x00000000
+#define PM_16K 0x00006000
+#define PM_64K 0x0001e000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PM_256K 0x0007e000
+#define PM_1M 0x001fe000
+#define PM_4M 0x007fe000
+#define PM_16M 0x01ffe000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PM_64M 0x07ffe000
+#define PM_256M 0x1fffe000
+#error Bad page size configuration!
+#define PL_4K 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PL_16K 14
+#define PL_64K 16
+#define PL_256K 18
+#define PL_1M 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PL_4M 22
+#define PL_16M 24
+#define PL_64M 26
+#define PL_256M 28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IE_SW0 (_ULCAST_(1) << 8)
+#define IE_SW1 (_ULCAST_(1) << 9)
+#define IE_IRQ0 (_ULCAST_(1) << 10)
+#define IE_IRQ1 (_ULCAST_(1) << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IE_IRQ2 (_ULCAST_(1) << 12)
+#define IE_IRQ3 (_ULCAST_(1) << 13)
+#define IE_IRQ4 (_ULCAST_(1) << 14)
+#define IE_IRQ5 (_ULCAST_(1) << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define C_SW0 (_ULCAST_(1) << 8)
+#define C_SW1 (_ULCAST_(1) << 9)
+#define C_IRQ0 (_ULCAST_(1) << 10)
+#define C_IRQ1 (_ULCAST_(1) << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define C_IRQ2 (_ULCAST_(1) << 12)
+#define C_IRQ3 (_ULCAST_(1) << 13)
+#define C_IRQ4 (_ULCAST_(1) << 14)
+#define C_IRQ5 (_ULCAST_(1) << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_IE 0x00000001
+#define ST0_EXL 0x00000002
+#define ST0_ERL 0x00000004
+#define ST0_KSU 0x00000018
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KSU_USER 0x00000010
+#define KSU_SUPERVISOR 0x00000008
+#define KSU_KERNEL 0x00000000
+#define ST0_UX 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_SX 0x00000040
+#define ST0_KX 0x00000080
+#define ST0_DE 0x00010000
+#define ST0_CE 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_CO 0x08000000
+#define ST0_IEC 0x00000001
+#define ST0_KUC 0x00000002
+#define ST0_IEP 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_KUP 0x00000008
+#define ST0_IEO 0x00000010
+#define ST0_KUO 0x00000020
+#define ST0_ISC 0x00010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_SWC 0x00020000
+#define ST0_CM 0x00080000
+#define ST0_UM (_ULCAST_(1) << 4)
+#define ST0_IL (_ULCAST_(1) << 23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_DL (_ULCAST_(1) << 24)
+#define ST0_MX 0x01000000
+#define TX39_CONF_ICS_SHIFT 19
+#define TX39_CONF_ICS_MASK 0x00380000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_ICS_1KB 0x00000000
+#define TX39_CONF_ICS_2KB 0x00080000
+#define TX39_CONF_ICS_4KB 0x00100000
+#define TX39_CONF_ICS_8KB 0x00180000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_ICS_16KB 0x00200000
+#define TX39_CONF_DCS_SHIFT 16
+#define TX39_CONF_DCS_MASK 0x00070000
+#define TX39_CONF_DCS_1KB 0x00000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_DCS_2KB 0x00010000
+#define TX39_CONF_DCS_4KB 0x00020000
+#define TX39_CONF_DCS_8KB 0x00030000
+#define TX39_CONF_DCS_16KB 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_CWFON 0x00004000
+#define TX39_CONF_WBON 0x00002000
+#define TX39_CONF_RF_SHIFT 10
+#define TX39_CONF_RF_MASK 0x00000c00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_DOZE 0x00000200
+#define TX39_CONF_HALT 0x00000100
+#define TX39_CONF_LOCK 0x00000080
+#define TX39_CONF_ICE 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_DCE 0x00000010
+#define TX39_CONF_IRSIZE_SHIFT 2
+#define TX39_CONF_IRSIZE_MASK 0x0000000c
+#define TX39_CONF_DRSIZE_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX39_CONF_DRSIZE_MASK 0x00000003
+#define ST0_IM 0x0000ff00
+#define STATUSB_IP0 8
+#define STATUSF_IP0 (_ULCAST_(1) << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP1 9
+#define STATUSF_IP1 (_ULCAST_(1) << 9)
+#define STATUSB_IP2 10
+#define STATUSF_IP2 (_ULCAST_(1) << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP3 11
+#define STATUSF_IP3 (_ULCAST_(1) << 11)
+#define STATUSB_IP4 12
+#define STATUSF_IP4 (_ULCAST_(1) << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP5 13
+#define STATUSF_IP5 (_ULCAST_(1) << 13)
+#define STATUSB_IP6 14
+#define STATUSF_IP6 (_ULCAST_(1) << 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP7 15
+#define STATUSF_IP7 (_ULCAST_(1) << 15)
+#define STATUSB_IP8 0
+#define STATUSF_IP8 (_ULCAST_(1) << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP9 1
+#define STATUSF_IP9 (_ULCAST_(1) << 1)
+#define STATUSB_IP10 2
+#define STATUSF_IP10 (_ULCAST_(1) << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP11 3
+#define STATUSF_IP11 (_ULCAST_(1) << 3)
+#define STATUSB_IP12 4
+#define STATUSF_IP12 (_ULCAST_(1) << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP13 5
+#define STATUSF_IP13 (_ULCAST_(1) << 5)
+#define STATUSB_IP14 6
+#define STATUSF_IP14 (_ULCAST_(1) << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STATUSB_IP15 7
+#define STATUSF_IP15 (_ULCAST_(1) << 7)
+#define ST0_CH 0x00040000
+#define ST0_SR 0x00100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_TS 0x00200000
+#define ST0_BEV 0x00400000
+#define ST0_RE 0x02000000
+#define ST0_FR 0x04000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_CU 0xf0000000
+#define ST0_CU0 0x10000000
+#define ST0_CU1 0x20000000
+#define ST0_CU2 0x40000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ST0_CU3 0x80000000
+#define ST0_XX 0x80000000  
+#define CAUSEB_EXCCODE 2
+#define CAUSEF_EXCCODE (_ULCAST_(31) << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSEB_IP 8
+#define CAUSEF_IP (_ULCAST_(255) << 8)
+#define CAUSEB_IP0 8
+#define CAUSEF_IP0 (_ULCAST_(1) << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSEB_IP1 9
+#define CAUSEF_IP1 (_ULCAST_(1) << 9)
+#define CAUSEB_IP2 10
+#define CAUSEF_IP2 (_ULCAST_(1) << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSEB_IP3 11
+#define CAUSEF_IP3 (_ULCAST_(1) << 11)
+#define CAUSEB_IP4 12
+#define CAUSEF_IP4 (_ULCAST_(1) << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSEB_IP5 13
+#define CAUSEF_IP5 (_ULCAST_(1) << 13)
+#define CAUSEB_IP6 14
+#define CAUSEF_IP6 (_ULCAST_(1) << 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSEB_IP7 15
+#define CAUSEF_IP7 (_ULCAST_(1) << 15)
+#define CAUSEB_IV 23
+#define CAUSEF_IV (_ULCAST_(1) << 23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSEB_CE 28
+#define CAUSEF_CE (_ULCAST_(3) << 28)
+#define CAUSEB_BD 31
+#define CAUSEF_BD (_ULCAST_(1) << 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CONF_CM_CACHABLE_NO_WA 0
+#define CONF_CM_CACHABLE_WA 1
+#define CONF_CM_UNCACHED 2
+#define CONF_CM_CACHABLE_NONCOHERENT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CONF_CM_CACHABLE_CE 4
+#define CONF_CM_CACHABLE_COW 5
+#define CONF_CM_CACHABLE_CUW 6
+#define CONF_CM_CACHABLE_ACCELERATED 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CONF_CM_CMASK 7
+#define CONF_BE (_ULCAST_(1) << 15)
+#define CONF_CU (_ULCAST_(1) << 3)
+#define CONF_DB (_ULCAST_(1) << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CONF_IB (_ULCAST_(1) << 5)
+#define CONF_DC (_ULCAST_(7) << 6)
+#define CONF_IC (_ULCAST_(7) << 9)
+#define CONF_EB (_ULCAST_(1) << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CONF_EM (_ULCAST_(1) << 14)
+#define CONF_SM (_ULCAST_(1) << 16)
+#define CONF_SC (_ULCAST_(1) << 17)
+#define CONF_EW (_ULCAST_(3) << 18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CONF_EP (_ULCAST_(15)<< 24)
+#define CONF_EC (_ULCAST_(7) << 28)
+#define CONF_CM (_ULCAST_(1) << 31)
+#define R4K_CONF_SW (_ULCAST_(1) << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R4K_CONF_SS (_ULCAST_(1) << 21)
+#define R4K_CONF_SB (_ULCAST_(3) << 22)
+#define R5K_CONF_SE (_ULCAST_(1) << 12)
+#define R5K_CONF_SS (_ULCAST_(3) << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RM7K_CONF_SE (_ULCAST_(1) << 3)
+#define RM7K_CONF_TE (_ULCAST_(1) << 12)
+#define RM7K_CONF_CLK (_ULCAST_(1) << 16)
+#define RM7K_CONF_TC (_ULCAST_(1) << 17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RM7K_CONF_SI (_ULCAST_(3) << 20)
+#define RM7K_CONF_SC (_ULCAST_(1) << 31)
+#define R10K_CONF_DN (_ULCAST_(3) << 3)
+#define R10K_CONF_CT (_ULCAST_(1) << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R10K_CONF_PE (_ULCAST_(1) << 6)
+#define R10K_CONF_PM (_ULCAST_(3) << 7)
+#define R10K_CONF_EC (_ULCAST_(15)<< 9)
+#define R10K_CONF_SB (_ULCAST_(1) << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R10K_CONF_SK (_ULCAST_(1) << 14)
+#define R10K_CONF_SS (_ULCAST_(7) << 16)
+#define R10K_CONF_SC (_ULCAST_(7) << 19)
+#define R10K_CONF_DC (_ULCAST_(7) << 26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R10K_CONF_IC (_ULCAST_(7) << 29)
+#define VR41_CONF_CS (_ULCAST_(1) << 12)
+#define VR41_CONF_P4K (_ULCAST_(1) << 13)
+#define VR41_CONF_BP (_ULCAST_(1) << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VR41_CONF_M16 (_ULCAST_(1) << 20)
+#define VR41_CONF_AD (_ULCAST_(1) << 23)
+#define R30XX_CONF_FDM (_ULCAST_(1) << 19)
+#define R30XX_CONF_REV (_ULCAST_(1) << 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R30XX_CONF_AC (_ULCAST_(1) << 23)
+#define R30XX_CONF_RF (_ULCAST_(1) << 24)
+#define R30XX_CONF_HALT (_ULCAST_(1) << 25)
+#define R30XX_CONF_FPINT (_ULCAST_(7) << 26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R30XX_CONF_DBR (_ULCAST_(1) << 29)
+#define R30XX_CONF_SB (_ULCAST_(1) << 30)
+#define R30XX_CONF_LOCK (_ULCAST_(1) << 31)
+#define TX49_CONF_DC (_ULCAST_(1) << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TX49_CONF_IC (_ULCAST_(1) << 17)  
+#define TX49_CONF_HALT (_ULCAST_(1) << 18)
+#define TX49_CONF_CWFON (_ULCAST_(1) << 27)
+#define MIPS_CONF_MT (_ULCAST_(7) << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF_AR (_ULCAST_(7) << 10)
+#define MIPS_CONF_AT (_ULCAST_(3) << 13)
+#define MIPS_CONF_M (_ULCAST_(1) << 31)
+#define MIPS_CONF1_FP (_ULCAST_(1) << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF1_EP (_ULCAST_(1) << 1)
+#define MIPS_CONF1_CA (_ULCAST_(1) << 2)
+#define MIPS_CONF1_WR (_ULCAST_(1) << 3)
+#define MIPS_CONF1_PC (_ULCAST_(1) << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF1_MD (_ULCAST_(1) << 5)
+#define MIPS_CONF1_C2 (_ULCAST_(1) << 6)
+#define MIPS_CONF1_DA (_ULCAST_(7) << 7)
+#define MIPS_CONF1_DL (_ULCAST_(7) << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF1_DS (_ULCAST_(7) << 13)
+#define MIPS_CONF1_IA (_ULCAST_(7) << 16)
+#define MIPS_CONF1_IL (_ULCAST_(7) << 19)
+#define MIPS_CONF1_IS (_ULCAST_(7) << 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF1_TLBS (_ULCAST_(63)<< 25)
+#define MIPS_CONF2_SA (_ULCAST_(15)<< 0)
+#define MIPS_CONF2_SL (_ULCAST_(15)<< 4)
+#define MIPS_CONF2_SS (_ULCAST_(15)<< 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF2_SU (_ULCAST_(15)<< 12)
+#define MIPS_CONF2_TA (_ULCAST_(15)<< 16)
+#define MIPS_CONF2_TL (_ULCAST_(15)<< 20)
+#define MIPS_CONF2_TS (_ULCAST_(15)<< 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF2_TU (_ULCAST_(7) << 28)
+#define MIPS_CONF3_TL (_ULCAST_(1) << 0)
+#define MIPS_CONF3_SM (_ULCAST_(1) << 1)
+#define MIPS_CONF3_MT (_ULCAST_(1) << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF3_SP (_ULCAST_(1) << 4)
+#define MIPS_CONF3_VINT (_ULCAST_(1) << 5)
+#define MIPS_CONF3_VEIC (_ULCAST_(1) << 6)
+#define MIPS_CONF3_LPA (_ULCAST_(1) << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_CONF3_DSP (_ULCAST_(1) << 10)
+#define MIPS_CONF3_ULRI (_ULCAST_(1) << 13)
+#define MIPS_CONF7_WII (_ULCAST_(1) << 31)
+#define MIPS_CONF7_RPS (_ULCAST_(1) << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_FPIR_S (_ULCAST_(1) << 16)
+#define MIPS_FPIR_D (_ULCAST_(1) << 17)
+#define MIPS_FPIR_PS (_ULCAST_(1) << 18)
+#define MIPS_FPIR_3D (_ULCAST_(1) << 19)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_FPIR_W (_ULCAST_(1) << 20)
+#define MIPS_FPIR_L (_ULCAST_(1) << 21)
+#define MIPS_FPIR_F64 (_ULCAST_(1) << 22)
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_r10k_perf_cntr(counter)  ({   unsigned int __res;   __asm__ __volatile__(   "mfpc\t%0, %1"   : "=r" (__res)   : "i" (counter));     __res;  })
+#define write_r10k_perf_cntr(counter,val)  do {   __asm__ __volatile__(   "mtpc\t%0, %1"   :   : "r" (val), "i" (counter));  } while (0)
+#define read_r10k_perf_event(counter)  ({   unsigned int __res;   __asm__ __volatile__(   "mfps\t%0, %1"   : "=r" (__res)   : "i" (counter));     __res;  })
+#define write_r10k_perf_cntl(counter,val)  do {   __asm__ __volatile__(   "mtps\t%0, %1"   :   : "r" (val), "i" (counter));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __read_32bit_c0_register(source, sel)  ({ int __res;   if (sel == 0)   __asm__ __volatile__(   "mfc0\t%0, " #source "\n\t"   : "=r" (__res));   else   __asm__ __volatile__(   ".set\tmips32\n\t"   "mfc0\t%0, " #source ", " #sel "\n\t"   ".set\tmips0\n\t"   : "=r" (__res));   __res;  })
+#define __read_64bit_c0_register(source, sel)  ({ unsigned long long __res;   if (sizeof(unsigned long) == 4)   __res = __read_64bit_c0_split(source, sel);   else if (sel == 0)   __asm__ __volatile__(   ".set\tmips3\n\t"   "dmfc0\t%0, " #source "\n\t"   ".set\tmips0"   : "=r" (__res));   else   __asm__ __volatile__(   ".set\tmips64\n\t"   "dmfc0\t%0, " #source ", " #sel "\n\t"   ".set\tmips0"   : "=r" (__res));   __res;  })
+#define __write_32bit_c0_register(register, sel, value)  do {   if (sel == 0)   __asm__ __volatile__(   "mtc0\t%z0, " #register "\n\t"   : : "Jr" ((unsigned int)(value)));   else   __asm__ __volatile__(   ".set\tmips32\n\t"   "mtc0\t%z0, " #register ", " #sel "\n\t"   ".set\tmips0"   : : "Jr" ((unsigned int)(value)));  } while (0)
+#define __write_64bit_c0_register(register, sel, value)  do {   if (sizeof(unsigned long) == 4)   __write_64bit_c0_split(register, sel, value);   else if (sel == 0)   __asm__ __volatile__(   ".set\tmips3\n\t"   "dmtc0\t%z0, " #register "\n\t"   ".set\tmips0"   : : "Jr" (value));   else   __asm__ __volatile__(   ".set\tmips64\n\t"   "dmtc0\t%z0, " #register ", " #sel "\n\t"   ".set\tmips0"   : : "Jr" (value));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __read_ulong_c0_register(reg, sel)   ((sizeof(unsigned long) == 4) ?   (unsigned long) __read_32bit_c0_register(reg, sel) :   (unsigned long) __read_64bit_c0_register(reg, sel))
+#define __write_ulong_c0_register(reg, sel, val)  do {   if (sizeof(unsigned long) == 4)   __write_32bit_c0_register(reg, sel, val);   else   __write_64bit_c0_register(reg, sel, val);  } while (0)
+#define __read_32bit_c0_ctrl_register(source)  ({ int __res;   __asm__ __volatile__(   "cfc0\t%0, " #source "\n\t"   : "=r" (__res));   __res;  })
+#define __write_32bit_c0_ctrl_register(register, value)  do {   __asm__ __volatile__(   "ctc0\t%z0, " #register "\n\t"   : : "Jr" ((unsigned int)(value)));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __read_64bit_c0_split(source, sel)  ({   unsigned long long __val;   unsigned long __flags;     local_irq_save(__flags);   if (sel == 0)   __asm__ __volatile__(   ".set\tmips64\n\t"   "dmfc0\t%M0, " #source "\n\t"   "dsll\t%L0, %M0, 32\n\t"   "dsrl\t%M0, %M0, 32\n\t"   "dsrl\t%L0, %L0, 32\n\t"   ".set\tmips0"   : "=r" (__val));   else   __asm__ __volatile__(   ".set\tmips64\n\t"   "dmfc0\t%M0, " #source ", " #sel "\n\t"   "dsll\t%L0, %M0, 32\n\t"   "dsrl\t%M0, %M0, 32\n\t"   "dsrl\t%L0, %L0, 32\n\t"   ".set\tmips0"   : "=r" (__val));   local_irq_restore(__flags);     __val;  })
+#define __write_64bit_c0_split(source, sel, val)  do {   unsigned long __flags;     local_irq_save(__flags);   if (sel == 0)   __asm__ __volatile__(   ".set\tmips64\n\t"   "dsll\t%L0, %L0, 32\n\t"   "dsrl\t%L0, %L0, 32\n\t"   "dsll\t%M0, %M0, 32\n\t"   "or\t%L0, %L0, %M0\n\t"   "dmtc0\t%L0, " #source "\n\t"   ".set\tmips0"   : : "r" (val));   else   __asm__ __volatile__(   ".set\tmips64\n\t"   "dsll\t%L0, %L0, 32\n\t"   "dsrl\t%L0, %L0, 32\n\t"   "dsll\t%M0, %M0, 32\n\t"   "or\t%L0, %L0, %M0\n\t"   "dmtc0\t%L0, " #source ", " #sel "\n\t"   ".set\tmips0"   : : "r" (val));   local_irq_restore(__flags);  } while (0)
+#define read_c0_index() __read_32bit_c0_register($0, 0)
+#define write_c0_index(val) __write_32bit_c0_register($0, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_random() __read_32bit_c0_register($1, 0)
+#define write_c0_random(val) __write_32bit_c0_register($1, 0, val)
+#define read_c0_entrylo0() __read_ulong_c0_register($2, 0)
+#define write_c0_entrylo0(val) __write_ulong_c0_register($2, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_entrylo1() __read_ulong_c0_register($3, 0)
+#define write_c0_entrylo1(val) __write_ulong_c0_register($3, 0, val)
+#define read_c0_conf() __read_32bit_c0_register($3, 0)
+#define write_c0_conf(val) __write_32bit_c0_register($3, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_context() __read_ulong_c0_register($4, 0)
+#define write_c0_context(val) __write_ulong_c0_register($4, 0, val)
+#define read_c0_userlocal() __read_ulong_c0_register($4, 2)
+#define write_c0_userlocal(val) __write_ulong_c0_register($4, 2, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_pagemask() __read_32bit_c0_register($5, 0)
+#define write_c0_pagemask(val) __write_32bit_c0_register($5, 0, val)
+#define read_c0_wired() __read_32bit_c0_register($6, 0)
+#define write_c0_wired(val) __write_32bit_c0_register($6, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_info() __read_32bit_c0_register($7, 0)
+#define read_c0_cache() __read_32bit_c0_register($7, 0)  
+#define write_c0_cache(val) __write_32bit_c0_register($7, 0, val)
+#define read_c0_badvaddr() __read_ulong_c0_register($8, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_badvaddr(val) __write_ulong_c0_register($8, 0, val)
+#define read_c0_count() __read_32bit_c0_register($9, 0)
+#define write_c0_count(val) __write_32bit_c0_register($9, 0, val)
+#define read_c0_count2() __read_32bit_c0_register($9, 6)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_count2(val) __write_32bit_c0_register($9, 6, val)
+#define read_c0_count3() __read_32bit_c0_register($9, 7)  
+#define write_c0_count3(val) __write_32bit_c0_register($9, 7, val)
+#define read_c0_entryhi() __read_ulong_c0_register($10, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_entryhi(val) __write_ulong_c0_register($10, 0, val)
+#define read_c0_compare() __read_32bit_c0_register($11, 0)
+#define write_c0_compare(val) __write_32bit_c0_register($11, 0, val)
+#define read_c0_compare2() __read_32bit_c0_register($11, 6)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_compare2(val) __write_32bit_c0_register($11, 6, val)
+#define read_c0_compare3() __read_32bit_c0_register($11, 7)  
+#define write_c0_compare3(val) __write_32bit_c0_register($11, 7, val)
+#define read_c0_status() __read_32bit_c0_register($12, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_status(val) __write_32bit_c0_register($12, 0, val)
+#define read_c0_cause() __read_32bit_c0_register($13, 0)
+#define write_c0_cause(val) __write_32bit_c0_register($13, 0, val)
+#define read_c0_epc() __read_ulong_c0_register($14, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_epc(val) __write_ulong_c0_register($14, 0, val)
+#define read_c0_prid() __read_32bit_c0_register($15, 0)
+#define read_c0_config() __read_32bit_c0_register($16, 0)
+#define read_c0_config1() __read_32bit_c0_register($16, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_config2() __read_32bit_c0_register($16, 2)
+#define read_c0_config3() __read_32bit_c0_register($16, 3)
+#define read_c0_config4() __read_32bit_c0_register($16, 4)
+#define read_c0_config5() __read_32bit_c0_register($16, 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_config6() __read_32bit_c0_register($16, 6)
+#define read_c0_config7() __read_32bit_c0_register($16, 7)
+#define write_c0_config(val) __write_32bit_c0_register($16, 0, val)
+#define write_c0_config1(val) __write_32bit_c0_register($16, 1, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_config2(val) __write_32bit_c0_register($16, 2, val)
+#define write_c0_config3(val) __write_32bit_c0_register($16, 3, val)
+#define write_c0_config4(val) __write_32bit_c0_register($16, 4, val)
+#define write_c0_config5(val) __write_32bit_c0_register($16, 5, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_config6(val) __write_32bit_c0_register($16, 6, val)
+#define write_c0_config7(val) __write_32bit_c0_register($16, 7, val)
+#define read_c0_watchlo0() __read_ulong_c0_register($18, 0)
+#define read_c0_watchlo1() __read_ulong_c0_register($18, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_watchlo2() __read_ulong_c0_register($18, 2)
+#define read_c0_watchlo3() __read_ulong_c0_register($18, 3)
+#define read_c0_watchlo4() __read_ulong_c0_register($18, 4)
+#define read_c0_watchlo5() __read_ulong_c0_register($18, 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_watchlo6() __read_ulong_c0_register($18, 6)
+#define read_c0_watchlo7() __read_ulong_c0_register($18, 7)
+#define write_c0_watchlo0(val) __write_ulong_c0_register($18, 0, val)
+#define write_c0_watchlo1(val) __write_ulong_c0_register($18, 1, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_watchlo2(val) __write_ulong_c0_register($18, 2, val)
+#define write_c0_watchlo3(val) __write_ulong_c0_register($18, 3, val)
+#define write_c0_watchlo4(val) __write_ulong_c0_register($18, 4, val)
+#define write_c0_watchlo5(val) __write_ulong_c0_register($18, 5, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_watchlo6(val) __write_ulong_c0_register($18, 6, val)
+#define write_c0_watchlo7(val) __write_ulong_c0_register($18, 7, val)
+#define read_c0_watchhi0() __read_32bit_c0_register($19, 0)
+#define read_c0_watchhi1() __read_32bit_c0_register($19, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_watchhi2() __read_32bit_c0_register($19, 2)
+#define read_c0_watchhi3() __read_32bit_c0_register($19, 3)
+#define read_c0_watchhi4() __read_32bit_c0_register($19, 4)
+#define read_c0_watchhi5() __read_32bit_c0_register($19, 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_watchhi6() __read_32bit_c0_register($19, 6)
+#define read_c0_watchhi7() __read_32bit_c0_register($19, 7)
+#define write_c0_watchhi0(val) __write_32bit_c0_register($19, 0, val)
+#define write_c0_watchhi1(val) __write_32bit_c0_register($19, 1, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_watchhi2(val) __write_32bit_c0_register($19, 2, val)
+#define write_c0_watchhi3(val) __write_32bit_c0_register($19, 3, val)
+#define write_c0_watchhi4(val) __write_32bit_c0_register($19, 4, val)
+#define write_c0_watchhi5(val) __write_32bit_c0_register($19, 5, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_watchhi6(val) __write_32bit_c0_register($19, 6, val)
+#define write_c0_watchhi7(val) __write_32bit_c0_register($19, 7, val)
+#define read_c0_xcontext() __read_ulong_c0_register($20, 0)
+#define write_c0_xcontext(val) __write_ulong_c0_register($20, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_intcontrol() __read_32bit_c0_ctrl_register($20)
+#define write_c0_intcontrol(val) __write_32bit_c0_ctrl_register($20, val)
+#define read_c0_framemask() __read_32bit_c0_register($21, 0)
+#define write_c0_framemask(val) __write_32bit_c0_register($21, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_perfcontrol() __read_32bit_c0_register($22, 0)
+#define write_c0_perfcontrol(val) __write_32bit_c0_register($22, 0, val)
+#define read_c0_diag() __read_32bit_c0_register($22, 0)
+#define write_c0_diag(val) __write_32bit_c0_register($22, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_diag1() __read_32bit_c0_register($22, 1)
+#define write_c0_diag1(val) __write_32bit_c0_register($22, 1, val)
+#define read_c0_diag2() __read_32bit_c0_register($22, 2)
+#define write_c0_diag2(val) __write_32bit_c0_register($22, 2, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_diag3() __read_32bit_c0_register($22, 3)
+#define write_c0_diag3(val) __write_32bit_c0_register($22, 3, val)
+#define read_c0_diag4() __read_32bit_c0_register($22, 4)
+#define write_c0_diag4(val) __write_32bit_c0_register($22, 4, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_diag5() __read_32bit_c0_register($22, 5)
+#define write_c0_diag5(val) __write_32bit_c0_register($22, 5, val)
+#define read_c0_debug() __read_32bit_c0_register($23, 0)
+#define write_c0_debug(val) __write_32bit_c0_register($23, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_depc() __read_ulong_c0_register($24, 0)
+#define write_c0_depc(val) __write_ulong_c0_register($24, 0, val)
+#define read_c0_perfctrl0() __read_32bit_c0_register($25, 0)
+#define write_c0_perfctrl0(val) __write_32bit_c0_register($25, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_perfcntr0() __read_32bit_c0_register($25, 1)
+#define write_c0_perfcntr0(val) __write_32bit_c0_register($25, 1, val)
+#define read_c0_perfctrl1() __read_32bit_c0_register($25, 2)
+#define write_c0_perfctrl1(val) __write_32bit_c0_register($25, 2, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_perfcntr1() __read_32bit_c0_register($25, 3)
+#define write_c0_perfcntr1(val) __write_32bit_c0_register($25, 3, val)
+#define read_c0_perfctrl2() __read_32bit_c0_register($25, 4)
+#define write_c0_perfctrl2(val) __write_32bit_c0_register($25, 4, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_perfcntr2() __read_32bit_c0_register($25, 5)
+#define write_c0_perfcntr2(val) __write_32bit_c0_register($25, 5, val)
+#define read_c0_perfctrl3() __read_32bit_c0_register($25, 6)
+#define write_c0_perfctrl3(val) __write_32bit_c0_register($25, 6, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_perfcntr3() __read_32bit_c0_register($25, 7)
+#define write_c0_perfcntr3(val) __write_32bit_c0_register($25, 7, val)
+#define read_c0_perfcount() __read_64bit_c0_register($25, 0)
+#define write_c0_perfcount(val) __write_64bit_c0_register($25, 0, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_ecc() __read_32bit_c0_register($26, 0)
+#define write_c0_ecc(val) __write_32bit_c0_register($26, 0, val)
+#define read_c0_derraddr0() __read_ulong_c0_register($26, 1)
+#define write_c0_derraddr0(val) __write_ulong_c0_register($26, 1, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define read_c0_cacheerr() __read_32bit_c0_register($27, 0)
+#define read_c0_derraddr1() __read_ulong_c0_register($27, 1)
+#define write_c0_derraddr1(val) __write_ulong_c0_register($27, 1, val)
+#define read_c0_taglo() __read_32bit_c0_register($28, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_taglo(val) __write_32bit_c0_register($28, 0, val)
+#define read_c0_dtaglo() __read_32bit_c0_register($28, 2)
+#define write_c0_dtaglo(val) __write_32bit_c0_register($28, 2, val)
+#define read_c0_taghi() __read_32bit_c0_register($29, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_taghi(val) __write_32bit_c0_register($29, 0, val)
+#define read_c0_errorepc() __read_ulong_c0_register($30, 0)
+#define write_c0_errorepc(val) __write_ulong_c0_register($30, 0, val)
+#define read_c0_hwrena() __read_32bit_c0_register($7, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_hwrena(val) __write_32bit_c0_register($7, 0, val)
+#define read_c0_intctl() __read_32bit_c0_register($12, 1)
+#define write_c0_intctl(val) __write_32bit_c0_register($12, 1, val)
+#define read_c0_srsctl() __read_32bit_c0_register($12, 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_srsctl(val) __write_32bit_c0_register($12, 2, val)
+#define read_c0_srsmap() __read_32bit_c0_register($12, 3)
+#define write_c0_srsmap(val) __write_32bit_c0_register($12, 3, val)
+#define read_c0_ebase() __read_32bit_c0_register($15, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define write_c0_ebase(val) __write_32bit_c0_register($15, 1, val)
+#define read_32bit_cp1_register(source)  ({ int __res;   __asm__ __volatile__(   ".set\tpush\n\t"   ".set\treorder\n\t"   "cfc1\t%0,"STR(source)"\n\t"   ".set\tpop"   : "=r" (__res));   __res;})
+#define rddsp(mask)  ({   unsigned int __res;     __asm__ __volatile__(   "	.set	push				\n"   "	.set	noat				\n"   "	# rddsp $1, %x1				\n"   "	.word	0x7c000cb8 | (%x1 << 16)	\n"   "	move	%0, $1				\n"   "	.set	pop				\n"   : "=r" (__res)   : "i" (mask));   __res;  })
+#define wrdsp(val, mask)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# wrdsp $1, %x1					\n"   "	.word	0x7c2004f8 | (%x1 << 11)		\n"   "	.set	pop					\n"   :   : "r" (val), "i" (mask));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mfhi0()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mfhi	%0, $ac0		\n"   "	.word	0x00000810		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+#define mfhi1()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mfhi	%0, $ac1		\n"   "	.word	0x00200810		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+#define mfhi2()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mfhi	%0, $ac2		\n"   "	.word	0x00400810		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+#define mfhi3()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mfhi	%0, $ac3		\n"   "	.word	0x00600810		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mflo0()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mflo	%0, $ac0		\n"   "	.word	0x00000812		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+#define mflo1()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mflo	%0, $ac1		\n"   "	.word	0x00200812		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+#define mflo2()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mflo	%0, $ac2		\n"   "	.word	0x00400812		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+#define mflo3()  ({   unsigned long __treg;     __asm__ __volatile__(   "	.set	push			\n"   "	.set	noat			\n"   "	# mflo	%0, $ac3		\n"   "	.word	0x00600812		\n"   "	move	%0, $1			\n"   "	.set	pop			\n"   : "=r" (__treg));   __treg;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mthi0(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mthi	$1, $ac0				\n"   "	.word	0x00200011				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+#define mthi1(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mthi	$1, $ac1				\n"   "	.word	0x00200811				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+#define mthi2(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mthi	$1, $ac2				\n"   "	.word	0x00201011				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+#define mthi3(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mthi	$1, $ac3				\n"   "	.word	0x00201811				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mtlo0(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mtlo	$1, $ac0				\n"   "	.word	0x00200013				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+#define mtlo1(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mtlo	$1, $ac1				\n"   "	.word	0x00200813				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+#define mtlo2(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mtlo	$1, $ac2				\n"   "	.word	0x00201013				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+#define mtlo3(x)  do {   __asm__ __volatile__(   "	.set	push					\n"   "	.set	noat					\n"   "	move	$1, %0					\n"   "	# mtlo	$1, $ac3				\n"   "	.word	0x00201813				\n"   "	.set	pop					\n"   :   : "r" (x));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if MIPS34K_MISSED_ITLB_WAR
+#endif
+#if MIPS34K_MISSED_ITLB_WAR
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __BUILD_SET_C0(name)  static inline unsigned int  set_c0_##name(unsigned int set)  {   unsigned int res;     res = read_c0_##name();   res |= set;   write_c0_##name(res);     return res;  }    static inline unsigned int  clear_c0_##name(unsigned int clear)  {   unsigned int res;     res = read_c0_##name();   res &= ~clear;   write_c0_##name(res);     return res;  }    static inline unsigned int  change_c0_##name(unsigned int change, unsigned int new)  {   unsigned int res;     res = read_c0_##name();   res &= ~change;   res |= (new & change);   write_c0_##name(res);     return res;  }
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mman.h b/ndk/platforms/android-9/arch-mips/include/asm/mman.h
new file mode 100644
index 0000000..9e51c67
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mman.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MMAN_H
+#define _ASM_MMAN_H
+#define PROT_NONE 0x00  
+#define PROT_READ 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROT_WRITE 0x02  
+#define PROT_EXEC 0x04  
+#define PROT_SEM 0x10  
+#define PROT_GROWSDOWN 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROT_GROWSUP 0x02000000  
+#define MAP_SHARED 0x001  
+#define MAP_PRIVATE 0x002  
+#define MAP_TYPE 0x00f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAP_FIXED 0x010  
+#define MAP_RENAME 0x020  
+#define MAP_AUTOGROW 0x040  
+#define MAP_LOCAL 0x080  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAP_AUTORSRV 0x100  
+#define MAP_NORESERVE 0x0400  
+#define MAP_ANONYMOUS 0x0800  
+#define MAP_GROWSDOWN 0x1000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAP_DENYWRITE 0x2000  
+#define MAP_EXECUTABLE 0x4000  
+#define MAP_LOCKED 0x8000  
+#define MAP_POPULATE 0x10000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MAP_NONBLOCK 0x20000  
+#define MS_ASYNC 0x0001  
+#define MS_INVALIDATE 0x0002  
+#define MS_SYNC 0x0004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MCL_CURRENT 1  
+#define MCL_FUTURE 2  
+#define MADV_NORMAL 0  
+#define MADV_RANDOM 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MADV_SEQUENTIAL 2  
+#define MADV_WILLNEED 3  
+#define MADV_DONTNEED 4  
+#define MADV_REMOVE 9  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MADV_DONTFORK 10  
+#define MADV_DOFORK 11  
+#define MAP_FILE 0
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mmu.h b/ndk/platforms/android-9/arch-mips/include/asm/mmu.h
new file mode 100644
index 0000000..ef62db4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mmu.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MMU_H
+#define __ASM_MMU_H
+typedef unsigned long mm_context_t[NR_CPUS];
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mmzone.h b/ndk/platforms/android-9/arch-mips/include/asm/mmzone.h
new file mode 100644
index 0000000..2f7e1c4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mmzone.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MMZONE_H_
+#define _ASM_MMZONE_H_
+#include <asm/page.h>
+#include <mmzone.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/module.h b/ndk/platforms/android-9/arch-mips/include/asm/module.h
new file mode 100644
index 0000000..45808e9
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/module.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MODULE_H
+#define _ASM_MODULE_H
+#include <linux/list.h>
+#include <asm/uaccess.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mod_arch_specific {
+ struct list_head dbe_list;
+ const struct exception_table_entry *dbe_start;
+ const struct exception_table_entry *dbe_end;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+typedef uint8_t Elf64_Byte;
+typedef struct {
+ Elf64_Addr r_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ Elf64_Word r_sym;
+ Elf64_Byte r_ssym;
+ Elf64_Byte r_type3;
+ Elf64_Byte r_type2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ Elf64_Byte r_type;
+} Elf64_Mips_Rel;
+typedef struct {
+ Elf64_Addr r_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ Elf64_Word r_sym;
+ Elf64_Byte r_ssym;
+ Elf64_Byte r_type3;
+ Elf64_Byte r_type2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ Elf64_Byte r_type;
+ Elf64_Sxword r_addend;
+} Elf64_Mips_Rela;
+#error MODULE_PROC_FAMILY undefined for your processor configuration
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MODULE_KERNEL_SMTC ""
+#define MODULE_ARCH_VERMAGIC   MODULE_PROC_FAMILY MODULE_KERNEL_TYPE MODULE_KERNEL_SMTC
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/msgbuf.h b/ndk/platforms/android-9/arch-mips/include/asm/msgbuf.h
new file mode 100644
index 0000000..31a1887
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/msgbuf.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MSGBUF_H
+#define _ASM_MSGBUF_H
+struct msqid64_ds {
+ struct ipc64_perm msg_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __kernel_time_t msg_stime;
+ __kernel_time_t msg_rtime;
+ __kernel_time_t msg_ctime;
+ unsigned long msg_cbytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long msg_qnum;
+ unsigned long msg_qbytes;
+ __kernel_pid_t msg_lspid;
+ __kernel_pid_t msg_lrpid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long __unused4;
+ unsigned long __unused5;
+};
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/mutex.h b/ndk/platforms/android-9/arch-mips/include/asm/mutex.h
new file mode 100644
index 0000000..74f7c18
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/mutex.h
@@ -0,0 +1,19 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#include <asm-generic/mutex-dec.h>
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/page.h b/ndk/platforms/android-9/arch-mips/include/asm/page.h
new file mode 100644
index 0000000..93eb390
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/page.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PAGE_H
+#define _ASM_PAGE_H
+#ifndef PAGE_SHIFT
+#define PAGE_SHIFT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define PAGE_SIZE (1UL << PAGE_SHIFT)
+#define PAGE_MASK (~((1 << PAGE_SHIFT) - 1))
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/param.h b/ndk/platforms/android-9/arch-mips/include/asm/param.h
new file mode 100644
index 0000000..9378027
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/param.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PARAM_H
+#define _ASM_PARAM_H
+#ifndef HZ
+#define HZ 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define EXEC_PAGESIZE 65536
+#ifndef NOGROUP
+#define NOGROUP (-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/pci/bridge.h b/ndk/platforms/android-9/arch-mips/include/asm/pci/bridge.h
new file mode 100644
index 0000000..cd2fde4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/pci/bridge.h
@@ -0,0 +1,676 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PCI_BRIDGE_H
+#define _ASM_PCI_BRIDGE_H
+#include <linux/types.h>
+#include <linux/pci.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/xtalk/xwidget.h>  
+#include <asm/sn/types.h>
+#define IOPFNSHIFT 12  
+#define IOPGSIZE (1 << IOPFNSHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOPG(x) ((x) >> IOPFNSHIFT)
+#define IOPGOFF(x) ((x) & (IOPGSIZE-1))
+#define BRIDGE_ATE_RAM_SIZE 0x00000400  
+#define BRIDGE_CONFIG_BASE 0x20000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CONFIG1_BASE 0x28000
+#define BRIDGE_CONFIG_END 0x30000
+#define BRIDGE_CONFIG_SLOT_SIZE 0x1000
+#define BRIDGE_SSRAM_512K 0x00080000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_SSRAM_128K 0x00020000  
+#define BRIDGE_SSRAM_64K 0x00010000  
+#define BRIDGE_SSRAM_0K 0x00000000  
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef u32 bridgereg_t;
+typedef u64 bridge_ate_t;
+typedef volatile bridge_ate_t *bridge_ate_p;
+typedef volatile struct bridge_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widget_cfg_t b_widget;
+#define b_wid_id b_widget.w_id
+#define b_wid_stat b_widget.w_status
+#define b_wid_err_upper b_widget.w_err_upper_addr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define b_wid_err_lower b_widget.w_err_lower_addr
+#define b_wid_control b_widget.w_control
+#define b_wid_req_timeout b_widget.w_req_timeout
+#define b_wid_int_upper b_widget.w_intdest_upper_addr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define b_wid_int_lower b_widget.w_intdest_lower_addr
+#define b_wid_err_cmdword b_widget.w_err_cmd_word
+#define b_wid_llp b_widget.w_llp_cfg
+#define b_wid_tflush b_widget.w_tflush
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_000058;
+ bridgereg_t b_wid_aux_err;
+ bridgereg_t _pad_000060;
+ bridgereg_t b_wid_resp_upper;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_000068;
+ bridgereg_t b_wid_resp_lower;
+ bridgereg_t _pad_000070;
+ bridgereg_t b_wid_tst_pin_ctrl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_000078[2];
+ bridgereg_t _pad_000080;
+ bridgereg_t b_dir_map;
+ bridgereg_t _pad_000088[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_000090;
+ bridgereg_t b_ram_perr;
+ bridgereg_t _pad_000098[2];
+ bridgereg_t _pad_0000A0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t b_arb;
+ bridgereg_t _pad_0000A8[2];
+ bridgereg_t _pad_0000B0;
+ bridgereg_t b_nic;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_0000B8[2];
+ bridgereg_t _pad_0000C0;
+ bridgereg_t b_bus_timeout;
+#define b_pci_bus_timeout b_bus_timeout
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_0000C8;
+ bridgereg_t b_pci_cfg;
+ bridgereg_t _pad_0000D0;
+ bridgereg_t b_pci_err_upper;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_0000D8;
+ bridgereg_t b_pci_err_lower;
+ bridgereg_t _pad_0000E0[8];
+#define b_gio_err_lower b_pci_err_lower
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define b_gio_err_upper b_pci_err_upper
+ bridgereg_t _pad_000100;
+ bridgereg_t b_int_status;
+ bridgereg_t _pad_000108;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t b_int_enable;
+ bridgereg_t _pad_000110;
+ bridgereg_t b_int_rst_stat;
+ bridgereg_t _pad_000118;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t b_int_mode;
+ bridgereg_t _pad_000120;
+ bridgereg_t b_int_device;
+ bridgereg_t _pad_000128;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t b_int_host_err;
+ struct {
+ bridgereg_t __pad;
+ bridgereg_t addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } b_int_addr[8];
+ bridgereg_t _pad_000170[36];
+ struct {
+ bridgereg_t __pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t reg;
+ } b_device[8];
+ struct {
+ bridgereg_t __pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t reg;
+ } b_wr_req_buf[8];
+ struct {
+ bridgereg_t __pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t reg;
+ } b_rrb_map[2];
+#define b_even_resp b_rrb_map[0].reg  
+#define b_odd_resp b_rrb_map[1].reg  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_000290;
+ bridgereg_t b_resp_status;
+ bridgereg_t _pad_000298;
+ bridgereg_t b_resp_clear;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t _pad_0002A0[24];
+ char _pad_000300[0x10000 - 0x000300];
+ union {
+ bridge_ate_t wr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ bridgereg_t _p_pad;
+ bridgereg_t rd;
+ } hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } b_int_ate_ram[128];
+ char _pad_010400[0x11000 - 0x010400];
+ struct {
+ bridgereg_t _p_pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bridgereg_t rd;
+ } b_int_ate_ram_lo[128];
+ char _pad_011400[0x20000 - 0x011400];
+ union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 c[0x1000 / 1];
+ u16 s[0x1000 / 2];
+ u32 l[0x1000 / 4];
+ u64 d[0x1000 / 8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ union {
+ u8 c[0x100 / 1];
+ u16 s[0x100 / 2];
+ u32 l[0x100 / 4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 d[0x100 / 8];
+ } f[8];
+ } b_type0_cfg_dev[8];
+ union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 c[0x1000 / 1];
+ u16 s[0x1000 / 2];
+ u32 l[0x1000 / 4];
+ u64 d[0x1000 / 8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } b_type1_cfg;
+ char _pad_029000[0x007000];
+ union {
+ u8 c[8 / 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u16 s[8 / 2];
+ u32 l[8 / 4];
+ u64 d[8 / 8];
+ } b_pci_iack;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 _pad_030007[0x04fff8];
+ bridge_ate_t b_ext_ate_ram[0x10000];
+ char _pad_100000[0x200000-0x100000];
+ union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 c[0x100000 / 1];
+ u16 s[0x100000 / 2];
+ u32 l[0x100000 / 4];
+ u64 d[0x100000 / 8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } b_devio_raw[10];
+#define b_devio(n) b_devio_raw[((n)<2)?(n*2):(n+2)]
+ union {
+ u8 c[0x400000 / 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u16 s[0x400000 / 2];
+ u32 l[0x400000 / 4];
+ u64 d[0x400000 / 8];
+ } b_external_flash;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} bridge_t;
+typedef struct bridge_err_cmdword_s {
+ union {
+ u32 cmd_word;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ u32 didn:4,
+ sidn:4,
+ pactyp:4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ tnum:5,
+ coh:1,
+ ds:2,
+ gbr:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ vbpm:1,
+ error:1,
+ barr:1,
+ rsvd:8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } berr_st;
+ } berr_un;
+} bridge_err_cmdword_t;
+#define berr_field berr_un.berr_st
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define BRIDGE_WID_ID WIDGET_ID
+#define BRIDGE_WID_STAT WIDGET_STATUS
+#define BRIDGE_WID_ERR_UPPER WIDGET_ERR_UPPER_ADDR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_WID_ERR_LOWER WIDGET_ERR_LOWER_ADDR
+#define BRIDGE_WID_CONTROL WIDGET_CONTROL
+#define BRIDGE_WID_REQ_TIMEOUT WIDGET_REQ_TIMEOUT
+#define BRIDGE_WID_INT_UPPER WIDGET_INTDEST_UPPER_ADDR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_WID_INT_LOWER WIDGET_INTDEST_LOWER_ADDR
+#define BRIDGE_WID_ERR_CMDWORD WIDGET_ERR_CMD_WORD
+#define BRIDGE_WID_LLP WIDGET_LLP_CFG
+#define BRIDGE_WID_TFLUSH WIDGET_TFLUSH
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_WID_AUX_ERR 0x00005C  
+#define BRIDGE_WID_RESP_UPPER 0x000064  
+#define BRIDGE_WID_RESP_LOWER 0x00006C  
+#define BRIDGE_WID_TST_PIN_CTRL 0x000074  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DIR_MAP 0x000084  
+#define BRIDGE_RAM_PERR 0x000094  
+#define BRIDGE_ARB 0x0000A4  
+#define BRIDGE_NIC 0x0000B4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_BUS_TIMEOUT 0x0000C4  
+#define BRIDGE_PCI_BUS_TIMEOUT BRIDGE_BUS_TIMEOUT
+#define BRIDGE_PCI_CFG 0x0000CC  
+#define BRIDGE_PCI_ERR_UPPER 0x0000D4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_PCI_ERR_LOWER 0x0000DC  
+#define BRIDGE_INT_STATUS 0x000104  
+#define BRIDGE_INT_ENABLE 0x00010C  
+#define BRIDGE_INT_RST_STAT 0x000114  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_INT_MODE 0x00011C  
+#define BRIDGE_INT_DEVICE 0x000124  
+#define BRIDGE_INT_HOST_ERR 0x00012C  
+#define BRIDGE_INT_ADDR0 0x000134  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_INT_ADDR_OFF 0x000008  
+#define BRIDGE_INT_ADDR(x) (BRIDGE_INT_ADDR0+(x)*BRIDGE_INT_ADDR_OFF)
+#define BRIDGE_DEVICE0 0x000204  
+#define BRIDGE_DEVICE_OFF 0x000008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEVICE(x) (BRIDGE_DEVICE0+(x)*BRIDGE_DEVICE_OFF)
+#define BRIDGE_WR_REQ_BUF0 0x000244  
+#define BRIDGE_WR_REQ_BUF_OFF 0x000008  
+#define BRIDGE_WR_REQ_BUF(x) (BRIDGE_WR_REQ_BUF0+(x)*BRIDGE_WR_REQ_BUF_OFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_EVEN_RESP 0x000284  
+#define BRIDGE_ODD_RESP 0x00028C  
+#define BRIDGE_RESP_STATUS 0x000294  
+#define BRIDGE_RESP_CLEAR 0x00029C  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ATE_RAM 0x00010000  
+#define BRIDGE_TYPE0_CFG_DEV0 0x00020000  
+#define BRIDGE_TYPE0_CFG_SLOT_OFF 0x00001000  
+#define BRIDGE_TYPE0_CFG_FUNC_OFF 0x00000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_TYPE0_CFG_DEV(s) (BRIDGE_TYPE0_CFG_DEV0+  (s)*BRIDGE_TYPE0_CFG_SLOT_OFF)
+#define BRIDGE_TYPE0_CFG_DEVF(s, f) (BRIDGE_TYPE0_CFG_DEV0+  (s)*BRIDGE_TYPE0_CFG_SLOT_OFF+  (f)*BRIDGE_TYPE0_CFG_FUNC_OFF)
+#define BRIDGE_TYPE1_CFG 0x00028000  
+#define BRIDGE_PCI_IACK 0x00030000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_EXT_SSRAM 0x00080000  
+#define BRIDGE_DEV_CNT 8  
+#define BRIDGE_DEVIO0 0x00200000  
+#define BRIDGE_DEVIO1 0x00400000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEVIO2 0x00600000  
+#define BRIDGE_DEVIO_OFF 0x00100000  
+#define BRIDGE_DEVIO_2MB 0x00200000  
+#define BRIDGE_DEVIO_1MB 0x00100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEVIO(x) ((x)<=1 ? BRIDGE_DEVIO0+(x)*BRIDGE_DEVIO_2MB : BRIDGE_DEVIO2+((x)-2)*BRIDGE_DEVIO_1MB)
+#define BRIDGE_EXTERNAL_FLASH 0x00C00000  
+#define BRIDGE_WIDGET_PART_NUM 0xc002
+#define XBRIDGE_WIDGET_PART_NUM 0xd002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_WIDGET_MFGR_NUM 0x036
+#define XBRIDGE_WIDGET_MFGR_NUM 0x024
+#define BRIDGE_REV_A 0x1
+#define BRIDGE_REV_B 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_REV_C 0x3
+#define BRIDGE_REV_D 0x4
+#define BRIDGE_STAT_LLP_REC_CNT (0xFFu << 24)
+#define BRIDGE_STAT_LLP_TX_CNT (0xFF << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_STAT_FLASH_SELECT (0x1 << 6)
+#define BRIDGE_STAT_PCI_GIO_N (0x1 << 5)
+#define BRIDGE_STAT_PENDING (0x1F << 0)
+#define BRIDGE_CTRL_FLASH_WR_EN (0x1ul << 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_EN_CLK50 (0x1 << 30)
+#define BRIDGE_CTRL_EN_CLK40 (0x1 << 29)
+#define BRIDGE_CTRL_EN_CLK33 (0x1 << 28)
+#define BRIDGE_CTRL_RST(n) ((n) << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_RST_MASK (BRIDGE_CTRL_RST(0xF))
+#define BRIDGE_CTRL_RST_PIN(x) (BRIDGE_CTRL_RST(0x1 << (x)))
+#define BRIDGE_CTRL_IO_SWAP (0x1 << 23)
+#define BRIDGE_CTRL_MEM_SWAP (0x1 << 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_PAGE_SIZE (0x1 << 21)
+#define BRIDGE_CTRL_SS_PAR_BAD (0x1 << 20)
+#define BRIDGE_CTRL_SS_PAR_EN (0x1 << 19)
+#define BRIDGE_CTRL_SSRAM_SIZE(n) ((n) << 17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_SSRAM_SIZE_MASK (BRIDGE_CTRL_SSRAM_SIZE(0x3))
+#define BRIDGE_CTRL_SSRAM_512K (BRIDGE_CTRL_SSRAM_SIZE(0x3))
+#define BRIDGE_CTRL_SSRAM_128K (BRIDGE_CTRL_SSRAM_SIZE(0x2))
+#define BRIDGE_CTRL_SSRAM_64K (BRIDGE_CTRL_SSRAM_SIZE(0x1))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_SSRAM_1K (BRIDGE_CTRL_SSRAM_SIZE(0x0))
+#define BRIDGE_CTRL_F_BAD_PKT (0x1 << 16)
+#define BRIDGE_CTRL_LLP_XBAR_CRD(n) ((n) << 12)
+#define BRIDGE_CTRL_LLP_XBAR_CRD_MASK (BRIDGE_CTRL_LLP_XBAR_CRD(0xf))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_CLR_RLLP_CNT (0x1 << 11)
+#define BRIDGE_CTRL_CLR_TLLP_CNT (0x1 << 10)
+#define BRIDGE_CTRL_SYS_END (0x1 << 9)
+#define BRIDGE_CTRL_MAX_TRANS(n) ((n) << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_CTRL_MAX_TRANS_MASK (BRIDGE_CTRL_MAX_TRANS(0x1f))
+#define BRIDGE_CTRL_WIDGET_ID(n) ((n) << 0)
+#define BRIDGE_CTRL_WIDGET_ID_MASK (BRIDGE_CTRL_WIDGET_ID(0xf))
+#define BRIDGE_RESP_ERRUPPR_DEVNUM_SHFT (20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_RESP_ERRUPPR_DEVNUM_MASK (0x7 << BRIDGE_RESP_ERRUPPR_DEVNUM_SHFT)
+#define BRIDGE_RESP_ERRUPPR_BUFNUM_SHFT (16)
+#define BRIDGE_RESP_ERRUPPR_BUFNUM_MASK (0xF << BRIDGE_RESP_ERRUPPR_BUFNUM_SHFT)
+#define BRIDGE_RESP_ERRRUPPR_BUFMASK (0xFFFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_RESP_ERRUPPR_BUFNUM(x)   (((x) & BRIDGE_RESP_ERRUPPR_BUFNUM_MASK) >>   BRIDGE_RESP_ERRUPPR_BUFNUM_SHFT)
+#define BRIDGE_RESP_ERRUPPR_DEVICE(x)   (((x) & BRIDGE_RESP_ERRUPPR_DEVNUM_MASK) >>   BRIDGE_RESP_ERRUPPR_DEVNUM_SHFT)
+#define BRIDGE_DIRMAP_W_ID_SHFT 20
+#define BRIDGE_DIRMAP_W_ID (0xf << BRIDGE_DIRMAP_W_ID_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DIRMAP_RMF_64 (0x1 << 18)
+#define BRIDGE_DIRMAP_ADD512 (0x1 << 17)
+#define BRIDGE_DIRMAP_OFF (0x1ffff << 0)
+#define BRIDGE_DIRMAP_OFF_ADDRSHFT (31)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ARB_REQ_WAIT_TICK(x) ((x) << 16)
+#define BRIDGE_ARB_REQ_WAIT_TICK_MASK BRIDGE_ARB_REQ_WAIT_TICK(0x3)
+#define BRIDGE_ARB_REQ_WAIT_EN(x) ((x) << 8)
+#define BRIDGE_ARB_REQ_WAIT_EN_MASK BRIDGE_ARB_REQ_WAIT_EN(0xff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ARB_FREEZE_GNT (1 << 6)
+#define BRIDGE_ARB_HPRI_RING_B2 (1 << 5)
+#define BRIDGE_ARB_HPRI_RING_B1 (1 << 4)
+#define BRIDGE_ARB_HPRI_RING_B0 (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ARB_LPRI_RING_B2 (1 << 2)
+#define BRIDGE_ARB_LPRI_RING_B1 (1 << 1)
+#define BRIDGE_ARB_LPRI_RING_B0 (1 << 0)
+#define BRIDGE_BUS_PCI_RETRY_HLD(x) ((x) << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_BUS_PCI_RETRY_HLD_MASK BRIDGE_BUS_PCI_RETRY_HLD(0x1f)
+#define BRIDGE_BUS_GIO_TIMEOUT (1 << 12)
+#define BRIDGE_BUS_PCI_RETRY_CNT(x) ((x) << 0)
+#define BRIDGE_BUS_PCI_RETRY_MASK BRIDGE_BUS_PCI_RETRY_CNT(0x3ff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_MULTI_ERR (0x1u << 31)
+#define BRIDGE_ISR_PMU_ESIZE_FAULT (0x1 << 30)
+#define BRIDGE_ISR_UNEXP_RESP (0x1 << 29)
+#define BRIDGE_ISR_BAD_XRESP_PKT (0x1 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_BAD_XREQ_PKT (0x1 << 27)
+#define BRIDGE_ISR_RESP_XTLK_ERR (0x1 << 26)
+#define BRIDGE_ISR_REQ_XTLK_ERR (0x1 << 25)
+#define BRIDGE_ISR_INVLD_ADDR (0x1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_UNSUPPORTED_XOP (0x1 << 23)
+#define BRIDGE_ISR_XREQ_FIFO_OFLOW (0x1 << 22)
+#define BRIDGE_ISR_LLP_REC_SNERR (0x1 << 21)
+#define BRIDGE_ISR_LLP_REC_CBERR (0x1 << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_LLP_RCTY (0x1 << 19)
+#define BRIDGE_ISR_LLP_TX_RETRY (0x1 << 18)
+#define BRIDGE_ISR_LLP_TCTY (0x1 << 17)
+#define BRIDGE_ISR_SSRAM_PERR (0x1 << 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_PCI_ABORT (0x1 << 15)
+#define BRIDGE_ISR_PCI_PARITY (0x1 << 14)
+#define BRIDGE_ISR_PCI_SERR (0x1 << 13)
+#define BRIDGE_ISR_PCI_PERR (0x1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_PCI_MST_TIMEOUT (0x1 << 11)
+#define BRIDGE_ISR_GIO_MST_TIMEOUT BRIDGE_ISR_PCI_MST_TIMEOUT
+#define BRIDGE_ISR_PCI_RETRY_CNT (0x1 << 10)
+#define BRIDGE_ISR_XREAD_REQ_TIMEOUT (0x1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_GIO_B_ENBL_ERR (0x1 << 8)
+#define BRIDGE_ISR_INT_MSK (0xff << 0)
+#define BRIDGE_ISR_INT(x) (0x1 << (x))
+#define BRIDGE_ISR_LINK_ERROR   (BRIDGE_ISR_LLP_REC_SNERR|BRIDGE_ISR_LLP_REC_CBERR|   BRIDGE_ISR_LLP_RCTY|BRIDGE_ISR_LLP_TX_RETRY|   BRIDGE_ISR_LLP_TCTY)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_PCIBUS_PIOERR   (BRIDGE_ISR_PCI_MST_TIMEOUT|BRIDGE_ISR_PCI_ABORT)
+#define BRIDGE_ISR_PCIBUS_ERROR   (BRIDGE_ISR_PCIBUS_PIOERR|BRIDGE_ISR_PCI_PERR|   BRIDGE_ISR_PCI_SERR|BRIDGE_ISR_PCI_RETRY_CNT|   BRIDGE_ISR_PCI_PARITY)
+#define BRIDGE_ISR_XTALK_ERROR   (BRIDGE_ISR_XREAD_REQ_TIMEOUT|BRIDGE_ISR_XREQ_FIFO_OFLOW|  BRIDGE_ISR_UNSUPPORTED_XOP|BRIDGE_ISR_INVLD_ADDR|   BRIDGE_ISR_REQ_XTLK_ERR|BRIDGE_ISR_RESP_XTLK_ERR|   BRIDGE_ISR_BAD_XREQ_PKT|BRIDGE_ISR_BAD_XRESP_PKT|   BRIDGE_ISR_UNEXP_RESP)
+#define BRIDGE_ISR_ERRORS   (BRIDGE_ISR_LINK_ERROR|BRIDGE_ISR_PCIBUS_ERROR|   BRIDGE_ISR_XTALK_ERROR|BRIDGE_ISR_SSRAM_PERR|   BRIDGE_ISR_PMU_ESIZE_FAULT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ISR_ERROR_FATAL   ((BRIDGE_ISR_XTALK_ERROR & ~BRIDGE_ISR_XREAD_REQ_TIMEOUT)|  BRIDGE_ISR_PCI_SERR|BRIDGE_ISR_PCI_PARITY )
+#define BRIDGE_ISR_ERROR_DUMP   (BRIDGE_ISR_PCIBUS_ERROR|BRIDGE_ISR_PMU_ESIZE_FAULT|   BRIDGE_ISR_XTALK_ERROR|BRIDGE_ISR_SSRAM_PERR)
+#define BRIDGE_IMR_UNEXP_RESP BRIDGE_ISR_UNEXP_RESP
+#define BRIDGE_IMR_PMU_ESIZE_FAULT BRIDGE_ISR_PMU_ESIZE_FAULT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IMR_BAD_XRESP_PKT BRIDGE_ISR_BAD_XRESP_PKT
+#define BRIDGE_IMR_BAD_XREQ_PKT BRIDGE_ISR_BAD_XREQ_PKT
+#define BRIDGE_IMR_RESP_XTLK_ERR BRIDGE_ISR_RESP_XTLK_ERR
+#define BRIDGE_IMR_REQ_XTLK_ERR BRIDGE_ISR_REQ_XTLK_ERR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IMR_INVLD_ADDR BRIDGE_ISR_INVLD_ADDR
+#define BRIDGE_IMR_UNSUPPORTED_XOP BRIDGE_ISR_UNSUPPORTED_XOP
+#define BRIDGE_IMR_XREQ_FIFO_OFLOW BRIDGE_ISR_XREQ_FIFO_OFLOW
+#define BRIDGE_IMR_LLP_REC_SNERR BRIDGE_ISR_LLP_REC_SNERR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IMR_LLP_REC_CBERR BRIDGE_ISR_LLP_REC_CBERR
+#define BRIDGE_IMR_LLP_RCTY BRIDGE_ISR_LLP_RCTY
+#define BRIDGE_IMR_LLP_TX_RETRY BRIDGE_ISR_LLP_TX_RETRY
+#define BRIDGE_IMR_LLP_TCTY BRIDGE_ISR_LLP_TCTY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IMR_SSRAM_PERR BRIDGE_ISR_SSRAM_PERR
+#define BRIDGE_IMR_PCI_ABORT BRIDGE_ISR_PCI_ABORT
+#define BRIDGE_IMR_PCI_PARITY BRIDGE_ISR_PCI_PARITY
+#define BRIDGE_IMR_PCI_SERR BRIDGE_ISR_PCI_SERR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IMR_PCI_PERR BRIDGE_ISR_PCI_PERR
+#define BRIDGE_IMR_PCI_MST_TIMEOUT BRIDGE_ISR_PCI_MST_TIMEOUT
+#define BRIDGE_IMR_GIO_MST_TIMEOUT BRIDGE_ISR_GIO_MST_TIMEOUT
+#define BRIDGE_IMR_PCI_RETRY_CNT BRIDGE_ISR_PCI_RETRY_CNT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IMR_XREAD_REQ_TIMEOUT BRIDGE_ISR_XREAD_REQ_TIMEOUT
+#define BRIDGE_IMR_GIO_B_ENBL_ERR BRIDGE_ISR_GIO_B_ENBL_ERR
+#define BRIDGE_IMR_INT_MSK BRIDGE_ISR_INT_MSK
+#define BRIDGE_IMR_INT(x) BRIDGE_ISR_INT(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IRR_MULTI_CLR (0x1 << 6)
+#define BRIDGE_IRR_CRP_GRP_CLR (0x1 << 5)
+#define BRIDGE_IRR_RESP_BUF_GRP_CLR (0x1 << 4)
+#define BRIDGE_IRR_REQ_DSP_GRP_CLR (0x1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IRR_LLP_GRP_CLR (0x1 << 2)
+#define BRIDGE_IRR_SSRAM_GRP_CLR (0x1 << 1)
+#define BRIDGE_IRR_PCI_GRP_CLR (0x1 << 0)
+#define BRIDGE_IRR_GIO_GRP_CLR (0x1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IRR_ALL_CLR 0x7f
+#define BRIDGE_IRR_CRP_GRP (BRIDGE_ISR_UNEXP_RESP |   BRIDGE_ISR_XREQ_FIFO_OFLOW)
+#define BRIDGE_IRR_RESP_BUF_GRP (BRIDGE_ISR_BAD_XRESP_PKT |   BRIDGE_ISR_RESP_XTLK_ERR |   BRIDGE_ISR_XREAD_REQ_TIMEOUT)
+#define BRIDGE_IRR_REQ_DSP_GRP (BRIDGE_ISR_UNSUPPORTED_XOP |   BRIDGE_ISR_BAD_XREQ_PKT |   BRIDGE_ISR_REQ_XTLK_ERR |   BRIDGE_ISR_INVLD_ADDR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_IRR_LLP_GRP (BRIDGE_ISR_LLP_REC_SNERR |   BRIDGE_ISR_LLP_REC_CBERR |   BRIDGE_ISR_LLP_RCTY |   BRIDGE_ISR_LLP_TX_RETRY |   BRIDGE_ISR_LLP_TCTY)
+#define BRIDGE_IRR_SSRAM_GRP (BRIDGE_ISR_SSRAM_PERR |   BRIDGE_ISR_PMU_ESIZE_FAULT)
+#define BRIDGE_IRR_PCI_GRP (BRIDGE_ISR_PCI_ABORT |   BRIDGE_ISR_PCI_PARITY |   BRIDGE_ISR_PCI_SERR |   BRIDGE_ISR_PCI_PERR |   BRIDGE_ISR_PCI_MST_TIMEOUT |   BRIDGE_ISR_PCI_RETRY_CNT)
+#define BRIDGE_IRR_GIO_GRP (BRIDGE_ISR_GIO_B_ENBL_ERR |   BRIDGE_ISR_GIO_MST_TIMEOUT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_INT_DEV_SHFT(n) ((n)*3)
+#define BRIDGE_INT_DEV_MASK(n) (0x7 << BRIDGE_INT_DEV_SHFT(n))
+#define BRIDGE_INT_DEV_SET(_dev, _line) (_dev << BRIDGE_INT_DEV_SHFT(_line))
+#define BRIDGE_INT_ADDR_HOST 0x0003FF00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_INT_ADDR_FLD 0x000000FF
+#define BRIDGE_TMO_PCI_RETRY_HLD_MASK 0x1f0000
+#define BRIDGE_TMO_GIO_TIMEOUT_MASK 0x001000
+#define BRIDGE_TMO_PCI_RETRY_CNT_MASK 0x0003ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_TMO_PCI_RETRY_CNT_MAX 0x3ff
+#define BRIDGE_INT_ADDR_NASID_SHFT 8
+#define BRIDGE_INT_ADDR_DEST_IO (1 << 17)
+#define BRIDGE_INT_ADDR_DEST_MEM 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_INT_ADDR_MASK (1 << 17)
+#define BRIDGE_DEV_ERR_LOCK_EN 0x10000000
+#define BRIDGE_DEV_PAGE_CHK_DIS 0x08000000
+#define BRIDGE_DEV_FORCE_PCI_PAR 0x04000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEV_VIRTUAL_EN 0x02000000
+#define BRIDGE_DEV_PMU_WRGA_EN 0x01000000
+#define BRIDGE_DEV_DIR_WRGA_EN 0x00800000
+#define BRIDGE_DEV_DEV_SIZE 0x00400000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEV_RT 0x00200000
+#define BRIDGE_DEV_SWAP_PMU 0x00100000
+#define BRIDGE_DEV_SWAP_DIR 0x00080000
+#define BRIDGE_DEV_PREF 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEV_PRECISE 0x00020000
+#define BRIDGE_DEV_COH 0x00010000
+#define BRIDGE_DEV_BARRIER 0x00008000
+#define BRIDGE_DEV_GBR 0x00004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEV_DEV_SWAP 0x00002000
+#define BRIDGE_DEV_DEV_IO_MEM 0x00001000
+#define BRIDGE_DEV_OFF_MASK 0x00000fff
+#define BRIDGE_DEV_OFF_ADDR_SHFT 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DEV_PMU_BITS (BRIDGE_DEV_PMU_WRGA_EN |   BRIDGE_DEV_SWAP_PMU)
+#define BRIDGE_DEV_D32_BITS (BRIDGE_DEV_DIR_WRGA_EN |   BRIDGE_DEV_SWAP_DIR |   BRIDGE_DEV_PREF |   BRIDGE_DEV_PRECISE |   BRIDGE_DEV_COH |   BRIDGE_DEV_BARRIER)
+#define BRIDGE_DEV_D64_BITS (BRIDGE_DEV_DIR_WRGA_EN |   BRIDGE_DEV_SWAP_DIR |   BRIDGE_DEV_COH |   BRIDGE_DEV_BARRIER)
+#define BRIDGE_ERRUPPR_DEVMASTER (0x1 << 20)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ERRUPPR_PCIVDEV (0x1 << 19)  
+#define BRIDGE_ERRUPPR_DEVNUM_SHFT (16)
+#define BRIDGE_ERRUPPR_DEVNUM_MASK (0x7 << BRIDGE_ERRUPPR_DEVNUM_SHFT)
+#define BRIDGE_ERRUPPR_DEVICE(err) (((err) >> BRIDGE_ERRUPPR_DEVNUM_SHFT) & 0x7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_ERRUPPR_ADDRMASK (0xFFFF)
+#define BRIDGE_INTMODE_CLR_PKT_EN(x) (0x1 << (x))
+#define BRIDGE_CREDIT 3
+#define BRIDGE_RRB_EN 0x8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_RRB_DEV 0x7  
+#define BRIDGE_RRB_VDEV 0x4  
+#define BRIDGE_RRB_PDEV 0x3  
+#define BRIDGE_RRB_VALID(r) (0x00010000<<(r))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_RRB_INUSE(r) (0x00000001<<(r))
+#define BRIDGE_RRB_CLEAR(r) (0x00000001<<(r))
+#define XBOX_BRIDGE_WID 8
+#define FLASH_PROM1_BASE 0xE00000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XBOX_RPS_EXISTS 1 << 6  
+#define XBOX_RPS_FAIL 1 << 4  
+#define BRIDGE_PIO32_XTALK_ALIAS_BASE 0x000040000000L
+#define BRIDGE_PIO32_XTALK_ALIAS_LIMIT 0x00007FFFFFFFL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_PIO64_XTALK_ALIAS_BASE 0x000080000000L
+#define BRIDGE_PIO64_XTALK_ALIAS_LIMIT 0x0000BFFFFFFFL
+#define BRIDGE_PCIIO_XTALK_ALIAS_BASE 0x000100000000L
+#define BRIDGE_PCIIO_XTALK_ALIAS_LIMIT 0x0001FFFFFFFFL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_MIN_PIO_ADDR_MEM 0x00000000  
+#define BRIDGE_MAX_PIO_ADDR_MEM 0x3fffffff
+#define BRIDGE_MIN_PIO_ADDR_IO 0x00000000  
+#define BRIDGE_MAX_PIO_ADDR_IO 0xffffffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_PCI_MEM32_BASE BRIDGE_PIO32_XTALK_ALIAS_BASE
+#define BRIDGE_PCI_MEM32_LIMIT BRIDGE_PIO32_XTALK_ALIAS_LIMIT
+#define BRIDGE_PCI_MEM64_BASE BRIDGE_PIO64_XTALK_ALIAS_BASE
+#define BRIDGE_PCI_MEM64_LIMIT BRIDGE_PIO64_XTALK_ALIAS_LIMIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_PCI_IO_BASE BRIDGE_PCIIO_XTALK_ALIAS_BASE
+#define BRIDGE_PCI_IO_LIMIT BRIDGE_PCIIO_XTALK_ALIAS_LIMIT
+#define BRIDGE_LOCAL_BASE 0
+#define BRIDGE_DMA_MAPPED_BASE 0x40000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BRIDGE_DMA_MAPPED_SIZE 0x40000000  
+#define BRIDGE_DMA_DIRECT_BASE 0x80000000
+#define BRIDGE_DMA_DIRECT_SIZE 0x80000000  
+#define PCI32_LOCAL_BASE BRIDGE_LOCAL_BASE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI32_MAPPED_BASE BRIDGE_DMA_MAPPED_BASE
+#define PCI32_DIRECT_BASE BRIDGE_DMA_DIRECT_BASE
+#define IS_PCI32_LOCAL(x) ((ulong_t)(x) < PCI32_MAPPED_BASE)
+#define IS_PCI32_MAPPED(x) ((ulong_t)(x) < PCI32_DIRECT_BASE &&   (ulong_t)(x) >= PCI32_MAPPED_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IS_PCI32_DIRECT(x) ((ulong_t)(x) >= PCI32_MAPPED_BASE)
+#define IS_PCI64(x) ((ulong_t)(x) >= PCI64_BASE)
+#define BRIDGE_GIO_MEM32_BASE BRIDGE_PIO32_XTALK_ALIAS_BASE
+#define BRIDGE_GIO_MEM32_LIMIT BRIDGE_PIO32_XTALK_ALIAS_LIMIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GIO_LOCAL_BASE BRIDGE_LOCAL_BASE
+#define GIO_MAPPED_BASE BRIDGE_DMA_MAPPED_BASE
+#define GIO_DIRECT_BASE BRIDGE_DMA_DIRECT_BASE
+#define IS_GIO_LOCAL(x) ((ulong_t)(x) < GIO_MAPPED_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IS_GIO_MAPPED(x) ((ulong_t)(x) < GIO_DIRECT_BASE &&   (ulong_t)(x) >= GIO_MAPPED_BASE)
+#define IS_GIO_DIRECT(x) ((ulong_t)(x) >= GIO_MAPPED_BASE)
+#define BRIDGE_DIRECT_32_SEG_SIZE BRIDGE_DMA_DIRECT_SIZE
+#define BRIDGE_DIRECT_32_TO_XTALK(dir_off,adr)   ((dir_off) * BRIDGE_DIRECT_32_SEG_SIZE +   ((adr) & (BRIDGE_DIRECT_32_SEG_SIZE - 1)) + PHYS_RAMBASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI64_ATTR_TARG_MASK 0xf000000000000000
+#define PCI64_ATTR_TARG_SHFT 60
+#define PCI64_ATTR_PREF 0x0800000000000000
+#define PCI64_ATTR_PREC 0x0400000000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI64_ATTR_VIRTUAL 0x0200000000000000
+#define PCI64_ATTR_BAR 0x0100000000000000
+#define PCI64_ATTR_RMF_MASK 0x00ff000000000000
+#define PCI64_ATTR_RMF_SHFT 48
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+typedef union ate_u {
+ u64 ent;
+ struct ate_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 rmf:16;
+ u64 addr:36;
+ u64 targ:4;
+ u64 reserved:3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 barrier:1;
+ u64 prefetch:1;
+ u64 precise:1;
+ u64 coherent:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 valid:1;
+ } field;
+} ate_t;
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ATE_V 0x01
+#define ATE_CO 0x02
+#define ATE_PREC 0x04
+#define ATE_PREF 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ATE_BAR 0x10
+#define ATE_PFNSHIFT 12
+#define ATE_TIDSHIFT 8
+#define ATE_RMFSHIFT 48
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define mkate(xaddr, xid, attr) ((xaddr) & 0x0000fffffffff000ULL) |   ((xid)<<ATE_TIDSHIFT) |   (attr)
+#define BRIDGE_INTERNAL_ATES 128
+struct bridge_controller {
+ struct pci_controller pc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct resource mem;
+ struct resource io;
+ bridge_t *base;
+ nasid_t nasid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int widget_id;
+ unsigned int irq_cpu;
+ dma64_addr_t baddr;
+ unsigned int pci_int[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define BRIDGE_CONTROLLER(bus)   ((struct bridge_controller *)((bus)->sysdata))
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/percpu.h b/ndk/platforms/android-9/arch-mips/include/asm/percpu.h
new file mode 100644
index 0000000..3af8904
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/percpu.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_PERCPU_H
+#define __ASM_PERCPU_H
+#include <asm-generic/percpu.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/pgalloc.h b/ndk/platforms/android-9/arch-mips/include/asm/pgalloc.h
new file mode 100644
index 0000000..e3ef3b8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/pgalloc.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PGALLOC_H
+#define _ASM_PGALLOC_H
+#include <linux/highmem.h>
+#include <linux/mm.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/sched.h>
+#define pmd_pgtable(pmd) pmd_page(pmd)
+#define __pte_free_tlb(tlb,pte)  do {   pgtable_page_dtor(pte);   tlb_remove_page((tlb), pte);  } while (0)
+#define check_pgt_cache() do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/pgtable-bits.h b/ndk/platforms/android-9/arch-mips/include/asm/pgtable-bits.h
new file mode 100644
index 0000000..3df2c3d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/pgtable-bits.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PGTABLE_BITS_H
+#define _ASM_PGTABLE_BITS_H
+#define _PAGE_PRESENT (1<<0)  
+#define _PAGE_READ (1<<1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _PAGE_WRITE (1<<2)  
+#define _PAGE_ACCESSED (1<<3)  
+#define _PAGE_MODIFIED (1<<4)  
+#define _PAGE_FILE (1<<4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _PAGE_R4KBUG (1<<5)  
+#define _PAGE_GLOBAL (1<<6)
+#define _PAGE_VALID (1<<7)
+#define _PAGE_SILENT_READ (1<<7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _PAGE_DIRTY (1<<8)  
+#define _PAGE_SILENT_WRITE (1<<8)
+#define _CACHE_SHIFT 9
+#define _CACHE_MASK (7<<9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _CACHE_CACHABLE_NO_WA (0<<_CACHE_SHIFT)  
+#define _CACHE_CACHABLE_WA (1<<_CACHE_SHIFT)  
+#define _CACHE_UNCACHED (2<<_CACHE_SHIFT)  
+#define _CACHE_CACHABLE_NONCOHERENT (3<<_CACHE_SHIFT)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _CACHE_CACHABLE_CE (4<<_CACHE_SHIFT)  
+#define _CACHE_CACHABLE_COW (5<<_CACHE_SHIFT)  
+#define _CACHE_CACHABLE_COHERENT (5<<_CACHE_SHIFT)  
+#define _CACHE_CACHABLE_CUW (6<<_CACHE_SHIFT)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _CACHE_UNCACHED_ACCELERATED (7<<_CACHE_SHIFT)  
+#define __READABLE (_PAGE_READ | _PAGE_SILENT_READ | _PAGE_ACCESSED)
+#define __WRITEABLE (_PAGE_WRITE | _PAGE_SILENT_WRITE | _PAGE_MODIFIED)
+#define _PAGE_CHG_MASK (PAGE_MASK | _PAGE_ACCESSED | _PAGE_MODIFIED | _CACHE_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/pgtable.h b/ndk/platforms/android-9/arch-mips/include/asm/pgtable.h
new file mode 100644
index 0000000..ceb4343
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/pgtable.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PGTABLE_H
+#define _ASM_PGTABLE_H
+#include <asm/io.h>
+#include <asm/pgtable-bits.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mm_struct;
+struct vm_area_struct;
+#define PAGE_NONE __pgprot(_PAGE_PRESENT | _CACHE_CACHABLE_NONCOHERENT)
+#define PAGE_SHARED __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE |   _page_cachable_default)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PAGE_COPY __pgprot(_PAGE_PRESENT | _PAGE_READ |   _page_cachable_default)
+#define PAGE_READONLY __pgprot(_PAGE_PRESENT | _PAGE_READ |   _page_cachable_default)
+#define PAGE_KERNEL __pgprot(_PAGE_PRESENT | __READABLE | __WRITEABLE |   _PAGE_GLOBAL | _page_cachable_default)
+#define PAGE_USERIO __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE |   _page_cachable_default)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PAGE_KERNEL_UNCACHED __pgprot(_PAGE_PRESENT | __READABLE |   __WRITEABLE | _PAGE_GLOBAL | _CACHE_UNCACHED)
+#define __P000 __pgprot(0)
+#define __P001 __pgprot(0)
+#define __P010 __pgprot(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __P011 __pgprot(0)
+#define __P100 __pgprot(0)
+#define __P101 __pgprot(0)
+#define __P110 __pgprot(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __P111 __pgprot(0)
+#define __S000 __pgprot(0)
+#define __S001 __pgprot(0)
+#define __S010 __pgprot(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __S011 __pgprot(0)
+#define __S100 __pgprot(0)
+#define __S101 __pgprot(0)
+#define __S110 __pgprot(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __S111 __pgprot(0)
+#define ZERO_PAGE(vaddr)   (virt_to_page((void *)(empty_zero_page + (((unsigned long)(vaddr)) & zero_page_mask))))
+#define pmd_phys(pmd) virt_to_phys((void *)pmd_val(pmd))
+#define pmd_page(pmd) (pfn_to_page(pmd_phys(pmd) >> PAGE_SHIFT))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define pmd_page_vaddr(pmd) pmd_val(pmd)
+#define pte_none(pte) (!(pte_val(pte) & ~_PAGE_GLOBAL))
+#define pte_present(pte) (pte_val(pte) & _PAGE_PRESENT)
+#define set_pte_at(mm, addr, ptep, pteval) set_pte(ptep, pteval)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define set_pmd(pmdptr, pmdval) do { *(pmdptr) = (pmdval); } while(0)
+#define PGD_T_LOG2 (__builtin_ffs(sizeof(pgd_t)) - 1)
+#define PMD_T_LOG2 (__builtin_ffs(sizeof(pmd_t)) - 1)
+#define PTE_T_LOG2 (__builtin_ffs(sizeof(pte_t)) - 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define pgprot_noncached pgprot_noncached
+#define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
+#define kern_addr_valid(addr) (1)
+#define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm-generic/pgtable.h>
+#define HAVE_ARCH_UNMAPPED_AREA
+#define pgtable_cache_init() do { } while (0)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/poll.h b/ndk/platforms/android-9/arch-mips/include/asm/poll.h
new file mode 100644
index 0000000..8d6a297
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/poll.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_POLL_H
+#define __ASM_POLL_H
+#define POLLWRNORM POLLOUT
+#define POLLWRBAND 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm-generic/poll.h>
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/posix_types.h b/ndk/platforms/android-9/arch-mips/include/asm/posix_types.h
new file mode 100644
index 0000000..99a2896
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/posix_types.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_POSIX_TYPES_H
+#define _ASM_POSIX_TYPES_H
+#include <asm/sgidefs.h>
+typedef unsigned long __kernel_ino_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned int __kernel_mode_t;
+#if _MIPS_SZLONG == 32
+typedef unsigned long __kernel_nlink_t;
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SZLONG == 64
+typedef unsigned int __kernel_nlink_t;
+#endif
+typedef long __kernel_off_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef int __kernel_pid_t;
+typedef int __kernel_ipc_pid_t;
+typedef unsigned int __kernel_uid_t;
+typedef unsigned int __kernel_gid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SZLONG == 32
+typedef unsigned int __kernel_size_t;
+typedef int __kernel_ssize_t;
+typedef int __kernel_ptrdiff_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SZLONG == 64
+typedef unsigned long __kernel_size_t;
+typedef long __kernel_ssize_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef long __kernel_ptrdiff_t;
+#endif
+typedef long __kernel_time_t;
+typedef long __kernel_suseconds_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef long __kernel_clock_t;
+typedef int __kernel_timer_t;
+typedef int __kernel_clockid_t;
+typedef long __kernel_daddr_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef char * __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int __kernel_uid32_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned int __kernel_gid32_t;
+typedef __kernel_uid_t __kernel_old_uid_t;
+typedef __kernel_gid_t __kernel_old_gid_t;
+typedef unsigned int __kernel_old_dev_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef __GNUC__
+typedef long long __kernel_loff_t;
+#endif
+typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SZLONG == 32
+ long val[2];
+#endif
+#if _MIPS_SZLONG == 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int val[2];
+#endif
+} __kernel_fsid_t;
+#if !defined(__GLIBC__) || __GLIBC__ < 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef __FD_SET
+#define __FD_SET(fd, fdsetp) (((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] |= (1<<((fd) & 31)))
+#undef __FD_CLR
+#define __FD_CLR(fd, fdsetp) (((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] &= ~(1<<((fd) & 31)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef __FD_ISSET
+#define __FD_ISSET(fd, fdsetp) ((((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] & (1<<((fd) & 31))) != 0)
+#undef __FD_ZERO
+#define __FD_ZERO(fdsetp) (memset (fdsetp, 0, sizeof (*(fd_set *)(fdsetp))))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/prefetch.h b/ndk/platforms/android-9/arch-mips/include/asm/prefetch.h
new file mode 100644
index 0000000..a4386be
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/prefetch.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_PREFETCH_H
+#define __ASM_PREFETCH_H
+#define Pref_Load 0
+#define Pref_Store 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Pref_LoadStreamed 4
+#define Pref_StoreStreamed 5
+#define Pref_LoadRetained 6
+#define Pref_StoreRetained 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define Pref_WriteBackInvalidate 25
+#define Pref_PrepareForStore 30
+#ifdef __ASSEMBLY__
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/processor.h b/ndk/platforms/android-9/arch-mips/include/asm/processor.h
new file mode 100644
index 0000000..3563121
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/processor.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PROCESSOR_H
+#define _ASM_PROCESSOR_H
+#include <linux/cpumask.h>
+#include <linux/threads.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/cachectl.h>
+#include <asm/cpu.h>
+#include <asm/cpu-info.h>
+#include <asm/mipsregs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/prefetch.h>
+#include <asm/system.h>
+#define current_text_addr() ({ __label__ _l; _l: &&_l;})
+#define NUM_FPU_REGS 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef __u64 fpureg_t;
+struct mips_fpu_struct {
+ fpureg_t fpr[NUM_FPU_REGS];
+ unsigned int fcr31;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define NUM_DSP_REGS 6
+typedef __u32 dspreg_t;
+struct mips_dsp_state {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ dspreg_t dspr[NUM_DSP_REGS];
+ unsigned int dspcontrol;
+};
+#define INIT_CPUMASK {   {0,}  }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct {
+ unsigned long seg;
+} mm_segment_t;
+#define ARCH_MIN_TASKALIGN 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mips_abi;
+struct thread_struct {
+ unsigned long reg16;
+ unsigned long reg17, reg18, reg19, reg20, reg21, reg22, reg23;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long reg29, reg30, reg31;
+ unsigned long cp0_status;
+ struct mips_fpu_struct fpu;
+ struct mips_dsp_state dsp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long cp0_badvaddr;
+ unsigned long cp0_baduaddr;
+ unsigned long error_code;
+ unsigned long trap_no;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long irix_trampoline;
+ unsigned long irix_oldctx;
+ struct mips_abi *abi;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPAFF_INIT
+#define INIT_THREAD {       .reg16 = 0,   .reg17 = 0,   .reg18 = 0,   .reg19 = 0,   .reg20 = 0,   .reg21 = 0,   .reg22 = 0,   .reg23 = 0,   .reg29 = 0,   .reg30 = 0,   .reg31 = 0,       .cp0_status = 0,       .fpu = {   .fpr = {0,},   .fcr31 = 0,   },       FPAFF_INIT       .dsp = {   .dspr = {0, },   .dspcontrol = 0,   },       .cp0_badvaddr = 0,   .cp0_baduaddr = 0,   .error_code = 0,   .trap_no = 0,   .irix_trampoline = 0,   .irix_oldctx = 0,  }
+struct task_struct;
+#define release_thread(thread) do { } while(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define prepare_to_copy(tsk) do { } while (0)
+#define __KSTK_TOS(tsk) ((unsigned long)task_stack_page(tsk) + THREAD_SIZE - 32)
+#define task_pt_regs(tsk) ((struct pt_regs *)__KSTK_TOS(tsk) - 1)
+#define KSTK_EIP(tsk) (task_pt_regs(tsk)->cp0_epc)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[29])
+#define KSTK_STATUS(tsk) (task_pt_regs(tsk)->cp0_status)
+#define cpu_relax() barrier()
+#define return_address() ({__asm__ __volatile__("":::"$31");__builtin_return_address(0);})
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/ptrace.h b/ndk/platforms/android-9/arch-mips/include/asm/ptrace.h
new file mode 100644
index 0000000..2b71e70
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/ptrace.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_PTRACE_H
+#define _ASM_PTRACE_H
+#define FPR_BASE 32
+#define PC 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAUSE 65
+#define BADVADDR 66
+#define MMHI 67
+#define MMLO 68
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FPC_CSR 69
+#define FPC_EIR 70
+#define DSP_BASE 71  
+#define DSP_CONTROL 77
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ACX 78
+struct pt_regs {
+ unsigned long regs[32];
+ unsigned long cp0_status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long hi;
+ unsigned long lo;
+ unsigned long cp0_badvaddr;
+ unsigned long cp0_cause;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long cp0_epc;
+} __attribute__ ((aligned (8)));
+#define PTRACE_GETREGS 12
+#define PTRACE_SETREGS 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRACE_GETFPREGS 14
+#define PTRACE_SETFPREGS 15
+#define PTRACE_OLDSETOPTIONS 21
+#define PTRACE_GET_THREAD_AREA 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRACE_SET_THREAD_AREA 26
+#define PTRACE_PEEKTEXT_3264 0xc0
+#define PTRACE_PEEKDATA_3264 0xc1
+#define PTRACE_POKETEXT_3264 0xc2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PTRACE_POKEDATA_3264 0xc3
+#define PTRACE_GET_THREAD_AREA_3264 0xc4
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/reg.h b/ndk/platforms/android-9/arch-mips/include/asm/reg.h
new file mode 100644
index 0000000..9174e27
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/reg.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_MIPS_REG_H
+#define __ASM_MIPS_REG_H
+#ifdef WANT_COMPAT_REG_H
+#define EF_R0 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R1 7
+#define EF_R2 8
+#define EF_R3 9
+#define EF_R4 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R5 11
+#define EF_R6 12
+#define EF_R7 13
+#define EF_R8 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R9 15
+#define EF_R10 16
+#define EF_R11 17
+#define EF_R12 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R13 19
+#define EF_R14 20
+#define EF_R15 21
+#define EF_R16 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R17 23
+#define EF_R18 24
+#define EF_R19 25
+#define EF_R20 26
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R21 27
+#define EF_R22 28
+#define EF_R23 29
+#define EF_R24 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R25 31
+#define EF_R26 32
+#define EF_R27 33
+#define EF_R28 34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_R29 35
+#define EF_R30 36
+#define EF_R31 37
+#define EF_LO 38
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_HI 39
+#define EF_CP0_EPC 40
+#define EF_CP0_BADVADDR 41
+#define EF_CP0_STATUS 42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_CP0_CAUSE 43
+#define EF_UNUSED0 44
+#define EF_SIZE 180
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/regdef.h b/ndk/platforms/android-9/arch-mips/include/asm/regdef.h
new file mode 100644
index 0000000..12d9c42
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/regdef.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_REGDEF_H
+#define _ASM_REGDEF_H
+#include <asm/sgidefs.h>
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define zero $0  
+#define AT $1  
+#define v0 $2  
+#define v1 $3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define a0 $4  
+#define a1 $5
+#define a2 $6
+#define a3 $7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define t0 $8  
+#define t1 $9
+#define t2 $10
+#define t3 $11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define t4 $12
+#define t5 $13
+#define t6 $14
+#define t7 $15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define s0 $16  
+#define s1 $17
+#define s2 $18
+#define s3 $19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define s4 $20
+#define s5 $21
+#define s6 $22
+#define s7 $23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define t8 $24  
+#define t9 $25
+#define jp $25  
+#define k0 $26  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define k1 $27
+#define gp $28  
+#define sp $29  
+#define fp $30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define s8 $30  
+#define ra $31  
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define zero $0  
+#define AT $at  
+#define v0 $2  
+#define v1 $3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define a0 $4  
+#define a1 $5
+#define a2 $6
+#define a3 $7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define a4 $8  
+#define ta0 $8
+#define a5 $9
+#define ta1 $9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define a6 $10
+#define ta2 $10
+#define a7 $11
+#define ta3 $11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define t0 $12  
+#define t1 $13
+#define t2 $14
+#define t3 $15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define s0 $16  
+#define s1 $17
+#define s2 $18
+#define s3 $19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define s4 $20
+#define s5 $21
+#define s6 $22
+#define s7 $23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define t8 $24  
+#define t9 $25  
+#define jp $25  
+#define k0 $26  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define k1 $27
+#define gp $28  
+#define sp $29  
+#define fp $30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define s8 $30  
+#define ra $31  
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/resource.h b/ndk/platforms/android-9/arch-mips/include/asm/resource.h
new file mode 100644
index 0000000..e841072
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/resource.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_RESOURCE_H
+#define _ASM_RESOURCE_H
+#define RLIMIT_NOFILE 5  
+#define RLIMIT_AS 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RLIMIT_RSS 7  
+#define RLIMIT_NPROC 8  
+#define RLIMIT_MEMLOCK 9  
+#include <asm-generic/resource.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/scatterlist.h b/ndk/platforms/android-9/arch-mips/include/asm/scatterlist.h
new file mode 100644
index 0000000..fd697b0
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/scatterlist.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SCATTERLIST_H
+#define __ASM_SCATTERLIST_H
+#include <asm/types.h>
+struct scatterlist {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long page_link;
+ unsigned int offset;
+ dma_addr_t dma_address;
+ unsigned int length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define sg_dma_address(sg) ((sg)->dma_address)
+#define sg_dma_len(sg) ((sg)->length)
+#define ISA_DMA_THRESHOLD (0x00ffffffUL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sections.h b/ndk/platforms/android-9/arch-mips/include/asm/sections.h
new file mode 100644
index 0000000..ee51096
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sections.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SECTIONS_H
+#define _ASM_SECTIONS_H
+#include <asm-generic/sections.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/segment.h b/ndk/platforms/android-9/arch-mips/include/asm/segment.h
new file mode 100644
index 0000000..e417612
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/segment.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SEGMENT_H
+#define _ASM_SEGMENT_H
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sembuf.h b/ndk/platforms/android-9/arch-mips/include/asm/sembuf.h
new file mode 100644
index 0000000..b524f68
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sembuf.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SEMBUF_H
+#define _ASM_SEMBUF_H
+struct semid64_ds {
+ struct ipc64_perm sem_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __kernel_time_t sem_otime;
+ __kernel_time_t sem_ctime;
+ unsigned long sem_nsems;
+ unsigned long __unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long __unused2;
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/setup.h b/ndk/platforms/android-9/arch-mips/include/asm/setup.h
new file mode 100644
index 0000000..731e993
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/setup.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _MIPS_SETUP_H
+#define _MIPS_SETUP_H
+#define COMMAND_LINE_SIZE 256
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sgi/hpc3.h b/ndk/platforms/android-9/arch-mips/include/asm/sgi/hpc3.h
new file mode 100644
index 0000000..d4f4280
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sgi/hpc3.h
@@ -0,0 +1,290 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SGI_HPC3_H
+#define _SGI_HPC3_H
+#include <linux/types.h>
+#include <asm/page.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hpc_dma_desc {
+ u32 pbuf;
+ u32 cntinfo;
+#define HPCDMA_EOX 0x80000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPCDMA_EOR 0x80000000  
+#define HPCDMA_EOXP 0x40000000  
+#define HPCDMA_EORP 0x40000000  
+#define HPCDMA_XIE 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPCDMA_XIU 0x01000000  
+#define HPCDMA_EIPC 0x00ff0000  
+#define HPCDMA_ETXD 0x00008000  
+#define HPCDMA_OWN 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPCDMA_BCNT 0x00003fff  
+ u32 pnext;
+};
+struct hpc3_pbus_dmacregs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 pbdma_bptr;
+ volatile u32 pbdma_dptr;
+ u32 _unused0[0x1000/4 - 2];
+ volatile u32 pbdma_ctrl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PDMACTRL_INT 0x00000001  
+#define HPC3_PDMACTRL_ISACT 0x00000002  
+#define HPC3_PDMACTRL_SEL 0x00000002  
+#define HPC3_PDMACTRL_RCV 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PDMACTRL_FLSH 0x00000008  
+#define HPC3_PDMACTRL_ACT 0x00000010  
+#define HPC3_PDMACTRL_LD 0x00000020  
+#define HPC3_PDMACTRL_RT 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PDMACTRL_HW 0x0000ff00  
+#define HPC3_PDMACTRL_FB 0x003f0000  
+#define HPC3_PDMACTRL_FE 0x3f000000  
+ u32 _unused1[0x1000/4 - 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct hpc3_scsiregs {
+ volatile u32 cbptr;
+ volatile u32 ndptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused0[0x1000/4 - 2];
+ volatile u32 bcd;
+#define HPC3_SBCD_BCNTMSK 0x00003fff  
+#define HPC3_SBCD_XIE 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SBCD_EOX 0x00008000  
+ volatile u32 ctrl;
+#define HPC3_SCTRL_IRQ 0x01  
+#define HPC3_SCTRL_ENDIAN 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SCTRL_DIR 0x04  
+#define HPC3_SCTRL_FLUSH 0x08  
+#define HPC3_SCTRL_ACTIVE 0x10  
+#define HPC3_SCTRL_AMASK 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SCTRL_CRESET 0x40  
+#define HPC3_SCTRL_PERR 0x80  
+ volatile u32 gfptr;
+ volatile u32 dfptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 dconfig;
+#define HPC3_SDCFG_HCLK 0x00001  
+#define HPC3_SDCFG_D1 0x00006  
+#define HPC3_SDCFG_D2 0x00038  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SDCFG_D3 0x001c0  
+#define HPC3_SDCFG_HWAT 0x00e00  
+#define HPC3_SDCFG_HW 0x01000  
+#define HPC3_SDCFG_SWAP 0x02000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SDCFG_EPAR 0x04000  
+#define HPC3_SDCFG_POLL 0x08000  
+#define HPC3_SDCFG_ERLY 0x30000  
+ volatile u32 pconfig;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SPCFG_P3 0x0003  
+#define HPC3_SPCFG_P2W 0x001c  
+#define HPC3_SPCFG_P2R 0x01e0  
+#define HPC3_SPCFG_P1 0x0e00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_SPCFG_HW 0x1000  
+#define HPC3_SPCFG_SWAP 0x2000  
+#define HPC3_SPCFG_EPAR 0x4000  
+#define HPC3_SPCFG_FUJI 0x8000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused1[0x1000/4 - 6];
+};
+struct hpc3_ethregs {
+ volatile u32 rx_cbptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 rx_ndptr;
+ u32 _unused0[0x1000/4 - 2];
+ volatile u32 rx_bcd;
+#define HPC3_ERXBCD_BCNTMSK 0x00003fff  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ERXBCD_XIE 0x20000000  
+#define HPC3_ERXBCD_EOX 0x80000000  
+ volatile u32 rx_ctrl;
+#define HPC3_ERXCTRL_STAT50 0x0000003f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ERXCTRL_STAT6 0x00000040  
+#define HPC3_ERXCTRL_STAT7 0x00000080  
+#define HPC3_ERXCTRL_ENDIAN 0x00000100  
+#define HPC3_ERXCTRL_ACTIVE 0x00000200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ERXCTRL_AMASK 0x00000400  
+#define HPC3_ERXCTRL_RBO 0x00000800  
+ volatile u32 rx_gfptr;
+ volatile u32 rx_dfptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused1;
+ volatile u32 reset;
+#define HPC3_ERST_CRESET 0x1  
+#define HPC3_ERST_CLRIRQ 0x2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ERST_LBACK 0x4  
+ volatile u32 dconfig;
+#define HPC3_EDCFG_D1 0x0000f  
+#define HPC3_EDCFG_D2 0x000f0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_EDCFG_D3 0x00f00  
+#define HPC3_EDCFG_WCTRL 0x01000  
+#define HPC3_EDCFG_FRXDC 0x02000  
+#define HPC3_EDCFG_FEOP 0x04000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_EDCFG_FIRQ 0x08000  
+#define HPC3_EDCFG_PTO 0x30000  
+ volatile u32 pconfig;
+#define HPC3_EPCFG_P1 0x000f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_EPCFG_P2 0x00f0  
+#define HPC3_EPCFG_P3 0x0f00  
+#define HPC3_EPCFG_TST 0x1000  
+ u32 _unused2[0x1000/4 - 8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 tx_cbptr;
+ volatile u32 tx_ndptr;
+ u32 _unused3[0x1000/4 - 2];
+ volatile u32 tx_bcd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ETXBCD_BCNTMSK 0x00003fff  
+#define HPC3_ETXBCD_ESAMP 0x10000000  
+#define HPC3_ETXBCD_XIE 0x20000000  
+#define HPC3_ETXBCD_EOP 0x40000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ETXBCD_EOX 0x80000000  
+ volatile u32 tx_ctrl;
+#define HPC3_ETXCTRL_STAT30 0x0000000f  
+#define HPC3_ETXCTRL_STAT4 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ETXCTRL_STAT75 0x000000e0  
+#define HPC3_ETXCTRL_ENDIAN 0x00000100  
+#define HPC3_ETXCTRL_ACTIVE 0x00000200  
+#define HPC3_ETXCTRL_AMASK 0x00000400  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 tx_gfptr;
+ volatile u32 tx_dfptr;
+ u32 _unused4[0x1000/4 - 4];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct hpc3_regs {
+ struct hpc3_pbus_dmacregs pbdma[8];
+ struct hpc3_scsiregs scsi_chan0, scsi_chan1;
+ struct hpc3_ethregs ethregs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused0[0x18000/4];
+ volatile u32 istat0;
+#define HPC3_ISTAT_PBIMASK 0x0ff  
+#define HPC3_ISTAT_SC0MASK 0x100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_ISTAT_SC1MASK 0x200  
+ volatile u32 gio_misc;
+#define HPC3_GIOMISC_ERTIME 0x1  
+#define HPC3_GIOMISC_DENDIAN 0x2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 eeprom;
+#define HPC3_EEPROM_EPROT 0x01  
+#define HPC3_EEPROM_CSEL 0x02  
+#define HPC3_EEPROM_ECLK 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_EEPROM_DATO 0x08  
+#define HPC3_EEPROM_DATI 0x10  
+ volatile u32 istat1;
+ volatile u32 bestat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_BESTAT_BLMASK 0x000ff  
+#define HPC3_BESTAT_CTYPE 0x00100  
+#define HPC3_BESTAT_PIDSHIFT 9
+#define HPC3_BESTAT_PIDMASK 0x3f700  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused1[0x14000/4 - 5];
+ volatile u32 scsi0_ext[256];
+ u32 _unused2[0x7c00/4];
+ volatile u32 scsi1_ext[256];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused3[0x7c00/4];
+ volatile u32 eth_ext[320];
+ u32 _unused4[0x3b00/4];
+ volatile u32 pbus_extregs[16][256];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 pbus_dmacfg[8][128];
+#define HPC3_DMACFG_D3R_MASK 0x00000001
+#define HPC3_DMACFG_D3R_SHIFT 0
+#define HPC3_DMACFG_D4R_MASK 0x0000001e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_DMACFG_D4R_SHIFT 1
+#define HPC3_DMACFG_D5R_MASK 0x000001e0
+#define HPC3_DMACFG_D5R_SHIFT 5
+#define HPC3_DMACFG_D3W_MASK 0x00000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_DMACFG_D3W_SHIFT 9
+#define HPC3_DMACFG_D4W_MASK 0x00003c00
+#define HPC3_DMACFG_D4W_SHIFT 10
+#define HPC3_DMACFG_D5W_MASK 0x0003c000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_DMACFG_D5W_SHIFT 14
+#define HPC3_DMACFG_DS16 0x00040000
+#define HPC3_DMACFG_EVENHI 0x00080000
+#define HPC3_DMACFG_RTIME 0x00200000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_DMACFG_BURST_MASK 0x07c00000
+#define HPC3_DMACFG_BURST_SHIFT 22
+#define HPC3_DMACFG_DRQLIVE 0x08000000
+ volatile u32 pbus_piocfg[16][64];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PIOCFG_P2R_MASK 0x00001
+#define HPC3_PIOCFG_P2R_SHIFT 0
+#define HPC3_PIOCFG_P3R_MASK 0x0001e
+#define HPC3_PIOCFG_P3R_SHIFT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PIOCFG_P4R_MASK 0x001e0
+#define HPC3_PIOCFG_P4R_SHIFT 5
+#define HPC3_PIOCFG_P2W_MASK 0x00200
+#define HPC3_PIOCFG_P2W_SHIFT 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PIOCFG_P3W_MASK 0x03c00
+#define HPC3_PIOCFG_P3W_SHIFT 10
+#define HPC3_PIOCFG_P4W_MASK 0x3c000
+#define HPC3_PIOCFG_P4W_SHIFT 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_PIOCFG_DS16 0x40000
+#define HPC3_PIOCFG_EVENHI 0x80000
+ volatile u32 pbus_promwe;
+#define HPC3_PROM_WENAB 0x1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused5[0x0800/4 - 1];
+ volatile u32 pbus_promswap;
+#define HPC3_PROM_SWAP 0x1  
+ u32 _unused6[0x0800/4 - 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 pbus_gout;
+#define HPC3_PROM_STAT 0x1  
+ u32 _unused7[0x1000/4 - 1];
+ volatile u32 rtcregs[14];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused8[50];
+ volatile u32 bbram[8192-50-14];
+};
+#define HPC3_CHIP0_BASE 0x1fb80000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HPC3_CHIP1_BASE 0x1fb00000  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sgi/ioc.h b/ndk/platforms/android-9/arch-mips/include/asm/sgi/ioc.h
new file mode 100644
index 0000000..db75b20
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sgi/ioc.h
@@ -0,0 +1,221 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SGI_IOC_H
+#define _SGI_IOC_H
+#include <linux/types.h>
+#include <asm/sgi/pi1.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sgioc_uart_regs {
+ u8 _ctrl1[3];
+ volatile u8 ctrl1;
+ u8 _data1[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 data1;
+ u8 _ctrl2[3];
+ volatile u8 ctrl2;
+ u8 _data2[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 data2;
+};
+struct sgioc_keyb_regs {
+ u8 _data[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 data;
+ u8 _command[3];
+ volatile u8 command;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sgint_regs {
+ u8 _istat0[3];
+ volatile u8 istat0;
+#define SGINT_ISTAT0_FFULL 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_ISTAT0_SCSI0 0x02
+#define SGINT_ISTAT0_SCSI1 0x04
+#define SGINT_ISTAT0_ENET 0x08
+#define SGINT_ISTAT0_GFXDMA 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_ISTAT0_PPORT 0x20
+#define SGINT_ISTAT0_HPC2 0x40
+#define SGINT_ISTAT0_LIO2 0x80
+ u8 _imask0[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 imask0;
+ u8 _istat1[3];
+ volatile u8 istat1;
+#define SGINT_ISTAT1_ISDNI 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_ISTAT1_PWR 0x02
+#define SGINT_ISTAT1_ISDNH 0x04
+#define SGINT_ISTAT1_LIO3 0x08
+#define SGINT_ISTAT1_HPC3 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_ISTAT1_AFAIL 0x20
+#define SGINT_ISTAT1_VIDEO 0x40
+#define SGINT_ISTAT1_GIO2 0x80
+ u8 _imask1[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 imask1;
+ u8 _vmeistat[3];
+ volatile u8 vmeistat;
+ u8 _cmeimask0[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 cmeimask0;
+ u8 _cmeimask1[3];
+ volatile u8 cmeimask1;
+ u8 _cmepol[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 cmepol;
+ u8 _tclear[3];
+ volatile u8 tclear;
+ u8 _errstat[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 errstat;
+ u32 _unused0[2];
+ u8 _tcnt0[3];
+ volatile u8 tcnt0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 _tcnt1[3];
+ volatile u8 tcnt1;
+ u8 _tcnt2[3];
+ volatile u8 tcnt2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 _tcword[3];
+ volatile u8 tcword;
+#define SGINT_TCWORD_BCD 0x01  
+#define SGINT_TCWORD_MMASK 0x0e  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_TCWORD_MITC 0x00  
+#define SGINT_TCWORD_MOS 0x02  
+#define SGINT_TCWORD_MRGEN 0x04  
+#define SGINT_TCWORD_MSWGEN 0x06  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_TCWORD_MSWST 0x08  
+#define SGINT_TCWORD_MHWST 0x0a  
+#define SGINT_TCWORD_CMASK 0x30  
+#define SGINT_TCWORD_CLAT 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_TCWORD_CLSB 0x10  
+#define SGINT_TCWORD_CMSB 0x20  
+#define SGINT_TCWORD_CALL 0x30  
+#define SGINT_TCWORD_CNT0 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_TCWORD_CNT1 0x40  
+#define SGINT_TCWORD_CNT2 0x80  
+#define SGINT_TCWORD_CRBCK 0xc0  
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGINT_TIMER_CLOCK 1000000
+#define SGINT_TCSAMP_COUNTER ((SGINT_TIMER_CLOCK / HZ) + 255)
+struct sgioc_regs {
+ struct pi1_regs pport;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused0[2];
+ struct sgioc_uart_regs uart;
+ struct sgioc_keyb_regs kbdmouse;
+ u8 _gcsel[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 gcsel;
+ u8 _genctrl[3];
+ volatile u8 genctrl;
+ u8 _panel[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 panel;
+#define SGIOC_PANEL_POWERON 0x01
+#define SGIOC_PANEL_POWERINTR 0x02
+#define SGIOC_PANEL_VOLDNINTR 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_PANEL_VOLDNHOLD 0x20
+#define SGIOC_PANEL_VOLUPINTR 0x40
+#define SGIOC_PANEL_VOLUPHOLD 0x80
+ u32 _unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 _sysid[3];
+ volatile u8 sysid;
+#define SGIOC_SYSID_FULLHOUSE 0x01
+#define SGIOC_SYSID_BOARDREV(x) (((x) & 0x1e) >> 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_SYSID_CHIPREV(x) (((x) & 0xe0) >> 5)
+ u32 _unused2;
+ u8 _read[3];
+ volatile u8 read;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 _unused3;
+ u8 _dmasel[3];
+ volatile u8 dmasel;
+#define SGIOC_DMASEL_SCLK10MHZ 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_DMASEL_ISDNB 0x01  
+#define SGIOC_DMASEL_ISDNA 0x02  
+#define SGIOC_DMASEL_PPORT 0x04  
+#define SGIOC_DMASEL_SCLK667MHZ 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_DMASEL_SCLKEXT 0x20  
+ u32 _unused4;
+ u8 _reset[3];
+ volatile u8 reset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_RESET_PPORT 0x01  
+#define SGIOC_RESET_KBDMOUSE 0x02  
+#define SGIOC_RESET_EISA 0x04  
+#define SGIOC_RESET_ISDN 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_RESET_LC0OFF 0x10  
+#define SGIOC_RESET_LC1OFF 0x20  
+ u32 _unused5;
+ u8 _write[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 write;
+#define SGIOC_WRITE_NTHRESH 0x01  
+#define SGIOC_WRITE_TPSPEED 0x02  
+#define SGIOC_WRITE_EPSEL 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_WRITE_EASEL 0x08  
+#define SGIOC_WRITE_U1AMODE 0x10  
+#define SGIOC_WRITE_U0AMODE 0x20  
+#define SGIOC_WRITE_MLO 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIOC_WRITE_MHI 0x80  
+ u32 _unused6;
+ struct sgint_regs int3;
+ u32 _unused7[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 extio;
+#define EXTIO_S0_IRQ_3 0x8000  
+#define EXTIO_S0_IRQ_2 0x4000  
+#define EXTIO_S0_IRQ_1 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EXTIO_S0_RETRACE 0x1000
+#define EXTIO_SG_IRQ_3 0x0800  
+#define EXTIO_SG_IRQ_2 0x0400  
+#define EXTIO_SG_IRQ_1 0x0200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EXTIO_SG_RETRACE 0x0100
+#define EXTIO_GIO_33MHZ 0x0080
+#define EXTIO_EISA_BUSERR 0x0040
+#define EXTIO_MC_BUSERR 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EXTIO_HPC3_BUSERR 0x0010
+#define EXTIO_S0_STAT_1 0x0008
+#define EXTIO_S0_STAT_0 0x0004
+#define EXTIO_SG_STAT_1 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EXTIO_SG_STAT_0 0x0001
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sgi/pi1.h b/ndk/platforms/android-9/arch-mips/include/asm/sgi/pi1.h
new file mode 100644
index 0000000..1aa0438
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sgi/pi1.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SGI_PI1_H
+#define _SGI_PI1_H
+struct pi1_regs {
+ u8 _data[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 data;
+ u8 _ctrl[3];
+ volatile u8 ctrl;
+#define PI1_CTRL_STROBE_N 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_CTRL_AFD_N 0x02
+#define PI1_CTRL_INIT_N 0x04
+#define PI1_CTRL_SLIN_N 0x08
+#define PI1_CTRL_IRQ_ENA 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_CTRL_DIR 0x20
+#define PI1_CTRL_SEL 0x40
+ u8 _status[3];
+ volatile u8 status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_STAT_DEVID 0x03  
+#define PI1_STAT_NOINK 0x04  
+#define PI1_STAT_ERROR 0x08
+#define PI1_STAT_ONLINE 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_STAT_PE 0x20
+#define PI1_STAT_ACK 0x40
+#define PI1_STAT_BUSY 0x80
+ u8 _dmactrl[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 dmactrl;
+#define PI1_DMACTRL_FIFO_EMPTY 0x01  
+#define PI1_DMACTRL_ABORT 0x02  
+#define PI1_DMACTRL_STDMODE 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_DMACTRL_SGIMODE 0x04  
+#define PI1_DMACTRL_RICOHMODE 0x08  
+#define PI1_DMACTRL_HPMODE 0x0c  
+#define PI1_DMACTRL_BLKMODE 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_DMACTRL_FIFO_CLEAR 0x20  
+#define PI1_DMACTRL_READ 0x40  
+#define PI1_DMACTRL_RUN 0x80  
+ u8 _intstat[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 intstat;
+#define PI1_INTSTAT_ACK 0x04
+#define PI1_INTSTAT_FEMPTY 0x08
+#define PI1_INTSTAT_NOINK 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_INTSTAT_ONLINE 0x20
+#define PI1_INTSTAT_ERR 0x40
+#define PI1_INTSTAT_PE 0x80
+ u8 _intmask[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 intmask;
+#define PI1_INTMASK_ACK 0x04
+#define PI1_INTMASK_FIFO_EMPTY 0x08
+#define PI1_INTMASK_NOINK 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_INTMASK_ONLINE 0x20
+#define PI1_INTMASK_ERR 0x40
+#define PI1_INTMASK_PE 0x80
+ u8 _timer1[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 timer1;
+#define PI1_TIME1 0x27
+ u8 _timer2[3];
+ volatile u8 timer2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI1_TIME2 0x13
+ u8 _timer3[3];
+ volatile u8 timer3;
+#define PI1_TIME3 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 _timer4[3];
+ volatile u8 timer4;
+#define PI1_TIME4 0x00
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sgiarcs.h b/ndk/platforms/android-9/arch-mips/include/asm/sgiarcs.h
new file mode 100644
index 0000000..5fe0d47
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sgiarcs.h
@@ -0,0 +1,360 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SGIARCS_H
+#define _ASM_SGIARCS_H
+#include <asm/types.h>
+#include <asm/fw/arc/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_ESUCCESS 0x00
+#define PROM_E2BIG 0x01
+#define PROM_EACCESS 0x02
+#define PROM_EAGAIN 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_EBADF 0x04
+#define PROM_EBUSY 0x05
+#define PROM_EFAULT 0x06
+#define PROM_EINVAL 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_EIO 0x08
+#define PROM_EISDIR 0x09
+#define PROM_EMFILE 0x0a
+#define PROM_EMLINK 0x0b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_ENAMETOOLONG 0x0c
+#define PROM_ENODEV 0x0d
+#define PROM_ENOENT 0x0e
+#define PROM_ENOEXEC 0x0f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_ENOMEM 0x10
+#define PROM_ENOSPC 0x11
+#define PROM_ENOTDIR 0x12
+#define PROM_ENOTTY 0x13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_ENXIO 0x14
+#define PROM_EROFS 0x15
+#define PROM_EADDRNOTAVAIL 0x1f
+#define PROM_ETIMEDOUT 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROM_ECONNABORTED 0x21
+#define PROM_ENOCONNECT 0x22
+enum linux_devclass {
+ system, processor, cache, adapter, controller, peripheral, memory
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum linux_devtypes {
+ Arc, Cpu, Fpu,
+ picache, pdcache,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sicache, sdcache, sccache,
+ memdev, eisa_adapter, tc_adapter, scsi_adapter, dti_adapter,
+ multifunc_adapter, dsk_controller, tp_controller, cdrom_controller,
+ worm_controller, serial_controller, net_controller, disp_controller,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ parallel_controller, ptr_controller, kbd_controller, audio_controller,
+ misc_controller, disk_peripheral, flpy_peripheral, tp_peripheral,
+ modem_peripheral, monitor_peripheral, printer_peripheral,
+ ptr_peripheral, kbd_peripheral, term_peripheral, line_peripheral,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ net_peripheral, misc_peripheral, anon
+};
+enum linux_identifier {
+ bogus, ronly, removable, consin, consout, input, output
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct linux_component {
+ enum linux_devclass class;
+ enum linux_devtypes type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ enum linux_identifier iflags;
+ USHORT vers;
+ USHORT rev;
+ ULONG key;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ULONG amask;
+ ULONG cdsize;
+ ULONG ilen;
+ _PULONG iname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+typedef struct linux_component pcomponent;
+struct linux_sysid {
+ char vend[8], prod[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+enum arcs_memtypes {
+ arcs_eblock,
+ arcs_rvpage,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ arcs_fcontig,
+ arcs_free,
+ arcs_bmem,
+ arcs_prog,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ arcs_atmp,
+ arcs_aperm,
+};
+enum arc_memtypes {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ arc_eblock,
+ arc_rvpage,
+ arc_free,
+ arc_bmem,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ arc_prog,
+ arc_atmp,
+ arc_aperm,
+ arc_fcontig,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+union linux_memtypes {
+ enum arcs_memtypes arcs;
+ enum arc_memtypes arc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct linux_mdesc {
+ union linux_memtypes type;
+ ULONG base;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ULONG pages;
+};
+struct linux_tinfo {
+ unsigned short yr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short mnth;
+ unsigned short day;
+ unsigned short hr;
+ unsigned short min;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short sec;
+ unsigned short msec;
+};
+struct linux_vdirent {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ULONG namelen;
+ unsigned char attr;
+ char fname[32];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum linux_omode {
+ rdonly, wronly, rdwr, wronly_creat, rdwr_creat,
+ wronly_ssede, rdwr_ssede, dirent, dirent_creat
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+enum linux_seekmode {
+ absolute, relative
+};
+enum linux_mountops {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ media_load, media_unload
+};
+struct linux_bigint {
+#ifdef __MIPSEL__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 lo;
+ s32 hi;
+#else
+ s32 hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 lo;
+#endif
+};
+struct linux_finfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct linux_bigint begin;
+ struct linux_bigint end;
+ struct linux_bigint cur;
+ enum linux_devtypes dtype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long namelen;
+ unsigned char attr;
+ char name[32];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct linux_romvec {
+ LONG load;
+ LONG invoke;
+ LONG exec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG halt;
+ LONG pdown;
+ LONG restart;
+ LONG reboot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG imode;
+ LONG _unused1;
+ LONG next_component;
+ LONG child_component;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG parent_component;
+ LONG component_data;
+ LONG child_add;
+ LONG comp_del;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG component_by_path;
+ LONG cfg_save;
+ LONG get_sysid;
+ LONG get_mdesc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG _unused2;
+ LONG get_tinfo;
+ LONG get_rtime;
+ LONG get_vdirent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG open;
+ LONG close;
+ LONG read;
+ LONG get_rstatus;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG write;
+ LONG seek;
+ LONG mount;
+ LONG get_evar;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG set_evar;
+ LONG get_finfo;
+ LONG set_finfo;
+ LONG cache_flush;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ LONG TestUnicodeCharacter;
+ LONG GetDisplayStatus;
+};
+typedef struct _SYSTEM_PARAMETER_BLOCK {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ULONG magic;
+#define PROMBLOCK_MAGIC 0x53435241
+ ULONG len;
+ USHORT ver;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ USHORT rev;
+ _PLONG rs_block;
+ _PLONG dbg_block;
+ _PLONG gevect;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ _PLONG utlbvect;
+ ULONG rveclen;
+ _PVOID romvec;
+ ULONG pveclen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ _PVOID pvector;
+ ULONG adap_cnt;
+ ULONG adap_typ0;
+ ULONG adap_vcnt0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ _PVOID adap_vector;
+ ULONG adap_typ1;
+ ULONG adap_vcnt1;
+ _PVOID adap_vector1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} SYSTEM_PARAMETER_BLOCK, *PSYSTEM_PARAMETER_BLOCK;
+#define PROMBLOCK ((PSYSTEM_PARAMETER_BLOCK) (int)0xA0001000)
+#define ROMVECTOR ((struct linux_romvec *) (long)(PROMBLOCK)->romvec)
+union linux_cache_key {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct param {
+#ifdef __MIPSEL__
+ unsigned short size;
+ unsigned char lsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char bsize;
+#else
+ unsigned char bsize;
+ unsigned char lsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short size;
+#endif
+ } info;
+ unsigned long allinfo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct linux_cdata {
+ char *name;
+ int mlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ enum linux_devtypes type;
+};
+#define SGIPROM_STDIN 0
+#define SGIPROM_STDOUT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIPROM_ROFILE 0x01  
+#define SGIPROM_HFILE 0x02  
+#define SGIPROM_SFILE 0x04  
+#define SGIPROM_AFILE 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIPROM_DFILE 0x10  
+#define SGIPROM_DELFILE 0x20  
+struct sgi_partition {
+ unsigned char flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIPART_UNUSED 0x00
+#define SGIPART_ACTIVE 0x80
+ unsigned char shead, ssect, scyl;
+ unsigned char systype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char ehead, esect, ecyl;
+ unsigned char rsect0, rsect1, rsect2, rsect3;
+ unsigned char tsect0, tsect1, tsect2, tsect3;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SGIBBLOCK_MAGIC 0xaa55
+#define SGIBBLOCK_MAXPART 0x0004
+struct sgi_bootblock {
+ unsigned char _unused[446];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct sgi_partition partitions[SGIBBLOCK_MAXPART];
+ unsigned short magic;
+};
+struct sgi_bparm_block {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short bytes_sect;
+ unsigned char sect_clust;
+ unsigned short sect_resv;
+ unsigned char nfats;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short nroot_dirents;
+ unsigned short sect_volume;
+ unsigned char media_type;
+ unsigned short sect_fat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short sect_track;
+ unsigned short nheads;
+ unsigned short nhsects;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sgi_bsector {
+ unsigned char jmpinfo[3];
+ unsigned char manuf_name[8];
+ struct sgi_bparm_block info;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define SMB_DEBUG_MAGIC 0xfeeddead
+struct linux_smonblock {
+ unsigned long magic;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void (*handler)(void);
+ unsigned long dtable_base;
+ int (*printf)(const char *fmt, ...);
+ unsigned long btable_base;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long mpflushreqs;
+ unsigned long ntab;
+ unsigned long stab;
+ int smax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sgidefs.h b/ndk/platforms/android-9/arch-mips/include/asm/sgidefs.h
new file mode 100644
index 0000000..d63f15e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sgidefs.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SGIDEFS_H
+#define __ASM_SGIDEFS_H
+#ifndef __linux__
+#error Use a Linux compiler or give up.
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define _MIPS_ISA_MIPS1 1
+#define _MIPS_ISA_MIPS2 2
+#define _MIPS_ISA_MIPS3 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _MIPS_ISA_MIPS4 4
+#define _MIPS_ISA_MIPS5 5
+#define _MIPS_ISA_MIPS32 6
+#define _MIPS_ISA_MIPS64 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _MIPS_SIM_ABI32 1
+#define _MIPS_SIM_NABI32 2
+#define _MIPS_SIM_ABI64 3
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/shmbuf.h b/ndk/platforms/android-9/arch-mips/include/asm/shmbuf.h
new file mode 100644
index 0000000..3f7d0b1
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/shmbuf.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SHMBUF_H
+#define _ASM_SHMBUF_H
+struct shmid64_ds {
+ struct ipc64_perm shm_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ size_t shm_segsz;
+ __kernel_time_t shm_atime;
+ __kernel_time_t shm_dtime;
+ __kernel_time_t shm_ctime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __kernel_pid_t shm_cpid;
+ __kernel_pid_t shm_lpid;
+ unsigned long shm_nattch;
+ unsigned long __unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long __unused2;
+};
+struct shminfo64 {
+ unsigned long shmmax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long shmmin;
+ unsigned long shmmni;
+ unsigned long shmseg;
+ unsigned long shmall;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long __unused1;
+ unsigned long __unused2;
+ unsigned long __unused3;
+ unsigned long __unused4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/shmparam.h b/ndk/platforms/android-9/arch-mips/include/asm/shmparam.h
new file mode 100644
index 0000000..d5ec78f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/shmparam.h
@@ -0,0 +1,24 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SHMPARAM_H
+#define _ASM_SHMPARAM_H
+#define __ARCH_FORCE_SHMLBA 1
+#define SHMLBA 0x40000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sibyte/bcm1480_int.h b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/bcm1480_int.h
new file mode 100644
index 0000000..b14f1ca
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/bcm1480_int.h
@@ -0,0 +1,295 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _BCM1480_INT_H
+#define _BCM1480_INT_H
+#include "sb1250_defs.h"
+#define K_BCM1480_INT_SOURCES 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _BCM1480_INT_HIGH(k) (k)
+#define _BCM1480_INT_LOW(k) ((k)+64)
+#define K_BCM1480_INT_ADDR_TRAP _BCM1480_INT_HIGH(1)
+#define K_BCM1480_INT_GPIO_0 _BCM1480_INT_HIGH(4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_GPIO_1 _BCM1480_INT_HIGH(5)
+#define K_BCM1480_INT_GPIO_2 _BCM1480_INT_HIGH(6)
+#define K_BCM1480_INT_GPIO_3 _BCM1480_INT_HIGH(7)
+#define K_BCM1480_INT_PCI_INTA _BCM1480_INT_HIGH(8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_PCI_INTB _BCM1480_INT_HIGH(9)
+#define K_BCM1480_INT_PCI_INTC _BCM1480_INT_HIGH(10)
+#define K_BCM1480_INT_PCI_INTD _BCM1480_INT_HIGH(11)
+#define K_BCM1480_INT_CYCLE_CP0 _BCM1480_INT_HIGH(12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_CYCLE_CP1 _BCM1480_INT_HIGH(13)
+#define K_BCM1480_INT_CYCLE_CP2 _BCM1480_INT_HIGH(14)
+#define K_BCM1480_INT_CYCLE_CP3 _BCM1480_INT_HIGH(15)
+#define K_BCM1480_INT_TIMER_0 _BCM1480_INT_HIGH(20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_TIMER_1 _BCM1480_INT_HIGH(21)
+#define K_BCM1480_INT_TIMER_2 _BCM1480_INT_HIGH(22)
+#define K_BCM1480_INT_TIMER_3 _BCM1480_INT_HIGH(23)
+#define K_BCM1480_INT_DM_CH_0 _BCM1480_INT_HIGH(28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_DM_CH_1 _BCM1480_INT_HIGH(29)
+#define K_BCM1480_INT_DM_CH_2 _BCM1480_INT_HIGH(30)
+#define K_BCM1480_INT_DM_CH_3 _BCM1480_INT_HIGH(31)
+#define K_BCM1480_INT_MAC_0 _BCM1480_INT_HIGH(36)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_MAC_0_CH1 _BCM1480_INT_HIGH(37)
+#define K_BCM1480_INT_MAC_1 _BCM1480_INT_HIGH(38)
+#define K_BCM1480_INT_MAC_1_CH1 _BCM1480_INT_HIGH(39)
+#define K_BCM1480_INT_MAC_2 _BCM1480_INT_HIGH(40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_MAC_2_CH1 _BCM1480_INT_HIGH(41)
+#define K_BCM1480_INT_MAC_3 _BCM1480_INT_HIGH(42)
+#define K_BCM1480_INT_MAC_3_CH1 _BCM1480_INT_HIGH(43)
+#define K_BCM1480_INT_PMI_LOW _BCM1480_INT_HIGH(52)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_PMI_HIGH _BCM1480_INT_HIGH(53)
+#define K_BCM1480_INT_PMO_LOW _BCM1480_INT_HIGH(54)
+#define K_BCM1480_INT_PMO_HIGH _BCM1480_INT_HIGH(55)
+#define K_BCM1480_INT_MBOX_0_0 _BCM1480_INT_HIGH(56)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_MBOX_0_1 _BCM1480_INT_HIGH(57)
+#define K_BCM1480_INT_MBOX_0_2 _BCM1480_INT_HIGH(58)
+#define K_BCM1480_INT_MBOX_0_3 _BCM1480_INT_HIGH(59)
+#define K_BCM1480_INT_MBOX_1_0 _BCM1480_INT_HIGH(60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_MBOX_1_1 _BCM1480_INT_HIGH(61)
+#define K_BCM1480_INT_MBOX_1_2 _BCM1480_INT_HIGH(62)
+#define K_BCM1480_INT_MBOX_1_3 _BCM1480_INT_HIGH(63)
+#define K_BCM1480_INT_BAD_ECC _BCM1480_INT_LOW(1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_COR_ECC _BCM1480_INT_LOW(2)
+#define K_BCM1480_INT_IO_BUS _BCM1480_INT_LOW(3)
+#define K_BCM1480_INT_PERF_CNT _BCM1480_INT_LOW(4)
+#define K_BCM1480_INT_SW_PERF_CNT _BCM1480_INT_LOW(5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_TRACE_FREEZE _BCM1480_INT_LOW(6)
+#define K_BCM1480_INT_SW_TRACE_FREEZE _BCM1480_INT_LOW(7)
+#define K_BCM1480_INT_WATCHDOG_TIMER_0 _BCM1480_INT_LOW(8)
+#define K_BCM1480_INT_WATCHDOG_TIMER_1 _BCM1480_INT_LOW(9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_WATCHDOG_TIMER_2 _BCM1480_INT_LOW(10)
+#define K_BCM1480_INT_WATCHDOG_TIMER_3 _BCM1480_INT_LOW(11)
+#define K_BCM1480_INT_PCI_ERROR _BCM1480_INT_LOW(16)
+#define K_BCM1480_INT_PCI_RESET _BCM1480_INT_LOW(17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_NODE_CONTROLLER _BCM1480_INT_LOW(18)
+#define K_BCM1480_INT_HOST_BRIDGE _BCM1480_INT_LOW(19)
+#define K_BCM1480_INT_PORT_0_FATAL _BCM1480_INT_LOW(20)
+#define K_BCM1480_INT_PORT_0_NONFATAL _BCM1480_INT_LOW(21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_PORT_1_FATAL _BCM1480_INT_LOW(22)
+#define K_BCM1480_INT_PORT_1_NONFATAL _BCM1480_INT_LOW(23)
+#define K_BCM1480_INT_PORT_2_FATAL _BCM1480_INT_LOW(24)
+#define K_BCM1480_INT_PORT_2_NONFATAL _BCM1480_INT_LOW(25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_LDT_SMI _BCM1480_INT_LOW(32)
+#define K_BCM1480_INT_LDT_NMI _BCM1480_INT_LOW(33)
+#define K_BCM1480_INT_LDT_INIT _BCM1480_INT_LOW(34)
+#define K_BCM1480_INT_LDT_STARTUP _BCM1480_INT_LOW(35)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_LDT_EXT _BCM1480_INT_LOW(36)
+#define K_BCM1480_INT_SMB_0 _BCM1480_INT_LOW(40)
+#define K_BCM1480_INT_SMB_1 _BCM1480_INT_LOW(41)
+#define K_BCM1480_INT_PCMCIA _BCM1480_INT_LOW(42)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_UART_0 _BCM1480_INT_LOW(44)
+#define K_BCM1480_INT_UART_1 _BCM1480_INT_LOW(45)
+#define K_BCM1480_INT_UART_2 _BCM1480_INT_LOW(46)
+#define K_BCM1480_INT_UART_3 _BCM1480_INT_LOW(47)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_GPIO_4 _BCM1480_INT_LOW(52)
+#define K_BCM1480_INT_GPIO_5 _BCM1480_INT_LOW(53)
+#define K_BCM1480_INT_GPIO_6 _BCM1480_INT_LOW(54)
+#define K_BCM1480_INT_GPIO_7 _BCM1480_INT_LOW(55)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_GPIO_8 _BCM1480_INT_LOW(56)
+#define K_BCM1480_INT_GPIO_9 _BCM1480_INT_LOW(57)
+#define K_BCM1480_INT_GPIO_10 _BCM1480_INT_LOW(58)
+#define K_BCM1480_INT_GPIO_11 _BCM1480_INT_LOW(59)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_GPIO_12 _BCM1480_INT_LOW(60)
+#define K_BCM1480_INT_GPIO_13 _BCM1480_INT_LOW(61)
+#define K_BCM1480_INT_GPIO_14 _BCM1480_INT_LOW(62)
+#define K_BCM1480_INT_GPIO_15 _BCM1480_INT_LOW(63)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _BCM1480_INT_MASK(w, n) _SB_MAKEMASK(w, ((n) & 0x3F))
+#define _BCM1480_INT_MASK1(n) _SB_MAKEMASK1(((n) & 0x3F))
+#define _BCM1480_INT_OFFSET(n) (((n) & 0x40) << 6)
+#define M_BCM1480_INT_CASCADE _BCM1480_INT_MASK1(_BCM1480_INT_HIGH(0))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_ADDR_TRAP _BCM1480_INT_MASK1(K_BCM1480_INT_ADDR_TRAP)
+#define M_BCM1480_INT_GPIO_0 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_0)
+#define M_BCM1480_INT_GPIO_1 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_1)
+#define M_BCM1480_INT_GPIO_2 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_GPIO_3 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_3)
+#define M_BCM1480_INT_PCI_INTA _BCM1480_INT_MASK1(K_BCM1480_INT_PCI_INTA)
+#define M_BCM1480_INT_PCI_INTB _BCM1480_INT_MASK1(K_BCM1480_INT_PCI_INTB)
+#define M_BCM1480_INT_PCI_INTC _BCM1480_INT_MASK1(K_BCM1480_INT_PCI_INTC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_PCI_INTD _BCM1480_INT_MASK1(K_BCM1480_INT_PCI_INTD)
+#define M_BCM1480_INT_CYCLE_CP0 _BCM1480_INT_MASK1(K_BCM1480_INT_CYCLE_CP0)
+#define M_BCM1480_INT_CYCLE_CP1 _BCM1480_INT_MASK1(K_BCM1480_INT_CYCLE_CP1)
+#define M_BCM1480_INT_CYCLE_CP2 _BCM1480_INT_MASK1(K_BCM1480_INT_CYCLE_CP2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_CYCLE_CP3 _BCM1480_INT_MASK1(K_BCM1480_INT_CYCLE_CP3)
+#define M_BCM1480_INT_TIMER_0 _BCM1480_INT_MASK1(K_BCM1480_INT_TIMER_0)
+#define M_BCM1480_INT_TIMER_1 _BCM1480_INT_MASK1(K_BCM1480_INT_TIMER_1)
+#define M_BCM1480_INT_TIMER_2 _BCM1480_INT_MASK1(K_BCM1480_INT_TIMER_2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_TIMER_3 _BCM1480_INT_MASK1(K_BCM1480_INT_TIMER_3)
+#define M_BCM1480_INT_DM_CH_0 _BCM1480_INT_MASK1(K_BCM1480_INT_DM_CH_0)
+#define M_BCM1480_INT_DM_CH_1 _BCM1480_INT_MASK1(K_BCM1480_INT_DM_CH_1)
+#define M_BCM1480_INT_DM_CH_2 _BCM1480_INT_MASK1(K_BCM1480_INT_DM_CH_2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_DM_CH_3 _BCM1480_INT_MASK1(K_BCM1480_INT_DM_CH_3)
+#define M_BCM1480_INT_MAC_0 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_0)
+#define M_BCM1480_INT_MAC_0_CH1 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_0_CH1)
+#define M_BCM1480_INT_MAC_1 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_MAC_1_CH1 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_1_CH1)
+#define M_BCM1480_INT_MAC_2 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_2)
+#define M_BCM1480_INT_MAC_2_CH1 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_2_CH1)
+#define M_BCM1480_INT_MAC_3 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_MAC_3_CH1 _BCM1480_INT_MASK1(K_BCM1480_INT_MAC_3_CH1)
+#define M_BCM1480_INT_PMI_LOW _BCM1480_INT_MASK1(K_BCM1480_INT_PMI_LOW)
+#define M_BCM1480_INT_PMI_HIGH _BCM1480_INT_MASK1(K_BCM1480_INT_PMI_HIGH)
+#define M_BCM1480_INT_PMO_LOW _BCM1480_INT_MASK1(K_BCM1480_INT_PMO_LOW)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_PMO_HIGH _BCM1480_INT_MASK1(K_BCM1480_INT_PMO_HIGH)
+#define M_BCM1480_INT_MBOX_ALL _BCM1480_INT_MASK(8, K_BCM1480_INT_MBOX_0_0)
+#define M_BCM1480_INT_MBOX_0_0 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_0_0)
+#define M_BCM1480_INT_MBOX_0_1 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_0_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_MBOX_0_2 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_0_2)
+#define M_BCM1480_INT_MBOX_0_3 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_0_3)
+#define M_BCM1480_INT_MBOX_1_0 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_1_0)
+#define M_BCM1480_INT_MBOX_1_1 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_1_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_MBOX_1_2 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_1_2)
+#define M_BCM1480_INT_MBOX_1_3 _BCM1480_INT_MASK1(K_BCM1480_INT_MBOX_1_3)
+#define M_BCM1480_INT_BAD_ECC _BCM1480_INT_MASK1(K_BCM1480_INT_BAD_ECC)
+#define M_BCM1480_INT_COR_ECC _BCM1480_INT_MASK1(K_BCM1480_INT_COR_ECC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_IO_BUS _BCM1480_INT_MASK1(K_BCM1480_INT_IO_BUS)
+#define M_BCM1480_INT_PERF_CNT _BCM1480_INT_MASK1(K_BCM1480_INT_PERF_CNT)
+#define M_BCM1480_INT_SW_PERF_CNT _BCM1480_INT_MASK1(K_BCM1480_INT_SW_PERF_CNT)
+#define M_BCM1480_INT_TRACE_FREEZE _BCM1480_INT_MASK1(K_BCM1480_INT_TRACE_FREEZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_SW_TRACE_FREEZE _BCM1480_INT_MASK1(K_BCM1480_INT_SW_TRACE_FREEZE)
+#define M_BCM1480_INT_WATCHDOG_TIMER_0 _BCM1480_INT_MASK1(K_BCM1480_INT_WATCHDOG_TIMER_0)
+#define M_BCM1480_INT_WATCHDOG_TIMER_1 _BCM1480_INT_MASK1(K_BCM1480_INT_WATCHDOG_TIMER_1)
+#define M_BCM1480_INT_WATCHDOG_TIMER_2 _BCM1480_INT_MASK1(K_BCM1480_INT_WATCHDOG_TIMER_2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_WATCHDOG_TIMER_3 _BCM1480_INT_MASK1(K_BCM1480_INT_WATCHDOG_TIMER_3)
+#define M_BCM1480_INT_PCI_ERROR _BCM1480_INT_MASK1(K_BCM1480_INT_PCI_ERROR)
+#define M_BCM1480_INT_PCI_RESET _BCM1480_INT_MASK1(K_BCM1480_INT_PCI_RESET)
+#define M_BCM1480_INT_NODE_CONTROLLER _BCM1480_INT_MASK1(K_BCM1480_INT_NODE_CONTROLLER)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_HOST_BRIDGE _BCM1480_INT_MASK1(K_BCM1480_INT_HOST_BRIDGE)
+#define M_BCM1480_INT_PORT_0_FATAL _BCM1480_INT_MASK1(K_BCM1480_INT_PORT_0_FATAL)
+#define M_BCM1480_INT_PORT_0_NONFATAL _BCM1480_INT_MASK1(K_BCM1480_INT_PORT_0_NONFATAL)
+#define M_BCM1480_INT_PORT_1_FATAL _BCM1480_INT_MASK1(K_BCM1480_INT_PORT_1_FATAL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_PORT_1_NONFATAL _BCM1480_INT_MASK1(K_BCM1480_INT_PORT_1_NONFATAL)
+#define M_BCM1480_INT_PORT_2_FATAL _BCM1480_INT_MASK1(K_BCM1480_INT_PORT_2_FATAL)
+#define M_BCM1480_INT_PORT_2_NONFATAL _BCM1480_INT_MASK1(K_BCM1480_INT_PORT_2_NONFATAL)
+#define M_BCM1480_INT_LDT_SMI _BCM1480_INT_MASK1(K_BCM1480_INT_LDT_SMI)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_LDT_NMI _BCM1480_INT_MASK1(K_BCM1480_INT_LDT_NMI)
+#define M_BCM1480_INT_LDT_INIT _BCM1480_INT_MASK1(K_BCM1480_INT_LDT_INIT)
+#define M_BCM1480_INT_LDT_STARTUP _BCM1480_INT_MASK1(K_BCM1480_INT_LDT_STARTUP)
+#define M_BCM1480_INT_LDT_EXT _BCM1480_INT_MASK1(K_BCM1480_INT_LDT_EXT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_SMB_0 _BCM1480_INT_MASK1(K_BCM1480_INT_SMB_0)
+#define M_BCM1480_INT_SMB_1 _BCM1480_INT_MASK1(K_BCM1480_INT_SMB_1)
+#define M_BCM1480_INT_PCMCIA _BCM1480_INT_MASK1(K_BCM1480_INT_PCMCIA)
+#define M_BCM1480_INT_UART_0 _BCM1480_INT_MASK1(K_BCM1480_INT_UART_0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_UART_1 _BCM1480_INT_MASK1(K_BCM1480_INT_UART_1)
+#define M_BCM1480_INT_UART_2 _BCM1480_INT_MASK1(K_BCM1480_INT_UART_2)
+#define M_BCM1480_INT_UART_3 _BCM1480_INT_MASK1(K_BCM1480_INT_UART_3)
+#define M_BCM1480_INT_GPIO_4 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_GPIO_5 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_5)
+#define M_BCM1480_INT_GPIO_6 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_6)
+#define M_BCM1480_INT_GPIO_7 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_7)
+#define M_BCM1480_INT_GPIO_8 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_GPIO_9 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_9)
+#define M_BCM1480_INT_GPIO_10 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_10)
+#define M_BCM1480_INT_GPIO_11 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_11)
+#define M_BCM1480_INT_GPIO_12 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_GPIO_13 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_13)
+#define M_BCM1480_INT_GPIO_14 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_14)
+#define M_BCM1480_INT_GPIO_15 _BCM1480_INT_MASK1(K_BCM1480_INT_GPIO_15)
+#define K_BCM1480_INT_MAP_I0 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_MAP_I1 1
+#define K_BCM1480_INT_MAP_I2 2
+#define K_BCM1480_INT_MAP_I3 3
+#define K_BCM1480_INT_MAP_I4 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_MAP_I5 5
+#define K_BCM1480_INT_MAP_NMI 6  
+#define K_BCM1480_INT_MAP_DINT 7  
+#define S_BCM1480_INT_HT_INTMSG 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_INT_HT_INTMSG _SB_MAKEMASK(3, S_BCM1480_INT_HT_INTMSG)
+#define V_BCM1480_INT_HT_INTMSG(x) _SB_MAKEVALUE(x, S_BCM1480_INT_HT_INTMSG)
+#define G_BCM1480_INT_HT_INTMSG(x) _SB_GETVALUE(x, S_BCM1480_INT_HT_INTMSG, M_BCM1480_INT_HT_INTMSG)
+#define K_BCM1480_INT_HT_INTMSG_FIXED 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_HT_INTMSG_ARBITRATED 1
+#define K_BCM1480_INT_HT_INTMSG_SMI 2
+#define K_BCM1480_INT_HT_INTMSG_NMI 3
+#define K_BCM1480_INT_HT_INTMSG_INIT 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_INT_HT_INTMSG_STARTUP 5
+#define K_BCM1480_INT_HT_INTMSG_EXTINT 6
+#define K_BCM1480_INT_HT_INTMSG_RESERVED 7
+#define M_BCM1480_INT_HT_TRIGGERMODE _SB_MAKEMASK1(3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V_BCM1480_INT_HT_EDGETRIGGER 0
+#define V_BCM1480_INT_HT_LEVELTRIGGER M_BCM1480_INT_HT_TRIGGERMODE
+#define M_BCM1480_INT_HT_DESTMODE _SB_MAKEMASK1(4)
+#define V_BCM1480_INT_HT_PHYSICALDEST 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V_BCM1480_INT_HT_LOGICALDEST M_BCM1480_INT_HT_DESTMODE
+#define S_BCM1480_INT_HT_INTDEST 5
+#define M_BCM1480_INT_HT_INTDEST _SB_MAKEMASK(8, S_BCM1480_INT_HT_INTDEST)
+#define V_BCM1480_INT_HT_INTDEST(x) _SB_MAKEVALUE(x, S_BCM1480_INT_HT_INTDEST)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_INT_HT_INTDEST(x) _SB_GETVALUE(x, S_BCM1480_INT_HT_INTDEST, M_BCM1480_INT_HT_INTDEST)
+#define S_BCM1480_INT_HT_VECTOR 13
+#define M_BCM1480_INT_HT_VECTOR _SB_MAKEMASK(8, S_BCM1480_INT_HT_VECTOR)
+#define V_BCM1480_INT_HT_VECTOR(x) _SB_MAKEVALUE(x, S_BCM1480_INT_HT_VECTOR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_INT_HT_VECTOR(x) _SB_GETVALUE(x, S_BCM1480_INT_HT_VECTOR, M_BCM1480_INT_HT_VECTOR)
+#define M_BCM1480_HTVECT_RAISE_INTLDT_HIGH 0x00
+#define M_BCM1480_HTVECT_RAISE_MBOX_0 0x40
+#define M_BCM1480_HTVECT_RAISE_INTLDT_LO 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_HTVECT_RAISE_MBOX_1 0xC0
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sibyte/bcm1480_scd.h b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/bcm1480_scd.h
new file mode 100644
index 0000000..250aca8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/bcm1480_scd.h
@@ -0,0 +1,209 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _BCM1480_SCD_H
+#define _BCM1480_SCD_H
+#include "sb1250_defs.h"
+#include "sb1250_scd.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_PART_BCM1480 0x1406
+#define K_SYS_PART_BCM1280 0x1206
+#define K_SYS_PART_BCM1455 0x1407
+#define K_SYS_PART_BCM1255 0x1257
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_PART_BCM1158 0x1156
+#define M_BCM1480_SYS_RESERVED0 _SB_MAKEMASK1(0)
+#define M_BCM1480_SYS_HT_MINRSTCNT _SB_MAKEMASK1(1)
+#define M_BCM1480_SYS_RESERVED2 _SB_MAKEMASK1(2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_RESERVED3 _SB_MAKEMASK1(3)
+#define M_BCM1480_SYS_RESERVED4 _SB_MAKEMASK1(4)
+#define M_BCM1480_SYS_IOB_DIV _SB_MAKEMASK1(5)
+#define S_BCM1480_SYS_PLL_DIV _SB_MAKE64(6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_PLL_DIV _SB_MAKEMASK(5, S_BCM1480_SYS_PLL_DIV)
+#define V_BCM1480_SYS_PLL_DIV(x) _SB_MAKEVALUE(x, S_BCM1480_SYS_PLL_DIV)
+#define G_BCM1480_SYS_PLL_DIV(x) _SB_GETVALUE(x, S_BCM1480_SYS_PLL_DIV, M_BCM1480_SYS_PLL_DIV)
+#define S_BCM1480_SYS_SW_DIV _SB_MAKE64(11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_SW_DIV _SB_MAKEMASK(5, S_BCM1480_SYS_SW_DIV)
+#define V_BCM1480_SYS_SW_DIV(x) _SB_MAKEVALUE(x, S_BCM1480_SYS_SW_DIV)
+#define G_BCM1480_SYS_SW_DIV(x) _SB_GETVALUE(x, S_BCM1480_SYS_SW_DIV, M_BCM1480_SYS_SW_DIV)
+#define M_BCM1480_SYS_PCMCIA_ENABLE _SB_MAKEMASK1(16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_DUART1_ENABLE _SB_MAKEMASK1(17)
+#define S_BCM1480_SYS_BOOT_MODE _SB_MAKE64(18)
+#define M_BCM1480_SYS_BOOT_MODE _SB_MAKEMASK(2, S_BCM1480_SYS_BOOT_MODE)
+#define V_BCM1480_SYS_BOOT_MODE(x) _SB_MAKEVALUE(x, S_BCM1480_SYS_BOOT_MODE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_SYS_BOOT_MODE(x) _SB_GETVALUE(x, S_BCM1480_SYS_BOOT_MODE, M_BCM1480_SYS_BOOT_MODE)
+#define K_BCM1480_SYS_BOOT_MODE_ROM32 0
+#define K_BCM1480_SYS_BOOT_MODE_ROM8 1
+#define K_BCM1480_SYS_BOOT_MODE_SMBUS_SMALL 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_SYS_BOOT_MODE_SMBUS_BIG 3
+#define M_BCM1480_SYS_BOOT_MODE_SMBUS _SB_MAKEMASK1(19)
+#define M_BCM1480_SYS_PCI_HOST _SB_MAKEMASK1(20)
+#define M_BCM1480_SYS_PCI_ARBITER _SB_MAKEMASK1(21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_BIG_ENDIAN _SB_MAKEMASK1(22)
+#define M_BCM1480_SYS_GENCLK_EN _SB_MAKEMASK1(23)
+#define M_BCM1480_SYS_GEN_PARITY_EN _SB_MAKEMASK1(24)
+#define M_BCM1480_SYS_RESERVED25 _SB_MAKEMASK1(25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_BCM1480_SYS_CONFIG 26
+#define M_BCM1480_SYS_CONFIG _SB_MAKEMASK(6, S_BCM1480_SYS_CONFIG)
+#define V_BCM1480_SYS_CONFIG(x) _SB_MAKEVALUE(x, S_BCM1480_SYS_CONFIG)
+#define G_BCM1480_SYS_CONFIG(x) _SB_GETVALUE(x, S_BCM1480_SYS_CONFIG, M_BCM1480_SYS_CONFIG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_RESERVED32 _SB_MAKEMASK(32, 15)
+#define S_BCM1480_SYS_NODEID 47
+#define M_BCM1480_SYS_NODEID _SB_MAKEMASK(4, S_BCM1480_SYS_NODEID)
+#define V_BCM1480_SYS_NODEID(x) _SB_MAKEVALUE(x, S_BCM1480_SYS_NODEID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_SYS_NODEID(x) _SB_GETVALUE(x, S_BCM1480_SYS_NODEID, M_BCM1480_SYS_NODEID)
+#define M_BCM1480_SYS_CCNUMA_EN _SB_MAKEMASK1(51)
+#define M_BCM1480_SYS_CPU_RESET_0 _SB_MAKEMASK1(52)
+#define M_BCM1480_SYS_CPU_RESET_1 _SB_MAKEMASK1(53)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_CPU_RESET_2 _SB_MAKEMASK1(54)
+#define M_BCM1480_SYS_CPU_RESET_3 _SB_MAKEMASK1(55)
+#define S_BCM1480_SYS_DISABLECPU0 56
+#define M_BCM1480_SYS_DISABLECPU0 _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_BCM1480_SYS_DISABLECPU1 57
+#define M_BCM1480_SYS_DISABLECPU1 _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU1)
+#define S_BCM1480_SYS_DISABLECPU2 58
+#define M_BCM1480_SYS_DISABLECPU2 _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_BCM1480_SYS_DISABLECPU3 59
+#define M_BCM1480_SYS_DISABLECPU3 _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU3)
+#define M_BCM1480_SYS_SB_SOFTRES _SB_MAKEMASK1(60)
+#define M_BCM1480_SYS_EXT_RESET _SB_MAKEMASK1(61)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SYS_SYSTEM_RESET _SB_MAKEMASK1(62)
+#define M_BCM1480_SYS_SW_FLAG _SB_MAKEMASK1(63)
+#define M_BCM1480_SCD_WDOG_ENABLE _SB_MAKEMASK1(0)
+#define S_BCM1480_SCD_WDOG_RESET_TYPE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SCD_WDOG_RESET_TYPE _SB_MAKEMASK(5, S_BCM1480_SCD_WDOG_RESET_TYPE)
+#define V_BCM1480_SCD_WDOG_RESET_TYPE(x) _SB_MAKEVALUE(x, S_BCM1480_SCD_WDOG_RESET_TYPE)
+#define G_BCM1480_SCD_WDOG_RESET_TYPE(x) _SB_GETVALUE(x, S_BCM1480_SCD_WDOG_RESET_TYPE, M_BCM1480_SCD_WDOG_RESET_TYPE)
+#define K_BCM1480_SCD_WDOG_RESET_FULL 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_SCD_WDOG_RESET_SOFT 1
+#define K_BCM1480_SCD_WDOG_RESET_CPU0 3
+#define K_BCM1480_SCD_WDOG_RESET_CPU1 5
+#define K_BCM1480_SCD_WDOG_RESET_CPU2 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_SCD_WDOG_RESET_CPU3 17
+#define K_BCM1480_SCD_WDOG_RESET_ALL_CPUS 31
+#define M_BCM1480_SCD_WDOG_HAS_RESET _SB_MAKEMASK1(8)
+#define S_SPC_CFG_SRC4 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC4 _SB_MAKEMASK(8, S_SPC_CFG_SRC4)
+#define V_SPC_CFG_SRC4(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC4)
+#define G_SPC_CFG_SRC4(x) _SB_GETVALUE(x, S_SPC_CFG_SRC4, M_SPC_CFG_SRC4)
+#define S_SPC_CFG_SRC5 40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC5 _SB_MAKEMASK(8, S_SPC_CFG_SRC5)
+#define V_SPC_CFG_SRC5(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC5)
+#define G_SPC_CFG_SRC5(x) _SB_GETVALUE(x, S_SPC_CFG_SRC5, M_SPC_CFG_SRC5)
+#define S_SPC_CFG_SRC6 48
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC6 _SB_MAKEMASK(8, S_SPC_CFG_SRC6)
+#define V_SPC_CFG_SRC6(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC6)
+#define G_SPC_CFG_SRC6(x) _SB_GETVALUE(x, S_SPC_CFG_SRC6, M_SPC_CFG_SRC6)
+#define S_SPC_CFG_SRC7 56
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC7 _SB_MAKEMASK(8, S_SPC_CFG_SRC7)
+#define V_SPC_CFG_SRC7(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC7)
+#define G_SPC_CFG_SRC7(x) _SB_GETVALUE(x, S_SPC_CFG_SRC7, M_SPC_CFG_SRC7)
+#define M_BCM1480_SPC_CFG_CLEAR _SB_MAKEMASK1(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SPC_CFG_ENABLE _SB_MAKEMASK1(1)
+#if ???
+#define M_SPC_CFG_CLEAR M_BCM1480_SPC_CFG_CLEAR
+#define M_SPC_CFG_ENABLE M_BCM1480_SPC_CFG_ENABLE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define S_BCM1480_SPC_CNT_COUNT 0
+#define M_BCM1480_SPC_CNT_COUNT _SB_MAKEMASK(40, S_BCM1480_SPC_CNT_COUNT)
+#define V_BCM1480_SPC_CNT_COUNT(x) _SB_MAKEVALUE(x, S_BCM1480_SPC_CNT_COUNT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_SPC_CNT_COUNT(x) _SB_GETVALUE(x, S_BCM1480_SPC_CNT_COUNT, M_BCM1480_SPC_CNT_COUNT)
+#define M_BCM1480_SPC_CNT_OFLOW _SB_MAKEMASK1(40)
+#define M_BCM1480_ATRAP_INDEX _SB_MAKEMASK(4, 0)
+#define M_BCM1480_ATRAP_ADDRESS _SB_MAKEMASK(40, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_BCM1480_ATRAP_CFG_CNT 0
+#define M_BCM1480_ATRAP_CFG_CNT _SB_MAKEMASK(3, S_BCM1480_ATRAP_CFG_CNT)
+#define V_BCM1480_ATRAP_CFG_CNT(x) _SB_MAKEVALUE(x, S_BCM1480_ATRAP_CFG_CNT)
+#define G_BCM1480_ATRAP_CFG_CNT(x) _SB_GETVALUE(x, S_BCM1480_ATRAP_CFG_CNT, M_BCM1480_ATRAP_CFG_CNT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_ATRAP_CFG_WRITE _SB_MAKEMASK1(3)
+#define M_BCM1480_ATRAP_CFG_ALL _SB_MAKEMASK1(4)
+#define M_BCM1480_ATRAP_CFG_INV _SB_MAKEMASK1(5)
+#define M_BCM1480_ATRAP_CFG_USESRC _SB_MAKEMASK1(6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_ATRAP_CFG_SRCINV _SB_MAKEMASK1(7)
+#define S_BCM1480_ATRAP_CFG_AGENTID 8
+#define M_BCM1480_ATRAP_CFG_AGENTID _SB_MAKEMASK(4, S_BCM1480_ATRAP_CFG_AGENTID)
+#define V_BCM1480_ATRAP_CFG_AGENTID(x) _SB_MAKEVALUE(x, S_BCM1480_ATRAP_CFG_AGENTID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_ATRAP_CFG_AGENTID(x) _SB_GETVALUE(x, S_BCM1480_ATRAP_CFG_AGENTID, M_BCM1480_ATRAP_CFG_AGENTID)
+#define K_BCM1480_BUS_AGENT_CPU0 0
+#define K_BCM1480_BUS_AGENT_CPU1 1
+#define K_BCM1480_BUS_AGENT_NC 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_BUS_AGENT_IOB 3
+#define K_BCM1480_BUS_AGENT_SCD 4
+#define K_BCM1480_BUS_AGENT_L2C 6
+#define K_BCM1480_BUS_AGENT_MC 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_BUS_AGENT_CPU2 8
+#define K_BCM1480_BUS_AGENT_CPU3 9
+#define K_BCM1480_BUS_AGENT_PM 10
+#define S_BCM1480_ATRAP_CFG_CATTR 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_ATRAP_CFG_CATTR _SB_MAKEMASK(2, S_BCM1480_ATRAP_CFG_CATTR)
+#define V_BCM1480_ATRAP_CFG_CATTR(x) _SB_MAKEVALUE(x, S_BCM1480_ATRAP_CFG_CATTR)
+#define G_BCM1480_ATRAP_CFG_CATTR(x) _SB_GETVALUE(x, S_BCM1480_ATRAP_CFG_CATTR, M_BCM1480_ATRAP_CFG_CATTR)
+#define K_BCM1480_ATRAP_CFG_CATTR_IGNORE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BCM1480_ATRAP_CFG_CATTR_UNC 1
+#define K_BCM1480_ATRAP_CFG_CATTR_NONCOH 2
+#define K_BCM1480_ATRAP_CFG_CATTR_COHERENT 3
+#define M_BCM1480_ATRAP_CFG_CATTRINV _SB_MAKEMASK1(14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_BCM1480_SCD_TRSEQ_TID_MATCH_EN _SB_MAKEMASK1(25)
+#define S_BCM1480_SCD_TRSEQ_SWFUNC 26
+#define M_BCM1480_SCD_TRSEQ_SWFUNC _SB_MAKEMASK(2, S_BCM1480_SCD_TRSEQ_SWFUNC)
+#define V_BCM1480_SCD_TRSEQ_SWFUNC(x) _SB_MAKEVALUE(x, S_BCM1480_SCD_TRSEQ_SWFUNC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_SCD_TRSEQ_SWFUNC(x) _SB_GETVALUE(x, S_BCM1480_SCD_TRSEQ_SWFUNC, M_BCM1480_SCD_TRSEQ_SWFUNC)
+#define S_BCM1480_SCD_TRACE_CFG_MODE 16
+#define M_BCM1480_SCD_TRACE_CFG_MODE _SB_MAKEMASK(2, S_BCM1480_SCD_TRACE_CFG_MODE)
+#define V_BCM1480_SCD_TRACE_CFG_MODE(x) _SB_MAKEVALUE(x, S_BCM1480_SCD_TRACE_CFG_MODE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_BCM1480_SCD_TRACE_CFG_MODE(x) _SB_GETVALUE(x, S_BCM1480_SCD_TRACE_CFG_MODE, M_BCM1480_SCD_TRACE_CFG_MODE)
+#define K_BCM1480_SCD_TRACE_CFG_MODE_BLOCKERS 0
+#define K_BCM1480_SCD_TRACE_CFG_MODE_BYTEEN_INT 1
+#define K_BCM1480_SCD_TRACE_CFG_MODE_FLOW_ID 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250.h b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250.h
new file mode 100644
index 0000000..d2738dd
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250.h
@@ -0,0 +1,36 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SIBYTE_SB1250_H
+#define _ASM_SIBYTE_SB1250_H
+#define SIBYTE_RELEASE 0x02111403
+#define SB1250_NR_IRQS 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BCM1480_NR_IRQS 128
+#define BCM1480_NR_IRQS_HALF 64
+#define SB1250_DUART_MINOR_BASE 64
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/addrspace.h>
+#include <asm/sibyte/sb1250_scd.h>
+#include <asm/sibyte/bcm1480_scd.h>
+#define AT_spin   __asm__ __volatile__ (   ".set noat\n"   "li $at, 0\n"   "1: beqz $at, 1b\n"   ".set at\n"   )
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define IOADDR(a) ((void __iomem *)(IO_BASE + (a)))
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250_int.h b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250_int.h
new file mode 100644
index 0000000..0b01b75
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250_int.h
@@ -0,0 +1,238 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SB1250_INT_H
+#define _SB1250_INT_H
+#include "sb1250_defs.h"
+#define K_INT_SOURCES 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_WATCHDOG_TIMER_0 0
+#define K_INT_WATCHDOG_TIMER_1 1
+#define K_INT_TIMER_0 2
+#define K_INT_TIMER_1 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_TIMER_2 4
+#define K_INT_TIMER_3 5
+#define K_INT_SMB_0 6
+#define K_INT_SMB_1 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_UART_0 8
+#define K_INT_UART_1 9
+#define K_INT_SER_0 10
+#define K_INT_SER_1 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_PCMCIA 12
+#define K_INT_ADDR_TRAP 13
+#define K_INT_PERF_CNT 14
+#define K_INT_TRACE_FREEZE 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_BAD_ECC 16
+#define K_INT_COR_ECC 17
+#define K_INT_IO_BUS 18
+#define K_INT_MAC_0 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_MAC_1 20
+#define K_INT_MAC_2 21
+#define K_INT_DM_CH_0 22
+#define K_INT_DM_CH_1 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_DM_CH_2 24
+#define K_INT_DM_CH_3 25
+#define K_INT_MBOX_0 26
+#define K_INT_MBOX_1 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_MBOX_2 28
+#define K_INT_MBOX_3 29
+#if ??? || ???
+#define K_INT_CYCLE_CP0_INT 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_CYCLE_CP1_INT 31
+#endif
+#define K_INT_GPIO_0 32
+#define K_INT_GPIO_1 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_GPIO_2 34
+#define K_INT_GPIO_3 35
+#define K_INT_GPIO_4 36
+#define K_INT_GPIO_5 37
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_GPIO_6 38
+#define K_INT_GPIO_7 39
+#define K_INT_GPIO_8 40
+#define K_INT_GPIO_9 41
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_GPIO_10 42
+#define K_INT_GPIO_11 43
+#define K_INT_GPIO_12 44
+#define K_INT_GPIO_13 45
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_GPIO_14 46
+#define K_INT_GPIO_15 47
+#define K_INT_LDT_FATAL 48
+#define K_INT_LDT_NONFATAL 49
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_LDT_SMI 50
+#define K_INT_LDT_NMI 51
+#define K_INT_LDT_INIT 52
+#define K_INT_LDT_STARTUP 53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_LDT_EXT 54
+#define K_INT_PCI_ERROR 55
+#define K_INT_PCI_INTA 56
+#define K_INT_PCI_INTB 57
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_PCI_INTC 58
+#define K_INT_PCI_INTD 59
+#define K_INT_SPARE_2 60
+#if ??? || ???
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_MAC_0_CH1 61
+#define K_INT_MAC_1_CH1 62
+#define K_INT_MAC_2_CH1 63
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_WATCHDOG_TIMER_0 _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_0)
+#define M_INT_WATCHDOG_TIMER_1 _SB_MAKEMASK1(K_INT_WATCHDOG_TIMER_1)
+#define M_INT_TIMER_0 _SB_MAKEMASK1(K_INT_TIMER_0)
+#define M_INT_TIMER_1 _SB_MAKEMASK1(K_INT_TIMER_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_TIMER_2 _SB_MAKEMASK1(K_INT_TIMER_2)
+#define M_INT_TIMER_3 _SB_MAKEMASK1(K_INT_TIMER_3)
+#define M_INT_SMB_0 _SB_MAKEMASK1(K_INT_SMB_0)
+#define M_INT_SMB_1 _SB_MAKEMASK1(K_INT_SMB_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_UART_0 _SB_MAKEMASK1(K_INT_UART_0)
+#define M_INT_UART_1 _SB_MAKEMASK1(K_INT_UART_1)
+#define M_INT_SER_0 _SB_MAKEMASK1(K_INT_SER_0)
+#define M_INT_SER_1 _SB_MAKEMASK1(K_INT_SER_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_PCMCIA _SB_MAKEMASK1(K_INT_PCMCIA)
+#define M_INT_ADDR_TRAP _SB_MAKEMASK1(K_INT_ADDR_TRAP)
+#define M_INT_PERF_CNT _SB_MAKEMASK1(K_INT_PERF_CNT)
+#define M_INT_TRACE_FREEZE _SB_MAKEMASK1(K_INT_TRACE_FREEZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_BAD_ECC _SB_MAKEMASK1(K_INT_BAD_ECC)
+#define M_INT_COR_ECC _SB_MAKEMASK1(K_INT_COR_ECC)
+#define M_INT_IO_BUS _SB_MAKEMASK1(K_INT_IO_BUS)
+#define M_INT_MAC_0 _SB_MAKEMASK1(K_INT_MAC_0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_MAC_1 _SB_MAKEMASK1(K_INT_MAC_1)
+#define M_INT_MAC_2 _SB_MAKEMASK1(K_INT_MAC_2)
+#define M_INT_DM_CH_0 _SB_MAKEMASK1(K_INT_DM_CH_0)
+#define M_INT_DM_CH_1 _SB_MAKEMASK1(K_INT_DM_CH_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_DM_CH_2 _SB_MAKEMASK1(K_INT_DM_CH_2)
+#define M_INT_DM_CH_3 _SB_MAKEMASK1(K_INT_DM_CH_3)
+#define M_INT_MBOX_0 _SB_MAKEMASK1(K_INT_MBOX_0)
+#define M_INT_MBOX_1 _SB_MAKEMASK1(K_INT_MBOX_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_MBOX_2 _SB_MAKEMASK1(K_INT_MBOX_2)
+#define M_INT_MBOX_3 _SB_MAKEMASK1(K_INT_MBOX_3)
+#define M_INT_MBOX_ALL _SB_MAKEMASK(4, K_INT_MBOX_0)
+#if ??? || ???
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_CYCLE_CP0_INT _SB_MAKEMASK1(K_INT_CYCLE_CP0_INT)
+#define M_INT_CYCLE_CP1_INT _SB_MAKEMASK1(K_INT_CYCLE_CP1_INT)
+#endif
+#define M_INT_GPIO_0 _SB_MAKEMASK1(K_INT_GPIO_0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_GPIO_1 _SB_MAKEMASK1(K_INT_GPIO_1)
+#define M_INT_GPIO_2 _SB_MAKEMASK1(K_INT_GPIO_2)
+#define M_INT_GPIO_3 _SB_MAKEMASK1(K_INT_GPIO_3)
+#define M_INT_GPIO_4 _SB_MAKEMASK1(K_INT_GPIO_4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_GPIO_5 _SB_MAKEMASK1(K_INT_GPIO_5)
+#define M_INT_GPIO_6 _SB_MAKEMASK1(K_INT_GPIO_6)
+#define M_INT_GPIO_7 _SB_MAKEMASK1(K_INT_GPIO_7)
+#define M_INT_GPIO_8 _SB_MAKEMASK1(K_INT_GPIO_8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_GPIO_9 _SB_MAKEMASK1(K_INT_GPIO_9)
+#define M_INT_GPIO_10 _SB_MAKEMASK1(K_INT_GPIO_10)
+#define M_INT_GPIO_11 _SB_MAKEMASK1(K_INT_GPIO_11)
+#define M_INT_GPIO_12 _SB_MAKEMASK1(K_INT_GPIO_12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_GPIO_13 _SB_MAKEMASK1(K_INT_GPIO_13)
+#define M_INT_GPIO_14 _SB_MAKEMASK1(K_INT_GPIO_14)
+#define M_INT_GPIO_15 _SB_MAKEMASK1(K_INT_GPIO_15)
+#define M_INT_LDT_FATAL _SB_MAKEMASK1(K_INT_LDT_FATAL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_LDT_NONFATAL _SB_MAKEMASK1(K_INT_LDT_NONFATAL)
+#define M_INT_LDT_SMI _SB_MAKEMASK1(K_INT_LDT_SMI)
+#define M_INT_LDT_NMI _SB_MAKEMASK1(K_INT_LDT_NMI)
+#define M_INT_LDT_INIT _SB_MAKEMASK1(K_INT_LDT_INIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_LDT_STARTUP _SB_MAKEMASK1(K_INT_LDT_STARTUP)
+#define M_INT_LDT_EXT _SB_MAKEMASK1(K_INT_LDT_EXT)
+#define M_INT_PCI_ERROR _SB_MAKEMASK1(K_INT_PCI_ERROR)
+#define M_INT_PCI_INTA _SB_MAKEMASK1(K_INT_PCI_INTA)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_PCI_INTB _SB_MAKEMASK1(K_INT_PCI_INTB)
+#define M_INT_PCI_INTC _SB_MAKEMASK1(K_INT_PCI_INTC)
+#define M_INT_PCI_INTD _SB_MAKEMASK1(K_INT_PCI_INTD)
+#define M_INT_SPARE_2 _SB_MAKEMASK1(K_INT_SPARE_2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if ??? || ???
+#define M_INT_MAC_0_CH1 _SB_MAKEMASK1(K_INT_MAC_0_CH1)
+#define M_INT_MAC_1_CH1 _SB_MAKEMASK1(K_INT_MAC_1_CH1)
+#define M_INT_MAC_2_CH1 _SB_MAKEMASK1(K_INT_MAC_2_CH1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define K_INT_MAP_I0 0  
+#define K_INT_MAP_I1 1
+#define K_INT_MAP_I2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_MAP_I3 3
+#define K_INT_MAP_I4 4
+#define K_INT_MAP_I5 5
+#define K_INT_MAP_NMI 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_MAP_DINT 7  
+#define S_INT_LDT_INTMSG 0
+#define M_INT_LDT_INTMSG _SB_MAKEMASK(3, S_INT_LDT_INTMSG)
+#define V_INT_LDT_INTMSG(x) _SB_MAKEVALUE(x, S_INT_LDT_INTMSG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_INT_LDT_INTMSG(x) _SB_GETVALUE(x, S_INT_LDT_INTMSG, M_INT_LDT_INTMSG)
+#define K_INT_LDT_INTMSG_FIXED 0
+#define K_INT_LDT_INTMSG_ARBITRATED 1
+#define K_INT_LDT_INTMSG_SMI 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_LDT_INTMSG_NMI 3
+#define K_INT_LDT_INTMSG_INIT 4
+#define K_INT_LDT_INTMSG_STARTUP 5
+#define K_INT_LDT_INTMSG_EXTINT 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_INT_LDT_INTMSG_RESERVED 7
+#define M_INT_LDT_EDGETRIGGER 0
+#define M_INT_LDT_LEVELTRIGGER _SB_MAKEMASK1(3)
+#define M_INT_LDT_PHYSICALDEST 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_INT_LDT_LOGICALDEST _SB_MAKEMASK1(4)
+#define S_INT_LDT_INTDEST 5
+#define M_INT_LDT_INTDEST _SB_MAKEMASK(10, S_INT_LDT_INTDEST)
+#define V_INT_LDT_INTDEST(x) _SB_MAKEVALUE(x, S_INT_LDT_INTDEST)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_INT_LDT_INTDEST(x) _SB_GETVALUE(x, S_INT_LDT_INTDEST, M_INT_LDT_INTDEST)
+#define S_INT_LDT_VECTOR 13
+#define M_INT_LDT_VECTOR _SB_MAKEMASK(8, S_INT_LDT_VECTOR)
+#define V_INT_LDT_VECTOR(x) _SB_MAKEVALUE(x, S_INT_LDT_VECTOR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_INT_LDT_VECTOR(x) _SB_GETVALUE(x, S_INT_LDT_VECTOR, M_INT_LDT_VECTOR)
+#define M_LDTVECT_RAISEINT 0x00
+#define M_LDTVECT_RAISEMBOX 0x40
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250_scd.h b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250_scd.h
new file mode 100644
index 0000000..55e4a5a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sibyte/sb1250_scd.h
@@ -0,0 +1,539 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SB1250_SCD_H
+#define _SB1250_SCD_H
+#include "sb1250_defs.h"
+#define M_SYS_RESERVED _SB_MAKEMASK(8, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SYS_REVISION _SB_MAKE64(8)
+#define M_SYS_REVISION _SB_MAKEMASK(8, S_SYS_REVISION)
+#define V_SYS_REVISION(x) _SB_MAKEVALUE(x, S_SYS_REVISION)
+#define G_SYS_REVISION(x) _SB_GETVALUE(x, S_SYS_REVISION, M_SYS_REVISION)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM1250_PASS1 0x01
+#define K_SYS_REVISION_BCM1250_PASS2 0x03
+#define K_SYS_REVISION_BCM1250_A1 0x03  
+#define K_SYS_REVISION_BCM1250_A2 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM1250_A3 0x05  
+#define K_SYS_REVISION_BCM1250_A4 0x06  
+#define K_SYS_REVISION_BCM1250_A6 0x07  
+#define K_SYS_REVISION_BCM1250_A8 0x0b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM1250_A9 0x08
+#define K_SYS_REVISION_BCM1250_A10 K_SYS_REVISION_BCM1250_A8
+#define K_SYS_REVISION_BCM1250_PASS2_2 0x10
+#define K_SYS_REVISION_BCM1250_B0 K_SYS_REVISION_BCM1250_B1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM1250_B1 0x10
+#define K_SYS_REVISION_BCM1250_B2 0x11
+#define K_SYS_REVISION_BCM1250_C0 0x20
+#define K_SYS_REVISION_BCM1250_C1 0x21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM1250_C2 0x22
+#define K_SYS_REVISION_BCM1250_C3 0x23
+#if ???
+#define K_SYS_REVISION_PASS1 K_SYS_REVISION_BCM1250_PASS1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_PASS2 K_SYS_REVISION_BCM1250_PASS2
+#define K_SYS_REVISION_PASS2_2 K_SYS_REVISION_BCM1250_PASS2_2
+#define K_SYS_REVISION_PASS3 K_SYS_REVISION_BCM1250_PASS3
+#define K_SYS_REVISION_BCM1250_PASS3 K_SYS_REVISION_BCM1250_C0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define K_SYS_REVISION_BCM112x_A1 0x20
+#define K_SYS_REVISION_BCM112x_A2 0x21
+#define K_SYS_REVISION_BCM112x_A3 0x22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM112x_A4 0x23
+#define K_SYS_REVISION_BCM112x_B0 0x30
+#define K_SYS_REVISION_BCM1480_S0 0x01
+#define K_SYS_REVISION_BCM1480_A1 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_REVISION_BCM1480_A2 0x03
+#define K_SYS_REVISION_BCM1480_A3 0x04
+#define K_SYS_REVISION_BCM1480_B0 0x11
+#define S_SYS_L2C_SIZE _SB_MAKE64(20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_L2C_SIZE _SB_MAKEMASK(4, S_SYS_L2C_SIZE)
+#define V_SYS_L2C_SIZE(x) _SB_MAKEVALUE(x, S_SYS_L2C_SIZE)
+#define G_SYS_L2C_SIZE(x) _SB_GETVALUE(x, S_SYS_L2C_SIZE, M_SYS_L2C_SIZE)
+#define K_SYS_L2C_SIZE_1MB 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_L2C_SIZE_512KB 5
+#define K_SYS_L2C_SIZE_256KB 2
+#define K_SYS_L2C_SIZE_128KB 1
+#define K_SYS_L2C_SIZE_BCM1250 K_SYS_L2C_SIZE_512KB
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_L2C_SIZE_BCM1125 K_SYS_L2C_SIZE_256KB
+#define K_SYS_L2C_SIZE_BCM1122 K_SYS_L2C_SIZE_128KB
+#define S_SYS_NUM_CPUS _SB_MAKE64(24)
+#define M_SYS_NUM_CPUS _SB_MAKEMASK(4, S_SYS_NUM_CPUS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V_SYS_NUM_CPUS(x) _SB_MAKEVALUE(x, S_SYS_NUM_CPUS)
+#define G_SYS_NUM_CPUS(x) _SB_GETVALUE(x, S_SYS_NUM_CPUS, M_SYS_NUM_CPUS)
+#define S_SYS_PART _SB_MAKE64(16)
+#define M_SYS_PART _SB_MAKEMASK(16, S_SYS_PART)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V_SYS_PART(x) _SB_MAKEVALUE(x, S_SYS_PART)
+#define G_SYS_PART(x) _SB_GETVALUE(x, S_SYS_PART, M_SYS_PART)
+#define K_SYS_PART_SB1250 0x1250
+#define K_SYS_PART_BCM1120 0x1121
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_PART_BCM1125 0x1123
+#define K_SYS_PART_BCM1125H 0x1124
+#define K_SYS_PART_BCM1122 0x1113
+#define S_SYS_SOC_TYPE _SB_MAKE64(16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_SOC_TYPE _SB_MAKEMASK(4, S_SYS_SOC_TYPE)
+#define V_SYS_SOC_TYPE(x) _SB_MAKEVALUE(x, S_SYS_SOC_TYPE)
+#define G_SYS_SOC_TYPE(x) _SB_GETVALUE(x, S_SYS_SOC_TYPE, M_SYS_SOC_TYPE)
+#define K_SYS_SOC_TYPE_BCM1250 0x0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_SOC_TYPE_BCM1120 0x1
+#define K_SYS_SOC_TYPE_BCM1250_ALT 0x2  
+#define K_SYS_SOC_TYPE_BCM1125 0x3
+#define K_SYS_SOC_TYPE_BCM1125H 0x4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_SOC_TYPE_BCM1250_ALT2 0x5  
+#define K_SYS_SOC_TYPE_BCM1x80 0x6
+#define K_SYS_SOC_TYPE_BCM1x55 0x7
+#ifdef __ASSEMBLER__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYS_SOC_TYPE(dest, sysrev)   .set push ;   .set reorder ;   dsrl dest, sysrev, S_SYS_SOC_TYPE ;   andi dest, dest, (M_SYS_SOC_TYPE >> S_SYS_SOC_TYPE);   beq dest, K_SYS_SOC_TYPE_BCM1250_ALT, 991f ;   beq dest, K_SYS_SOC_TYPE_BCM1250_ALT2, 991f ;   b 992f ;  991: li dest, K_SYS_SOC_TYPE_BCM1250 ;  992:   .set pop
+#else
+#define SYS_SOC_TYPE(sysrev)   ((G_SYS_SOC_TYPE(sysrev) == K_SYS_SOC_TYPE_BCM1250_ALT   || G_SYS_SOC_TYPE(sysrev) == K_SYS_SOC_TYPE_BCM1250_ALT2)   ? K_SYS_SOC_TYPE_BCM1250 : G_SYS_SOC_TYPE(sysrev))
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SYS_WID _SB_MAKE64(32)
+#define M_SYS_WID _SB_MAKEMASK(32, S_SYS_WID)
+#define V_SYS_WID(x) _SB_MAKEVALUE(x, S_SYS_WID)
+#define G_SYS_WID(x) _SB_GETVALUE(x, S_SYS_WID, M_SYS_WID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if SIBYTE_HDR_FEATURE_1250_112x
+#define S_SYS_WAFERID1_200 _SB_MAKE64(0)
+#define M_SYS_WAFERID1_200 _SB_MAKEMASK(32, S_SYS_WAFERID1_200)
+#define V_SYS_WAFERID1_200(x) _SB_MAKEVALUE(x, S_SYS_WAFERID1_200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_WAFERID1_200(x) _SB_GETVALUE(x, S_SYS_WAFERID1_200, M_SYS_WAFERID1_200)
+#define S_SYS_BIN _SB_MAKE64(32)
+#define M_SYS_BIN _SB_MAKEMASK(4, S_SYS_BIN)
+#define V_SYS_BIN(x) _SB_MAKEVALUE(x, S_SYS_BIN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_BIN(x) _SB_GETVALUE(x, S_SYS_BIN, M_SYS_BIN)
+#define S_SYS_WAFERID2_200 _SB_MAKE64(36)
+#define M_SYS_WAFERID2_200 _SB_MAKEMASK(4, S_SYS_WAFERID2_200)
+#define V_SYS_WAFERID2_200(x) _SB_MAKEVALUE(x, S_SYS_WAFERID2_200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_WAFERID2_200(x) _SB_GETVALUE(x, S_SYS_WAFERID2_200, M_SYS_WAFERID2_200)
+#define S_SYS_WAFERID_300 _SB_MAKE64(0)
+#define M_SYS_WAFERID_300 _SB_MAKEMASK(40, S_SYS_WAFERID_300)
+#define V_SYS_WAFERID_300(x) _SB_MAKEVALUE(x, S_SYS_WAFERID_300)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_WAFERID_300(x) _SB_GETVALUE(x, S_SYS_WAFERID_300, M_SYS_WAFERID_300)
+#define S_SYS_XPOS _SB_MAKE64(40)
+#define M_SYS_XPOS _SB_MAKEMASK(6, S_SYS_XPOS)
+#define V_SYS_XPOS(x) _SB_MAKEVALUE(x, S_SYS_XPOS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_XPOS(x) _SB_GETVALUE(x, S_SYS_XPOS, M_SYS_XPOS)
+#define S_SYS_YPOS _SB_MAKE64(46)
+#define M_SYS_YPOS _SB_MAKEMASK(6, S_SYS_YPOS)
+#define V_SYS_YPOS(x) _SB_MAKEVALUE(x, S_SYS_YPOS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_YPOS(x) _SB_GETVALUE(x, S_SYS_YPOS, M_SYS_YPOS)
+#endif
+#if SIBYTE_HDR_FEATURE_1250_112x
+#define M_SYS_LDT_PLL_BYP _SB_MAKEMASK1(3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_PCI_SYNC_TEST_MODE _SB_MAKEMASK1(4)
+#define M_SYS_IOB0_DIV _SB_MAKEMASK1(5)
+#define M_SYS_IOB1_DIV _SB_MAKEMASK1(6)
+#define S_SYS_PLL_DIV _SB_MAKE64(7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_PLL_DIV _SB_MAKEMASK(5, S_SYS_PLL_DIV)
+#define V_SYS_PLL_DIV(x) _SB_MAKEVALUE(x, S_SYS_PLL_DIV)
+#define G_SYS_PLL_DIV(x) _SB_GETVALUE(x, S_SYS_PLL_DIV, M_SYS_PLL_DIV)
+#define M_SYS_SER0_ENABLE _SB_MAKEMASK1(12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_SER0_RSTB_EN _SB_MAKEMASK1(13)
+#define M_SYS_SER1_ENABLE _SB_MAKEMASK1(14)
+#define M_SYS_SER1_RSTB_EN _SB_MAKEMASK1(15)
+#define M_SYS_PCMCIA_ENABLE _SB_MAKEMASK1(16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SYS_BOOT_MODE _SB_MAKE64(17)
+#define M_SYS_BOOT_MODE _SB_MAKEMASK(2, S_SYS_BOOT_MODE)
+#define V_SYS_BOOT_MODE(x) _SB_MAKEVALUE(x, S_SYS_BOOT_MODE)
+#define G_SYS_BOOT_MODE(x) _SB_GETVALUE(x, S_SYS_BOOT_MODE, M_SYS_BOOT_MODE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SYS_BOOT_MODE_ROM32 0
+#define K_SYS_BOOT_MODE_ROM8 1
+#define K_SYS_BOOT_MODE_SMBUS_SMALL 2
+#define K_SYS_BOOT_MODE_SMBUS_BIG 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_PCI_HOST _SB_MAKEMASK1(19)
+#define M_SYS_PCI_ARBITER _SB_MAKEMASK1(20)
+#define M_SYS_SOUTH_ON_LDT _SB_MAKEMASK1(21)
+#define M_SYS_BIG_ENDIAN _SB_MAKEMASK1(22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_GENCLK_EN _SB_MAKEMASK1(23)
+#define M_SYS_LDT_TEST_EN _SB_MAKEMASK1(24)
+#define M_SYS_GEN_PARITY_EN _SB_MAKEMASK1(25)
+#define S_SYS_CONFIG 26
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_CONFIG _SB_MAKEMASK(6, S_SYS_CONFIG)
+#define V_SYS_CONFIG(x) _SB_MAKEVALUE(x, S_SYS_CONFIG)
+#define G_SYS_CONFIG(x) _SB_GETVALUE(x, S_SYS_CONFIG, M_SYS_CONFIG)
+#define M_SYS_CLKSTOP _SB_MAKEMASK1(32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_CLKSTEP _SB_MAKEMASK1(33)
+#define S_SYS_CLKCOUNT 34
+#define M_SYS_CLKCOUNT _SB_MAKEMASK(8, S_SYS_CLKCOUNT)
+#define V_SYS_CLKCOUNT(x) _SB_MAKEVALUE(x, S_SYS_CLKCOUNT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SYS_CLKCOUNT(x) _SB_GETVALUE(x, S_SYS_CLKCOUNT, M_SYS_CLKCOUNT)
+#define M_SYS_PLL_BYPASS _SB_MAKEMASK1(42)
+#define S_SYS_PLL_IREF 43
+#define M_SYS_PLL_IREF _SB_MAKEMASK(2, S_SYS_PLL_IREF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SYS_PLL_VCO 45
+#define M_SYS_PLL_VCO _SB_MAKEMASK(2, S_SYS_PLL_VCO)
+#define S_SYS_PLL_VREG 47
+#define M_SYS_PLL_VREG _SB_MAKEMASK(2, S_SYS_PLL_VREG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_MEM_RESET _SB_MAKEMASK1(49)
+#define M_SYS_L2C_RESET _SB_MAKEMASK1(50)
+#define M_SYS_IO_RESET_0 _SB_MAKEMASK1(51)
+#define M_SYS_IO_RESET_1 _SB_MAKEMASK1(52)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_SCD_RESET _SB_MAKEMASK1(53)
+#define M_SYS_CPU_RESET_0 _SB_MAKEMASK1(54)
+#define M_SYS_CPU_RESET_1 _SB_MAKEMASK1(55)
+#define M_SYS_UNICPU0 _SB_MAKEMASK1(56)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_UNICPU1 _SB_MAKEMASK1(57)
+#define M_SYS_SB_SOFTRES _SB_MAKEMASK1(58)
+#define M_SYS_EXT_RESET _SB_MAKEMASK1(59)
+#define M_SYS_SYSTEM_RESET _SB_MAKEMASK1(60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SYS_MISR_MODE _SB_MAKEMASK1(61)
+#define M_SYS_MISR_RESET _SB_MAKEMASK1(62)
+#if ??? || ???
+#define M_SYS_SW_FLAG _SB_MAKEMASK1(63)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
+#define S_MBOX_INT_3 0
+#define M_MBOX_INT_3 _SB_MAKEMASK(16, S_MBOX_INT_3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_MBOX_INT_2 16
+#define M_MBOX_INT_2 _SB_MAKEMASK(16, S_MBOX_INT_2)
+#define S_MBOX_INT_1 32
+#define M_MBOX_INT_1 _SB_MAKEMASK(16, S_MBOX_INT_1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_MBOX_INT_0 48
+#define M_MBOX_INT_0 _SB_MAKEMASK(16, S_MBOX_INT_0)
+#define V_SCD_WDOG_FREQ 1000000
+#define S_SCD_WDOG_INIT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_WDOG_INIT _SB_MAKEMASK(23, S_SCD_WDOG_INIT)
+#define S_SCD_WDOG_CNT 0
+#define M_SCD_WDOG_CNT _SB_MAKEMASK(23, S_SCD_WDOG_CNT)
+#define S_SCD_WDOG_ENABLE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_WDOG_ENABLE _SB_MAKEMASK1(S_SCD_WDOG_ENABLE)
+#define S_SCD_WDOG_RESET_TYPE 2
+#define M_SCD_WDOG_RESET_TYPE _SB_MAKEMASK(3, S_SCD_WDOG_RESET_TYPE)
+#define V_SCD_WDOG_RESET_TYPE(x) _SB_MAKEVALUE(x, S_SCD_WDOG_RESET_TYPE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SCD_WDOG_RESET_TYPE(x) _SB_GETVALUE(x, S_SCD_WDOG_RESET_TYPE, M_SCD_WDOG_RESET_TYPE)
+#define K_SCD_WDOG_RESET_FULL 0  
+#define K_SCD_WDOG_RESET_SOFT 1
+#define K_SCD_WDOG_RESET_CPU0 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_WDOG_RESET_CPU1 5
+#define K_SCD_WDOG_RESET_BOTH_CPUS 7
+#if ???
+#define S_SCD_WDOG_HAS_RESET 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_WDOG_HAS_RESET _SB_MAKEMASK1(S_SCD_WDOG_HAS_RESET)
+#endif
+#define V_SCD_TIMER_FREQ 1000000
+#define S_SCD_TIMER_INIT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_TIMER_INIT _SB_MAKEMASK(23, S_SCD_TIMER_INIT)
+#define V_SCD_TIMER_INIT(x) _SB_MAKEVALUE(x, S_SCD_TIMER_INIT)
+#define G_SCD_TIMER_INIT(x) _SB_GETVALUE(x, S_SCD_TIMER_INIT, M_SCD_TIMER_INIT)
+#define V_SCD_TIMER_WIDTH 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TIMER_CNT 0
+#define M_SCD_TIMER_CNT _SB_MAKEMASK(V_SCD_TIMER_WIDTH, S_SCD_TIMER_CNT)
+#define V_SCD_TIMER_CNT(x) _SB_MAKEVALUE(x, S_SCD_TIMER_CNT)
+#define G_SCD_TIMER_CNT(x) _SB_GETVALUE(x, S_SCD_TIMER_CNT, M_SCD_TIMER_CNT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_TIMER_ENABLE _SB_MAKEMASK1(0)
+#define M_SCD_TIMER_MODE _SB_MAKEMASK1(1)
+#define M_SCD_TIMER_MODE_CONTINUOUS M_SCD_TIMER_MODE
+#define S_SPC_CFG_SRC0 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC0 _SB_MAKEMASK(8, S_SPC_CFG_SRC0)
+#define V_SPC_CFG_SRC0(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC0)
+#define G_SPC_CFG_SRC0(x) _SB_GETVALUE(x, S_SPC_CFG_SRC0, M_SPC_CFG_SRC0)
+#define S_SPC_CFG_SRC1 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC1 _SB_MAKEMASK(8, S_SPC_CFG_SRC1)
+#define V_SPC_CFG_SRC1(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC1)
+#define G_SPC_CFG_SRC1(x) _SB_GETVALUE(x, S_SPC_CFG_SRC1, M_SPC_CFG_SRC1)
+#define S_SPC_CFG_SRC2 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC2 _SB_MAKEMASK(8, S_SPC_CFG_SRC2)
+#define V_SPC_CFG_SRC2(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC2)
+#define G_SPC_CFG_SRC2(x) _SB_GETVALUE(x, S_SPC_CFG_SRC2, M_SPC_CFG_SRC2)
+#define S_SPC_CFG_SRC3 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_SRC3 _SB_MAKEMASK(8, S_SPC_CFG_SRC3)
+#define V_SPC_CFG_SRC3(x) _SB_MAKEVALUE(x, S_SPC_CFG_SRC3)
+#define G_SPC_CFG_SRC3(x) _SB_GETVALUE(x, S_SPC_CFG_SRC3, M_SPC_CFG_SRC3)
+#if SIBYTE_HDR_FEATURE_1250_112x
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SPC_CFG_CLEAR _SB_MAKEMASK1(32)
+#define M_SPC_CFG_ENABLE _SB_MAKEMASK1(33)
+#endif
+#define S_SCD_BERR_TID 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_BERR_TID _SB_MAKEMASK(10, S_SCD_BERR_TID)
+#define V_SCD_BERR_TID(x) _SB_MAKEVALUE(x, S_SCD_BERR_TID)
+#define G_SCD_BERR_TID(x) _SB_GETVALUE(x, S_SCD_BERR_TID, M_SCD_BERR_TID)
+#define S_SCD_BERR_RID 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_BERR_RID _SB_MAKEMASK(4, S_SCD_BERR_RID)
+#define V_SCD_BERR_RID(x) _SB_MAKEVALUE(x, S_SCD_BERR_RID)
+#define G_SCD_BERR_RID(x) _SB_GETVALUE(x, S_SCD_BERR_RID, M_SCD_BERR_RID)
+#define S_SCD_BERR_DCODE 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_BERR_DCODE _SB_MAKEMASK(3, S_SCD_BERR_DCODE)
+#define V_SCD_BERR_DCODE(x) _SB_MAKEVALUE(x, S_SCD_BERR_DCODE)
+#define G_SCD_BERR_DCODE(x) _SB_GETVALUE(x, S_SCD_BERR_DCODE, M_SCD_BERR_DCODE)
+#define M_SCD_BERR_MULTERRS _SB_MAKEMASK1(30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_L2ECC_CORR_D 0
+#define M_SCD_L2ECC_CORR_D _SB_MAKEMASK(8, S_SCD_L2ECC_CORR_D)
+#define V_SCD_L2ECC_CORR_D(x) _SB_MAKEVALUE(x, S_SCD_L2ECC_CORR_D)
+#define G_SCD_L2ECC_CORR_D(x) _SB_GETVALUE(x, S_SCD_L2ECC_CORR_D, M_SCD_L2ECC_CORR_D)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_L2ECC_BAD_D 8
+#define M_SCD_L2ECC_BAD_D _SB_MAKEMASK(8, S_SCD_L2ECC_BAD_D)
+#define V_SCD_L2ECC_BAD_D(x) _SB_MAKEVALUE(x, S_SCD_L2ECC_BAD_D)
+#define G_SCD_L2ECC_BAD_D(x) _SB_GETVALUE(x, S_SCD_L2ECC_BAD_D, M_SCD_L2ECC_BAD_D)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_L2ECC_CORR_T 16
+#define M_SCD_L2ECC_CORR_T _SB_MAKEMASK(8, S_SCD_L2ECC_CORR_T)
+#define V_SCD_L2ECC_CORR_T(x) _SB_MAKEVALUE(x, S_SCD_L2ECC_CORR_T)
+#define G_SCD_L2ECC_CORR_T(x) _SB_GETVALUE(x, S_SCD_L2ECC_CORR_T, M_SCD_L2ECC_CORR_T)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_L2ECC_BAD_T 24
+#define M_SCD_L2ECC_BAD_T _SB_MAKEMASK(8, S_SCD_L2ECC_BAD_T)
+#define V_SCD_L2ECC_BAD_T(x) _SB_MAKEVALUE(x, S_SCD_L2ECC_BAD_T)
+#define G_SCD_L2ECC_BAD_T(x) _SB_GETVALUE(x, S_SCD_L2ECC_BAD_T, M_SCD_L2ECC_BAD_T)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_MEM_ECC_CORR 0
+#define M_SCD_MEM_ECC_CORR _SB_MAKEMASK(8, S_SCD_MEM_ECC_CORR)
+#define V_SCD_MEM_ECC_CORR(x) _SB_MAKEVALUE(x, S_SCD_MEM_ECC_CORR)
+#define G_SCD_MEM_ECC_CORR(x) _SB_GETVALUE(x, S_SCD_MEM_ECC_CORR, M_SCD_MEM_ECC_CORR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_MEM_ECC_BAD 8
+#define M_SCD_MEM_ECC_BAD _SB_MAKEMASK(8, S_SCD_MEM_ECC_BAD)
+#define V_SCD_MEM_ECC_BAD(x) _SB_MAKEVALUE(x, S_SCD_MEM_ECC_BAD)
+#define G_SCD_MEM_ECC_BAD(x) _SB_GETVALUE(x, S_SCD_MEM_ECC_BAD, M_SCD_MEM_ECC_BAD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_MEM_BUSERR 16
+#define M_SCD_MEM_BUSERR _SB_MAKEMASK(8, S_SCD_MEM_BUSERR)
+#define V_SCD_MEM_BUSERR(x) _SB_MAKEVALUE(x, S_SCD_MEM_BUSERR)
+#define G_SCD_MEM_BUSERR(x) _SB_GETVALUE(x, S_SCD_MEM_BUSERR, M_SCD_MEM_BUSERR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if SIBYTE_HDR_FEATURE_1250_112x
+#define M_ATRAP_INDEX _SB_MAKEMASK(4, 0)
+#define M_ATRAP_ADDRESS _SB_MAKEMASK(40, 0)
+#define S_ATRAP_CFG_CNT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_ATRAP_CFG_CNT _SB_MAKEMASK(3, S_ATRAP_CFG_CNT)
+#define V_ATRAP_CFG_CNT(x) _SB_MAKEVALUE(x, S_ATRAP_CFG_CNT)
+#define G_ATRAP_CFG_CNT(x) _SB_GETVALUE(x, S_ATRAP_CFG_CNT, M_ATRAP_CFG_CNT)
+#define M_ATRAP_CFG_WRITE _SB_MAKEMASK1(3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_ATRAP_CFG_ALL _SB_MAKEMASK1(4)
+#define M_ATRAP_CFG_INV _SB_MAKEMASK1(5)
+#define M_ATRAP_CFG_USESRC _SB_MAKEMASK1(6)
+#define M_ATRAP_CFG_SRCINV _SB_MAKEMASK1(7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_ATRAP_CFG_AGENTID 8
+#define M_ATRAP_CFG_AGENTID _SB_MAKEMASK(4, S_ATRAP_CFG_AGENTID)
+#define V_ATRAP_CFG_AGENTID(x) _SB_MAKEVALUE(x, S_ATRAP_CFG_AGENTID)
+#define G_ATRAP_CFG_AGENTID(x) _SB_GETVALUE(x, S_ATRAP_CFG_AGENTID, M_ATRAP_CFG_AGENTID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BUS_AGENT_CPU0 0
+#define K_BUS_AGENT_CPU1 1
+#define K_BUS_AGENT_IOB0 2
+#define K_BUS_AGENT_IOB1 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_BUS_AGENT_SCD 4
+#define K_BUS_AGENT_L2C 6
+#define K_BUS_AGENT_MC 7
+#define S_ATRAP_CFG_CATTR 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_ATRAP_CFG_CATTR _SB_MAKEMASK(3, S_ATRAP_CFG_CATTR)
+#define V_ATRAP_CFG_CATTR(x) _SB_MAKEVALUE(x, S_ATRAP_CFG_CATTR)
+#define G_ATRAP_CFG_CATTR(x) _SB_GETVALUE(x, S_ATRAP_CFG_CATTR, M_ATRAP_CFG_CATTR)
+#define K_ATRAP_CFG_CATTR_IGNORE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_ATRAP_CFG_CATTR_UNC 1
+#define K_ATRAP_CFG_CATTR_CACHEABLE 2
+#define K_ATRAP_CFG_CATTR_NONCOH 3
+#define K_ATRAP_CFG_CATTR_COHERENT 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_ATRAP_CFG_CATTR_NOTUNC 5
+#define K_ATRAP_CFG_CATTR_NOTNONCOH 6
+#define K_ATRAP_CFG_CATTR_NOTCOHERENT 7
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_TRACE_CFG_RESET _SB_MAKEMASK1(0)
+#define M_SCD_TRACE_CFG_START_READ _SB_MAKEMASK1(1)
+#define M_SCD_TRACE_CFG_START _SB_MAKEMASK1(2)
+#define M_SCD_TRACE_CFG_STOP _SB_MAKEMASK1(3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_TRACE_CFG_FREEZE _SB_MAKEMASK1(4)
+#define M_SCD_TRACE_CFG_FREEZE_FULL _SB_MAKEMASK1(5)
+#define M_SCD_TRACE_CFG_DEBUG_FULL _SB_MAKEMASK1(6)
+#define M_SCD_TRACE_CFG_FULL _SB_MAKEMASK1(7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if ??? || ??? || ???
+#define M_SCD_TRACE_CFG_FORCECNT _SB_MAKEMASK1(8)
+#endif
+#if SIBYTE_HDR_FEATURE_1250_112x
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TRACE_CFG_CUR_ADDR 10
+#else
+#if ???
+#define S_SCD_TRACE_CFG_CUR_ADDR 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
+#define M_SCD_TRACE_CFG_CUR_ADDR _SB_MAKEMASK(8, S_SCD_TRACE_CFG_CUR_ADDR)
+#define V_SCD_TRACE_CFG_CUR_ADDR(x) _SB_MAKEVALUE(x, S_SCD_TRACE_CFG_CUR_ADDR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SCD_TRACE_CFG_CUR_ADDR(x) _SB_GETVALUE(x, S_SCD_TRACE_CFG_CUR_ADDR, M_SCD_TRACE_CFG_CUR_ADDR)
+#define S_SCD_TREVT_ADDR_MATCH 0
+#define M_SCD_TREVT_ADDR_MATCH _SB_MAKEMASK(4, S_SCD_TREVT_ADDR_MATCH)
+#define V_SCD_TREVT_ADDR_MATCH(x) _SB_MAKEVALUE(x, S_SCD_TREVT_ADDR_MATCH)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SCD_TREVT_ADDR_MATCH(x) _SB_GETVALUE(x, S_SCD_TREVT_ADDR_MATCH, M_SCD_TREVT_ADDR_MATCH)
+#define M_SCD_TREVT_REQID_MATCH _SB_MAKEMASK1(4)
+#define M_SCD_TREVT_DATAID_MATCH _SB_MAKEMASK1(5)
+#define M_SCD_TREVT_RESPID_MATCH _SB_MAKEMASK1(6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_TREVT_INTERRUPT _SB_MAKEMASK1(7)
+#define M_SCD_TREVT_DEBUG_PIN _SB_MAKEMASK1(9)
+#define M_SCD_TREVT_WRITE _SB_MAKEMASK1(10)
+#define M_SCD_TREVT_READ _SB_MAKEMASK1(11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TREVT_REQID 12
+#define M_SCD_TREVT_REQID _SB_MAKEMASK(4, S_SCD_TREVT_REQID)
+#define V_SCD_TREVT_REQID(x) _SB_MAKEVALUE(x, S_SCD_TREVT_REQID)
+#define G_SCD_TREVT_REQID(x) _SB_GETVALUE(x, S_SCD_TREVT_REQID, M_SCD_TREVT_REQID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TREVT_RESPID 16
+#define M_SCD_TREVT_RESPID _SB_MAKEMASK(4, S_SCD_TREVT_RESPID)
+#define V_SCD_TREVT_RESPID(x) _SB_MAKEVALUE(x, S_SCD_TREVT_RESPID)
+#define G_SCD_TREVT_RESPID(x) _SB_GETVALUE(x, S_SCD_TREVT_RESPID, M_SCD_TREVT_RESPID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TREVT_DATAID 20
+#define M_SCD_TREVT_DATAID _SB_MAKEMASK(4, S_SCD_TREVT_DATAID)
+#define V_SCD_TREVT_DATAID(x) _SB_MAKEVALUE(x, S_SCD_TREVT_DATAID)
+#define G_SCD_TREVT_DATAID(x) _SB_GETVALUE(x, S_SCD_TREVT_DATAID, M_SCD_TREVT_DATID)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TREVT_COUNT 24
+#define M_SCD_TREVT_COUNT _SB_MAKEMASK(8, S_SCD_TREVT_COUNT)
+#define V_SCD_TREVT_COUNT(x) _SB_MAKEVALUE(x, S_SCD_TREVT_COUNT)
+#define G_SCD_TREVT_COUNT(x) _SB_GETVALUE(x, S_SCD_TREVT_COUNT, M_SCD_TREVT_COUNT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TRSEQ_EVENT4 0
+#define M_SCD_TRSEQ_EVENT4 _SB_MAKEMASK(4, S_SCD_TRSEQ_EVENT4)
+#define V_SCD_TRSEQ_EVENT4(x) _SB_MAKEVALUE(x, S_SCD_TRSEQ_EVENT4)
+#define G_SCD_TRSEQ_EVENT4(x) _SB_GETVALUE(x, S_SCD_TRSEQ_EVENT4, M_SCD_TRSEQ_EVENT4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TRSEQ_EVENT3 4
+#define M_SCD_TRSEQ_EVENT3 _SB_MAKEMASK(4, S_SCD_TRSEQ_EVENT3)
+#define V_SCD_TRSEQ_EVENT3(x) _SB_MAKEVALUE(x, S_SCD_TRSEQ_EVENT3)
+#define G_SCD_TRSEQ_EVENT3(x) _SB_GETVALUE(x, S_SCD_TRSEQ_EVENT3, M_SCD_TRSEQ_EVENT3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TRSEQ_EVENT2 8
+#define M_SCD_TRSEQ_EVENT2 _SB_MAKEMASK(4, S_SCD_TRSEQ_EVENT2)
+#define V_SCD_TRSEQ_EVENT2(x) _SB_MAKEVALUE(x, S_SCD_TRSEQ_EVENT2)
+#define G_SCD_TRSEQ_EVENT2(x) _SB_GETVALUE(x, S_SCD_TRSEQ_EVENT2, M_SCD_TRSEQ_EVENT2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define S_SCD_TRSEQ_EVENT1 12
+#define M_SCD_TRSEQ_EVENT1 _SB_MAKEMASK(4, S_SCD_TRSEQ_EVENT1)
+#define V_SCD_TRSEQ_EVENT1(x) _SB_MAKEVALUE(x, S_SCD_TRSEQ_EVENT1)
+#define G_SCD_TRSEQ_EVENT1(x) _SB_GETVALUE(x, S_SCD_TRSEQ_EVENT1, M_SCD_TRSEQ_EVENT1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_TRSEQ_E0 0
+#define K_SCD_TRSEQ_E1 1
+#define K_SCD_TRSEQ_E2 2
+#define K_SCD_TRSEQ_E3 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_TRSEQ_E0_E1 4
+#define K_SCD_TRSEQ_E1_E2 5
+#define K_SCD_TRSEQ_E2_E3 6
+#define K_SCD_TRSEQ_E0_E1_E2 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_TRSEQ_E0_E1_E2_E3 8
+#define K_SCD_TRSEQ_E0E1 9
+#define K_SCD_TRSEQ_E0E1E2 10
+#define K_SCD_TRSEQ_E0E1E2E3 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_TRSEQ_E0E1_E2 12
+#define K_SCD_TRSEQ_E0E1_E2E3 13
+#define K_SCD_TRSEQ_E0E1_E2_E3 14
+#define K_SCD_TRSEQ_IGNORED 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_TRSEQ_TRIGGER_ALL (V_SCD_TRSEQ_EVENT1(K_SCD_TRSEQ_IGNORED) |   V_SCD_TRSEQ_EVENT2(K_SCD_TRSEQ_IGNORED) |   V_SCD_TRSEQ_EVENT3(K_SCD_TRSEQ_IGNORED) |   V_SCD_TRSEQ_EVENT4(K_SCD_TRSEQ_IGNORED))
+#define S_SCD_TRSEQ_FUNCTION 16
+#define M_SCD_TRSEQ_FUNCTION _SB_MAKEMASK(4, S_SCD_TRSEQ_FUNCTION)
+#define V_SCD_TRSEQ_FUNCTION(x) _SB_MAKEVALUE(x, S_SCD_TRSEQ_FUNCTION)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define G_SCD_TRSEQ_FUNCTION(x) _SB_GETVALUE(x, S_SCD_TRSEQ_FUNCTION, M_SCD_TRSEQ_FUNCTION)
+#define K_SCD_TRSEQ_FUNC_NOP 0
+#define K_SCD_TRSEQ_FUNC_START 1
+#define K_SCD_TRSEQ_FUNC_STOP 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K_SCD_TRSEQ_FUNC_FREEZE 3
+#define V_SCD_TRSEQ_FUNC_NOP V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_NOP)
+#define V_SCD_TRSEQ_FUNC_START V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_START)
+#define V_SCD_TRSEQ_FUNC_STOP V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_STOP)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define V_SCD_TRSEQ_FUNC_FREEZE V_SCD_TRSEQ_FUNCTION(K_SCD_TRSEQ_FUNC_FREEZE)
+#define M_SCD_TRSEQ_ASAMPLE _SB_MAKEMASK1(18)
+#define M_SCD_TRSEQ_DSAMPLE _SB_MAKEMASK1(19)
+#define M_SCD_TRSEQ_DEBUGPIN _SB_MAKEMASK1(20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define M_SCD_TRSEQ_DEBUGCPU _SB_MAKEMASK1(21)
+#define M_SCD_TRSEQ_CLEARUSE _SB_MAKEMASK1(22)
+#define M_SCD_TRSEQ_ALLD_A _SB_MAKEMASK1(23)
+#define M_SCD_TRSEQ_ALL_A _SB_MAKEMASK1(24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sigcontext.h b/ndk/platforms/android-9/arch-mips/include/asm/sigcontext.h
new file mode 100644
index 0000000..d3742f3
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sigcontext.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SIGCONTEXT_H
+#define _ASM_SIGCONTEXT_H
+#include <asm/sgidefs.h>
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sigcontext {
+ unsigned int sc_regmask;
+ unsigned int sc_status;
+ unsigned long long sc_pc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long long sc_regs[32];
+ unsigned long long sc_fpregs[32];
+ unsigned int sc_acx;
+ unsigned int sc_fpc_csr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int sc_fpc_eir;
+ unsigned int sc_used_math;
+ unsigned int sc_dsp;
+ unsigned long long sc_mdhi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long long sc_mdlo;
+ unsigned long sc_hi1;
+ unsigned long sc_lo1;
+ unsigned long sc_hi2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long sc_lo2;
+ unsigned long sc_hi3;
+ unsigned long sc_lo3;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI64 || _MIPS_SIM == _MIPS_SIM_NABI32
+#include <linux/posix_types.h>
+struct sigcontext {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 sc_regs[32];
+ __u64 sc_fpregs[32];
+ __u64 sc_mdhi;
+ __u64 sc_hi1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 sc_hi2;
+ __u64 sc_hi3;
+ __u64 sc_mdlo;
+ __u64 sc_lo1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 sc_lo2;
+ __u64 sc_lo3;
+ __u64 sc_pc;
+ __u32 sc_fpc_csr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 sc_used_math;
+ __u32 sc_dsp;
+ __u32 sc_reserved;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/siginfo.h b/ndk/platforms/android-9/arch-mips/include/asm/siginfo.h
new file mode 100644
index 0000000..f3e508a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/siginfo.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SIGINFO_H
+#define _ASM_SIGINFO_H
+#define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(long) + 2*sizeof(int))
+#undef __ARCH_SI_TRAPNO  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HAVE_ARCH_SIGINFO_T
+#define HAVE_ARCH_COPY_SIGINFO
+struct siginfo;
+#include <asm-generic/siginfo.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct siginfo {
+ int si_signo;
+ int si_code;
+ int si_errno;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
+ union {
+ int _pad[SI_PAD_SIZE];
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pid_t _pid;
+ __ARCH_SI_UID_T _uid;
+ } _kill;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ timer_t _tid;
+ int _overrun;
+ char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
+ sigval_t _sigval;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int _sys_private;
+ } _timer;
+ struct {
+ pid_t _pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __ARCH_SI_UID_T _uid;
+ sigval_t _sigval;
+ } _rt;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pid_t _pid;
+ __ARCH_SI_UID_T _uid;
+ int _status;
+ clock_t _utime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ clock_t _stime;
+ } _sigchld;
+ struct {
+ pid_t _pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ clock_t _utime;
+ int _status;
+ clock_t _stime;
+ } _irix_sigchld;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ void __user *_addr;
+#ifdef __ARCH_SI_TRAPNO
+ int _trapno;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+ } _sigfault;
+ struct {
+ __ARCH_SI_BAND_T _band;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int _fd;
+ } _sigpoll;
+ } _sifields;
+} siginfo_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef SI_ASYNCIO
+#undef SI_TIMER
+#undef SI_MESGQ
+#define SI_ASYNCIO -2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SI_TIMER __SI_CODE(__SI_TIMER, -3)  
+#define SI_MESGQ __SI_CODE(__SI_MESGQ, -4)  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/signal.h b/ndk/platforms/android-9/arch-mips/include/asm/signal.h
new file mode 100644
index 0000000..5f5ac77
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/signal.h
@@ -0,0 +1,124 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SIGNAL_H
+#define _ASM_SIGNAL_H
+#include <linux/types.h>
+#define _NSIG 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NSIG 128
+#define _NSIG_BPW (sizeof(unsigned long) * 8)
+#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
+typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long sig[_NSIG_WORDS];
+} sigset_t;
+typedef unsigned long old_sigset_t;
+#define SIGHUP 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGINT 2  
+#define SIGQUIT 3  
+#define SIGILL 4  
+#define SIGTRAP 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGIOT 6  
+#define SIGABRT SIGIOT  
+#define SIGEMT 7
+#define SIGFPE 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGKILL 9  
+#define SIGBUS 10  
+#define SIGSEGV 11  
+#define SIGSYS 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGPIPE 13  
+#define SIGALRM 14  
+#define SIGTERM 15  
+#define SIGUSR1 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGUSR2 17  
+#define SIGCHLD 18  
+#define SIGCLD SIGCHLD  
+#define SIGPWR 19  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGWINCH 20  
+#define SIGURG 21  
+#define SIGIO 22  
+#define SIGPOLL SIGIO  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGSTOP 23  
+#define SIGTSTP 24  
+#define SIGCONT 25  
+#define SIGTTIN 26  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGTTOU 27  
+#define SIGVTALRM 28  
+#define SIGPROF 29  
+#define SIGXCPU 30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGXFSZ 31  
+#define SIGRTMIN 32
+#define SIGRTMAX _NSIG
+#define SA_ONSTACK 0x08000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SA_RESETHAND 0x80000000
+#define SA_RESTART 0x10000000
+#define SA_SIGINFO 0x00000008
+#define SA_NODEFER 0x40000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SA_NOCLDWAIT 0x00010000
+#define SA_NOCLDSTOP 0x00000001
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SA_RESTORER 0x04000000  
+#define SS_ONSTACK 1
+#define SS_DISABLE 2
+#define MINSIGSTKSZ 2048
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIGSTKSZ 8192
+struct siginfo;
+#define SIG_BLOCK 1  
+#define SIG_UNBLOCK 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIG_SETMASK 3  
+#include <asm-generic/signal.h>
+struct sigaction {
+ unsigned int sa_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ union {
+ __sighandler_t sa_handler;
+ void (*sa_sigaction) (int, struct siginfo *, void *);
+ } __sigaction_handler;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define sa_handler __sigaction_handler.sa_handler
+#define sa_sigaction __sigaction_handler.sa_sigaction
+ sigset_t sa_mask;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct k_sigaction {
+ struct sigaction sa;
+};
+typedef struct sigaltstack {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void *ss_sp;
+ size_t ss_size;
+ int ss_flags;
+} stack_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/smp-ops.h b/ndk/platforms/android-9/arch-mips/include/asm/smp-ops.h
new file mode 100644
index 0000000..f80f01c
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/smp-ops.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SMP_OPS_H
+#define __ASM_SMP_OPS_H
+struct plat_smp_ops;
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/smp.h b/ndk/platforms/android-9/arch-mips/include/asm/smp.h
new file mode 100644
index 0000000..87eea88
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/smp.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SMP_H
+#define __ASM_SMP_H
+#include <linux/bitops.h>
+#include <linux/linkage.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/threads.h>
+#include <linux/cpumask.h>
+#include <asm/atomic.h>
+#include <asm/smp-ops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define raw_smp_processor_id() (current_thread_info()->cpu)
+#define cpu_number_map(cpu) __cpu_number_map[cpu]
+#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
+#define NO_PROC_ID (-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SMP_RESCHEDULE_YOURSELF 0x1  
+#define SMP_CALL_FUNCTION 0x2
+#define cpu_possible_map phys_cpu_present_map
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/addrs.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/addrs.h
new file mode 100644
index 0000000..d243613
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/addrs.h
@@ -0,0 +1,188 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_ADDRS_H
+#define _ASM_SN_ADDRS_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#include <asm/addrspace.h>
+#include <asm/sn/kldir.h>
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PS_UINT_CAST (unsigned long)
+#define UINT64_CAST (unsigned long)
+#define HUBREG_CAST (volatile hubreg_t *)
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PS_UINT_CAST
+#define UINT64_CAST
+#define HUBREG_CAST
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NASID_GET_META(_n) ((_n) >> NASID_LOCAL_BITS)
+#define NASID_MAKE(_m, _l) (((_m) << NASID_LOCAL_BITS) | (_l))
+#define NODE_ADDRSPACE_MASK (NODE_ADDRSPACE_SIZE - 1)
+#define TO_NODE_ADDRSPACE(_pa) (UINT64_CAST (_pa) & NODE_ADDRSPACE_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CHANGE_ADDR_NASID(_pa, _nasid)   ((UINT64_CAST(_pa) & ~NASID_MASK) |   (UINT64_CAST(_nasid) << NASID_SHFT))
+#define NODE_OFFSET(_n) (UINT64_CAST (_n) << NODE_SIZE_BITS)
+#define NODE_CAC_BASE(_n) (CAC_BASE + NODE_OFFSET(_n))
+#define NODE_HSPEC_BASE(_n) (HSPEC_BASE + NODE_OFFSET(_n))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NODE_IO_BASE(_n) (IO_BASE + NODE_OFFSET(_n))
+#define NODE_MSPEC_BASE(_n) (MSPEC_BASE + NODE_OFFSET(_n))
+#define NODE_UNCAC_BASE(_n) (UNCAC_BASE + NODE_OFFSET(_n))
+#define TO_NODE(_n, _x) (NODE_OFFSET(_n) | ((_x) ))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TO_NODE_CAC(_n, _x) (NODE_CAC_BASE(_n) | ((_x) & TO_PHYS_MASK))
+#define TO_NODE_UNCAC(_n, _x) (NODE_UNCAC_BASE(_n) | ((_x) & TO_PHYS_MASK))
+#define TO_NODE_MSPEC(_n, _x) (NODE_MSPEC_BASE(_n) | ((_x) & TO_PHYS_MASK))
+#define TO_NODE_HSPEC(_n, _x) (NODE_HSPEC_BASE(_n) | ((_x) & TO_PHYS_MASK))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RAW_NODE_SWIN_BASE(nasid, widget)   (NODE_IO_BASE(nasid) + (UINT64_CAST(widget) << SWIN_SIZE_BITS))
+#define WIDGETID_GET(addr) ((unsigned char)((addr >> SWIN_SIZE_BITS) & 0xff))
+#define SWIN_SIZE_BITS 24
+#define SWIN_SIZE (UINT64_CAST 1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SWIN_SIZEMASK (SWIN_SIZE - 1)
+#define SWIN_WIDGET_MASK 0xF
+#define SWIN_WIDGETADDR(addr) ((addr) & SWIN_SIZEMASK)
+#define SWIN_WIDGETNUM(addr) (((addr) >> SWIN_SIZE_BITS) & SWIN_WIDGET_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NODE_SWIN_ADDR(nasid, addr)   (((addr) >= NODE_SWIN_BASE(nasid, 0)) &&   ((addr) < (NODE_SWIN_BASE(nasid, HUB_NUM_WIDGET) + SWIN_SIZE)  ))
+#define UALIAS_BASE HSPEC_BASE
+#define UALIAS_SIZE 0x10000000  
+#define UALIAS_LIMIT (UALIAS_BASE + UALIAS_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HUB_REGISTER_WIDGET 1
+#define IALIAS_BASE NODE_SWIN_BASE(0, HUB_REGISTER_WIDGET)
+#define IALIAS_SIZE 0x800000  
+#define IS_IALIAS(_a) (((_a) >= IALIAS_BASE) &&   ((_a) < (IALIAS_BASE + IALIAS_SIZE)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NODE_BDOOR_BASE(_n) (NODE_HSPEC_BASE(_n) + (NODE_ADDRSPACE_SIZE/2))
+#define NODE_BDECC_BASE(_n) (NODE_BDOOR_BASE(_n))
+#define NODE_BDDIR_BASE(_n) (NODE_BDOOR_BASE(_n) + (NODE_ADDRSPACE_SIZE/4))
+#define LOCAL_HUB_ADDR(_x) (HUBREG_CAST (IALIAS_BASE + (_x)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REMOTE_HUB_ADDR(_n, _x) (HUBREG_CAST (NODE_SWIN_BASE(_n, 1) +   0x800000 + (_x)))
+#ifndef __ASSEMBLY__
+#define HUB_L(_a) *(_a)
+#define HUB_S(_a, _d) *(_a) = (_d)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LOCAL_HUB_L(_r) HUB_L(LOCAL_HUB_ADDR(_r))
+#define LOCAL_HUB_S(_r, _d) HUB_S(LOCAL_HUB_ADDR(_r), (_d))
+#define REMOTE_HUB_L(_n, _r) HUB_L(REMOTE_HUB_ADDR((_n), (_r)))
+#define REMOTE_HUB_S(_n, _r, _d) HUB_S(REMOTE_HUB_ADDR((_n), (_r)), (_d))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define REMOTE_HUB_PI_L(_n, _sn, _r) HUB_L(REMOTE_HUB_PI_ADDR((_n), (_sn), (_r)))
+#define REMOTE_HUB_PI_S(_n, _sn, _r, _d) HUB_S(REMOTE_HUB_PI_ADDR((_n), (_sn), (_r)), (_d))
+#endif
+#define HUB_REG_PTR(_base, _off)   (HUBREG_CAST((__psunsigned_t)(_base) + (__psunsigned_t)(_off)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HUB_REG_PTR_L(_base, _off)   HUB_L(HUB_REG_PTR((_base), (_off)))
+#define HUB_REG_PTR_S(_base, _off, _data)   HUB_S(HUB_REG_PTR((_base), (_off)), (_data))
+#define PHYS_RAMBASE 0x0
+#define K0_RAMBASE PHYS_TO_K0(PHYS_RAMBASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EX_HANDLER_OFFSET(slice) ((slice) << 16)
+#define EX_HANDLER_ADDR(nasid, slice)   PHYS_TO_K0(NODE_OFFSET(nasid) | EX_HANDLER_OFFSET(slice))
+#define EX_HANDLER_SIZE 0x0400
+#define EX_FRAME_OFFSET(slice) ((slice) << 16 | 0x400)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EX_FRAME_ADDR(nasid, slice)   PHYS_TO_K0(NODE_OFFSET(nasid) | EX_FRAME_OFFSET(slice))
+#define EX_FRAME_SIZE 0x0c00
+#define ARCS_SPB_OFFSET 0x1000
+#define ARCS_SPB_ADDR(nasid)   PHYS_TO_K0(NODE_OFFSET(nasid) | ARCS_SPB_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ARCS_SPB_SIZE 0x0400
+#define KLDIR_OFFSET 0x2000
+#define KLDIR_ADDR(nasid)   TO_NODE_UNCAC((nasid), KLDIR_OFFSET)
+#define KLDIR_SIZE 0x0400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLI_LAUNCH 0  
+#define KLI_KLCONFIG 1
+#define KLI_NMI 2
+#define KLI_GDA 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLI_FREEMEM 4
+#define KLI_SYMMON_STK 5
+#define KLI_PI_ERROR 6
+#define KLI_KERN_VARS 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLI_KERN_XP 8
+#define KLI_KERN_PARTID 9
+#ifndef __ASSEMBLY__
+#define KLD_BASE(nasid) ((kldir_ent_t *) KLDIR_ADDR(nasid))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLD_LAUNCH(nasid) (KLD_BASE(nasid) + KLI_LAUNCH)
+#define KLD_NMI(nasid) (KLD_BASE(nasid) + KLI_NMI)
+#define KLD_KLCONFIG(nasid) (KLD_BASE(nasid) + KLI_KLCONFIG)
+#define KLD_PI_ERROR(nasid) (KLD_BASE(nasid) + KLI_PI_ERROR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLD_GDA(nasid) (KLD_BASE(nasid) + KLI_GDA)
+#define KLD_SYMMON_STK(nasid) (KLD_BASE(nasid) + KLI_SYMMON_STK)
+#define KLD_FREEMEM(nasid) (KLD_BASE(nasid) + KLI_FREEMEM)
+#define KLD_KERN_VARS(nasid) (KLD_BASE(nasid) + KLI_KERN_VARS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLD_KERN_XP(nasid) (KLD_BASE(nasid) + KLI_KERN_XP)
+#define KLD_KERN_PARTID(nasid) (KLD_BASE(nasid) + KLI_KERN_PARTID)
+#define LAUNCH_OFFSET(nasid, slice)   (KLD_LAUNCH(nasid)->offset +   KLD_LAUNCH(nasid)->stride * (slice))
+#define LAUNCH_ADDR(nasid, slice)   TO_NODE_UNCAC((nasid), LAUNCH_OFFSET(nasid, slice))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define LAUNCH_SIZE(nasid) KLD_LAUNCH(nasid)->size
+#define NMI_OFFSET(nasid, slice)   (KLD_NMI(nasid)->offset +   KLD_NMI(nasid)->stride * (slice))
+#define NMI_ADDR(nasid, slice)   TO_NODE_UNCAC((nasid), NMI_OFFSET(nasid, slice))
+#define NMI_SIZE(nasid) KLD_NMI(nasid)->size
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLCONFIG_OFFSET(nasid) KLD_KLCONFIG(nasid)->offset
+#define KLCONFIG_ADDR(nasid)   TO_NODE_UNCAC((nasid), KLCONFIG_OFFSET(nasid))
+#define KLCONFIG_SIZE(nasid) KLD_KLCONFIG(nasid)->size
+#define GDA_ADDR(nasid) KLD_GDA(nasid)->pointer
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GDA_SIZE(nasid) KLD_GDA(nasid)->size
+#define SYMMON_STK_OFFSET(nasid, slice)   (KLD_SYMMON_STK(nasid)->offset +   KLD_SYMMON_STK(nasid)->stride * (slice))
+#define SYMMON_STK_STRIDE(nasid) KLD_SYMMON_STK(nasid)->stride
+#define SYMMON_STK_ADDR(nasid, slice)   TO_NODE_CAC((nasid), SYMMON_STK_OFFSET(nasid, slice))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYMMON_STK_SIZE(nasid) KLD_SYMMON_STK(nasid)->stride
+#define SYMMON_STK_END(nasid) (SYMMON_STK_ADDR(nasid, 0) + KLD_SYMMON_STK(nasid)->size)
+#define UNIX_DEBUG_LOADADDR 0x300000
+#define SYMMON_LOADADDR(nasid)   TO_NODE(nasid, PHYS_TO_K0(UNIX_DEBUG_LOADADDR - 0x1000))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FREEMEM_OFFSET(nasid) KLD_FREEMEM(nasid)->offset
+#define FREEMEM_ADDR(nasid) SYMMON_STK_END(nasid)
+#define FREEMEM_SIZE(nasid) KLD_FREEMEM(nasid)->size
+#define PI_ERROR_OFFSET(nasid) KLD_PI_ERROR(nasid)->offset
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERROR_ADDR(nasid)   TO_NODE_UNCAC((nasid), PI_ERROR_OFFSET(nasid))
+#define PI_ERROR_SIZE(nasid) KLD_PI_ERROR(nasid)->size
+#define NODE_OFFSET_TO_K0(_nasid, _off)   PHYS_TO_K0((NODE_OFFSET(_nasid) + (_off)) | CAC_BASE)
+#define NODE_OFFSET_TO_K1(_nasid, _off)   TO_UNCAC((NODE_OFFSET(_nasid) + (_off)) | UNCAC_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define K0_TO_NODE_OFFSET(_k0addr)   ((__psunsigned_t)(_k0addr) & NODE_ADDRSPACE_MASK)
+#define KERN_VARS_ADDR(nasid) KLD_KERN_VARS(nasid)->pointer
+#define KERN_VARS_SIZE(nasid) KLD_KERN_VARS(nasid)->size
+#define KERN_XP_ADDR(nasid) KLD_KERN_XP(nasid)->pointer
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KERN_XP_SIZE(nasid) KLD_KERN_XP(nasid)->size
+#define GPDA_ADDR(nasid) TO_NODE_CAC(nasid, GPDA_OFFSET)
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/arch.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/arch.h
new file mode 100644
index 0000000..f6ceb20
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/arch.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_ARCH_H
+#define _ASM_SN_ARCH_H
+#include <linux/types.h>
+#include <asm/sn/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef u64 hubreg_t;
+#define cputonasid(cpu) (sn_cpu_info[(cpu)].p_nasid)
+#define cputoslice(cpu) (sn_cpu_info[(cpu)].p_slice)
+#define makespnum(_nasid, _slice)   (((_nasid) << CPUS_PER_NODE_SHFT) | (_slice))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INVALID_NASID (nasid_t)-1
+#define INVALID_CNODEID (cnodeid_t)-1
+#define INVALID_PNODEID (pnodeid_t)-1
+#define INVALID_MODULE (moduleid_t)-1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INVALID_PARTID (partid_t)-1
+#define NASID_TO_REGION(nnode)   ((nnode) >>   (is_fine_dirmode() ? NASID_TO_FINEREG_SHFT : NASID_TO_COARSEREG_SHFT))
+#define NASID_TO_COMPACT_NODEID(nnode) (nasid_to_compact_node[nnode])
+#define COMPACT_TO_NASID_NODEID(cnode) (compact_to_nasid_node[cnode])
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CPUID_TO_COMPACT_NODEID(cpu) (cpuid_to_compact_node[(cpu)])
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/hub.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/hub.h
new file mode 100644
index 0000000..cbb1dbd
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/hub.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SN_HUB_H
+#define __ASM_SN_HUB_H
+#include <linux/types.h>
+#include <linux/cpumask.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/sn/types.h>
+#include <asm/sn/io.h>
+#include <asm/sn/klkernvars.h>
+#include <asm/xtalk/xtalk.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/io.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/io.h
new file mode 100644
index 0000000..2b8a101
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/io.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_IO_H
+#define _ASM_SN_IO_H
+#define IIO_ITTE_BASE 0x400160  
+#define IIO_ITTE(bigwin) (IIO_ITTE_BASE + 8*(bigwin))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ITTE_OFFSET_BITS 5  
+#define IIO_ITTE_OFFSET_MASK ((1<<IIO_ITTE_OFFSET_BITS)-1)
+#define IIO_ITTE_OFFSET_SHIFT 0
+#define IIO_ITTE_WIDGET_BITS 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ITTE_WIDGET_MASK ((1<<IIO_ITTE_WIDGET_BITS)-1)
+#define IIO_ITTE_WIDGET_SHIFT 8
+#define IIO_ITTE_IOSP 1  
+#define IIO_ITTE_IOSP_MASK 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ITTE_IOSP_SHIFT 12
+#define HUB_PIO_MAP_TO_MEM 0
+#define HUB_PIO_MAP_TO_IO 1
+#define IIO_ITTE_INVALID_WIDGET 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ITTE_PUT(nasid, bigwin, io_or_mem, widget, addr)   REMOTE_HUB_S((nasid), IIO_ITTE(bigwin),   (((((addr) >> BWIN_SIZE_BITS) &   IIO_ITTE_OFFSET_MASK) << IIO_ITTE_OFFSET_SHIFT) |   (io_or_mem << IIO_ITTE_IOSP_SHIFT) |   (((widget) & IIO_ITTE_WIDGET_MASK) << IIO_ITTE_WIDGET_SHIFT)))
+#define IIO_ITTE_DISABLE(nasid, bigwin)   IIO_ITTE_PUT((nasid), HUB_PIO_MAP_TO_MEM,   (bigwin), IIO_ITTE_INVALID_WIDGET, 0)
+#define IIO_ITTE_GET(nasid, bigwin) REMOTE_HUB_ADDR((nasid), IIO_ITTE(bigwin))
+#define IIO_IOPRB(_x) (IIO_IOPRB_0 + ( ( (_x) < HUB_WIDGET_ID_MIN ?   (_x) :   (_x) - (HUB_WIDGET_ID_MIN-1)) << 3) )
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/ioc3.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/ioc3.h
new file mode 100644
index 0000000..9771304
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/ioc3.h
@@ -0,0 +1,645 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _IOC3_H
+#define _IOC3_H
+#include <linux/types.h>
+typedef volatile struct ioc3_uartregs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ union {
+ volatile u8 rbr;
+ volatile u8 thr;
+ volatile u8 dll;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } u1;
+ union {
+ volatile u8 ier;
+ volatile u8 dlm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } u2;
+ union {
+ volatile u8 iir;
+ volatile u8 fcr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } u3;
+ volatile u8 iu_lcr;
+ volatile u8 iu_mcr;
+ volatile u8 iu_lsr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 iu_msr;
+ volatile u8 iu_scr;
+} ioc3_uregs_t;
+#define iu_rbr u1.rbr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iu_thr u1.thr
+#define iu_dll u1.dll
+#define iu_ier u2.ier
+#define iu_dlm u2.dlm
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iu_iir u3.iir
+#define iu_fcr u3.fcr
+struct ioc3_sioregs {
+ volatile u8 fill[0x141];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 uartc;
+ volatile u8 kbdcg;
+ volatile u8 fill0[0x150 - 0x142 - 1];
+ volatile u8 pp_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 pp_dsr;
+ volatile u8 pp_dcr;
+ volatile u8 fill1[0x158 - 0x152 - 1];
+ volatile u8 pp_fifa;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 pp_cfgb;
+ volatile u8 pp_ecr;
+ volatile u8 fill2[0x168 - 0x15a - 1];
+ volatile u8 rtcad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u8 rtcdat;
+ volatile u8 fill3[0x170 - 0x169 - 1];
+ struct ioc3_uartregs uartb;
+ struct ioc3_uartregs uarta;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct ioc3 {
+ volatile u32 pad0[7];
+ volatile u32 sio_ir;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 sio_ies;
+ volatile u32 sio_iec;
+ volatile u32 sio_cr;
+ volatile u32 int_out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 mcr;
+ volatile u32 gpcr_s;
+ volatile u32 gpcr_c;
+ volatile u32 gpdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 gppr_0;
+ volatile u32 gppr_1;
+ volatile u32 gppr_2;
+ volatile u32 gppr_3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 gppr_4;
+ volatile u32 gppr_5;
+ volatile u32 gppr_6;
+ volatile u32 gppr_7;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 gppr_8;
+ volatile u32 gppr_9;
+ volatile u32 gppr_10;
+ volatile u32 gppr_11;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 gppr_12;
+ volatile u32 gppr_13;
+ volatile u32 gppr_14;
+ volatile u32 gppr_15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 ppbr_h_a;
+ volatile u32 ppbr_l_a;
+ volatile u32 ppcr_a;
+ volatile u32 ppcr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 ppbr_h_b;
+ volatile u32 ppbr_l_b;
+ volatile u32 ppcr_b;
+ volatile u32 km_csr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 k_rd;
+ volatile u32 m_rd;
+ volatile u32 k_wd;
+ volatile u32 m_wd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 sbbr_h;
+ volatile u32 sbbr_l;
+ volatile u32 sscr_a;
+ volatile u32 stpir_a;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 stcir_a;
+ volatile u32 srpir_a;
+ volatile u32 srcir_a;
+ volatile u32 srtr_a;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 shadow_a;
+ volatile u32 sscr_b;
+ volatile u32 stpir_b;
+ volatile u32 stcir_b;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 srpir_b;
+ volatile u32 srcir_b;
+ volatile u32 srtr_b;
+ volatile u32 shadow_b;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 emcr;
+ volatile u32 eisr;
+ volatile u32 eier;
+ volatile u32 ercsr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 erbr_h;
+ volatile u32 erbr_l;
+ volatile u32 erbar;
+ volatile u32 ercir;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 erpir;
+ volatile u32 ertr;
+ volatile u32 etcsr;
+ volatile u32 ersr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 etcdc;
+ volatile u32 ebir;
+ volatile u32 etbr_h;
+ volatile u32 etbr_l;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 etcir;
+ volatile u32 etpir;
+ volatile u32 emar_h;
+ volatile u32 emar_l;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 ehar_h;
+ volatile u32 ehar_l;
+ volatile u32 micr;
+ volatile u32 midr_r;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 midr_w;
+ volatile u32 pad1[(0x20000 - 0x00154) / 4];
+ struct ioc3_sioregs sregs;
+ volatile u32 pad2[(0x40000 - 0x20180) / 4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ volatile u32 ssram[(0x80000 - 0x40000) / 4];
+};
+struct ioc3_erxbuf {
+ u32 w0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 err;
+};
+#define ERXBUF_IPCKSUM_MASK 0x0000ffff
+#define ERXBUF_BYTECNT_MASK 0x07ff0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_BYTECNT_SHIFT 16
+#define ERXBUF_V 0x80000000
+#define ERXBUF_CRCERR 0x00000001  
+#define ERXBUF_FRAMERR 0x00000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_CODERR 0x00000004  
+#define ERXBUF_INVPREAMB 0x00000008  
+#define ERXBUF_LOLEN 0x00007000  
+#define ERXBUF_HILEN 0x03ff0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_MULTICAST 0x04000000  
+#define ERXBUF_BROADCAST 0x08000000  
+#define ERXBUF_LONGEVENT 0x10000000  
+#define ERXBUF_BADPKT 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_GOODPKT 0x40000000  
+#define ERXBUF_CARRIER 0x80000000  
+#define ETXD_DATALEN 104
+struct ioc3_etxd {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 cmd;
+ u32 bufcnt;
+ u64 p1;
+ u64 p2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u8 data[ETXD_DATALEN];
+};
+#define ETXD_BYTECNT_MASK 0x000007ff  
+#define ETXD_INTWHENDONE 0x00001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_D0V 0x00010000  
+#define ETXD_B1V 0x00020000  
+#define ETXD_B2V 0x00040000  
+#define ETXD_DOCHECKSUM 0x00080000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_CHKOFF_MASK 0x07f00000  
+#define ETXD_CHKOFF_SHIFT 20
+#define ETXD_D0CNT_MASK 0x0000007f
+#define ETXD_B1CNT_MASK 0x0007ff00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_B1CNT_SHIFT 8
+#define ETXD_B2CNT_MASK 0x7ff00000
+#define ETXD_B2CNT_SHIFT 20
+#define IOC3_BYTEBUS_DEV0 0x80000L
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_BYTEBUS_DEV1 0xa0000L
+#define IOC3_BYTEBUS_DEV2 0xc0000L
+#define IOC3_BYTEBUS_DEV3 0xe0000L
+#define IOC3_SIO_BASE 0x20000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_SIO_UARTC (IOC3_SIO_BASE+0x141)  
+#define IOC3_SIO_KBDCG (IOC3_SIO_BASE+0x142)  
+#define IOC3_SIO_PP_BASE (IOC3_SIO_BASE+PP_BASE)  
+#define IOC3_SIO_RTC_BASE (IOC3_SIO_BASE+0x168)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_SIO_UB_BASE (IOC3_SIO_BASE+UARTB_BASE)  
+#define IOC3_SIO_UA_BASE (IOC3_SIO_BASE+UARTA_BASE)  
+#define IOC3_SSRAM IOC3_RAM_OFF  
+#define IOC3_SSRAM_LEN 0x40000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_SSRAM_DM 0x0000ffff  
+#define IOC3_SSRAM_PM 0x00010000  
+#define PCI_SCR_PAR_RESP_EN 0x00000040  
+#define PCI_SCR_SERR_EN 0x00000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SCR_DROP_MODE_EN 0x00008000  
+#define PCI_SCR_RX_SERR (0x1 << 16)
+#define PCI_SCR_DROP_MODE (0x1 << 17)
+#define PCI_SCR_SIG_PAR_ERR (0x1 << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SCR_SIG_TAR_ABRT (0x1 << 27)
+#define PCI_SCR_RX_TAR_ABRT (0x1 << 28)
+#define PCI_SCR_SIG_MST_ABRT (0x1 << 29)
+#define PCI_SCR_SIG_SERR (0x1 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PCI_SCR_PAR_ERR (0x1 << 31)
+#define KM_CSR_K_WRT_PEND 0x00000001  
+#define KM_CSR_M_WRT_PEND 0x00000002  
+#define KM_CSR_K_LCB 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_CSR_M_LCB 0x00000008  
+#define KM_CSR_K_DATA 0x00000010  
+#define KM_CSR_K_CLK 0x00000020  
+#define KM_CSR_K_PULL_DATA 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_CSR_K_PULL_CLK 0x00000080  
+#define KM_CSR_M_DATA 0x00000100  
+#define KM_CSR_M_CLK 0x00000200  
+#define KM_CSR_M_PULL_DATA 0x00000400  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_CSR_M_PULL_CLK 0x00000800  
+#define KM_CSR_EMM_MODE 0x00001000  
+#define KM_CSR_SIM_MODE 0x00002000  
+#define KM_CSR_K_SM_IDLE 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_CSR_M_SM_IDLE 0x00008000  
+#define KM_CSR_K_TO 0x00010000  
+#define KM_CSR_M_TO 0x00020000  
+#define KM_CSR_K_TO_EN 0x00040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_CSR_M_TO_EN 0x00080000  
+#define KM_CSR_K_CLAMP_ONE 0x00100000  
+#define KM_CSR_M_CLAMP_ONE 0x00200000  
+#define KM_CSR_K_CLAMP_THREE 0x00400000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_CSR_M_CLAMP_THREE 0x00800000  
+#define KM_RD_DATA_2 0x000000ff  
+#define KM_RD_DATA_2_SHIFT 0
+#define KM_RD_DATA_1 0x0000ff00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_RD_DATA_1_SHIFT 8
+#define KM_RD_DATA_0 0x00ff0000  
+#define KM_RD_DATA_0_SHIFT 16
+#define KM_RD_FRAME_ERR_2 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_RD_FRAME_ERR_1 0x02000000  
+#define KM_RD_FRAME_ERR_0 0x04000000  
+#define KM_RD_KBD_MSE 0x08000000  
+#define KM_RD_OFLO 0x10000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_RD_VALID_2 0x20000000  
+#define KM_RD_VALID_1 0x40000000  
+#define KM_RD_VALID_0 0x80000000  
+#define KM_RD_VALID_ALL (KM_RD_VALID_0|KM_RD_VALID_1|KM_RD_VALID_2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KM_WD_WRT_DATA 0x000000ff  
+#define KM_WD_WRT_DATA_SHIFT 0
+#define RXSB_OVERRUN 0x01  
+#define RXSB_PAR_ERR 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RXSB_FRAME_ERR 0x04  
+#define RXSB_BREAK 0x08  
+#define RXSB_CTS 0x10  
+#define RXSB_DCD 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RXSB_MODEM_VALID 0x40  
+#define RXSB_DATA_VALID 0x80  
+#define TXCB_INT_WHEN_DONE 0x20  
+#define TXCB_INVALID 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TXCB_VALID 0x40  
+#define TXCB_MCR 0x80  
+#define TXCB_DELAY 0xc0  
+#define SBBR_L_SIZE 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SBBR_L_BASE 0xfffff000  
+#define SSCR_RX_THRESHOLD 0x000001ff  
+#define SSCR_TX_TIMER_BUSY 0x00010000  
+#define SSCR_HFC_EN 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSCR_RX_RING_DCD 0x00040000  
+#define SSCR_RX_RING_CTS 0x00080000  
+#define SSCR_HIGH_SPD 0x00100000  
+#define SSCR_DIAG 0x00200000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSCR_RX_DRAIN 0x08000000  
+#define SSCR_DMA_EN 0x10000000  
+#define SSCR_DMA_PAUSE 0x20000000  
+#define SSCR_PAUSE_STATE 0x40000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SSCR_RESET 0x80000000  
+#define PROD_CONS_PTR_4K 0x00000ff8  
+#define PROD_CONS_PTR_1K 0x000003f8  
+#define PROD_CONS_PTR_OFF 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SRCIR_ARM 0x80000000  
+#define SRPIR_BYTE_CNT 0x07000000  
+#define SRPIR_BYTE_CNT_SHIFT 24
+#define STCIR_BYTE_CNT 0x0f000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STCIR_BYTE_CNT_SHIFT 24
+#define SHADOW_DR 0x00000001  
+#define SHADOW_OE 0x00000002  
+#define SHADOW_PE 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHADOW_FE 0x00000008  
+#define SHADOW_BI 0x00000010  
+#define SHADOW_THRE 0x00000020  
+#define SHADOW_TEMT 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHADOW_RFCE 0x00000080  
+#define SHADOW_DCTS 0x00010000  
+#define SHADOW_DDCD 0x00080000  
+#define SHADOW_CTS 0x00100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHADOW_DCD 0x00800000  
+#define SHADOW_DTR 0x01000000  
+#define SHADOW_RTS 0x02000000  
+#define SHADOW_OUT1 0x04000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SHADOW_OUT2 0x08000000  
+#define SHADOW_LOOP 0x10000000  
+#define SRTR_CNT 0x00000fff  
+#define SRTR_CNT_VAL 0x0fff0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SRTR_CNT_VAL_SHIFT 16
+#define SRTR_HZ 16000  
+#define SIO_IR_SA_TX_MT 0x00000001  
+#define SIO_IR_SA_RX_FULL 0x00000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_SA_RX_HIGH 0x00000004  
+#define SIO_IR_SA_RX_TIMER 0x00000008  
+#define SIO_IR_SA_DELTA_DCD 0x00000010  
+#define SIO_IR_SA_DELTA_CTS 0x00000020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_SA_INT 0x00000040  
+#define SIO_IR_SA_TX_EXPLICIT 0x00000080  
+#define SIO_IR_SA_MEMERR 0x00000100  
+#define SIO_IR_SB_TX_MT 0x00000200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_SB_RX_FULL 0x00000400  
+#define SIO_IR_SB_RX_HIGH 0x00000800  
+#define SIO_IR_SB_RX_TIMER 0x00001000  
+#define SIO_IR_SB_DELTA_DCD 0x00002000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_SB_DELTA_CTS 0x00004000  
+#define SIO_IR_SB_INT 0x00008000  
+#define SIO_IR_SB_TX_EXPLICIT 0x00010000  
+#define SIO_IR_SB_MEMERR 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_PP_INT 0x00040000  
+#define SIO_IR_PP_INTA 0x00080000  
+#define SIO_IR_PP_INTB 0x00100000  
+#define SIO_IR_PP_MEMERR 0x00200000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_KBD_INT 0x00400000  
+#define SIO_IR_RT_INT 0x08000000  
+#define SIO_IR_GEN_INT1 0x10000000  
+#define SIO_IR_GEN_INT_SHIFT 28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_IR_SA (SIO_IR_SA_TX_MT | SIO_IR_SA_RX_FULL |   SIO_IR_SA_RX_HIGH | SIO_IR_SA_RX_TIMER |   SIO_IR_SA_DELTA_DCD | SIO_IR_SA_DELTA_CTS |   SIO_IR_SA_INT | SIO_IR_SA_TX_EXPLICIT |   SIO_IR_SA_MEMERR)
+#define SIO_IR_SB (SIO_IR_SB_TX_MT | SIO_IR_SB_RX_FULL |   SIO_IR_SB_RX_HIGH | SIO_IR_SB_RX_TIMER |   SIO_IR_SB_DELTA_DCD | SIO_IR_SB_DELTA_CTS |   SIO_IR_SB_INT | SIO_IR_SB_TX_EXPLICIT |   SIO_IR_SB_MEMERR)
+#define SIO_IR_PP (SIO_IR_PP_INT | SIO_IR_PP_INTA |   SIO_IR_PP_INTB | SIO_IR_PP_MEMERR)
+#define SIO_IR_RT (SIO_IR_RT_INT | SIO_IR_GEN_INT1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_PENDING_INTRS(mem) (PCI_INW(&((mem)->sio_ir)) &   PCI_INW(&((mem)->sio_ies_ro)))
+#define SIO_CR_SIO_RESET 0x00000001  
+#define SIO_CR_SER_A_BASE 0x000000fe  
+#define SIO_CR_SER_A_BASE_SHIFT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_CR_SER_B_BASE 0x00007f00  
+#define SIO_CR_SER_B_BASE_SHIFT 8
+#define SIO_SR_CMD_PULSE 0x00078000  
+#define SIO_CR_CMD_PULSE_SHIFT 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_CR_ARB_DIAG 0x00380000  
+#define SIO_CR_ARB_DIAG_TXA 0x00000000
+#define SIO_CR_ARB_DIAG_RXA 0x00080000
+#define SIO_CR_ARB_DIAG_TXB 0x00100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIO_CR_ARB_DIAG_RXB 0x00180000
+#define SIO_CR_ARB_DIAG_PP 0x00200000
+#define SIO_CR_ARB_DIAG_IDLE 0x00400000  
+#define INT_OUT_COUNT 0x0000ffff  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_OUT_MODE 0x00070000  
+#define INT_OUT_MODE_0 0x00000000  
+#define INT_OUT_MODE_1 0x00040000  
+#define INT_OUT_MODE_1PULSE 0x00050000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_OUT_MODE_PULSES 0x00060000  
+#define INT_OUT_MODE_SQW 0x00070000  
+#define INT_OUT_DIAG 0x40000000  
+#define INT_OUT_INT_OUT 0x80000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_OUT_NS_PER_TICK (30 * 260)  
+#define INT_OUT_TICKS_PER_PULSE 3  
+#define INT_OUT_US_TO_COUNT(x)     (((x) * 10 + INT_OUT_NS_PER_TICK / 200) *   100 / INT_OUT_NS_PER_TICK - 1)
+#define INT_OUT_COUNT_TO_US(x)     (((x) + 1) * INT_OUT_NS_PER_TICK / 1000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT_OUT_MIN_TICKS 3  
+#define INT_OUT_MAX_TICKS INT_OUT_COUNT  
+#define GPCR_DIR 0x000000ff  
+#define GPCR_DIR_PIN(x) (1<<(x))  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GPCR_EDGE 0x000f0000  
+#define GPCR_EDGE_PIN(x) (1<<((x)+15))  
+#define GPCR_INT_OUT_EN 0x00100000  
+#define GPCR_MLAN_EN 0x00200000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GPCR_DIR_SERA_XCVR 0x00000080  
+#define GPCR_DIR_SERB_XCVR 0x00000040  
+#define GPCR_DIR_PHY_RST 0x00000020  
+#define GPCR_PHY_RESET 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GPCR_UARTB_MODESEL 0x40  
+#define GPCR_UARTA_MODESEL 0x80  
+#define GPPR_PHY_RESET_PIN 5  
+#define GPPR_UARTB_MODESEL_PIN 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GPPR_UARTA_MODESEL_PIN 7  
+#define EMCR_DUPLEX 0x00000001
+#define EMCR_PROMISC 0x00000002
+#define EMCR_PADEN 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EMCR_RXOFF_MASK 0x000001f8
+#define EMCR_RXOFF_SHIFT 3
+#define EMCR_RAMPAR 0x00000200
+#define EMCR_BADPAR 0x00000800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EMCR_BUFSIZ 0x00001000
+#define EMCR_TXDMAEN 0x00002000
+#define EMCR_TXEN 0x00004000
+#define EMCR_RXDMAEN 0x00008000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EMCR_RXEN 0x00010000
+#define EMCR_LOOPBACK 0x00020000
+#define EMCR_ARB_DIAG 0x001c0000
+#define EMCR_ARB_DIAG_IDLE 0x00200000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EMCR_RST 0x80000000
+#define EISR_RXTIMERINT 0x00000001
+#define EISR_RXTHRESHINT 0x00000002
+#define EISR_RXOFLO 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EISR_RXBUFOFLO 0x00000008
+#define EISR_RXMEMERR 0x00000010
+#define EISR_RXPARERR 0x00000020
+#define EISR_TXEMPTY 0x00010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EISR_TXRTRY 0x00020000
+#define EISR_TXEXDEF 0x00040000
+#define EISR_TXLCOL 0x00080000
+#define EISR_TXGIANT 0x00100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EISR_TXBUFUFLO 0x00200000
+#define EISR_TXEXPLICIT 0x00400000
+#define EISR_TXCOLLWRAP 0x00800000
+#define EISR_TXDEFERWRAP 0x01000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EISR_TXMEMERR 0x02000000
+#define EISR_TXPARERR 0x04000000
+#define ERCSR_THRESH_MASK 0x000001ff  
+#define ERCSR_RX_TMR 0x40000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERCSR_DIAG_OFLO 0x80000000  
+#define ERBR_ALIGNMENT 4096
+#define ERBR_L_RXRINGBASE_MASK 0xfffff000
+#define ERBAR_BARRIER_BIT 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERBAR_RXBARR_MASK 0xffff0000
+#define ERBAR_RXBARR_SHIFT 16
+#define ERCIR_RXCONSUME_MASK 0x00000fff
+#define ERPIR_RXPRODUCE_MASK 0x00000fff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERPIR_ARM 0x80000000
+#define ERTR_CNT_MASK 0x000007ff
+#define ETCSR_IPGT_MASK 0x0000007f
+#define ETCSR_IPGR1_MASK 0x00007f00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETCSR_IPGR1_SHIFT 8
+#define ETCSR_IPGR2_MASK 0x007f0000
+#define ETCSR_IPGR2_SHIFT 16
+#define ETCSR_NOTXCLK 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETCDC_COLLCNT_MASK 0x0000ffff
+#define ETCDC_DEFERCNT_MASK 0xffff0000
+#define ETCDC_DEFERCNT_SHIFT 16
+#define ETBR_ALIGNMENT (64*1024)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETBR_L_RINGSZ_MASK 0x00000001
+#define ETBR_L_RINGSZ128 0
+#define ETBR_L_RINGSZ512 1
+#define ETBR_L_TXRINGBASE_MASK 0xffffc000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETCIR_TXCONSUME_MASK 0x0000ffff
+#define ETCIR_IDLE 0x80000000
+#define ETPIR_TXPRODUCE_MASK 0x0000ffff
+#define EBIR_TXBUFPROD_MASK 0x0000001f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EBIR_TXBUFCONS_MASK 0x00001f00
+#define EBIR_TXBUFCONS_SHIFT 8
+#define EBIR_RXBUFPROD_MASK 0x007fc000
+#define EBIR_RXBUFPROD_SHIFT 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EBIR_RXBUFCONS_MASK 0xff800000
+#define EBIR_RXBUFCONS_SHIFT 23
+#define MICR_REGADDR_MASK 0x0000001f
+#define MICR_PHYADDR_MASK 0x000003e0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MICR_PHYADDR_SHIFT 5
+#define MICR_READTRIG 0x00000400
+#define MICR_BUSY 0x00000800
+#define MIDR_DATA_MASK 0x0000ffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_IPCKSUM_MASK 0x0000ffff
+#define ERXBUF_BYTECNT_MASK 0x07ff0000
+#define ERXBUF_BYTECNT_SHIFT 16
+#define ERXBUF_V 0x80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_CRCERR 0x00000001  
+#define ERXBUF_FRAMERR 0x00000002  
+#define ERXBUF_CODERR 0x00000004  
+#define ERXBUF_INVPREAMB 0x00000008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_LOLEN 0x00007000  
+#define ERXBUF_HILEN 0x03ff0000  
+#define ERXBUF_MULTICAST 0x04000000  
+#define ERXBUF_BROADCAST 0x08000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERXBUF_LONGEVENT 0x10000000  
+#define ERXBUF_BADPKT 0x20000000  
+#define ERXBUF_GOODPKT 0x40000000  
+#define ERXBUF_CARRIER 0x80000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_BYTECNT_MASK 0x000007ff  
+#define ETXD_INTWHENDONE 0x00001000  
+#define ETXD_D0V 0x00010000  
+#define ETXD_B1V 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_B2V 0x00040000  
+#define ETXD_DOCHECKSUM 0x00080000  
+#define ETXD_CHKOFF_MASK 0x07f00000  
+#define ETXD_CHKOFF_SHIFT 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_D0CNT_MASK 0x0000007f
+#define ETXD_B1CNT_MASK 0x0007ff00
+#define ETXD_B1CNT_SHIFT 8
+#define ETXD_B2CNT_MASK 0x7ff00000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ETXD_B2CNT_SHIFT 20
+typedef enum ioc3_subdevs_e {
+ ioc3_subdev_ether,
+ ioc3_subdev_generic,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ioc3_subdev_nic,
+ ioc3_subdev_kbms,
+ ioc3_subdev_ttya,
+ ioc3_subdev_ttyb,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ioc3_subdev_ecpp,
+ ioc3_subdev_rt,
+ ioc3_nsubdevs
+} ioc3_subdev_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_SDB_ETHER (1<<ioc3_subdev_ether)
+#define IOC3_SDB_GENERIC (1<<ioc3_subdev_generic)
+#define IOC3_SDB_NIC (1<<ioc3_subdev_nic)
+#define IOC3_SDB_KBMS (1<<ioc3_subdev_kbms)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_SDB_TTYA (1<<ioc3_subdev_ttya)
+#define IOC3_SDB_TTYB (1<<ioc3_subdev_ttyb)
+#define IOC3_SDB_ECPP (1<<ioc3_subdev_ecpp)
+#define IOC3_SDB_RT (1<<ioc3_subdev_rt)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_ALL_SUBDEVS ((1<<ioc3_nsubdevs)-1)
+#define IOC3_SDB_SERIAL (IOC3_SDB_TTYA|IOC3_SDB_TTYB)
+#define IOC3_STD_SUBDEVS IOC3_ALL_SUBDEVS
+#define IOC3_INTA_SUBDEVS IOC3_SDB_ETHER
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IOC3_INTB_SUBDEVS (IOC3_SDB_GENERIC|IOC3_SDB_KBMS|IOC3_SDB_SERIAL|IOC3_SDB_ECPP|IOC3_SDB_RT)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/kldir.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/kldir.h
new file mode 100644
index 0000000..6c663ca
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/kldir.h
@@ -0,0 +1,93 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_KLDIR_H
+#define _ASM_SN_KLDIR_H
+#define KLDIR_MAGIC 0x434d5f53505f5357
+#ifdef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLDIR_OFF_MAGIC 0x00
+#define KLDIR_OFF_OFFSET 0x08
+#define KLDIR_OFF_POINTER 0x10
+#define KLDIR_OFF_SIZE 0x18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KLDIR_OFF_COUNT 0x20
+#define KLDIR_OFF_STRIDE 0x28
+#endif
+#define SYMMON_STACK_SIZE 0x8000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifdef PROM
+#define IP27_LAUNCH_OFFSET 0x2400
+#define IP27_LAUNCH_SIZE 0x400
+#define IP27_LAUNCH_COUNT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_LAUNCH_STRIDE 0x200
+#define IP27_KLCONFIG_OFFSET 0x4000
+#define IP27_KLCONFIG_SIZE 0xc000
+#define IP27_KLCONFIG_COUNT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_KLCONFIG_STRIDE 0
+#define IP27_NMI_OFFSET 0x3000
+#define IP27_NMI_SIZE 0x40
+#define IP27_NMI_COUNT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_NMI_STRIDE 0x40
+#define IP27_PI_ERROR_OFFSET 0x12000
+#define IP27_PI_ERROR_SIZE 0x4000
+#define IP27_PI_ERROR_COUNT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_PI_ERROR_STRIDE 0
+#define IP27_SYMMON_STK_OFFSET 0x25000
+#define IP27_SYMMON_STK_SIZE 0xe000
+#define IP27_SYMMON_STK_COUNT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_SYMMON_STK_STRIDE 0x7000
+#define IP27_FREEMEM_OFFSET 0x19000
+#define IP27_FREEMEM_SIZE -1
+#define IP27_FREEMEM_COUNT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_FREEMEM_STRIDE 0
+#endif
+#define IO6_GDA_OFFSET 0x11000
+#define IO6_GDA_SIZE 0x400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO6_GDA_COUNT 1
+#define IO6_GDA_STRIDE 0
+#define IP27_NMI_KREGS_OFFSET 0x11400
+#define IP27_NMI_KREGS_CPU_SIZE 0x200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27_NMI_EFRAME_OFFSET 0x11800
+#define IP27_NMI_EFRAME_SIZE 0x200
+#define KLDIR_ENT_SIZE 0x40
+#define KLDIR_MAX_ENTRIES (0x400 / 0x40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+typedef struct kldir_ent_s {
+ u64 magic;
+ off_t offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long pointer;
+ size_t size;
+ u64 count;
+ size_t stride;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char rsvd[16];
+} kldir_ent_t;
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/klkernvars.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/klkernvars.h
new file mode 100644
index 0000000..a0c7512
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/klkernvars.h
@@ -0,0 +1,39 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_SN_KLKERNVARS_H
+#define __ASM_SN_KLKERNVARS_H
+#define KV_MAGIC_OFFSET 0x0
+#define KV_RO_NASID_OFFSET 0x4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KV_RW_NASID_OFFSET 0x6
+#define KV_MAGIC 0x5f4b565f
+#ifndef __ASSEMBLY__
+#include <asm/sn/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct kern_vars_s {
+ int kv_magic;
+ nasid_t kv_ro_nasid;
+ nasid_t kv_rw_nasid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long kv_ro_baseaddr;
+ unsigned long kv_rw_baseaddr;
+} kern_vars_t;
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/addrs.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/addrs.h
new file mode 100644
index 0000000..5c056ed
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/addrs.h
@@ -0,0 +1,174 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_SN0_ADDRS_H
+#define _ASM_SN_SN0_ADDRS_H
+#define NODE_SIZE_BITS 32
+#define BWIN_SIZE_BITS 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NASID_BITMASK (0xffLL)
+#define NASID_BITS 8
+#define NASID_SHFT 32
+#define NASID_META_BITS 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NASID_LOCAL_BITS 4
+#define BDDIR_UPPER_MASK (UINT64_CAST 0xfffff << 10)
+#define BDECC_UPPER_MASK (UINT64_CAST 0x7ffffff << 3)
+#define NODE_ADDRSPACE_SIZE (UINT64_CAST 1 << NODE_SIZE_BITS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NASID_MASK (UINT64_CAST NASID_BITMASK << NASID_SHFT)
+#define NASID_GET(_pa) (int) ((UINT64_CAST (_pa) >>   NASID_SHFT) & NASID_BITMASK)
+#ifndef __ASSEMBLY__
+#define NODE_SWIN_BASE(nasid, widget)   ((widget == 0) ? NODE_BWIN_BASE((nasid), SWIN0_BIGWIN)   : RAW_NODE_SWIN_BASE(nasid, widget))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define NODE_SWIN_BASE(nasid, widget)   (NODE_IO_BASE(nasid) + (UINT64_CAST(widget) << SWIN_SIZE_BITS))
+#endif
+#define BWIN_INDEX_BITS 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BWIN_SIZE (UINT64_CAST 1 << BWIN_SIZE_BITS)
+#define BWIN_SIZEMASK (BWIN_SIZE - 1)
+#define BWIN_WIDGET_MASK 0x7
+#define NODE_BWIN_BASE0(nasid) (NODE_IO_BASE(nasid) + BWIN_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NODE_BWIN_BASE(nasid, bigwin) (NODE_BWIN_BASE0(nasid) +   (UINT64_CAST(bigwin) << BWIN_SIZE_BITS))
+#define BWIN_WIDGETADDR(addr) ((addr) & BWIN_SIZEMASK)
+#define BWIN_WINDOWNUM(addr) (((addr) >> BWIN_SIZE_BITS) & BWIN_WIDGET_MASK)
+#define NODE_BWIN_ADDR(nasid, addr)   (((addr) >= NODE_BWIN_BASE0(nasid)) &&   ((addr) < (NODE_BWIN_BASE(nasid, HUB_NUM_BIG_WINDOW) +   BWIN_SIZE)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CALIAS_BASE CAC_BASE
+#define BRIDGE_REG_PTR(_base, _off) ((volatile bridgereg_t *)   ((__psunsigned_t)(_base) + (__psunsigned_t)(_off)))
+#define SN0_WIDGET_BASE(_nasid, _wid) (NODE_SWIN_BASE((_nasid), (_wid)))
+#define SABLE_LOG_TRIGGER(_map)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+#define KERN_NMI_ADDR(nasid, slice)   TO_NODE_UNCAC((nasid), IP27_NMI_KREGS_OFFSET +   (IP27_NMI_KREGS_CPU_SIZE * (slice)))
+#endif
+#ifdef PROM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MISC_PROM_BASE PHYS_TO_K0(0x01300000)
+#define MISC_PROM_SIZE 0x200000
+#define DIAG_BASE PHYS_TO_K0(0x01500000)
+#define DIAG_SIZE 0x300000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ROUTE_BASE PHYS_TO_K0(0x01800000)
+#define ROUTE_SIZE 0x200000
+#define IP27PROM_FLASH_HDR PHYS_TO_K0(0x01300000)
+#define IP27PROM_FLASH_DATA PHYS_TO_K0(0x01301000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_CORP_MAX 32
+#define IP27PROM_CORP PHYS_TO_K0(0x01800000)
+#define IP27PROM_CORP_SIZE 0x10000
+#define IP27PROM_CORP_STK PHYS_TO_K0(0x01810000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_CORP_STKSIZE 0x2000
+#define IP27PROM_DECOMP_BUF PHYS_TO_K0(0x01900000)
+#define IP27PROM_DECOMP_SIZE 0xfff00
+#define IP27PROM_BASE PHYS_TO_K0(0x01a00000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_BASE_MAPPED (UNCAC_BASE | 0x1fc00000)
+#define IP27PROM_SIZE_MAX 0x100000
+#define IP27PROM_PCFG PHYS_TO_K0(0x01b00000)
+#define IP27PROM_PCFG_SIZE 0xd0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_ERRDMP PHYS_TO_K1(0x01bd0000)
+#define IP27PROM_ERRDMP_SIZE 0xf000
+#define IP27PROM_INIT_START PHYS_TO_K1(0x01bd0000)
+#define IP27PROM_CONSOLE PHYS_TO_K1(0x01bdf000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_CONSOLE_SIZE 0x200
+#define IP27PROM_NETUART PHYS_TO_K1(0x01bdf200)
+#define IP27PROM_NETUART_SIZE 0x100
+#define IP27PROM_UNUSED1 PHYS_TO_K1(0x01bdf300)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_UNUSED1_SIZE 0x500
+#define IP27PROM_ELSC_BASE_A PHYS_TO_K0(0x01bdf800)
+#define IP27PROM_ELSC_BASE_B PHYS_TO_K0(0x01bdfc00)
+#define IP27PROM_STACK_A PHYS_TO_K0(0x01be0000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_STACK_B PHYS_TO_K0(0x01bf0000)
+#define IP27PROM_STACK_SHFT 16
+#define IP27PROM_STACK_SIZE (1 << IP27PROM_STACK_SHFT)
+#define IP27PROM_INIT_END PHYS_TO_K0(0x01c00000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SLAVESTACK_BASE PHYS_TO_K0(0x01580000)
+#define SLAVESTACK_SIZE 0x40000
+#define ENETBUFS_BASE PHYS_TO_K0(0x01f80000)
+#define ENETBUFS_SIZE 0x20000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO6PROM_BASE PHYS_TO_K0(0x01c00000)
+#define IO6PROM_SIZE 0x400000
+#define IO6PROM_BASE_MAPPED (UNCAC_BASE | 0x11c00000)
+#define IO6DPROM_BASE PHYS_TO_K0(0x01c00000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IO6DPROM_SIZE 0x200000
+#define NODEBUGUNIX_ADDR PHYS_TO_K0(0x00019000)
+#define DEBUGUNIX_ADDR PHYS_TO_K0(0x00100000)
+#define IP27PROM_INT_LAUNCH 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_INT_NETUART 12  
+#endif
+#define IP27PROM_ELSC_SHFT 10
+#define IP27PROM_ELSC_SIZE (1 << IP27PROM_ELSC_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FREEMEM_BASE PHYS_TO_K0(0x2000000)
+#define IO6PROM_STACK_SHFT 14  
+#define IO6PROM_STACK_SIZE (1 << IO6PROM_STACK_SHFT)
+#define IP27PROM_ENTRY PHYS_TO_COMPATK1(0x1fc00000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_RESTART PHYS_TO_COMPATK1(0x1fc00008)
+#define IP27PROM_SLAVELOOP PHYS_TO_COMPATK1(0x1fc00010)
+#define IP27PROM_PODMODE PHYS_TO_COMPATK1(0x1fc00018)
+#define IP27PROM_IOC3UARTPOD PHYS_TO_COMPATK1(0x1fc00020)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_FLASHLEDS PHYS_TO_COMPATK1(0x1fc00028)
+#define IP27PROM_REPOD PHYS_TO_COMPATK1(0x1fc00030)
+#define IP27PROM_LAUNCHSLAVE PHYS_TO_COMPATK1(0x1fc00038)
+#define IP27PROM_WAITSLAVE PHYS_TO_COMPATK1(0x1fc00040)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IP27PROM_POLLSLAVE PHYS_TO_COMPATK1(0x1fc00048)
+#define KL_UART_BASE LOCAL_HUB_ADDR(MD_UREG0_0)  
+#define KL_UART_CMD LOCAL_HUB_ADDR(MD_UREG0_0)  
+#define KL_UART_DATA LOCAL_HUB_ADDR(MD_UREG0_1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KL_I2C_REG MD_UREG0_0  
+#ifndef __ASSEMBLY__
+#ifdef HUB_ERR_STS_WAR
+#define CACHE_ERR_EFRAME 0x480
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#else
+#define CACHE_ERR_EFRAME 0x400
+#endif
+#define CACHE_ERR_ECCFRAME (CACHE_ERR_EFRAME + EF_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CACHE_ERR_SP_PTR (0x1000 - 32)  
+#define CACHE_ERR_IBASE_PTR (0x1000 - 40)
+#define CACHE_ERR_SP (CACHE_ERR_SP_PTR - 16)
+#define CACHE_ERR_AREA_SIZE (ARCS_SPB_OFFSET - CACHE_ERR_EFRAME)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define _ARCSPROM
+#ifdef HUB_ERR_STS_WAR
+#define ERR_STS_WAR_REGISTER IIO_IIBUSERR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERR_STS_WAR_ADDR LOCAL_HUB_ADDR(IIO_IIBUSERR)
+#define ERR_STS_WAR_PHYSADDR TO_PHYS((__psunsigned_t)ERR_STS_WAR_ADDR)
+#define OLD_ERR_STS_WAR_OFFSET ((MD_MEM_BANKS * MD_BANK_SIZE) - 0x100)
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubio.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubio.h
new file mode 100644
index 0000000..f593233
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubio.h
@@ -0,0 +1,788 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SGI_SN_SN0_HUBIO_H
+#define _ASM_SGI_SN_SN0_HUBIO_H
+#define IIO_WIDGET IIO_WID  
+#define IIO_WIDGET_STAT IIO_WSTAT  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_WIDGET_CTRL IIO_WCR  
+#define IIO_WIDGET_TOUT IIO_WRTO  
+#define IIO_WIDGET_FLUSH IIO_WTFR  
+#define IIO_PROTECT IIO_ILAPR  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_PROTECT_OVRRD IIO_ILAPO  
+#define IIO_OUTWIDGET_ACCESS IIO_IOWA  
+#define IIO_INWIDGET_ACCESS IIO_IIWA  
+#define IIO_INDEV_ERR_MASK IIO_IIDEM  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_LLP_CSR IIO_ILCSR  
+#define IIO_LLP_LOG IIO_ILLR  
+#define IIO_XTALKCC_TOUT IIO_IXCC  
+#define IIO_XTALKTT_TOUT IIO_IXTT  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IO_ERR_CLR IIO_IECLR  
+#define IIO_BTE_CRB_CNT IIO_IBCN  
+#define IIO_LLP_CSR_IS_UP 0x00002000
+#define IIO_LLP_CSR_LLP_STAT_MASK 0x00003000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_LLP_CSR_LLP_STAT_SHFT 12
+#define IIO_PROTECT_OVRRD_KEY 0x53474972756c6573ull  
+#define IIO_BTE_STAT_0 IIO_IBLS_0  
+#define IIO_BTE_SRC_0 IIO_IBSA_0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_BTE_DEST_0 IIO_IBDA_0  
+#define IIO_BTE_CTRL_0 IIO_IBCT_0  
+#define IIO_BTE_NOTIFY_0 IIO_IBNA_0  
+#define IIO_BTE_INT_0 IIO_IBIA_0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_BTE_OFF_0 0  
+#define IIO_BTE_OFF_1 IIO_IBLS_1 - IIO_IBLS_0  
+#define BTEOFF_STAT 0
+#define BTEOFF_SRC (IIO_BTE_SRC_0 - IIO_BTE_STAT_0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTEOFF_DEST (IIO_BTE_DEST_0 - IIO_BTE_STAT_0)
+#define BTEOFF_CTRL (IIO_BTE_CTRL_0 - IIO_BTE_STAT_0)
+#define BTEOFF_NOTIFY (IIO_BTE_NOTIFY_0 - IIO_BTE_STAT_0)
+#define BTEOFF_INT (IIO_BTE_INT_0 - IIO_BTE_STAT_0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_BASE 0x400000
+#define IIO_BASE_BTE0 0x410000
+#define IIO_BASE_BTE1 0x420000
+#define IIO_BASE_PERF 0x430000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_PERF_CNT 0x430008
+#define IO_PERF_SETS 32
+#define IIO_WID 0x400000  
+#define IIO_WSTAT 0x400008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_WCR 0x400020  
+#define IIO_WSTAT_ECRAZY (1ULL << 32)  
+#define IIO_WSTAT_TXRETRY (1ULL << 9)  
+#define IIO_WSTAT_TXRETRY_MASK (0x7F)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_WSTAT_TXRETRY_SHFT (16)
+#define IIO_WSTAT_TXRETRY_CNT(w) (((w) >> IIO_WSTAT_TXRETRY_SHFT) &   IIO_WSTAT_TXRETRY_MASK)
+#define IIO_ILAPR 0x400100  
+#define IIO_ILAPO 0x400108  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IOWA 0x400110  
+#define IIO_IIWA 0x400118  
+#define IIO_IIDEM 0x400120  
+#define IIO_ILCSR 0x400128  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ILLR 0x400130  
+#define IIO_IIDSR 0x400138  
+#define IIO_IIBUSERR 0x1400208  
+#define IIO_IIDSR_SENT_SHIFT 28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IIDSR_SENT_MASK 0x10000000
+#define IIO_IIDSR_ENB_SHIFT 24
+#define IIO_IIDSR_ENB_MASK 0x01000000
+#define IIO_IIDSR_NODE_SHIFT 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IIDSR_NODE_MASK 0x0000ff00
+#define IIO_IIDSR_LVL_SHIFT 0
+#define IIO_IIDSR_LVL_MASK 0x0000003f
+#define IIO_IGFX_0 0x400140  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IGFX_1 0x400148  
+#define IIO_IGFX_W_NUM_BITS 4  
+#define IIO_IGFX_W_NUM_MASK ((1<<IIO_IGFX_W_NUM_BITS)-1)
+#define IIO_IGFX_W_NUM_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IGFX_N_NUM_BITS 9  
+#define IIO_IGFX_N_NUM_MASK ((1<<IIO_IGFX_N_NUM_BITS)-1)
+#define IIO_IGFX_N_NUM_SHIFT 4
+#define IIO_IGFX_P_NUM_BITS 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IGFX_P_NUM_MASK ((1<<IIO_IGFX_P_NUM_BITS)-1)
+#define IIO_IGFX_P_NUM_SHIFT 16
+#define IIO_IGFX_VLD_BITS 1  
+#define IIO_IGFX_VLD_MASK ((1<<IIO_IGFX_VLD_BITS)-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IGFX_VLD_SHIFT 20
+#define IIO_IGFX_INIT(widget, node, cpu, valid) (  (((widget) & IIO_IGFX_W_NUM_MASK) << IIO_IGFX_W_NUM_SHIFT) |   (((node) & IIO_IGFX_N_NUM_MASK) << IIO_IGFX_N_NUM_SHIFT) |   (((cpu) & IIO_IGFX_P_NUM_MASK) << IIO_IGFX_P_NUM_SHIFT) |   (((valid) & IIO_IGFX_VLD_MASK) << IIO_IGFX_VLD_SHIFT) )
+#define IIO_SCRATCH_REG0 0x400150
+#define IIO_SCRATCH_REG1 0x400158
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_SCRATCH_MASK 0x0000000f00f11fff
+#define IIO_SCRATCH_BIT0_0 0x0000000800000000
+#define IIO_SCRATCH_BIT0_1 0x0000000400000000
+#define IIO_SCRATCH_BIT0_2 0x0000000200000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_SCRATCH_BIT0_3 0x0000000100000000
+#define IIO_SCRATCH_BIT0_4 0x0000000000800000
+#define IIO_SCRATCH_BIT0_5 0x0000000000400000
+#define IIO_SCRATCH_BIT0_6 0x0000000000200000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_SCRATCH_BIT0_7 0x0000000000100000
+#define IIO_SCRATCH_BIT0_8 0x0000000000010000
+#define IIO_SCRATCH_BIT0_9 0x0000000000001000
+#define IIO_SCRATCH_BIT0_R 0x0000000000000fff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_NUM_ITTES 7  
+#define HUB_NUM_BIG_WINDOW IIO_NUM_ITTES - 1
+#define SWIN0_BIGWIN HUB_NUM_BIG_WINDOW
+#define ILCSR_WARM_RESET 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+typedef union hubii_wid_u {
+ u64 wid_reg_value;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 wid_rsvd: 32,
+ wid_rev_num: 4,
+ wid_part_num: 16,
+ wid_mfg_num: 11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ wid_rsvd1: 1;
+ } wid_fields_s;
+} hubii_wid_t;
+typedef union hubii_wcr_u {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 wcr_reg_value;
+ struct {
+ u64 wcr_rsvd: 41,
+ wcr_e_thresh: 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ wcr_dir_con: 1,
+ wcr_f_bad_pkt: 1,
+ wcr_xbar_crd: 3,
+ wcr_rsvd1: 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ wcr_tag_mode: 1,
+ wcr_widget_id: 4;
+ } wcr_fields_s;
+} hubii_wcr_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iwcr_dir_con wcr_fields_s.wcr_dir_con
+typedef union hubii_wstat_u {
+ u64 reg_value;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 rsvd1: 31,
+ crazy: 1,
+ rsvd2: 8,
+ llp_tx_cnt: 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd3: 6,
+ tx_max_rtry: 1,
+ rsvd4: 2,
+ xt_tail_to: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ xt_crd_to: 1,
+ pending: 4;
+ } wstat_fields_s;
+} hubii_wstat_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union hubii_ilcsr_u {
+ u64 icsr_reg_value;
+ struct {
+ u64 icsr_rsvd: 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ icsr_max_burst: 10,
+ icsr_rsvd4: 6,
+ icsr_max_retry: 10,
+ icsr_rsvd3: 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ icsr_lnk_stat: 2,
+ icsr_bm8: 1,
+ icsr_llp_en: 1,
+ icsr_rsvd2: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ icsr_wrm_reset: 1,
+ icsr_rsvd1: 2,
+ icsr_null_to: 6;
+ } icsr_fields_s;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} hubii_ilcsr_t;
+typedef union hubii_iowa_u {
+ u64 iowa_reg_value;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 iowa_rsvd: 48,
+ iowa_wxoac: 8,
+ iowa_rsvd1: 7,
+ iowa_w0oac: 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } iowa_fields_s;
+} hubii_iowa_t;
+typedef union hubii_iiwa_u {
+ u64 iiwa_reg_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ u64 iiwa_rsvd: 48,
+ iiwa_wxiac: 8,
+ iiwa_rsvd1: 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ iiwa_w0iac: 1;
+ } iiwa_fields_s;
+} hubii_iiwa_t;
+typedef union hubii_illr_u {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 illr_reg_value;
+ struct {
+ u64 illr_rsvd: 32,
+ illr_cb_cnt: 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ illr_sn_cnt: 16;
+ } illr_fields_s;
+} hubii_illr_t;
+typedef union io_perf_sel {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 perf_sel_reg;
+ struct {
+ u64 perf_rsvd : 48,
+ perf_icct : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ perf_ippr1 : 4,
+ perf_ippr0 : 4;
+ } perf_sel_bits;
+} io_perf_sel_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union io_perf_cnt {
+ u64 perf_cnt;
+ struct {
+ u64 perf_rsvd1 : 32,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ perf_rsvd2 : 12,
+ perf_cnt : 20;
+ } perf_cnt_bits;
+} io_perf_cnt_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define LNK_STAT_WORKING 0x2
+#define IIO_LLP_CB_MAX 0xffff
+#define IIO_LLP_SN_MAX 0xffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_NUM_IPRBS (9)
+#define IIO_IOPRB_0 0x400198  
+#define IIO_IOPRB_8 0x4001a0  
+#define IIO_IOPRB_9 0x4001a8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IOPRB_A 0x4001b0  
+#define IIO_IOPRB_B 0x4001b8  
+#define IIO_IOPRB_C 0x4001c0  
+#define IIO_IOPRB_D 0x4001c8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IOPRB_E 0x4001d0  
+#define IIO_IOPRB_F 0x4001d8  
+#define IIO_IXCC 0x4001e0  
+#define IIO_IXTCC IIO_IXCC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IMEM 0x4001e8  
+#define IIO_IXTT 0x4001f0  
+#define IIO_IECLR 0x4001f8  
+#define IIO_IBCN 0x400200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IMEM_W0ESD 0x1  
+#define IIO_IMEM_B0ESD (1 << 4)  
+#define IIO_IMEM_B1ESD (1 << 8)  
+#define IIO_IPCA 0x400300  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_NUM_PRTES 8  
+#define IIO_PRTE_0 0x400308  
+#define IIO_PRTE(_x) (IIO_PRTE_0 + (8 * (_x)))
+#define IIO_WIDPRTE(x) IIO_PRTE(((x) - 8))  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IPDR 0x400388  
+#define IIO_ICDR 0x400390  
+#define IIO_IFDR 0x400398  
+#define IIO_IIAP 0x4003a0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IMMR IIO_IIAP
+#define IIO_ICMR 0x4003a8  
+#define IIO_ICCR 0x4003b0  
+#define IIO_ICTO 0x4003b8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICTP 0x4003c0  
+#define IIO_ICMR_PC_VLD_SHFT 36
+#define IIO_ICMR_PC_VLD_MASK (0x7fffUL << IIO_ICMR_PC_VLD_SHFT)
+#define IIO_ICMR_CRB_VLD_SHFT 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICMR_CRB_VLD_MASK (0x7fffUL << IIO_ICMR_CRB_VLD_SHFT)
+#define IIO_ICMR_FC_CNT_SHFT 16
+#define IIO_ICMR_FC_CNT_MASK (0xf << IIO_ICMR_FC_CNT_SHFT)
+#define IIO_ICMR_C_CNT_SHFT 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICMR_C_CNT_MASK (0xf << IIO_ICMR_C_CNT_SHFT)
+#define IIO_ICMR_P_CNT_SHFT 0
+#define IIO_ICMR_P_CNT_MASK (0xf << IIO_ICMR_P_CNT_SHFT)
+#define IIO_ICMR_PRECISE (1UL << 52)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICMR_CLR_RPPD (1UL << 13)
+#define IIO_ICMR_CLR_RQPD (1UL << 12)
+#define IIO_IPDR_PND (1 << 4)
+#define IIO_ICDR_PND (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICCR_PENDING (0x10000)
+#define IIO_ICCR_CMD_MASK (0xFF)
+#define IIO_ICCR_CMD_SHFT (7)
+#define IIO_ICCR_CMD_NOP (0x0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICCR_CMD_WAKE (0x100)  
+#define IIO_ICCR_CMD_TIMEOUT (0x200)  
+#define IIO_ICCR_CMD_EJECT (0x400)  
+#define IIO_ICCR_CMD_FLUSH (0x800)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_NUM_CRBS 15  
+#define IIO_NUM_NORMAL_CRBS 12  
+#define IIO_NUM_PC_CRBS 4  
+#define IIO_ICRB_OFFSET 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_0 0x400400
+#define IIO_ICRB_A(_x) (IIO_ICRB_0 + (4 * IIO_ICRB_OFFSET * (_x)))
+#define IIO_ICRB_B(_x) (IIO_ICRB_A(_x) + 1*IIO_ICRB_OFFSET)
+#define IIO_ICRB_C(_x) (IIO_ICRB_A(_x) + 2*IIO_ICRB_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_D(_x) (IIO_ICRB_A(_x) + 3*IIO_ICRB_OFFSET)
+#ifndef __ASSEMBLY__
+typedef union icrba_u {
+ u64 reg_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ u64 resvd: 6,
+ stall_bte0: 1,
+ stall_bte1: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ error: 1,
+ ecode: 3,
+ lnetuce: 1,
+ mark: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ xerr: 1,
+ sidn: 4,
+ tnum: 5,
+ addr: 38,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ valid: 1,
+ iow: 1;
+ } icrba_fields_s;
+} icrba_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union h1_icrba_u {
+ u64 reg_value;
+ struct {
+ u64 resvd: 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unused: 1,
+ error: 1,
+ ecode: 4,
+ lnetuce: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ mark: 1,
+ xerr: 1,
+ sidn: 4,
+ tnum: 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ addr: 38,
+ valid: 1,
+ iow: 1;
+ } h1_icrba_fields_s;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} h1_icrba_t;
+#define ICRBN_A_CERR_SHFT 54
+#define ICRBN_A_ERR_MASK 0x3ff
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_ADDR_SHFT 2  
+#define IIO_ICRB_ECODE_DERR 0  
+#define IIO_ICRB_ECODE_PERR 1  
+#define IIO_ICRB_ECODE_WERR 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_ECODE_AERR 3  
+#define IIO_ICRB_ECODE_PWERR 4  
+#define IIO_ICRB_ECODE_PRERR 5  
+#define IIO_ICRB_ECODE_TOUT 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_ECODE_XTERR 7  
+#ifndef __ASSEMBLY__
+typedef union icrbb_u {
+ u64 reg_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ u64 rsvd1: 5,
+ btenum: 1,
+ cohtrans: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ xtsize: 2,
+ srcnode: 9,
+ srcinit: 2,
+ useold: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ imsgtype: 2,
+ imsg: 8,
+ initator: 3,
+ reqtype: 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd2: 7,
+ ackcnt: 11,
+ resp: 1,
+ ack: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ hold: 1,
+ wb_pend:1,
+ intvn: 1,
+ stall_ib: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ stall_intr: 1;
+ } icrbb_field_s;
+} icrbb_t;
+typedef union h1_icrbb_u {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 reg_value;
+ struct {
+ u64 rsvd1: 5,
+ btenum: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ cohtrans: 1,
+ xtsize: 2,
+ srcnode: 9,
+ srcinit: 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ useold: 1,
+ imsgtype: 2,
+ imsg: 8,
+ initator: 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd2: 1,
+ pcache: 1,
+ reqtype: 5,
+ stl_ib: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ stl_intr: 1,
+ stl_bte0: 1,
+ stl_bte1: 1,
+ intrvn: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ackcnt: 11,
+ resp: 1,
+ ack: 1,
+ hold: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ wb_pend:1,
+ sleep: 1,
+ pnd_reply: 1,
+ pnd_req: 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } h1_icrbb_field_s;
+} h1_icrbb_t;
+#define b_imsgtype icrbb_field_s.imsgtype
+#define b_btenum icrbb_field_s.btenum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define b_cohtrans icrbb_field_s.cohtrans
+#define b_xtsize icrbb_field_s.xtsize
+#define b_srcnode icrbb_field_s.srcnode
+#define b_srcinit icrbb_field_s.srcinit
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define b_imsgtype icrbb_field_s.imsgtype
+#define b_imsg icrbb_field_s.imsg
+#define b_initiator icrbb_field_s.initiator
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_XTSIZE_DW 0  
+#define IIO_ICRB_XTSIZE_32 1  
+#define IIO_ICRB_XTSIZE_128 2  
+#define IIO_ICRB_PROC0 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_PROC1 1  
+#define IIO_ICRB_GB_REQ 2  
+#define IIO_ICRB_IO_REQ 3  
+#define IIO_ICRB_IMSGT_XTALK 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_IMSGT_BTE 1  
+#define IIO_ICRB_IMSGT_SN0NET 2  
+#define IIO_ICRB_IMSGT_CRB 3  
+#define IIO_ICRB_INIT_XTALK 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_INIT_BTE0 0x1  
+#define IIO_ICRB_INIT_SN0NET 0x2  
+#define IIO_ICRB_INIT_CRB 0x3  
+#define IIO_ICRB_INIT_BTE1 0x5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_REQ_DWRD 0  
+#define IIO_ICRB_REQ_QCLRD 1  
+#define IIO_ICRB_REQ_BLKRD 2  
+#define IIO_ICRB_REQ_RSHU 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_REQ_REXU 7  
+#define IIO_ICRB_REQ_RDEX 8  
+#define IIO_ICRB_REQ_WINC 9  
+#define IIO_ICRB_REQ_BWINV 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_REQ_PIORD 11  
+#define IIO_ICRB_REQ_PIOWR 12  
+#define IIO_ICRB_REQ_PRDM 13  
+#define IIO_ICRB_REQ_PWRM 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_ICRB_REQ_PTPWR 15  
+#define IIO_ICRB_REQ_WB 16  
+#define IIO_ICRB_REQ_DEX 17  
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union icrbc_s {
+ u64 reg_value;
+ struct {
+ u64 rsvd: 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sleep: 1,
+ pricnt: 4,
+ pripsc: 4,
+ bteop: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ push_be: 34,
+ suppl: 11,
+ barrop: 1,
+ doresp: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ gbr: 1;
+ } icrbc_field_s;
+} icrbc_t;
+#define c_pricnt icrbc_field_s.pricnt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define c_pripsc icrbc_field_s.pripsc
+#define c_bteop icrbc_field_s.bteop
+#define c_bteaddr icrbc_field_s.push_be  
+#define c_benable icrbc_field_s.push_be  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define c_suppl icrbc_field_s.suppl
+#define c_barrop icrbc_field_s.barrop
+#define c_doresp icrbc_field_s.doresp
+#define c_gbr icrbc_field_s.gbr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef __ASSEMBLY__
+typedef union icrbd_s {
+ u64 reg_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct {
+ u64 rsvd: 38,
+ toutvld: 1,
+ ctxtvld: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd2: 1,
+ context: 15,
+ timeout: 8;
+ } icrbd_field_s;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} icrbd_t;
+#define icrbd_toutvld icrbd_field_s.toutvld
+#define icrbd_ctxtvld icrbd_field_s.ctxtvld
+#define icrbd_context icrbd_field_s.context
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union hubii_ifdr_u {
+ u64 hi_ifdr_value;
+ struct {
+ u64 ifdr_rsvd: 49,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ifdr_maxrp: 7,
+ ifdr_rsvd1: 1,
+ ifdr_maxrq: 7;
+ } hi_ifdr_fields;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} hubii_ifdr_t;
+#endif
+#define IIO_IBLS_0 0x410000  
+#define IIO_IBSA_0 0x410008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IBDA_0 0x410010  
+#define IIO_IBCT_0 0x410018  
+#define IIO_IBNA_0 0x410020  
+#define IIO_IBNR_0 IIO_IBNA_0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IBIA_0 0x410028  
+#define IIO_IBLS_1 0x420000  
+#define IIO_IBSA_1 0x420008  
+#define IIO_IBDA_1 0x420010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IBCT_1 0x420018  
+#define IIO_IBNA_1 0x420020  
+#define IIO_IBNR_1 IIO_IBNA_1
+#define IIO_IBIA_1 0x420028  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_IPCR 0x430000  
+#define IIO_IPPR 0x430008  
+#define IECLR_BTE1 (1 << 18)  
+#define IECLR_BTE0 (1 << 17)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IECLR_CRAZY (1 << 16)  
+#define IECLR_PRB_F (1 << 15)  
+#define IECLR_PRB_E (1 << 14)  
+#define IECLR_PRB_D (1 << 13)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IECLR_PRB_C (1 << 12)  
+#define IECLR_PRB_B (1 << 11)  
+#define IECLR_PRB_A (1 << 10)  
+#define IECLR_PRB_9 (1 << 9)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IECLR_PRB_8 (1 << 8)  
+#define IECLR_PRB_0 (1 << 0)  
+#ifndef __ASSEMBLY__
+typedef union iprte_a {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 entry;
+ struct {
+ u64 rsvd1 : 7,
+ valid : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd2 : 1,
+ srcnode : 9,
+ initiator : 2,
+ rsvd3 : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ addr : 38,
+ rsvd4 : 3;
+ } iprte_fields;
+} iprte_a_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iprte_valid iprte_fields.valid
+#define iprte_timeout iprte_fields.timeout
+#define iprte_srcnode iprte_fields.srcnode
+#define iprte_init iprte_fields.initiator
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iprte_addr iprte_fields.addr
+#endif
+#define IPRTE_ADDRSHFT 3
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union iprb_u {
+ u64 reg_value;
+ struct {
+ u64 rsvd1: 15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ error: 1,
+ ovflow: 5,
+ fire_and_forget: 1,
+ mode: 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd2: 2,
+ bnakctr: 14,
+ rsvd3: 2,
+ anakctr: 14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ xtalkctr: 8;
+ } iprb_fields_s;
+} iprb_t;
+#define iprb_regval reg_value
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iprb_error iprb_fields_s.error
+#define iprb_ovflow iprb_fields_s.ovflow
+#define iprb_ff iprb_fields_s.fire_and_forget
+#define iprb_mode iprb_fields_s.mode
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define iprb_bnakctr iprb_fields_s.bnakctr
+#define iprb_anakctr iprb_fields_s.anakctr
+#define iprb_xtalkctr iprb_fields_s.xtalkctr
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IPRB_MODE_NORMAL (0)
+#define IPRB_MODE_COLLECT_A (1)  
+#define IPRB_MODE_SERVICE_A (2)  
+#define IPRB_MODE_SERVICE_B (3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+typedef union icrbp_a {
+ u64 ip_reg;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 error: 1,
+ ln_uce: 1,
+ ln_ae: 1,
+ ln_werr:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ln_aerr:1,
+ ln_perr:1,
+ timeout:1,
+ l_bdpkt:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ c_bdpkt:1,
+ c_err: 1,
+ rsvd1: 12,
+ valid: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sidn: 4,
+ tnum: 5,
+ bo: 1,
+ resprqd:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ gbr: 1,
+ size: 2,
+ excl: 4,
+ stall: 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ intvn: 1,
+ resp: 1,
+ ack: 1,
+ hold: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ wb: 1,
+ ack_cnt:11,
+ tscaler:4;
+ } ip_fmt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} icrbp_a_t;
+#endif
+#define ICRBP_A_CERR_SHFT 54
+#define ICRBP_A_ERR_MASK 0x3ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef __ASSEMBLY__
+typedef union hubii_idsr {
+ u64 iin_reg;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 rsvd1 : 35,
+ isent : 1,
+ rsvd2 : 3,
+ ienable: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd : 7,
+ node : 9,
+ rsvd4 : 1,
+ level : 7;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } iin_fmt;
+} hubii_idsr_t;
+#endif
+#define IBLS_BUSY (0x1 << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IBLS_ERROR_SHFT 16
+#define IBLS_ERROR (0x1 << IBLS_ERROR_SHFT)
+#define IBLS_LENGTH_MASK 0xffff
+#define IBCT_POISON (0x1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IBCT_NOTIFY (0x1 << 4)
+#define IBCT_ZFIL_MODE (0x1 << 0)
+#define IBIA_LEVEL_SHFT 16
+#define IBIA_LEVEL_MASK (0x7f << IBIA_LEVEL_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IBIA_NODE_ID_SHFT 0
+#define IBIA_NODE_ID_MASK (0x1ff)
+#define HUB_NUM_WIDGET 9
+#define HUB_WIDGET_ID_MIN 0x8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HUB_WIDGET_ID_MAX 0xf
+#define HUB_WIDGET_PART_NUM 0xc101
+#define MAX_HUBS_PER_XBOW 2
+#define IIO_WCR_WID_GET(nasid) (REMOTE_HUB_L(nasid, III_WCR) & 0xf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IIO_WST_ERROR_MASK (UINT64_CAST 1 << 32)  
+#define HUBII_XBOW_CREDIT 3
+#define HUBII_XBOW_REV2_CREDIT 4
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubmd.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubmd.h
new file mode 100644
index 0000000..9f0893f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubmd.h
@@ -0,0 +1,611 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_SN0_HUBMD_H
+#define _ASM_SN_SN0_HUBMD_H
+#define CACHE_SLINE_SIZE 128  
+#define MAX_REGIONS 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PAGE_SIZE 4096  
+#define MD_PAGE_NUM_SHFT 12  
+#define MD_BASE 0x200000
+#define MD_BASE_PERF 0x210000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_BASE_JUNK 0x220000
+#define MD_IO_PROTECT 0x200000  
+#define MD_IO_PROT_OVRRD 0x200008  
+#define MD_HSPEC_PROTECT 0x200010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MEMORY_CONFIG 0x200018  
+#define MD_REFRESH_CONTROL 0x200020  
+#define MD_FANDOP_CAC_STAT 0x200028  
+#define MD_MIG_DIFF_THRESH 0x200030  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_VALUE_THRESH 0x200038  
+#define MD_MIG_CANDIDATE 0x200040  
+#define MD_MIG_CANDIDATE_CLR 0x200048  
+#define MD_DIR_ERROR 0x200050  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_DIR_ERROR_CLR 0x200058  
+#define MD_PROTOCOL_ERROR 0x200060  
+#define MD_PROTOCOL_ERROR_CLR 0x200068  
+#define MD_MEM_ERROR 0x200070  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MEM_ERROR_CLR 0x200078  
+#define MD_MISC_ERROR 0x200080  
+#define MD_MISC_ERROR_CLR 0x200088  
+#define MD_MEM_DIMM_INIT 0x200090  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_DIR_DIMM_INIT 0x200098  
+#define MD_MOQ_SIZE 0x2000a0  
+#define MD_MLAN_CTL 0x2000a8  
+#define MD_PERF_SEL 0x210000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PERF_CNT0 0x210010  
+#define MD_PERF_CNT1 0x210018  
+#define MD_PERF_CNT2 0x210020  
+#define MD_PERF_CNT3 0x210028  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PERF_CNT4 0x210030  
+#define MD_PERF_CNT5 0x210038  
+#define MD_UREG0_0 0x220000  
+#define MD_UREG0_1 0x220008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_UREG0_2 0x220010  
+#define MD_UREG0_3 0x220018  
+#define MD_UREG0_4 0x220020  
+#define MD_UREG0_5 0x220028  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_UREG0_6 0x220030  
+#define MD_UREG0_7 0x220038  
+#define MD_SLOTID_USTAT 0x220048  
+#define MD_LED0 0x220050  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_LED1 0x220058  
+#define MD_UREG1_0 0x220080  
+#define MD_UREG1_1 0x220088  
+#define MD_UREG1_2 0x220090  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_UREG1_3 0x220098  
+#define MD_UREG1_4 0x2200a0  
+#define MD_UREG1_5 0x2200a8  
+#define MD_UREG1_6 0x2200b0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_UREG1_7 0x2200b8  
+#define MD_UREG1_8 0x2200c0  
+#define MD_UREG1_9 0x2200c8  
+#define MD_UREG1_10 0x2200d0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_UREG1_11 0x2200d8  
+#define MD_UREG1_12 0x2200e0  
+#define MD_UREG1_13 0x2200e8  
+#define MD_UREG1_14 0x2200f0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_UREG1_15 0x2200f8  
+#define MD_MEM_BANKS 8  
+#define MD_SIZE_EMPTY 0  
+#define MD_SIZE_8MB 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SIZE_16MB 2
+#define MD_SIZE_32MB 3  
+#define MD_SIZE_64MB 4  
+#define MD_SIZE_128MB 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SIZE_256MB 6
+#define MD_SIZE_512MB 7  
+#define MD_SIZE_1GB 8
+#define MD_SIZE_2GB 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SIZE_4GB 10
+#define MD_SIZE_BYTES(size) ((size) == 0 ? 0 : 0x400000L << (size))
+#define MD_SIZE_MBYTES(size) ((size) == 0 ? 0 : 4 << (size))
+#define MMC_FPROM_CYC_SHFT 49  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_FPROM_CYC_MASK (UINT64_CAST 31 << 49)  
+#define MMC_FPROM_WR_SHFT 44  
+#define MMC_FPROM_WR_MASK (UINT64_CAST 31 << 44)
+#define MMC_UCTLR_CYC_SHFT 39
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_UCTLR_CYC_MASK (UINT64_CAST 31 << 39)
+#define MMC_UCTLR_WR_SHFT 34
+#define MMC_UCTLR_WR_MASK (UINT64_CAST 31 << 34)
+#define MMC_DIMM0_SEL_SHFT 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_DIMM0_SEL_MASK (UINT64_CAST 3 << 32)
+#define MMC_IO_PROT_EN_SHFT 31
+#define MMC_IO_PROT_EN_MASK (UINT64_CAST 1 << 31)
+#define MMC_IO_PROT (UINT64_CAST 1 << 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_ARB_MLSS_SHFT 30
+#define MMC_ARB_MLSS_MASK (UINT64_CAST 1 << 30)
+#define MMC_ARB_MLSS (UINT64_CAST 1 << 30)
+#define MMC_IGNORE_ECC_SHFT 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_IGNORE_ECC_MASK (UINT64_CAST 1 << 29)
+#define MMC_IGNORE_ECC (UINT64_CAST 1 << 29)
+#define MMC_DIR_PREMIUM_SHFT 28
+#define MMC_DIR_PREMIUM_MASK (UINT64_CAST 1 << 28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_DIR_PREMIUM (UINT64_CAST 1 << 28)
+#define MMC_REPLY_GUAR_SHFT 24
+#define MMC_REPLY_GUAR_MASK (UINT64_CAST 15 << 24)
+#define MMC_BANK_SHFT(_b) ((_b) * 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMC_BANK_MASK(_b) (UINT64_CAST 7 << MMC_BANK_SHFT(_b))
+#define MMC_BANK_ALL_MASK 0xffffff
+#define MMC_RESET_DEFAULTS (UINT64_CAST 0x0f << MMC_FPROM_CYC_SHFT |   UINT64_CAST 0x07 << MMC_FPROM_WR_SHFT |   UINT64_CAST 0x1f << MMC_UCTLR_CYC_SHFT |   UINT64_CAST 0x0f << MMC_UCTLR_WR_SHFT |   MMC_IGNORE_ECC | MMC_DIR_PREMIUM |   UINT64_CAST 0x0f << MMC_REPLY_GUAR_SHFT |   MMC_BANK_ALL_MASK)
+#define MRC_ENABLE_SHFT 63
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MRC_ENABLE_MASK (UINT64_CAST 1 << 63)
+#define MRC_ENABLE (UINT64_CAST 1 << 63)
+#define MRC_COUNTER_SHFT 12
+#define MRC_COUNTER_MASK (UINT64_CAST 0xfff << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MRC_CNT_THRESH_MASK 0xfff
+#define MRC_RESET_DEFAULTS (UINT64_CAST 0x400)
+#define MDI_SELECT_SHFT 32
+#define MDI_SELECT_MASK (UINT64_CAST 0x0f << 32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MDI_DIMM_MODE_MASK (UINT64_CAST 0xfff)
+#define MMS_RP_SIZE_SHFT 8
+#define MMS_RP_SIZE_MASK (UINT64_CAST 0x3f << 8)
+#define MMS_RQ_SIZE_SHFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMS_RQ_SIZE_MASK (UINT64_CAST 0x1f)
+#define MMS_RESET_DEFAULTS (0x32 << 8 | 0x12)
+#define MFC_VALID_SHFT 63
+#define MFC_VALID_MASK (UINT64_CAST 1 << 63)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MFC_VALID (UINT64_CAST 1 << 63)
+#define MFC_ADDR_SHFT 6
+#define MFC_ADDR_MASK (UINT64_CAST 0x3ffffff)
+#define MLAN_PHI1_SHFT 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MLAN_PHI1_MASK (UINT64_CAST 0x7f << 27)
+#define MLAN_PHI0_SHFT 20
+#define MLAN_PHI0_MASK (UINT64_CAST 0x7f << 27)
+#define MLAN_PULSE_SHFT 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MLAN_PULSE_MASK (UINT64_CAST 0x3ff << 10)
+#define MLAN_SAMPLE_SHFT 2
+#define MLAN_SAMPLE_MASK (UINT64_CAST 0xff << 2)
+#define MLAN_DONE_SHFT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MLAN_DONE_MASK 2
+#define MLAN_DONE (UINT64_CAST 0x02)
+#define MLAN_RD_DATA (UINT64_CAST 0x01)
+#define MLAN_RESET_DEFAULTS (UINT64_CAST 0x31 << MLAN_PHI1_SHFT |   UINT64_CAST 0x31 << MLAN_PHI0_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSU_CORECLK_TST_SHFT 7  
+#define MSU_CORECLK_TST_MASK (UINT64_CAST 1 << 7)
+#define MSU_CORECLK_TST (UINT64_CAST 1 << 7)
+#define MSU_CORECLK_SHFT 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSU_CORECLK_MASK (UINT64_CAST 1 << 6)
+#define MSU_CORECLK (UINT64_CAST 1 << 6)
+#define MSU_NETSYNC_SHFT 5  
+#define MSU_NETSYNC_MASK (UINT64_CAST 1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSU_NETSYNC (UINT64_CAST 1 << 5)
+#define MSU_FPROMRDY_SHFT 4  
+#define MSU_FPROMRDY_MASK (UINT64_CAST 1 << 4)
+#define MSU_FPROMRDY (UINT64_CAST 1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSU_I2CINTR_SHFT 3  
+#define MSU_I2CINTR_MASK (UINT64_CAST 1 << 3)
+#define MSU_I2CINTR (UINT64_CAST 1 << 3)
+#define MSU_SLOTID_MASK 0xff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSU_SN0_SLOTID_SHFT 0  
+#define MSU_SN0_SLOTID_MASK (UINT64_CAST 7)
+#define MSU_SN00_SLOTID_SHFT 7
+#define MSU_SN00_SLOTID_MASK (UINT64_CAST 0x80)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MSU_PIMM_PSC_SHFT 4
+#define MSU_PIMM_PSC_MASK (0xf << MSU_PIMM_PSC_SHFT)
+#define MD_MIG_DIFF_THRES_VALID_MASK (UINT64_CAST 0x1 << 63)
+#define MD_MIG_DIFF_THRES_VALID_SHFT 63
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_DIFF_THRES_VALUE_MASK (UINT64_CAST 0xfffff)
+#define MD_MIG_VALUE_THRES_VALID_MASK (UINT64_CAST 0x1 << 63)
+#define MD_MIG_VALUE_THRES_VALID_SHFT 63
+#define MD_MIG_VALUE_THRES_VALUE_MASK (UINT64_CAST 0xfffff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_CANDIDATE_VALID_MASK (UINT64_CAST 0x1 << 63)
+#define MD_MIG_CANDIDATE_VALID_SHFT 63
+#define MD_MIG_CANDIDATE_TYPE_MASK (UINT64_CAST 0x1 << 30)
+#define MD_MIG_CANDIDATE_TYPE_SHFT 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_CANDIDATE_OVERRUN_MASK (UINT64_CAST 0x1 << 29)
+#define MD_MIG_CANDIDATE_OVERRUN_SHFT 29
+#define MD_MIG_CANDIDATE_INITIATOR_MASK (UINT64_CAST 0x7ff << 18)
+#define MD_MIG_CANDIDATE_INITIATOR_SHFT 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_CANDIDATE_NODEID_MASK (UINT64_CAST 0x1ff << 20)
+#define MD_MIG_CANDIDATE_NODEID_SHFT 20
+#define MD_MIG_CANDIDATE_ADDR_MASK (UINT64_CAST 0x3ffff)
+#define MD_MIG_CANDIDATE_ADDR_SHFT 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_BANK_SHFT 29  
+#define MD_BANK_MASK (UINT64_CAST 7 << 29)
+#define MD_BANK_SIZE (UINT64_CAST 1 << MD_BANK_SHFT)  
+#define MD_BANK_OFFSET(_b) (UINT64_CAST (_b) << MD_BANK_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_DIR_SHARED (UINT64_CAST 0x0)  
+#define MD_DIR_POISONED (UINT64_CAST 0x1)  
+#define MD_DIR_EXCLUSIVE (UINT64_CAST 0x2)  
+#define MD_DIR_BUSY_SHARED (UINT64_CAST 0x3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_DIR_BUSY_EXCL (UINT64_CAST 0x4)  
+#define MD_DIR_WAIT (UINT64_CAST 0x5)  
+#define MD_DIR_UNOWNED (UINT64_CAST 0x7)  
+#define MD_DIR_FORCE_ECC (UINT64_CAST 1 << 63)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_MASK 0xffffffffffff  
+#define MD_PDIR_ECC_SHFT 0  
+#define MD_PDIR_ECC_MASK 0x7f
+#define MD_PDIR_PRIO_SHFT 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_PRIO_MASK (0xf << 8)
+#define MD_PDIR_AX_SHFT 7  
+#define MD_PDIR_AX_MASK (1 << 7)
+#define MD_PDIR_AX (1 << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_FINE_SHFT 12  
+#define MD_PDIR_FINE_MASK (1 << 12)
+#define MD_PDIR_FINE (1 << 12)
+#define MD_PDIR_OCT_SHFT 13  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_OCT_MASK (7 << 13)
+#define MD_PDIR_STATE_SHFT 13  
+#define MD_PDIR_STATE_MASK (7 << 13)
+#define MD_PDIR_ONECNT_SHFT 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_ONECNT_MASK (0x3f << 16)
+#define MD_PDIR_PTR_SHFT 22  
+#define MD_PDIR_PTR_MASK (UINT64_CAST 0x7ff << 22)
+#define MD_PDIR_VECMSB_SHFT 22  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_VECMSB_BITMASK 0x3ffffff
+#define MD_PDIR_VECMSB_BITSHFT 27
+#define MD_PDIR_VECMSB_MASK (UINT64_CAST MD_PDIR_VECMSB_BITMASK << 22)
+#define MD_PDIR_CWOFF_SHFT 7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_CWOFF_MASK (7 << 7)
+#define MD_PDIR_VECLSB_SHFT 10  
+#define MD_PDIR_VECLSB_BITMASK (UINT64_CAST 0x3fffffffff)
+#define MD_PDIR_VECLSB_BITSHFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PDIR_VECLSB_MASK (MD_PDIR_VECLSB_BITMASK << 10)
+#define MD_PDIR_INIT_LO (MD_DIR_UNOWNED << MD_PDIR_STATE_SHFT |   MD_PDIR_AX)
+#define MD_PDIR_INIT_HI 0
+#define MD_PDIR_INIT_PROT (MD_PROT_RW << MD_PPROT_IO_SHFT |   MD_PROT_RW << MD_PPROT_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_MASK 0xffff  
+#define MD_SDIR_ECC_SHFT 0  
+#define MD_SDIR_ECC_MASK 0x1f
+#define MD_SDIR_PRIO_SHFT 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_PRIO_MASK (1 << 6)
+#define MD_SDIR_AX_SHFT 5  
+#define MD_SDIR_AX_MASK (1 << 5)
+#define MD_SDIR_AX (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_STATE_SHFT 7  
+#define MD_SDIR_STATE_MASK (7 << 7)
+#define MD_SDIR_PTR_SHFT 10  
+#define MD_SDIR_PTR_MASK (0x3f << 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_CWOFF_SHFT 5  
+#define MD_SDIR_CWOFF_MASK (7 << 5)
+#define MD_SDIR_VECMSB_SHFT 11  
+#define MD_SDIR_VECMSB_BITMASK 0x1f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_VECMSB_BITSHFT 7
+#define MD_SDIR_VECMSB_MASK (MD_SDIR_VECMSB_BITMASK << 11)
+#define MD_SDIR_VECLSB_SHFT 5  
+#define MD_SDIR_VECLSB_BITMASK 0x7ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_VECLSB_BITSHFT 0
+#define MD_SDIR_VECLSB_MASK (MD_SDIR_VECLSB_BITMASK << 5)
+#define MD_SDIR_INIT_LO (MD_DIR_UNOWNED << MD_SDIR_STATE_SHFT |   MD_SDIR_AX)
+#define MD_SDIR_INIT_HI 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SDIR_INIT_PROT (MD_PROT_RW << MD_SPROT_SHFT)
+#define MD_PROT_RW (UINT64_CAST 0x6)
+#define MD_PROT_RO (UINT64_CAST 0x3)
+#define MD_PROT_NO (UINT64_CAST 0x0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PROT_BAD (UINT64_CAST 0x5)
+#define MD_PPROT_SHFT 0  
+#define MD_PPROT_MASK 7
+#define MD_PPROT_MIGMD_SHFT 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PPROT_MIGMD_MASK (3 << 3)
+#define MD_PPROT_REFCNT_SHFT 5  
+#define MD_PPROT_REFCNT_WIDTH 0x7ffff
+#define MD_PPROT_REFCNT_MASK (MD_PPROT_REFCNT_WIDTH << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PPROT_IO_SHFT 45  
+#define MD_PPROT_IO_MASK (UINT64_CAST 7 << 45)
+#define MD_SPROT_SHFT 0  
+#define MD_SPROT_MASK 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SPROT_MIGMD_SHFT 3  
+#define MD_SPROT_MIGMD_MASK (3 << 3)
+#define MD_SPROT_REFCNT_SHFT 5  
+#define MD_SPROT_REFCNT_WIDTH 0x7ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_SPROT_REFCNT_MASK (MD_SPROT_REFCNT_WIDTH << 5)
+#define MD_PROT_MIGMD_IREL (UINT64_CAST 0x3 << 3)
+#define MD_PROT_MIGMD_IABS (UINT64_CAST 0x2 << 3)
+#define MD_PROT_MIGMD_PREL (UINT64_CAST 0x1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PROT_MIGMD_OFF (UINT64_CAST 0x0 << 3)
+#ifndef __ASSEMBLY__
+#define CPU_LED_ADDR(_nasid, _slice)   (private.p_sn00 ?   REMOTE_HUB_ADDR((_nasid), MD_UREG1_0 + ((_slice) << 5)) :   REMOTE_HUB_ADDR((_nasid), MD_LED0 + ((_slice) << 3)))
+#define SET_CPU_LEDS(_nasid, _slice, _val)   (HUB_S(CPU_LED_ADDR(_nasid, _slice), (_val)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SET_MY_LEDS(_v)   SET_CPU_LEDS(get_nasid(), get_slice(), (_v))
+#define DIRTYPE_PREMIUM 1
+#define DIRTYPE_STANDARD 0
+#define MD_MEMORY_CONFIG_DIR_TYPE_GET(region) (  (REMOTE_HUB_L(region, MD_MEMORY_CONFIG) & MMC_DIR_PREMIUM_MASK) >>   MMC_DIR_PREMIUM_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_DIFF_THRESH_GET(region) (   REMOTE_HUB_L((region), MD_MIG_DIFF_THRESH) &   MD_MIG_DIFF_THRES_VALUE_MASK)
+#define MD_MIG_DIFF_THRESH_SET(region, value) (   REMOTE_HUB_S((region), MD_MIG_DIFF_THRESH,   MD_MIG_DIFF_THRES_VALID_MASK | (value)))
+#define MD_MIG_DIFF_THRESH_DISABLE(region) (   REMOTE_HUB_S((region), MD_MIG_DIFF_THRESH,   REMOTE_HUB_L((region), MD_MIG_DIFF_THRESH)   & ~MD_MIG_DIFF_THRES_VALID_MASK))
+#define MD_MIG_DIFF_THRESH_ENABLE(region) (   REMOTE_HUB_S((region), MD_MIG_DIFF_THRESH,   REMOTE_HUB_L((region), MD_MIG_DIFF_THRESH)   | MD_MIG_DIFF_THRES_VALID_MASK))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_DIFF_THRESH_IS_ENABLED(region) (   REMOTE_HUB_L((region), MD_MIG_DIFF_THRESH) &   MD_MIG_DIFF_THRES_VALID_MASK)
+#define MD_MIG_VALUE_THRESH_GET(region) (   REMOTE_HUB_L((region), MD_MIG_VALUE_THRESH) &   MD_MIG_VALUE_THRES_VALUE_MASK)
+#define MD_MIG_VALUE_THRESH_SET(region, value) (   REMOTE_HUB_S((region), MD_MIG_VALUE_THRESH,   MD_MIG_VALUE_THRES_VALID_MASK | (value)))
+#define MD_MIG_VALUE_THRESH_DISABLE(region) (   REMOTE_HUB_S((region), MD_MIG_VALUE_THRESH,   REMOTE_HUB_L(region, MD_MIG_VALUE_THRESH)   & ~MD_MIG_VALUE_THRES_VALID_MASK))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_VALUE_THRESH_ENABLE(region) (   REMOTE_HUB_S((region), MD_MIG_VALUE_THRESH,   REMOTE_HUB_L((region), MD_MIG_VALUE_THRESH)   | MD_MIG_VALUE_THRES_VALID_MASK))
+#define MD_MIG_VALUE_THRESH_IS_ENABLED(region) (   REMOTE_HUB_L((region), MD_MIG_VALUE_THRESH) &   MD_MIG_VALUE_THRES_VALID_MASK)
+#define MD_MIG_CANDIDATE_GET(my_region_id) (   REMOTE_HUB_L((my_region_id), MD_MIG_CANDIDATE_CLR))
+#define MD_MIG_CANDIDATE_HWPFN(value) ((value) & MD_MIG_CANDIDATE_ADDR_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_MIG_CANDIDATE_NODEID(value) (   ((value) & MD_MIG_CANDIDATE_NODEID_MASK) >> MD_MIG_CANDIDATE_NODEID_SHFT)
+#define MD_MIG_CANDIDATE_TYPE(value) (   ((value) & MD_MIG_CANDIDATE_TYPE_MASK) >> MD_MIG_CANDIDATE_TYPE_SHFT)
+#define MD_MIG_CANDIDATE_VALID(value) (   ((value) & MD_MIG_CANDIDATE_VALID_MASK) >> MD_MIG_CANDIDATE_VALID_SHFT)
+#define MD_PPROT_REFCNT_GET(value) (   ((value) & MD_PPROT_REFCNT_MASK) >> MD_PPROT_REFCNT_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MD_PPROT_MIGMD_GET(value) (   ((value) & MD_PPROT_MIGMD_MASK) >> MD_PPROT_MIGMD_SHFT)
+#define MD_SPROT_REFCNT_GET(value) (   ((value) & MD_SPROT_REFCNT_MASK) >> MD_SPROT_REFCNT_SHFT)
+#define MD_SPROT_MIGMD_GET(value) (   ((value) & MD_SPROT_MIGMD_MASK) >> MD_SPROT_MIGMD_SHFT)
+struct dir_error_reg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 uce_vld: 1,
+ ae_vld: 1,
+ ce_vld: 1,
+ rsvd1: 19,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bad_prot: 3,
+ bad_syn: 7,
+ rsvd2: 2,
+ hspec_addr:27,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uce_ovr: 1,
+ ae_ovr: 1,
+ ce_ovr: 1;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union md_dir_error {
+ u64 derr_reg;
+ struct dir_error_reg derr_fmt;
+} md_dir_error_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct mem_error_reg {
+ u64 uce_vld: 1,
+ ce_vld: 1,
+ rsvd1: 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ bad_syn: 8,
+ address: 29,
+ rsvd2: 1,
+ uce_ovr: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ce_ovr: 1;
+};
+typedef union md_mem_error {
+ u64 merr_reg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct mem_error_reg merr_fmt;
+} md_mem_error_t;
+struct proto_error_reg {
+ u64 valid: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ rsvd1: 2,
+ initiator:11,
+ backoff: 2,
+ msg_type: 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ access: 2,
+ priority: 1,
+ dir_state: 4,
+ pointer_me:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ address: 29,
+ rsvd2: 2,
+ overrun: 1;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union md_proto_error {
+ u64 perr_reg;
+ struct proto_error_reg perr_fmt;
+} md_proto_error_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct md_sdir_high_fmt {
+ unsigned short sd_hi_bvec : 11,
+ sd_hi_ecc : 5;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union md_sdir_high {
+ unsigned short sd_hi_val;
+ struct md_sdir_high_fmt sd_hi_fmt;
+}md_sdir_high_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct md_sdir_low_shared_fmt {
+ unsigned short sds_lo_bvec : 5,
+ sds_lo_unused: 1,
+ sds_lo_state : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sds_lo_prio : 1,
+ sds_lo_ax : 1,
+ sds_lo_ecc : 5;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct md_sdir_low_exclusive_fmt {
+ unsigned short sde_lo_ptr : 6,
+ sde_lo_state : 3,
+ sde_lo_prio : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sde_lo_ax : 1,
+ sde_lo_ecc : 5;
+};
+typedef union md_sdir_low {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short sd_lo_val;
+ struct md_sdir_low_exclusive_fmt sde_lo_fmt;
+ struct md_sdir_low_shared_fmt sds_lo_fmt;
+}md_sdir_low_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct md_pdir_high_fmt {
+ u64 pd_hi_unused : 16,
+ pd_hi_bvec : 38,
+ pd_hi_unused1 : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pd_hi_ecc : 7;
+};
+typedef union md_pdir_high {
+ u64 pd_hi_val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct md_pdir_high_fmt pd_hi_fmt;
+}md_pdir_high_t;
+struct md_pdir_low_shared_fmt {
+ u64 pds_lo_unused : 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pds_lo_bvec : 26,
+ pds_lo_cnt : 6,
+ pds_lo_state : 3,
+ pds_lo_ste : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pds_lo_prio : 4,
+ pds_lo_ax : 1,
+ pds_lo_ecc : 7;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct md_pdir_low_exclusive_fmt {
+ u64 pde_lo_unused : 31,
+ pde_lo_ptr : 11,
+ pde_lo_unused1 : 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pde_lo_state : 3,
+ pde_lo_ste : 1,
+ pde_lo_prio : 4,
+ pde_lo_ax : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ pde_lo_ecc : 7;
+};
+typedef union md_pdir_loent {
+ u64 pd_lo_val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct md_pdir_low_exclusive_fmt pde_lo_fmt;
+ struct md_pdir_low_shared_fmt pds_lo_fmt;
+}md_pdir_low_t;
+typedef union md_dir_high {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ md_sdir_high_t md_sdir_high;
+ md_pdir_high_t md_pdir_high;
+} md_dir_high_t;
+typedef union md_dir_low {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ md_sdir_low_t md_sdir_low;
+ md_pdir_low_t md_pdir_low;
+} md_dir_low_t;
+typedef struct bddir_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ md_dir_low_t md_dir_low;
+ md_dir_high_t md_dir_high;
+} bddir_entry_t;
+typedef struct dir_mem_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 prcpf[MAX_REGIONS];
+ bddir_entry_t directory_words[MD_PAGE_SIZE/CACHE_SLINE_SIZE];
+} dir_mem_entry_t;
+typedef union md_perf_sel {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 perf_sel_reg;
+ struct {
+ u64 perf_rsvd : 60,
+ perf_en : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ perf_sel : 3;
+ } perf_sel_bits;
+} md_perf_sel_t;
+typedef union md_perf_cnt {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 perf_cnt;
+ struct {
+ u64 perf_rsvd : 44,
+ perf_cnt : 20;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } perf_cnt_bits;
+} md_perf_cnt_t;
+#endif
+#define DIR_ERROR_VALID_MASK 0xe000000000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DIR_ERROR_VALID_SHFT 61
+#define DIR_ERROR_VALID_UCE 0x8000000000000000
+#define DIR_ERROR_VALID_AE 0x4000000000000000
+#define DIR_ERROR_VALID_CE 0x2000000000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEM_ERROR_VALID_MASK 0xc000000000000000
+#define MEM_ERROR_VALID_SHFT 62
+#define MEM_ERROR_VALID_UCE 0x8000000000000000
+#define MEM_ERROR_VALID_CE 0x4000000000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PROTO_ERROR_VALID_MASK 0x8000000000000000
+#define MISC_ERROR_VALID_MASK 0x3ff
+#define DIR_ERR_HSPEC_MASK 0x3ffffff8
+#define ERROR_HSPEC_MASK 0x3ffffff8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ERROR_HSPEC_SHFT 3
+#define ERROR_ADDR_MASK 0xfffffff8
+#define ERROR_ADDR_SHFT 3
+#define MMCE_VALID_MASK 0x3ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMCE_ILL_MSG_SHFT 8
+#define MMCE_ILL_MSG_MASK (UINT64_CAST 0x03 << MMCE_ILL_MSG_SHFT)
+#define MMCE_ILL_REV_SHFT 6
+#define MMCE_ILL_REV_MASK (UINT64_CAST 0x03 << MMCE_ILL_REV_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMCE_LONG_PACK_SHFT 4
+#define MMCE_LONG_PACK_MASK (UINT64_CAST 0x03 << MMCE_lONG_PACK_SHFT)
+#define MMCE_SHORT_PACK_SHFT 2
+#define MMCE_SHORT_PACK_MASK (UINT64_CAST 0x03 << MMCE_SHORT_PACK_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MMCE_BAD_DATA_SHFT 0
+#define MMCE_BAD_DATA_MASK (UINT64_CAST 0x03 << MMCE_BAD_DATA_SHFT)
+#define MD_PERF_COUNTERS 6
+#define MD_PERF_SETS 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MEM_DIMM_MASK 0xe0000000
+#define MEM_DIMM_SHFT 29
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubni.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubni.h
new file mode 100644
index 0000000..cb3658d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubni.h
@@ -0,0 +1,225 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SGI_SN0_HUBNI_H
+#define _ASM_SGI_SN0_HUBNI_H
+#ifndef __ASSEMBLY__
+#include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#define NI_BASE 0x600000
+#define NI_BASE_TABLES 0x630000
+#define NI_STATUS_REV_ID 0x600000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_PORT_RESET 0x600008  
+#define NI_PROTECTION 0x600010  
+#define NI_GLOBAL_PARMS 0x600018  
+#define NI_SCRATCH_REG0 0x600100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_SCRATCH_REG1 0x600108  
+#define NI_DIAG_PARMS 0x600110  
+#define NI_VECTOR_PARMS 0x600200  
+#define NI_VECTOR 0x600208  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_VECTOR_DATA 0x600210  
+#define NI_VECTOR_STATUS 0x600300  
+#define NI_RETURN_VECTOR 0x600308  
+#define NI_VECTOR_READ_DATA 0x600310  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_VECTOR_CLEAR 0x600380  
+#define NI_IO_PROTECT 0x600400  
+#define NI_IO_PROT_OVRRD 0x600408  
+#define NI_AGE_CPU0_MEMORY 0x600500  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_AGE_CPU0_PIO 0x600508  
+#define NI_AGE_CPU1_MEMORY 0x600510  
+#define NI_AGE_CPU1_PIO 0x600518  
+#define NI_AGE_GBR_MEMORY 0x600520  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_AGE_GBR_PIO 0x600528  
+#define NI_AGE_IO_MEMORY 0x600530  
+#define NI_AGE_IO_PIO 0x600538  
+#define NI_AGE_REG_MIN NI_AGE_CPU0_MEMORY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_AGE_REG_MAX NI_AGE_IO_PIO
+#define NI_PORT_PARMS 0x608000  
+#define NI_PORT_ERROR 0x608008  
+#define NI_PORT_ERROR_CLEAR 0x608088  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_META_TABLE0 0x638000  
+#define NI_META_TABLE(_x) (NI_META_TABLE0 + (8 * (_x)))
+#define NI_META_ENTRIES 32
+#define NI_LOCAL_TABLE0 0x638100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NI_LOCAL_TABLE(_x) (NI_LOCAL_TABLE0 + (8 * (_x)))
+#define NI_LOCAL_ENTRIES 16
+#define NSRI_8BITMODE_SHFT 30
+#define NSRI_8BITMODE_MASK (UINT64_CAST 0x1 << 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NSRI_LINKUP_SHFT 29
+#define NSRI_LINKUP_MASK (UINT64_CAST 0x1 << 29)
+#define NSRI_DOWNREASON_SHFT 28  
+#define NSRI_DOWNREASON_MASK (UINT64_CAST 0x1 << 28)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NSRI_MORENODES_SHFT 18
+#define NSRI_MORENODES_MASK (UINT64_CAST 1 << 18)  
+#define MORE_MEMORY 0
+#define MORE_NODES 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NSRI_REGIONSIZE_SHFT 17
+#define NSRI_REGIONSIZE_MASK (UINT64_CAST 1 << 17)  
+#define REGIONSIZE_FINE 1
+#define REGIONSIZE_COARSE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NSRI_NODEID_SHFT 8
+#define NSRI_NODEID_MASK (UINT64_CAST 0x1ff << 8) 
+#define NSRI_REV_SHFT 4
+#define NSRI_REV_MASK (UINT64_CAST 0xf << 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NSRI_CHIPID_SHFT 0
+#define NSRI_CHIPID_MASK (UINT64_CAST 0xf)  
+#define NASID_TO_FINEREG_SHFT 0
+#define NASID_TO_COARSEREG_SHFT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPR_PORTRESET (UINT64_CAST 1 << 7)  
+#define NPR_LINKRESET (UINT64_CAST 1 << 1)  
+#define NPR_LOCALRESET (UINT64_CAST 1)  
+#define NPROT_RESETOK (UINT64_CAST 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NGP_MAXRETRY_SHFT 48  
+#define NGP_MAXRETRY_MASK (UINT64_CAST 0x3ff << 48)
+#define NGP_TAILTOWRAP_SHFT 32  
+#define NGP_TAILTOWRAP_MASK (UINT64_CAST 0xffff << 32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NGP_CREDITTOVAL_SHFT 16  
+#define NGP_CREDITTOVAL_MASK (UINT64_CAST 0xf << 16)
+#define NGP_TAILTOVAL_SHFT 4  
+#define NGP_TAILTOVAL_MASK (UINT64_CAST 0xf << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NDP_PORTTORESET (UINT64_CAST 1 << 18)  
+#define NDP_LLP8BITMODE (UINT64_CAST 1 << 12)  
+#define NDP_PORTDISABLE (UINT64_CAST 1 << 6)  
+#define NDP_SENDERROR (UINT64_CAST 1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NVP_PIOID_SHFT 40
+#define NVP_PIOID_MASK (UINT64_CAST 0x3ff << 40)
+#define NVP_WRITEID_SHFT 32
+#define NVP_WRITEID_MASK (UINT64_CAST 0xff << 32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NVP_ADDRESS_MASK (UINT64_CAST 0xffff8)  
+#define NVP_TYPE_SHFT 0
+#define NVP_TYPE_MASK (UINT64_CAST 0x3)
+#define NVS_VALID (UINT64_CAST 1 << 63)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NVS_OVERRUN (UINT64_CAST 1 << 62)
+#define NVS_TARGET_SHFT 51
+#define NVS_TARGET_MASK (UINT64_CAST 0x3ff << 51)
+#define NVS_PIOID_SHFT 40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NVS_PIOID_MASK (UINT64_CAST 0x3ff << 40)
+#define NVS_WRITEID_SHFT 32
+#define NVS_WRITEID_MASK (UINT64_CAST 0xff << 32)
+#define NVS_ADDRESS_MASK (UINT64_CAST 0xfffffff8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NVS_TYPE_SHFT 0
+#define NVS_TYPE_MASK (UINT64_CAST 0x7)
+#define NVS_ERROR_MASK (UINT64_CAST 0x4)  
+#define PIOTYPE_READ 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PIOTYPE_WRITE 1  
+#define PIOTYPE_UNDEFINED 2  
+#define PIOTYPE_EXCHANGE 3  
+#define PIOTYPE_ADDR_ERR 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PIOTYPE_CMD_ERR 5  
+#define PIOTYPE_PROT_ERR 6  
+#define PIOTYPE_UNKNOWN 7  
+#define NAGE_VCH_SHFT 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NAGE_VCH_MASK (UINT64_CAST 3 << 10)
+#define NAGE_CC_SHFT 8
+#define NAGE_CC_MASK (UINT64_CAST 3 << 8)
+#define NAGE_AGE_SHFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NAGE_AGE_MASK (UINT64_CAST 0xff)
+#define NAGE_MASK (NAGE_VCH_MASK | NAGE_CC_MASK | NAGE_AGE_MASK)
+#define VCHANNEL_A 0
+#define VCHANNEL_B 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VCHANNEL_ANY 2
+#define NPP_NULLTO_SHFT 10
+#define NPP_NULLTO_MASK (UINT64_CAST 0x3f << 16)
+#define NPP_MAXBURST_SHFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPP_MAXBURST_MASK (UINT64_CAST 0x3ff)
+#define NPP_RESET_DFLT_HUB20 ((UINT64_CAST 1 << NPP_NULLTO_SHFT) |   (UINT64_CAST 0x3f0 << NPP_MAXBURST_SHFT))
+#define NPP_RESET_DEFAULTS ((UINT64_CAST 6 << NPP_NULLTO_SHFT) |   (UINT64_CAST 0x3f0 << NPP_MAXBURST_SHFT))
+#define NPE_LINKRESET (UINT64_CAST 1 << 37)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPE_INTERNALERROR (UINT64_CAST 1 << 36)
+#define NPE_BADMESSAGE (UINT64_CAST 1 << 35)
+#define NPE_BADDEST (UINT64_CAST 1 << 34)
+#define NPE_FIFOOVERFLOW (UINT64_CAST 1 << 33)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPE_CREDITTO_SHFT 28
+#define NPE_CREDITTO_MASK (UINT64_CAST 0xf << 28)
+#define NPE_TAILTO_SHFT 24
+#define NPE_TAILTO_MASK (UINT64_CAST 0xf << 24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPE_RETRYCOUNT_SHFT 16
+#define NPE_RETRYCOUNT_MASK (UINT64_CAST 0xff << 16)
+#define NPE_CBERRCOUNT_SHFT 8
+#define NPE_CBERRCOUNT_MASK (UINT64_CAST 0xff << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPE_SNERRCOUNT_SHFT 0
+#define NPE_SNERRCOUNT_MASK (UINT64_CAST 0xff << 0)
+#define NPE_MASK 0x3effffffff
+#define NPE_COUNT_MAX 0xff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NPE_FATAL_ERRORS (NPE_LINKRESET | NPE_INTERNALERROR |   NPE_BADMESSAGE | NPE_BADDEST |   NPE_FIFOOVERFLOW | NPE_CREDITTO_MASK |   NPE_TAILTO_MASK)
+#define NMT_EXIT_PORT_MASK (UINT64_CAST 0xf)
+#define NLT_EXIT_PORT_MASK (UINT64_CAST 0xf)
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union hubni_port_error_u {
+ u64 nipe_reg_value;
+ struct {
+ u64 nipe_rsvd: 26,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ nipe_lnk_reset: 1,
+ nipe_intl_err: 1,
+ nipe_bad_msg: 1,
+ nipe_bad_dest: 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ nipe_fifo_ovfl: 1,
+ nipe_rsvd1: 1,
+ nipe_credit_to: 4,
+ nipe_tail_to: 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ nipe_retry_cnt: 8,
+ nipe_cb_cnt: 8,
+ nipe_sn_cnt: 8;
+ } nipe_fields_s;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+} hubni_port_error_t;
+#define NI_LLP_RETRY_MAX 0xff
+#define NI_LLP_CB_MAX 0xff
+#define NI_LLP_SN_MAX 0xff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubpi.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubpi.h
new file mode 100644
index 0000000..922c480
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/sn0/hubpi.h
@@ -0,0 +1,364 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_SN0_HUBPI_H
+#define _ASM_SN_SN0_HUBPI_H
+#include <linux/types.h>
+#define PI_BASE 0x000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CPU_PROTECT 0x000000  
+#define PI_PROT_OVERRD 0x000008  
+#define PI_IO_PROTECT 0x000010  
+#define PI_REGION_PRESENT 0x000018  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CPU_NUM 0x000020  
+#define PI_CALIAS_SIZE 0x000028  
+#define PI_MAX_CRB_TIMEOUT 0x000030  
+#define PI_CRB_SFACTOR 0x000038  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CALIAS_SIZE_0 0
+#define PI_CALIAS_SIZE_4K 1
+#define PI_CALIAS_SIZE_8K 2
+#define PI_CALIAS_SIZE_16K 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CALIAS_SIZE_32K 4
+#define PI_CALIAS_SIZE_64K 5
+#define PI_CALIAS_SIZE_128K 6
+#define PI_CALIAS_SIZE_256K 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CALIAS_SIZE_512K 8
+#define PI_CALIAS_SIZE_1M 9
+#define PI_CALIAS_SIZE_2M 10
+#define PI_CALIAS_SIZE_4M 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CALIAS_SIZE_8M 12
+#define PI_CALIAS_SIZE_16M 13
+#define PI_CALIAS_SIZE_32M 14
+#define PI_CALIAS_SIZE_64M 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CPU_PRESENT_A 0x000040  
+#define PI_CPU_PRESENT_B 0x000048  
+#define PI_CPU_ENABLE_A 0x000050  
+#define PI_CPU_ENABLE_B 0x000058  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_REPLY_LEVEL 0x000060  
+#define PI_HARDRESET_BIT 0x020068  
+#define PI_NMI_A 0x000070  
+#define PI_NMI_B 0x000078  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_NMI_OFFSET (PI_NMI_B - PI_NMI_A)
+#define PI_SOFTRESET 0x000080  
+#define PI_INT_PEND_MOD 0x000090  
+#define PI_INT_PEND0 0x000098  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_INT_PEND1 0x0000a0  
+#define PI_INT_MASK0_A 0x0000a8  
+#define PI_INT_MASK1_A 0x0000b0  
+#define PI_INT_MASK0_B 0x0000b8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_INT_MASK1_B 0x0000c0  
+#define PI_INT_MASK_OFFSET 0x10  
+#define PI_CC_PEND_SET_A 0x0000c8  
+#define PI_CC_PEND_SET_B 0x0000d0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_CC_PEND_CLR_A 0x0000d8  
+#define PI_CC_PEND_CLR_B 0x0000e0  
+#define PI_CC_MASK 0x0000e8  
+#define PI_INT_SET_OFFSET 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_RT_COUNT 0x030100  
+#define PI_RT_COMPARE_A 0x000108  
+#define PI_RT_COMPARE_B 0x000110  
+#define PI_PROFILE_COMPARE 0x000118  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_RT_PEND_A 0x000120  
+#define PI_RT_PEND_B 0x000128  
+#define PI_PROF_PEND_A 0x000130  
+#define PI_PROF_PEND_B 0x000138  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_RT_EN_A 0x000140  
+#define PI_RT_EN_B 0x000148  
+#define PI_PROF_EN_A 0x000150  
+#define PI_PROF_EN_B 0x000158  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_RT_LOCAL_CTRL 0x000160  
+#define PI_RT_FILTER_CTRL 0x000168  
+#define PI_COUNT_OFFSET 0x08  
+#define PI_BIST_WRITE_DATA 0x000200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_BIST_READ_DATA 0x000208  
+#define PI_BIST_COUNT_TARG 0x000210  
+#define PI_BIST_READY 0x000218  
+#define PI_BIST_SHIFT_LOAD 0x000220  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_BIST_SHIFT_UNLOAD 0x000228  
+#define PI_BIST_ENTER_RUN 0x000230  
+#define PI_GFX_PAGE_A 0x000300  
+#define PI_GFX_CREDIT_CNTR_A 0x000308  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_GFX_BIAS_A 0x000310  
+#define PI_GFX_INT_CNTR_A 0x000318  
+#define PI_GFX_INT_CMP_A 0x000320  
+#define PI_GFX_PAGE_B 0x000328  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_GFX_CREDIT_CNTR_B 0x000330  
+#define PI_GFX_BIAS_B 0x000338  
+#define PI_GFX_INT_CNTR_B 0x000340  
+#define PI_GFX_INT_CMP_B 0x000348  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_GFX_OFFSET (PI_GFX_PAGE_B - PI_GFX_PAGE_A)
+#define PI_GFX_PAGE_ENABLE 0x0000010000000000LL
+#define PI_ERR_INT_PEND 0x000400  
+#define PI_ERR_INT_MASK_A 0x000408  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_INT_MASK_B 0x000410  
+#define PI_ERR_STACK_ADDR_A 0x000418  
+#define PI_ERR_STACK_ADDR_B 0x000420  
+#define PI_ERR_STACK_SIZE 0x000428  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_STATUS0_A 0x000430  
+#define PI_ERR_STATUS0_A_RCLR 0x000438  
+#define PI_ERR_STATUS1_A 0x000440  
+#define PI_ERR_STATUS1_A_RCLR 0x000448  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_STATUS0_B 0x000450  
+#define PI_ERR_STATUS0_B_RCLR 0x000458  
+#define PI_ERR_STATUS1_B 0x000460  
+#define PI_ERR_STATUS1_B_RCLR 0x000468  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_SPOOL_CMP_A 0x000470  
+#define PI_SPOOL_CMP_B 0x000478  
+#define PI_CRB_TIMEOUT_A 0x000480  
+#define PI_CRB_TIMEOUT_B 0x000488  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_SYSAD_ERRCHK_EN 0x000490  
+#define PI_BAD_CHECK_BIT_A 0x000498  
+#define PI_BAD_CHECK_BIT_B 0x0004a0  
+#define PI_NACK_CNT_A 0x0004a8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_NACK_CNT_B 0x0004b0  
+#define PI_NACK_CMP 0x0004b8  
+#define PI_STACKADDR_OFFSET (PI_ERR_STACK_ADDR_B - PI_ERR_STACK_ADDR_A)
+#define PI_ERRSTAT_OFFSET (PI_ERR_STATUS0_B - PI_ERR_STATUS0_A)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_RDCLR_OFFSET (PI_ERR_STATUS0_A_RCLR - PI_ERR_STATUS0_A)
+#define PI_ERR_SPOOL_CMP_B 0x00000001  
+#define PI_ERR_SPOOL_CMP_A 0x00000002
+#define PI_ERR_SPUR_MSG_B 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_SPUR_MSG_A 0x00000008
+#define PI_ERR_WRB_TERR_B 0x00000010  
+#define PI_ERR_WRB_TERR_A 0x00000020
+#define PI_ERR_WRB_WERR_B 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_WRB_WERR_A 0x00000080
+#define PI_ERR_SYSSTATE_B 0x00000100  
+#define PI_ERR_SYSSTATE_A 0x00000200
+#define PI_ERR_SYSAD_DATA_B 0x00000400  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_SYSAD_DATA_A 0x00000800
+#define PI_ERR_SYSAD_ADDR_B 0x00001000  
+#define PI_ERR_SYSAD_ADDR_A 0x00002000
+#define PI_ERR_SYSCMD_DATA_B 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_SYSCMD_DATA_A 0x00008000
+#define PI_ERR_SYSCMD_ADDR_B 0x00010000  
+#define PI_ERR_SYSCMD_ADDR_A 0x00020000
+#define PI_ERR_BAD_SPOOL_B 0x00040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_BAD_SPOOL_A 0x00080000
+#define PI_ERR_UNCAC_UNCORR_B 0x00100000  
+#define PI_ERR_UNCAC_UNCORR_A 0x00200000
+#define PI_ERR_SYSSTATE_TAG_B 0x00400000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_SYSSTATE_TAG_A 0x00800000
+#define PI_ERR_MD_UNCORR 0x01000000  
+#define PI_ERR_CLEAR_ALL_A 0x00aaaaaa
+#define PI_ERR_CLEAR_ALL_B 0x00555555
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_FATAL_ERR_CPU_A (PI_ERR_SYSSTATE_TAG_A |   PI_ERR_BAD_SPOOL_A |   PI_ERR_SYSCMD_ADDR_A |   PI_ERR_SYSCMD_DATA_A |   PI_ERR_SYSAD_ADDR_A |   PI_ERR_SYSAD_DATA_A |   PI_ERR_SYSSTATE_A)
+#define PI_MISC_ERR_CPU_A (PI_ERR_UNCAC_UNCORR_A |   PI_ERR_WRB_WERR_A |   PI_ERR_WRB_TERR_A |   PI_ERR_SPUR_MSG_A |   PI_ERR_SPOOL_CMP_A)
+#define PI_FATAL_ERR_CPU_B (PI_ERR_SYSSTATE_TAG_B |   PI_ERR_BAD_SPOOL_B |   PI_ERR_SYSCMD_ADDR_B |   PI_ERR_SYSCMD_DATA_B |   PI_ERR_SYSAD_ADDR_B |   PI_ERR_SYSAD_DATA_B |   PI_ERR_SYSSTATE_B)
+#define PI_MISC_ERR_CPU_B (PI_ERR_UNCAC_UNCORR_B |   PI_ERR_WRB_WERR_B |   PI_ERR_WRB_TERR_B |   PI_ERR_SPUR_MSG_B |   PI_ERR_SPOOL_CMP_B)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_GENERIC (PI_ERR_MD_UNCORR)
+#define PI_ERR_ST0_TYPE_MASK 0x0000000000000007
+#define PI_ERR_ST0_TYPE_SHFT 0
+#define PI_ERR_ST0_REQNUM_MASK 0x0000000000000038
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST0_REQNUM_SHFT 3
+#define PI_ERR_ST0_SUPPL_MASK 0x000000000001ffc0
+#define PI_ERR_ST0_SUPPL_SHFT 6
+#define PI_ERR_ST0_CMD_MASK 0x0000000001fe0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST0_CMD_SHFT 17
+#define PI_ERR_ST0_ADDR_MASK 0x3ffffffffe000000
+#define PI_ERR_ST0_ADDR_SHFT 25
+#define PI_ERR_ST0_OVERRUN_MASK 0x4000000000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST0_OVERRUN_SHFT 62
+#define PI_ERR_ST0_VALID_MASK 0x8000000000000000
+#define PI_ERR_ST0_VALID_SHFT 63
+#define PI_ERR_ST1_SPOOL_MASK 0x00000000001fffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST1_SPOOL_SHFT 0
+#define PI_ERR_ST1_TOUTCNT_MASK 0x000000001fe00000
+#define PI_ERR_ST1_TOUTCNT_SHFT 21
+#define PI_ERR_ST1_INVCNT_MASK 0x0000007fe0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST1_INVCNT_SHFT 29
+#define PI_ERR_ST1_CRBNUM_MASK 0x0000038000000000
+#define PI_ERR_ST1_CRBNUM_SHFT 39
+#define PI_ERR_ST1_WRBRRB_MASK 0x0000040000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST1_WRBRRB_SHFT 42
+#define PI_ERR_ST1_CRBSTAT_MASK 0x001ff80000000000
+#define PI_ERR_ST1_CRBSTAT_SHFT 43
+#define PI_ERR_ST1_MSGSRC_MASK 0xffe0000000000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_ST1_MSGSRC_SHFT 53
+#define PI_ERR_STK_TYPE_MASK 0x0000000000000003
+#define PI_ERR_STK_TYPE_SHFT 0
+#define PI_ERR_STK_SUPPL_MASK 0x0000000000000038
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_STK_SUPPL_SHFT 3
+#define PI_ERR_STK_REQNUM_MASK 0x00000000000001c0
+#define PI_ERR_STK_REQNUM_SHFT 6
+#define PI_ERR_STK_CRBNUM_MASK 0x0000000000000e00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_STK_CRBNUM_SHFT 9
+#define PI_ERR_STK_WRBRRB_MASK 0x0000000000001000
+#define PI_ERR_STK_WRBRRB_SHFT 12
+#define PI_ERR_STK_CRBSTAT_MASK 0x00000000007fe000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_STK_CRBSTAT_SHFT 13
+#define PI_ERR_STK_CMD_MASK 0x000000007f800000
+#define PI_ERR_STK_CMD_SHFT 23
+#define PI_ERR_STK_ADDR_MASK 0xffffffff80000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_STK_ADDR_SHFT 31
+#define PI_ERR_RD_PRERR 1
+#define PI_ERR_RD_DERR 2
+#define PI_ERR_RD_TERR 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_WR_WERR 0
+#define PI_ERR_WR_PWERR 1
+#define PI_ERR_WR_TERR 3
+#define PI_ERR_RRB 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_ERR_WRB 1
+#define PI_ERR_ANY_CRB 2
+#define ERR_STK_ADDR_SHFT 7
+#define ERR_STAT0_ADDR_SHFT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_MIN_STACK_SIZE 4096  
+#define PI_STACK_SIZE_SHFT 12  
+#define ERR_STACK_SIZE_BYTES(_sz)   ((_sz) ? (PI_MIN_STACK_SIZE << ((_sz) - 1)) : 0)
+#ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct err_stack_format {
+ u64 sk_addr : 33,
+ sk_cmd : 8,
+ sk_crb_sts : 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sk_rw_rb : 1,
+ sk_crb_num : 3,
+ sk_t5_req : 3,
+ sk_suppl : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sk_err_type: 3;
+};
+typedef union pi_err_stack {
+ u64 pi_stk_word;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct err_stack_format pi_stk_fmt;
+} pi_err_stack_t;
+struct err_status0_format {
+ u64 s0_valid : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ s0_ovr_run : 1,
+ s0_addr : 37,
+ s0_cmd : 8,
+ s0_supl : 11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ s0_t5_req : 3,
+ s0_err_type: 3;
+};
+typedef union pi_err_stat0 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 pi_stat0_word;
+ struct err_status0_format pi_stat0_fmt;
+} pi_err_stat0_t;
+struct err_status1_format {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u64 s1_src : 11,
+ s1_crb_sts : 10,
+ s1_rw_rb : 1,
+ s1_crb_num : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ s1_inval_cnt:10,
+ s1_to_cnt : 8,
+ s1_spl_cnt : 21;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union pi_err_stat1 {
+ u64 pi_stat1_word;
+ struct err_status1_format pi_stat1_fmt;
+} pi_err_stat1_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef u64 rtc_time_t;
+#endif
+#define PI_SYSAD_ERRCHK_ECCGEN 0x01  
+#define PI_SYSAD_ERRCHK_QUALGEN 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_SYSAD_ERRCHK_SADP 0x04  
+#define PI_SYSAD_ERRCHK_CMDP 0x08  
+#define PI_SYSAD_ERRCHK_STATE 0x10  
+#define PI_SYSAD_ERRCHK_QUAL 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_SYSAD_CHECK_ALL 0x3f  
+#define HUB_IP_PEND0 0x0400
+#define HUB_IP_PEND1_CC 0x0800
+#define HUB_IP_RT 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HUB_IP_PROF 0x2000
+#define HUB_IP_ERROR 0x4000
+#define HUB_IP_MASK 0x7c00
+#define PRLC_USE_INT_SHFT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRLC_USE_INT_MASK (UINT64_CAST 1 << 16)
+#define PRLC_USE_INT (UINT64_CAST 1 << 16)
+#define PRLC_GCLK_SHFT 15
+#define PRLC_GCLK_MASK (UINT64_CAST 1 << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRLC_GCLK (UINT64_CAST 1 << 15)
+#define PRLC_GCLK_COUNT_SHFT 8
+#define PRLC_GCLK_COUNT_MASK (UINT64_CAST 0x7f << 8)
+#define PRLC_MAX_COUNT_SHFT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PRLC_MAX_COUNT_MASK (UINT64_CAST 0x7f << 1)
+#define PRLC_GCLK_EN_SHFT 0
+#define PRLC_GCLK_EN_MASK (UINT64_CAST 1)
+#define PRLC_GCLK_EN (UINT64_CAST 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PI_NACK_CNT_EN_SHFT 20
+#define PI_NACK_CNT_EN_MASK 0x100000
+#define PI_NACK_CNT_MASK 0x0fffff
+#define PI_NACK_CNT_MAX 0x0fffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sn/types.h b/ndk/platforms/android-9/arch-mips/include/asm/sn/types.h
new file mode 100644
index 0000000..4079458
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sn/types.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SN_TYPES_H
+#define _ASM_SN_TYPES_H
+#include <linux/types.h>
+typedef unsigned long cpuid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned long cnodemask_t;
+typedef signed short nasid_t;
+typedef signed short cnodeid_t;
+typedef signed char partid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef signed short moduleid_t;
+typedef signed short cmoduleid_t;
+typedef unsigned char clusterid_t;
+typedef unsigned long pfn_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef dev_t vertex_hdl_t;
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/socket.h b/ndk/platforms/android-9/arch-mips/include/asm/socket.h
new file mode 100644
index 0000000..ff8a3ba
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/socket.h
@@ -0,0 +1,71 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SOCKET_H
+#define _ASM_SOCKET_H
+#include <asm/sockios.h>
+#define SOL_SOCKET 0xffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_DEBUG 0x0001  
+#define SO_REUSEADDR 0x0004  
+#define SO_KEEPALIVE 0x0008  
+#define SO_DONTROUTE 0x0010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_BROADCAST 0x0020  
+#define SO_LINGER 0x0080  
+#define SO_OOBINLINE 0x0100  
+#define SO_TYPE 0x1008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_STYLE SO_TYPE  
+#define SO_ERROR 0x1007  
+#define SO_SNDBUF 0x1001  
+#define SO_RCVBUF 0x1002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_SNDLOWAT 0x1003  
+#define SO_RCVLOWAT 0x1004  
+#define SO_SNDTIMEO 0x1005  
+#define SO_RCVTIMEO 0x1006  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_ACCEPTCONN 0x1009
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_BSDCOMPAT 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_PASSCRED 17
+#define SO_PEERCRED 18
+#define SO_SECURITY_AUTHENTICATION 22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_SECURITY_ENCRYPTION_NETWORK 24
+#define SO_BINDTODEVICE 25
+#define SO_ATTACH_FILTER 26
+#define SO_DETACH_FILTER 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_PEERNAME 28
+#define SO_TIMESTAMP 29
+#define SCM_TIMESTAMP SO_TIMESTAMP
+#define SO_PEERSEC 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SO_SNDBUFFORCE 31
+#define SO_RCVBUFFORCE 33
+#define SO_PASSSEC 34
+#define SO_TIMESTAMPNS 35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+#define SO_MARK 36
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sockios.h b/ndk/platforms/android-9/arch-mips/include/asm/sockios.h
new file mode 100644
index 0000000..0e5a4ac
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sockios.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SOCKIOS_H
+#define _ASM_SOCKIOS_H
+#include <asm/ioctl.h>
+#define FIOGETOWN _IOR('f', 123, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FIOSETOWN _IOW('f', 124, int)
+#define SIOCATMARK _IOR('s', 7, int)
+#define SIOCSPGRP _IOW('s', 8, pid_t)
+#define SIOCGPGRP _IOR('s', 9, pid_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SIOCGSTAMP 0x8906  
+#define SIOCGSTAMPNS 0x8907  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/stat.h b/ndk/platforms/android-9/arch-mips/include/asm/stat.h
new file mode 100644
index 0000000..a8fee78
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/stat.h
@@ -0,0 +1,110 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_STAT_H
+#define _ASM_STAT_H
+#include <linux/types.h>
+#include <asm/sgidefs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
+struct stat {
+ unsigned st_dev;
+ long st_pad1[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ ino_t st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+ uid_t st_uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ gid_t st_gid;
+ unsigned st_rdev;
+ long st_pad2[2];
+ off_t st_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long st_pad3;
+ time_t st_atime;
+ long st_atime_nsec;
+ time_t st_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long st_mtime_nsec;
+ time_t st_ctime;
+ long st_ctime_nsec;
+ long st_blksize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long st_blocks;
+ long st_pad4[14];
+};
+struct stat64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long st_dev;
+ unsigned long st_pad0[3];
+ unsigned long long st_ino;
+ mode_t st_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ nlink_t st_nlink;
+ uid_t st_uid;
+ gid_t st_gid;
+ unsigned long st_rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long st_pad1[3];
+ long long st_size;
+ time_t st_atime;
+ unsigned long st_atime_nsec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ time_t st_mtime;
+ unsigned long st_mtime_nsec;
+ time_t st_ctime;
+ unsigned long st_ctime_nsec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long st_blksize;
+ unsigned long st_pad2;
+ long long st_blocks;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI64
+struct stat {
+ unsigned int st_dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int st_pad0[3];
+ unsigned long st_ino;
+ mode_t st_mode;
+ nlink_t st_nlink;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uid_t st_uid;
+ gid_t st_gid;
+ unsigned int st_rdev;
+ unsigned int st_pad1[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ off_t st_size;
+ unsigned int st_atime;
+ unsigned int st_atime_nsec;
+ unsigned int st_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int st_mtime_nsec;
+ unsigned int st_ctime;
+ unsigned int st_ctime_nsec;
+ unsigned int st_blksize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned int st_pad2;
+ unsigned long st_blocks;
+};
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define STAT_HAVE_NSEC 1
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/statfs.h b/ndk/platforms/android-9/arch-mips/include/asm/statfs.h
new file mode 100644
index 0000000..a6e5c6a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/statfs.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_STATFS_H
+#define _ASM_STATFS_H
+#include <linux/posix_types.h>
+#include <asm/sgidefs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct statfs {
+ long f_type;
+#define f_fstyp f_type
+ long f_bsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long f_frsize;
+ long f_blocks;
+ long f_bfree;
+ long f_files;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long f_ffree;
+ long f_bavail;
+ __kernel_fsid_t f_fsid;
+ long f_namelen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long f_spare[6];
+};
+#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_NABI32
+struct statfs64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 f_type;
+ __u32 f_bsize;
+ __u32 f_frsize;
+ __u32 __pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 f_blocks;
+ __u64 f_bfree;
+ __u64 f_files;
+ __u64 f_ffree;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 f_bavail;
+ __kernel_fsid_t f_fsid;
+ __u32 f_namelen;
+ __u32 f_spare[6];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#endif
+#if _MIPS_SIM == _MIPS_SIM_ABI64
+struct statfs64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long f_type;
+ long f_bsize;
+ long f_frsize;
+ long f_blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ long f_bfree;
+ long f_files;
+ long f_ffree;
+ long f_bavail;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __kernel_fsid_t f_fsid;
+ long f_namelen;
+ long f_spare[6];
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct compat_statfs64 {
+ __u32 f_type;
+ __u32 f_bsize;
+ __u32 f_frsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 __pad;
+ __u64 f_blocks;
+ __u64 f_bfree;
+ __u64 f_files;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 f_ffree;
+ __u64 f_bavail;
+ __kernel_fsid_t f_fsid;
+ __u32 f_namelen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 f_spare[6];
+};
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/string.h b/ndk/platforms/android-9/arch-mips/include/asm/string.h
new file mode 100644
index 0000000..856f61b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/string.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_STRING_H
+#define _ASM_STRING_H
+#define __HAVE_ARCH_MEMSET
+#define __HAVE_ARCH_MEMCPY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __HAVE_ARCH_MEMMOVE
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/sysmips.h b/ndk/platforms/android-9/arch-mips/include/asm/sysmips.h
new file mode 100644
index 0000000..665f67f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/sysmips.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SYSMIPS_H
+#define _ASM_SYSMIPS_H
+#define SETNAME 1  
+#define FLUSH_CACHE 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_FIXADE 7  
+#define MIPS_RDNVRAM 10  
+#define MIPS_ATOMIC_SET 2001  
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/system.h b/ndk/platforms/android-9/arch-mips/include/asm/system.h
new file mode 100644
index 0000000..b2b2760
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/system.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_SYSTEM_H
+#define _ASM_SYSTEM_H
+#include <linux/types.h>
+#include <linux/irqflags.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/addrspace.h>
+#include <asm/barrier.h>
+#include <asm/cmpxchg.h>
+#include <asm/cpu-features.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <asm/dsp.h>
+#include <asm/war.h>
+struct task_struct;
+#define __mips_mt_fpaff_switch_to(prev) do { (void) (prev); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define switch_to(prev, next, last)  do {   __mips_mt_fpaff_switch_to(prev);   if (cpu_has_dsp)   __save_dsp(prev);   (last) = resume(prev, next, task_thread_info(next));  } while (0)
+#define finish_arch_switch(prev)  do {   if (cpu_has_dsp)   __restore_dsp(current);   if (cpu_has_userlocal)   write_c0_userlocal(current_thread_info()->tp_value);  } while (0)
+#define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels
+#define xchg(ptr, x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef void (*vi_handler_t)(void);
+#define __ARCH_WANT_UNLOCKED_CTXSW
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/termbits.h b/ndk/platforms/android-9/arch-mips/include/asm/termbits.h
new file mode 100644
index 0000000..6a0add7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/termbits.h
@@ -0,0 +1,240 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_TERMBITS_H
+#define _ASM_TERMBITS_H
+#include <linux/posix_types.h>
+typedef unsigned char cc_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+#define NCCS 23
+struct termios {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ tcflag_t c_iflag;
+ tcflag_t c_oflag;
+ tcflag_t c_cflag;
+ tcflag_t c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ cc_t c_line;
+ cc_t c_cc[NCCS];
+};
+struct termios2 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ tcflag_t c_iflag;
+ tcflag_t c_oflag;
+ tcflag_t c_cflag;
+ tcflag_t c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ cc_t c_line;
+ cc_t c_cc[NCCS];
+ speed_t c_ispeed;
+ speed_t c_ospeed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct ktermios {
+ tcflag_t c_iflag;
+ tcflag_t c_oflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ tcflag_t c_cflag;
+ tcflag_t c_lflag;
+ cc_t c_line;
+ cc_t c_cc[NCCS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ speed_t c_ispeed;
+ speed_t c_ospeed;
+};
+#define VINTR 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VQUIT 1  
+#define VERASE 2  
+#define VKILL 3  
+#define VMIN 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VTIME 5  
+#define VEOL2 6  
+#define VSWTC 7  
+#define VSWTCH VSWTC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VSTART 8  
+#define VSTOP 9  
+#define VSUSP 10  
+#define VREPRINT 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VDISCARD 13  
+#define VWERASE 14  
+#define VLNEXT 15  
+#define VEOF 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VEOL 17  
+#define IGNBRK 0000001  
+#define BRKINT 0000002  
+#define IGNPAR 0000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define PARMRK 0000010  
+#define INPCK 0000020  
+#define ISTRIP 0000040  
+#define INLCR 0000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IGNCR 0000200  
+#define ICRNL 0000400  
+#define IUCLC 0001000  
+#define IXON 0002000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define IXANY 0004000  
+#define IXOFF 0010000  
+#define IMAXBEL 0020000  
+#define IUTF8 0040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define OPOST 0000001  
+#define OLCUC 0000002  
+#define ONLCR 0000004  
+#define OCRNL 0000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ONOCR 0000020
+#define ONLRET 0000040
+#define OFILL 0000100
+#define OFDEL 0000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define NLDLY 0000400
+#define NL0 0000000
+#define NL1 0000400
+#define CRDLY 0003000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CR0 0000000
+#define CR1 0001000
+#define CR2 0002000
+#define CR3 0003000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TABDLY 0014000
+#define TAB0 0000000
+#define TAB1 0004000
+#define TAB2 0010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TAB3 0014000
+#define XTABS 0014000
+#define BSDLY 0020000
+#define BS0 0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BS1 0020000
+#define VTDLY 0040000
+#define VT0 0000000
+#define VT1 0040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define FFDLY 0100000
+#define FF0 0000000
+#define FF1 0100000
+#define CBAUD 0010017
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B0 0000000  
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE 0000060  
+#define CS5 0000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CS6 0000020  
+#define CS7 0000040  
+#define CS8 0000060  
+#define CSTOPB 0000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CREAD 0000200  
+#define PARENB 0000400  
+#define PARODD 0001000  
+#define HUPCL 0002000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CLOCAL 0004000  
+#define CBAUDEX 0010000
+#define BOTHER 0010000
+#define B57600 0010001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B115200 0010002
+#define B230400 0010003
+#define B460800 0010004
+#define B500000 0010005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B576000 0010006
+#define B921600 0010007
+#define B1000000 0010010
+#define B1152000 0010011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B1500000 0010012
+#define B2000000 0010013
+#define B2500000 0010014
+#define B3000000 0010015
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define B3500000 0010016
+#define B4000000 0010017
+#define CIBAUD 002003600000  
+#define CMSPAR 010000000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CRTSCTS 020000000000  
+#define IBSHIFT 16  
+#define ISIG 0000001  
+#define ICANON 0000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XCASE 0000004
+#define ECHO 0000010  
+#define ECHOE 0000020  
+#define ECHOK 0000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ECHONL 0000100  
+#define NOFLSH 0000200  
+#define IEXTEN 0000400  
+#define ECHOCTL 0001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ECHOPRT 0002000  
+#define ECHOKE 0004000  
+#define FLUSHO 0020000
+#define PENDIN 0040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TOSTOP 0100000  
+#define ITOSTOP TOSTOP
+#define TIOCSER_TEMT 0x01  
+#define TCOOFF 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCOON 1  
+#define TCIOFF 2  
+#define TCION 3  
+#define TCIFLUSH 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCOFLUSH 1  
+#define TCIOFLUSH 2  
+#define TCSANOW TCSETS  
+#define TCSADRAIN TCSETSW  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TCSAFLUSH TCSETSF  
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/termios.h b/ndk/platforms/android-9/arch-mips/include/asm/termios.h
new file mode 100644
index 0000000..d6f230e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/termios.h
@@ -0,0 +1,109 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_TERMIOS_H
+#define _ASM_TERMIOS_H
+#include <asm/termbits.h>
+#include <asm/ioctls.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct sgttyb {
+ char sg_ispeed;
+ char sg_ospeed;
+ char sg_erase;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char sg_kill;
+ int sg_flags;
+};
+struct tchars {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char t_intrc;
+ char t_quitc;
+ char t_startc;
+ char t_stopc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char t_eofc;
+ char t_brkc;
+};
+struct ltchars {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char t_suspc;
+ char t_dsuspc;
+ char t_rprntc;
+ char t_flushc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char t_werasc;
+ char t_lnextc;
+};
+struct winsize {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short ws_row;
+ unsigned short ws_col;
+ unsigned short ws_xpixel;
+ unsigned short ws_ypixel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+#define NCC 8
+struct termio {
+ unsigned short c_iflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short c_oflag;
+ unsigned short c_cflag;
+ unsigned short c_lflag;
+ char c_line;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char c_cc[NCCS];
+};
+#define TIOCM_LE 0x001  
+#define TIOCM_DTR 0x002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCM_RTS 0x004  
+#define TIOCM_ST 0x010  
+#define TIOCM_SR 0x020  
+#define TIOCM_CTS 0x040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCM_CAR 0x100  
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RNG 0x200  
+#define TIOCM_RI TIOCM_RNG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TIOCM_DSR 0x400  
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/thread_info.h b/ndk/platforms/android-9/arch-mips/include/asm/thread_info.h
new file mode 100644
index 0000000..07fc66b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/thread_info.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_THREAD_INFO_H
+#define _ASM_THREAD_INFO_H
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/timex.h b/ndk/platforms/android-9/arch-mips/include/asm/timex.h
new file mode 100644
index 0000000..99baac6
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/timex.h
@@ -0,0 +1,21 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_TIMEX_H
+#define _ASM_TIMEX_H
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/tlb.h b/ndk/platforms/android-9/arch-mips/include/asm/tlb.h
new file mode 100644
index 0000000..6f65f1d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/tlb.h
@@ -0,0 +1,28 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_TLB_H
+#define __ASM_TLB_H
+#define tlb_start_vma(tlb, vma)   do {   if (!tlb->fullmm)   flush_cache_range(vma, vma->vm_start, vma->vm_end);   } while (0)
+#define tlb_end_vma(tlb, vma) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0)
+#define tlb_flush(tlb) flush_tlb_mm((tlb)->mm)
+#include <asm-generic/tlb.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/tlbflush.h b/ndk/platforms/android-9/arch-mips/include/asm/tlbflush.h
new file mode 100644
index 0000000..dab8e17
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/tlbflush.h
@@ -0,0 +1,30 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_TLBFLUSH_H
+#define __ASM_TLBFLUSH_H
+#include <linux/mm.h>
+#define flush_tlb_all() local_flush_tlb_all()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define flush_tlb_mm(mm) local_flush_tlb_mm(mm)
+#define flush_tlb_range(vma, vmaddr, end) local_flush_tlb_range(vma, vmaddr, end)
+#define flush_tlb_kernel_range(vmaddr,end)   local_flush_tlb_kernel_range(vmaddr, end)
+#define flush_tlb_page(vma, page) local_flush_tlb_page(vma, page)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define flush_tlb_one(vaddr) local_flush_tlb_one(vaddr)
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/topology.h b/ndk/platforms/android-9/arch-mips/include/asm/topology.h
new file mode 100644
index 0000000..550e423
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/topology.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_TOPOLOGY_H
+#define __ASM_TOPOLOGY_H
+#include <topology.h>
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/txx9irq.h b/ndk/platforms/android-9/arch-mips/include/asm/txx9irq.h
new file mode 100644
index 0000000..3272abe
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/txx9irq.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __ASM_TXX9IRQ_H
+#define __ASM_TXX9IRQ_H
+#include <irq.h>
+#define TXX9_IRQ_BASE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TXx9_MAX_IR 32
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/types.h b/ndk/platforms/android-9/arch-mips/include/asm/types.h
new file mode 100644
index 0000000..f67dd88
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/types.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_TYPES_H
+#define _ASM_TYPES_H
+#ifndef __ASSEMBLY__
+typedef unsigned short umode_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef __signed__ char __s8;
+typedef unsigned char __u8;
+typedef __signed__ short __s16;
+typedef unsigned short __u16;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef __signed__ int __s32;
+typedef unsigned int __u32;
+#if _MIPS_SZLONG == 64
+typedef __signed__ long __s64;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned long __u64;
+#else
+#ifdef __GNUC__
+typedef __signed__ long long __s64;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef unsigned long long __u64;
+#endif
+#endif
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/uaccess.h b/ndk/platforms/android-9/arch-mips/include/asm/uaccess.h
new file mode 100644
index 0000000..3703af3
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/uaccess.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_UACCESS_H
+#define _ASM_UACCESS_H
+#include <linux/kernel.h>
+#include <linux/errno.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/thread_info.h>
+#include <asm-generic/uaccess.h>
+#define KERNEL_DS ((mm_segment_t) { 0UL })
+#define USER_DS ((mm_segment_t) { __UA_LIMIT })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VERIFY_READ 0
+#define VERIFY_WRITE 1
+#define get_ds() (KERNEL_DS)
+#define get_fs() (current_thread_info()->addr_limit)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define set_fs(x) (current_thread_info()->addr_limit = (x))
+#define segment_eq(a, b) ((a).seg == (b).seg)
+#define __ua_size(size)   ((__builtin_constant_p(size) && (signed long) (size) > 0) ? 0 : (size))
+#define __access_mask get_fs().seg
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __access_ok(addr, size, mask)   (((signed long)((mask) & ((addr) | ((addr) + (size)) | __ua_size(size)))) == 0)
+#define access_ok(type, addr, size)   likely(__access_ok((unsigned long)(addr), (size), __access_mask))
+#define put_user(x,ptr)   __put_user_check((x), (ptr), sizeof(*(ptr)))
+#define get_user(x,ptr)   __get_user_check((x), (ptr), sizeof(*(ptr)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __put_user(x,ptr)   __put_user_nocheck((x), (ptr), sizeof(*(ptr)))
+#define __get_user(x,ptr)   __get_user_nocheck((x), (ptr), sizeof(*(ptr)))
+struct __large_struct { unsigned long buf[100]; };
+#define __m(x) (*(struct __large_struct __user *)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __get_user_common(val, size, ptr)  do {   switch (size) {   case 1: __get_user_asm(val, "lb", ptr); break;   case 2: __get_user_asm(val, "lh", ptr); break;   case 4: __get_user_asm(val, "lw", ptr); break;   case 8: __GET_USER_DW(val, ptr); break;   default: __get_user_unknown(); break;   }  } while (0)
+#define __get_user_nocheck(x, ptr, size)  ({   long __gu_err;     __get_user_common((x), size, ptr);   __gu_err;  })
+#define __get_user_check(x, ptr, size)  ({   long __gu_err = -EFAULT;   const __typeof__(*(ptr)) __user * __gu_ptr = (ptr);     if (likely(access_ok(VERIFY_READ, __gu_ptr, size)))   __get_user_common((x), size, __gu_ptr);     __gu_err;  })
+#define __get_user_asm(val, insn, addr)  {   long __gu_tmp;     __asm__ __volatile__(   "1:	" insn "	%1, %3				\n"   "2:							\n"   "	.section .fixup,\"ax\"				\n"   "3:	li	%0, %4					\n"   "	j	2b					\n"   "	.previous					\n"   "	.section __ex_table,\"a\"			\n"   "	"__UA_ADDR "\t1b, 3b				\n"   "	.previous					\n"   : "=r" (__gu_err), "=r" (__gu_tmp)   : "0" (0), "o" (__m(addr)), "i" (-EFAULT));     (val) = (__typeof__(*(addr))) __gu_tmp;  }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __get_user_asm_ll32(val, addr)  {   union {   unsigned long long l;   __typeof__(*(addr)) t;   } __gu_tmp;     __asm__ __volatile__(   "1:	lw	%1, (%3)				\n"   "2:	lw	%D1, 4(%3)				\n"   "3:	.section	.fixup,\"ax\"			\n"   "4:	li	%0, %4					\n"   "	move	%1, $0					\n"   "	move	%D1, $0					\n"   "	j	3b					\n"   "	.previous					\n"   "	.section	__ex_table,\"a\"		\n"   "	" __UA_ADDR "	1b, 4b				\n"   "	" __UA_ADDR "	2b, 4b				\n"   "	.previous					\n"   : "=r" (__gu_err), "=&r" (__gu_tmp.l)   : "0" (0), "r" (addr), "i" (-EFAULT));     (val) = __gu_tmp.t;  }
+#define __put_user_nocheck(x, ptr, size)  ({   __typeof__(*(ptr)) __pu_val;   long __pu_err = 0;     __pu_val = (x);   switch (size) {   case 1: __put_user_asm("sb", ptr); break;   case 2: __put_user_asm("sh", ptr); break;   case 4: __put_user_asm("sw", ptr); break;   case 8: __PUT_USER_DW(ptr); break;   default: __put_user_unknown(); break;   }   __pu_err;  })
+#define __put_user_check(x, ptr, size)  ({   __typeof__(*(ptr)) __user *__pu_addr = (ptr);   __typeof__(*(ptr)) __pu_val = (x);   long __pu_err = -EFAULT;     if (likely(access_ok(VERIFY_WRITE, __pu_addr, size))) {   switch (size) {   case 1: __put_user_asm("sb", __pu_addr); break;   case 2: __put_user_asm("sh", __pu_addr); break;   case 4: __put_user_asm("sw", __pu_addr); break;   case 8: __PUT_USER_DW(__pu_addr); break;   default: __put_user_unknown(); break;   }   }   __pu_err;  })
+#define __put_user_asm(insn, ptr)  {   __asm__ __volatile__(   "1:	" insn "	%z2, %3		# __put_user_asm\n"   "2:							\n"   "	.section	.fixup,\"ax\"			\n"   "3:	li	%0, %4					\n"   "	j	2b					\n"   "	.previous					\n"   "	.section	__ex_table,\"a\"		\n"   "	" __UA_ADDR "	1b, 3b				\n"   "	.previous					\n"   : "=r" (__pu_err)   : "0" (0), "Jr" (__pu_val), "o" (__m(ptr)),   "i" (-EFAULT));  }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __put_user_asm_ll32(ptr)  {   __asm__ __volatile__(   "1:	sw	%2, (%3)	# __put_user_asm_ll32	\n"   "2:	sw	%D2, 4(%3)				\n"   "3:							\n"   "	.section	.fixup,\"ax\"			\n"   "4:	li	%0, %4					\n"   "	j	3b					\n"   "	.previous					\n"   "	.section	__ex_table,\"a\"		\n"   "	" __UA_ADDR "	1b, 4b				\n"   "	" __UA_ADDR "	2b, 4b				\n"   "	.previous"   : "=r" (__pu_err)   : "0" (0), "r" (__pu_val), "r" (ptr),   "i" (-EFAULT));  }
+#ifdef MODULE
+#define __MODULE_JAL(destination)   ".set\tnoat\n\t"   __UA_LA "\t$1, " #destination "\n\t"   "jalr\t$1\n\t"   ".set\tat\n\t"
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __MODULE_JAL(destination)   "jal\t" #destination "\n\t"
+#endif
+#define DADDI_SCRATCH "$0"
+#define __invoke_copy_to_user(to, from, n)  ({   register void __user *__cu_to_r __asm__("$4");   register const void *__cu_from_r __asm__("$5");   register long __cu_len_r __asm__("$6");     __cu_to_r = (to);   __cu_from_r = (from);   __cu_len_r = (n);   __asm__ __volatile__(   __MODULE_JAL(__copy_user)   : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r)   :   : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31",   DADDI_SCRATCH, "memory");   __cu_len_r;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __copy_to_user(to, from, n)  ({   void __user *__cu_to;   const void *__cu_from;   long __cu_len;     might_sleep();   __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   __cu_len = __invoke_copy_to_user(__cu_to, __cu_from, __cu_len);   __cu_len;  })
+#define __copy_to_user_inatomic(to, from, n)  ({   void __user *__cu_to;   const void *__cu_from;   long __cu_len;     __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   __cu_len = __invoke_copy_to_user(__cu_to, __cu_from, __cu_len);   __cu_len;  })
+#define __copy_from_user_inatomic(to, from, n)  ({   void *__cu_to;   const void __user *__cu_from;   long __cu_len;     __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   __cu_len = __invoke_copy_from_user_inatomic(__cu_to, __cu_from,   __cu_len);   __cu_len;  })
+#define copy_to_user(to, from, n)  ({   void __user *__cu_to;   const void *__cu_from;   long __cu_len;     might_sleep();   __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   if (access_ok(VERIFY_WRITE, __cu_to, __cu_len))   __cu_len = __invoke_copy_to_user(__cu_to, __cu_from,   __cu_len);   __cu_len;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __invoke_copy_from_user(to, from, n)  ({   register void *__cu_to_r __asm__("$4");   register const void __user *__cu_from_r __asm__("$5");   register long __cu_len_r __asm__("$6");     __cu_to_r = (to);   __cu_from_r = (from);   __cu_len_r = (n);   __asm__ __volatile__(   ".set\tnoreorder\n\t"   __MODULE_JAL(__copy_user)   ".set\tnoat\n\t"   __UA_ADDU "\t$1, %1, %2\n\t"   ".set\tat\n\t"   ".set\treorder"   : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r)   :   : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31",   DADDI_SCRATCH, "memory");   __cu_len_r;  })
+#define __invoke_copy_from_user_inatomic(to, from, n)  ({   register void *__cu_to_r __asm__("$4");   register const void __user *__cu_from_r __asm__("$5");   register long __cu_len_r __asm__("$6");     __cu_to_r = (to);   __cu_from_r = (from);   __cu_len_r = (n);   __asm__ __volatile__(   ".set\tnoreorder\n\t"   __MODULE_JAL(__copy_user_inatomic)   ".set\tnoat\n\t"   __UA_ADDU "\t$1, %1, %2\n\t"   ".set\tat\n\t"   ".set\treorder"   : "+r" (__cu_to_r), "+r" (__cu_from_r), "+r" (__cu_len_r)   :   : "$8", "$9", "$10", "$11", "$12", "$15", "$24", "$31",   DADDI_SCRATCH, "memory");   __cu_len_r;  })
+#define __copy_from_user(to, from, n)  ({   void *__cu_to;   const void __user *__cu_from;   long __cu_len;     might_sleep();   __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   __cu_len = __invoke_copy_from_user(__cu_to, __cu_from,   __cu_len);   __cu_len;  })
+#define copy_from_user(to, from, n)  ({   void *__cu_to;   const void __user *__cu_from;   long __cu_len;     might_sleep();   __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   if (access_ok(VERIFY_READ, __cu_from, __cu_len))   __cu_len = __invoke_copy_from_user(__cu_to, __cu_from,   __cu_len);   __cu_len;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __copy_in_user(to, from, n) __copy_from_user(to, from, n)
+#define copy_in_user(to, from, n)  ({   void __user *__cu_to;   const void __user *__cu_from;   long __cu_len;     might_sleep();   __cu_to = (to);   __cu_from = (from);   __cu_len = (n);   if (likely(access_ok(VERIFY_READ, __cu_from, __cu_len) &&   access_ok(VERIFY_WRITE, __cu_to, __cu_len)))   __cu_len = __invoke_copy_from_user(__cu_to, __cu_from,   __cu_len);   __cu_len;  })
+#define clear_user(addr,n)  ({   void __user * __cl_addr = (addr);   unsigned long __cl_size = (n);   if (__cl_size && access_ok(VERIFY_WRITE,   ((unsigned long)(__cl_addr)), __cl_size))   __cl_size = __clear_user(__cl_addr, __cl_size);   __cl_size;  })
+struct exception_table_entry
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+{
+ unsigned long insn;
+ unsigned long nextinsn;
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/unaligned.h b/ndk/platforms/android-9/arch-mips/include/asm/unaligned.h
new file mode 100644
index 0000000..3024aeb
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/unaligned.h
@@ -0,0 +1,41 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_MIPS_UNALIGNED_H
+#define _ASM_MIPS_UNALIGNED_H
+#include <linux/compiler.h>
+#ifdef __MIPSEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/unaligned/be_struct.h>
+#include <linux/unaligned/le_byteshift.h>
+#include <linux/unaligned/generic.h>
+#define get_unaligned __get_unaligned_be
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define put_unaligned __put_unaligned_be
+#elif defined(__MIPSEL__)
+#include <linux/unaligned/le_struct.h>
+#include <linux/unaligned/be_byteshift.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#include <linux/unaligned/generic.h>
+#define get_unaligned __get_unaligned_le
+#define put_unaligned __put_unaligned_le
+#else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#error "MIPS, but neither __MIPSEB__, nor __MIPSEL__???"
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/unistd.h b/ndk/platforms/android-9/arch-mips/include/asm/unistd.h
new file mode 100644
index 0000000..38e84cc
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/unistd.h
@@ -0,0 +1,1181 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_UNISTD_H
+#define _ASM_UNISTD_H
+#include <asm/sgidefs.h>
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_Linux 4000
+#define __NR_syscall (__NR_Linux + 0)
+#define __NR_exit (__NR_Linux + 1)
+#define __NR_fork (__NR_Linux + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_read (__NR_Linux + 3)
+#define __NR_write (__NR_Linux + 4)
+#define __NR_open (__NR_Linux + 5)
+#define __NR_close (__NR_Linux + 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_waitpid (__NR_Linux + 7)
+#define __NR_creat (__NR_Linux + 8)
+#define __NR_link (__NR_Linux + 9)
+#define __NR_unlink (__NR_Linux + 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_execve (__NR_Linux + 11)
+#define __NR_chdir (__NR_Linux + 12)
+#define __NR_time (__NR_Linux + 13)
+#define __NR_mknod (__NR_Linux + 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chmod (__NR_Linux + 15)
+#define __NR_lchown (__NR_Linux + 16)
+#define __NR_break (__NR_Linux + 17)
+#define __NR_unused18 (__NR_Linux + 18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lseek (__NR_Linux + 19)
+#define __NR_getpid (__NR_Linux + 20)
+#define __NR_mount (__NR_Linux + 21)
+#define __NR_umount (__NR_Linux + 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setuid (__NR_Linux + 23)
+#define __NR_getuid (__NR_Linux + 24)
+#define __NR_stime (__NR_Linux + 25)
+#define __NR_ptrace (__NR_Linux + 26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_alarm (__NR_Linux + 27)
+#define __NR_unused28 (__NR_Linux + 28)
+#define __NR_pause (__NR_Linux + 29)
+#define __NR_utime (__NR_Linux + 30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_stty (__NR_Linux + 31)
+#define __NR_gtty (__NR_Linux + 32)
+#define __NR_access (__NR_Linux + 33)
+#define __NR_nice (__NR_Linux + 34)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_ftime (__NR_Linux + 35)
+#define __NR_sync (__NR_Linux + 36)
+#define __NR_kill (__NR_Linux + 37)
+#define __NR_rename (__NR_Linux + 38)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mkdir (__NR_Linux + 39)
+#define __NR_rmdir (__NR_Linux + 40)
+#define __NR_dup (__NR_Linux + 41)
+#define __NR_pipe (__NR_Linux + 42)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_times (__NR_Linux + 43)
+#define __NR_prof (__NR_Linux + 44)
+#define __NR_brk (__NR_Linux + 45)
+#define __NR_setgid (__NR_Linux + 46)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getgid (__NR_Linux + 47)
+#define __NR_signal (__NR_Linux + 48)
+#define __NR_geteuid (__NR_Linux + 49)
+#define __NR_getegid (__NR_Linux + 50)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_acct (__NR_Linux + 51)
+#define __NR_umount2 (__NR_Linux + 52)
+#define __NR_lock (__NR_Linux + 53)
+#define __NR_ioctl (__NR_Linux + 54)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fcntl (__NR_Linux + 55)
+#define __NR_mpx (__NR_Linux + 56)
+#define __NR_setpgid (__NR_Linux + 57)
+#define __NR_ulimit (__NR_Linux + 58)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_unused59 (__NR_Linux + 59)
+#define __NR_umask (__NR_Linux + 60)
+#define __NR_chroot (__NR_Linux + 61)
+#define __NR_ustat (__NR_Linux + 62)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_dup2 (__NR_Linux + 63)
+#define __NR_getppid (__NR_Linux + 64)
+#define __NR_getpgrp (__NR_Linux + 65)
+#define __NR_setsid (__NR_Linux + 66)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sigaction (__NR_Linux + 67)
+#define __NR_sgetmask (__NR_Linux + 68)
+#define __NR_ssetmask (__NR_Linux + 69)
+#define __NR_setreuid (__NR_Linux + 70)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setregid (__NR_Linux + 71)
+#define __NR_sigsuspend (__NR_Linux + 72)
+#define __NR_sigpending (__NR_Linux + 73)
+#define __NR_sethostname (__NR_Linux + 74)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setrlimit (__NR_Linux + 75)
+#define __NR_getrlimit (__NR_Linux + 76)
+#define __NR_getrusage (__NR_Linux + 77)
+#define __NR_gettimeofday (__NR_Linux + 78)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_settimeofday (__NR_Linux + 79)
+#define __NR_getgroups (__NR_Linux + 80)
+#define __NR_setgroups (__NR_Linux + 81)
+#define __NR_reserved82 (__NR_Linux + 82)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_symlink (__NR_Linux + 83)
+#define __NR_unused84 (__NR_Linux + 84)
+#define __NR_readlink (__NR_Linux + 85)
+#define __NR_uselib (__NR_Linux + 86)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_swapon (__NR_Linux + 87)
+#define __NR_reboot (__NR_Linux + 88)
+#define __NR_readdir (__NR_Linux + 89)
+#define __NR_mmap (__NR_Linux + 90)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_munmap (__NR_Linux + 91)
+#define __NR_truncate (__NR_Linux + 92)
+#define __NR_ftruncate (__NR_Linux + 93)
+#define __NR_fchmod (__NR_Linux + 94)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fchown (__NR_Linux + 95)
+#define __NR_getpriority (__NR_Linux + 96)
+#define __NR_setpriority (__NR_Linux + 97)
+#define __NR_profil (__NR_Linux + 98)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_statfs (__NR_Linux + 99)
+#define __NR_fstatfs (__NR_Linux + 100)
+#define __NR_ioperm (__NR_Linux + 101)
+#define __NR_socketcall (__NR_Linux + 102)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_syslog (__NR_Linux + 103)
+#define __NR_setitimer (__NR_Linux + 104)
+#define __NR_getitimer (__NR_Linux + 105)
+#define __NR_stat (__NR_Linux + 106)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lstat (__NR_Linux + 107)
+#define __NR_fstat (__NR_Linux + 108)
+#define __NR_unused109 (__NR_Linux + 109)
+#define __NR_iopl (__NR_Linux + 110)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_vhangup (__NR_Linux + 111)
+#define __NR_idle (__NR_Linux + 112)
+#define __NR_vm86 (__NR_Linux + 113)
+#define __NR_wait4 (__NR_Linux + 114)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_swapoff (__NR_Linux + 115)
+#define __NR_sysinfo (__NR_Linux + 116)
+#define __NR_ipc (__NR_Linux + 117)
+#define __NR_fsync (__NR_Linux + 118)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sigreturn (__NR_Linux + 119)
+#define __NR_clone (__NR_Linux + 120)
+#define __NR_setdomainname (__NR_Linux + 121)
+#define __NR_uname (__NR_Linux + 122)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_modify_ldt (__NR_Linux + 123)
+#define __NR_adjtimex (__NR_Linux + 124)
+#define __NR_mprotect (__NR_Linux + 125)
+#define __NR_sigprocmask (__NR_Linux + 126)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_create_module (__NR_Linux + 127)
+#define __NR_init_module (__NR_Linux + 128)
+#define __NR_delete_module (__NR_Linux + 129)
+#define __NR_get_kernel_syms (__NR_Linux + 130)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_quotactl (__NR_Linux + 131)
+#define __NR_getpgid (__NR_Linux + 132)
+#define __NR_fchdir (__NR_Linux + 133)
+#define __NR_bdflush (__NR_Linux + 134)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sysfs (__NR_Linux + 135)
+#define __NR_personality (__NR_Linux + 136)
+#define __NR_afs_syscall (__NR_Linux + 137)  
+#define __NR_setfsuid (__NR_Linux + 138)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setfsgid (__NR_Linux + 139)
+#define __NR__llseek (__NR_Linux + 140)
+#define __NR_getdents (__NR_Linux + 141)
+#define __NR__newselect (__NR_Linux + 142)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_flock (__NR_Linux + 143)
+#define __NR_msync (__NR_Linux + 144)
+#define __NR_readv (__NR_Linux + 145)
+#define __NR_writev (__NR_Linux + 146)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_cacheflush (__NR_Linux + 147)
+#define __NR_cachectl (__NR_Linux + 148)
+#define __NR_sysmips (__NR_Linux + 149)
+#define __NR_unused150 (__NR_Linux + 150)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsid (__NR_Linux + 151)
+#define __NR_fdatasync (__NR_Linux + 152)
+#define __NR__sysctl (__NR_Linux + 153)
+#define __NR_mlock (__NR_Linux + 154)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_munlock (__NR_Linux + 155)
+#define __NR_mlockall (__NR_Linux + 156)
+#define __NR_munlockall (__NR_Linux + 157)
+#define __NR_sched_setparam (__NR_Linux + 158)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_getparam (__NR_Linux + 159)
+#define __NR_sched_setscheduler (__NR_Linux + 160)
+#define __NR_sched_getscheduler (__NR_Linux + 161)
+#define __NR_sched_yield (__NR_Linux + 162)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_get_priority_max (__NR_Linux + 163)
+#define __NR_sched_get_priority_min (__NR_Linux + 164)
+#define __NR_sched_rr_get_interval (__NR_Linux + 165)
+#define __NR_nanosleep (__NR_Linux + 166)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mremap (__NR_Linux + 167)
+#define __NR_accept (__NR_Linux + 168)
+#define __NR_bind (__NR_Linux + 169)
+#define __NR_connect (__NR_Linux + 170)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getpeername (__NR_Linux + 171)
+#define __NR_getsockname (__NR_Linux + 172)
+#define __NR_getsockopt (__NR_Linux + 173)
+#define __NR_listen (__NR_Linux + 174)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_recv (__NR_Linux + 175)
+#define __NR_recvfrom (__NR_Linux + 176)
+#define __NR_recvmsg (__NR_Linux + 177)
+#define __NR_send (__NR_Linux + 178)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sendmsg (__NR_Linux + 179)
+#define __NR_sendto (__NR_Linux + 180)
+#define __NR_setsockopt (__NR_Linux + 181)
+#define __NR_shutdown (__NR_Linux + 182)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_socket (__NR_Linux + 183)
+#define __NR_socketpair (__NR_Linux + 184)
+#define __NR_setresuid (__NR_Linux + 185)
+#define __NR_getresuid (__NR_Linux + 186)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_query_module (__NR_Linux + 187)
+#define __NR_poll (__NR_Linux + 188)
+#define __NR_nfsservctl (__NR_Linux + 189)
+#define __NR_setresgid (__NR_Linux + 190)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getresgid (__NR_Linux + 191)
+#define __NR_prctl (__NR_Linux + 192)
+#define __NR_rt_sigreturn (__NR_Linux + 193)
+#define __NR_rt_sigaction (__NR_Linux + 194)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigprocmask (__NR_Linux + 195)
+#define __NR_rt_sigpending (__NR_Linux + 196)
+#define __NR_rt_sigtimedwait (__NR_Linux + 197)
+#define __NR_rt_sigqueueinfo (__NR_Linux + 198)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigsuspend (__NR_Linux + 199)
+#define __NR_pread64 (__NR_Linux + 200)
+#define __NR_pwrite64 (__NR_Linux + 201)
+#define __NR_chown (__NR_Linux + 202)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getcwd (__NR_Linux + 203)
+#define __NR_capget (__NR_Linux + 204)
+#define __NR_capset (__NR_Linux + 205)
+#define __NR_sigaltstack (__NR_Linux + 206)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sendfile (__NR_Linux + 207)
+#define __NR_getpmsg (__NR_Linux + 208)
+#define __NR_putpmsg (__NR_Linux + 209)
+#define __NR_mmap2 (__NR_Linux + 210)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_truncate64 (__NR_Linux + 211)
+#define __NR_ftruncate64 (__NR_Linux + 212)
+#define __NR_stat64 (__NR_Linux + 213)
+#define __NR_lstat64 (__NR_Linux + 214)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fstat64 (__NR_Linux + 215)
+#define __NR_pivot_root (__NR_Linux + 216)
+#define __NR_mincore (__NR_Linux + 217)
+#define __NR_madvise (__NR_Linux + 218)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getdents64 (__NR_Linux + 219)
+#define __NR_fcntl64 (__NR_Linux + 220)
+#define __NR_reserved221 (__NR_Linux + 221)
+#define __NR_gettid (__NR_Linux + 222)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_readahead (__NR_Linux + 223)
+#define __NR_setxattr (__NR_Linux + 224)
+#define __NR_lsetxattr (__NR_Linux + 225)
+#define __NR_fsetxattr (__NR_Linux + 226)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getxattr (__NR_Linux + 227)
+#define __NR_lgetxattr (__NR_Linux + 228)
+#define __NR_fgetxattr (__NR_Linux + 229)
+#define __NR_listxattr (__NR_Linux + 230)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_llistxattr (__NR_Linux + 231)
+#define __NR_flistxattr (__NR_Linux + 232)
+#define __NR_removexattr (__NR_Linux + 233)
+#define __NR_lremovexattr (__NR_Linux + 234)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fremovexattr (__NR_Linux + 235)
+#define __NR_tkill (__NR_Linux + 236)
+#define __NR_sendfile64 (__NR_Linux + 237)
+#define __NR_futex (__NR_Linux + 238)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_setaffinity (__NR_Linux + 239)
+#define __NR_sched_getaffinity (__NR_Linux + 240)
+#define __NR_io_setup (__NR_Linux + 241)
+#define __NR_io_destroy (__NR_Linux + 242)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_io_getevents (__NR_Linux + 243)
+#define __NR_io_submit (__NR_Linux + 244)
+#define __NR_io_cancel (__NR_Linux + 245)
+#define __NR_exit_group (__NR_Linux + 246)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lookup_dcookie (__NR_Linux + 247)
+#define __NR_epoll_create (__NR_Linux + 248)
+#define __NR_epoll_ctl (__NR_Linux + 249)
+#define __NR_epoll_wait (__NR_Linux + 250)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_remap_file_pages (__NR_Linux + 251)
+#define __NR_set_tid_address (__NR_Linux + 252)
+#define __NR_restart_syscall (__NR_Linux + 253)
+#define __NR_fadvise64 (__NR_Linux + 254)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_statfs64 (__NR_Linux + 255)
+#define __NR_fstatfs64 (__NR_Linux + 256)
+#define __NR_timer_create (__NR_Linux + 257)
+#define __NR_timer_settime (__NR_Linux + 258)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_gettime (__NR_Linux + 259)
+#define __NR_timer_getoverrun (__NR_Linux + 260)
+#define __NR_timer_delete (__NR_Linux + 261)
+#define __NR_clock_settime (__NR_Linux + 262)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_clock_gettime (__NR_Linux + 263)
+#define __NR_clock_getres (__NR_Linux + 264)
+#define __NR_clock_nanosleep (__NR_Linux + 265)
+#define __NR_tgkill (__NR_Linux + 266)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utimes (__NR_Linux + 267)
+#define __NR_mbind (__NR_Linux + 268)
+#define __NR_get_mempolicy (__NR_Linux + 269)
+#define __NR_set_mempolicy (__NR_Linux + 270)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_open (__NR_Linux + 271)
+#define __NR_mq_unlink (__NR_Linux + 272)
+#define __NR_mq_timedsend (__NR_Linux + 273)
+#define __NR_mq_timedreceive (__NR_Linux + 274)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_notify (__NR_Linux + 275)
+#define __NR_mq_getsetattr (__NR_Linux + 276)
+#define __NR_vserver (__NR_Linux + 277)
+#define __NR_waitid (__NR_Linux + 278)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_add_key (__NR_Linux + 280)
+#define __NR_request_key (__NR_Linux + 281)
+#define __NR_keyctl (__NR_Linux + 282)
+#define __NR_set_thread_area (__NR_Linux + 283)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_inotify_init (__NR_Linux + 284)
+#define __NR_inotify_add_watch (__NR_Linux + 285)
+#define __NR_inotify_rm_watch (__NR_Linux + 286)
+#define __NR_migrate_pages (__NR_Linux + 287)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_openat (__NR_Linux + 288)
+#define __NR_mkdirat (__NR_Linux + 289)
+#define __NR_mknodat (__NR_Linux + 290)
+#define __NR_fchownat (__NR_Linux + 291)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_futimesat (__NR_Linux + 292)
+#define __NR_fstatat64 (__NR_Linux + 293)
+#define __NR_unlinkat (__NR_Linux + 294)
+#define __NR_renameat (__NR_Linux + 295)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_linkat (__NR_Linux + 296)
+#define __NR_symlinkat (__NR_Linux + 297)
+#define __NR_readlinkat (__NR_Linux + 298)
+#define __NR_fchmodat (__NR_Linux + 299)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_faccessat (__NR_Linux + 300)
+#define __NR_pselect6 (__NR_Linux + 301)
+#define __NR_ppoll (__NR_Linux + 302)
+#define __NR_unshare (__NR_Linux + 303)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_splice (__NR_Linux + 304)
+#define __NR_sync_file_range (__NR_Linux + 305)
+#define __NR_tee (__NR_Linux + 306)
+#define __NR_vmsplice (__NR_Linux + 307)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_move_pages (__NR_Linux + 308)
+#define __NR_set_robust_list (__NR_Linux + 309)
+#define __NR_get_robust_list (__NR_Linux + 310)
+#define __NR_kexec_load (__NR_Linux + 311)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getcpu (__NR_Linux + 312)
+#define __NR_epoll_pwait (__NR_Linux + 313)
+#define __NR_ioprio_set (__NR_Linux + 314)
+#define __NR_ioprio_get (__NR_Linux + 315)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utimensat (__NR_Linux + 316)
+#define __NR_signalfd (__NR_Linux + 317)
+#define __NR_timerfd (__NR_Linux + 318)
+#define __NR_eventfd (__NR_Linux + 319)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fallocate (__NR_Linux + 320)
+#define __NR_timerfd_create (__NR_Linux + 321)
+#define __NR_timerfd_gettime (__NR_Linux + 322)
+#define __NR_timerfd_settime (__NR_Linux + 323)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_signalfd4 (__NR_Linux + 324)
+#define __NR_eventfd2 (__NR_Linux + 325)
+#define __NR_epoll_create1 (__NR_Linux + 326)
+#define __NR_dup3 (__NR_Linux + 327)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_pipe2 (__NR_Linux + 328)
+#define __NR_inotify_init1 (__NR_Linux + 329)
+#define __NR_Linux_syscalls 329
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_O32_Linux 4000
+#define __NR_O32_Linux_syscalls 329
+#if _MIPS_SIM == _MIPS_SIM_ABI64
+#define __NR_Linux 5000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_read (__NR_Linux + 0)
+#define __NR_write (__NR_Linux + 1)
+#define __NR_open (__NR_Linux + 2)
+#define __NR_close (__NR_Linux + 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_stat (__NR_Linux + 4)
+#define __NR_fstat (__NR_Linux + 5)
+#define __NR_lstat (__NR_Linux + 6)
+#define __NR_poll (__NR_Linux + 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lseek (__NR_Linux + 8)
+#define __NR_mmap (__NR_Linux + 9)
+#define __NR_mprotect (__NR_Linux + 10)
+#define __NR_munmap (__NR_Linux + 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_brk (__NR_Linux + 12)
+#define __NR_rt_sigaction (__NR_Linux + 13)
+#define __NR_rt_sigprocmask (__NR_Linux + 14)
+#define __NR_ioctl (__NR_Linux + 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_pread64 (__NR_Linux + 16)
+#define __NR_pwrite64 (__NR_Linux + 17)
+#define __NR_readv (__NR_Linux + 18)
+#define __NR_writev (__NR_Linux + 19)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_access (__NR_Linux + 20)
+#define __NR_pipe (__NR_Linux + 21)
+#define __NR__newselect (__NR_Linux + 22)
+#define __NR_sched_yield (__NR_Linux + 23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mremap (__NR_Linux + 24)
+#define __NR_msync (__NR_Linux + 25)
+#define __NR_mincore (__NR_Linux + 26)
+#define __NR_madvise (__NR_Linux + 27)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_shmget (__NR_Linux + 28)
+#define __NR_shmat (__NR_Linux + 29)
+#define __NR_shmctl (__NR_Linux + 30)
+#define __NR_dup (__NR_Linux + 31)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_dup2 (__NR_Linux + 32)
+#define __NR_pause (__NR_Linux + 33)
+#define __NR_nanosleep (__NR_Linux + 34)
+#define __NR_getitimer (__NR_Linux + 35)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setitimer (__NR_Linux + 36)
+#define __NR_alarm (__NR_Linux + 37)
+#define __NR_getpid (__NR_Linux + 38)
+#define __NR_sendfile (__NR_Linux + 39)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_socket (__NR_Linux + 40)
+#define __NR_connect (__NR_Linux + 41)
+#define __NR_accept (__NR_Linux + 42)
+#define __NR_sendto (__NR_Linux + 43)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_recvfrom (__NR_Linux + 44)
+#define __NR_sendmsg (__NR_Linux + 45)
+#define __NR_recvmsg (__NR_Linux + 46)
+#define __NR_shutdown (__NR_Linux + 47)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_bind (__NR_Linux + 48)
+#define __NR_listen (__NR_Linux + 49)
+#define __NR_getsockname (__NR_Linux + 50)
+#define __NR_getpeername (__NR_Linux + 51)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_socketpair (__NR_Linux + 52)
+#define __NR_setsockopt (__NR_Linux + 53)
+#define __NR_getsockopt (__NR_Linux + 54)
+#define __NR_clone (__NR_Linux + 55)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fork (__NR_Linux + 56)
+#define __NR_execve (__NR_Linux + 57)
+#define __NR_exit (__NR_Linux + 58)
+#define __NR_wait4 (__NR_Linux + 59)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_kill (__NR_Linux + 60)
+#define __NR_uname (__NR_Linux + 61)
+#define __NR_semget (__NR_Linux + 62)
+#define __NR_semop (__NR_Linux + 63)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_semctl (__NR_Linux + 64)
+#define __NR_shmdt (__NR_Linux + 65)
+#define __NR_msgget (__NR_Linux + 66)
+#define __NR_msgsnd (__NR_Linux + 67)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_msgrcv (__NR_Linux + 68)
+#define __NR_msgctl (__NR_Linux + 69)
+#define __NR_fcntl (__NR_Linux + 70)
+#define __NR_flock (__NR_Linux + 71)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fsync (__NR_Linux + 72)
+#define __NR_fdatasync (__NR_Linux + 73)
+#define __NR_truncate (__NR_Linux + 74)
+#define __NR_ftruncate (__NR_Linux + 75)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getdents (__NR_Linux + 76)
+#define __NR_getcwd (__NR_Linux + 77)
+#define __NR_chdir (__NR_Linux + 78)
+#define __NR_fchdir (__NR_Linux + 79)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rename (__NR_Linux + 80)
+#define __NR_mkdir (__NR_Linux + 81)
+#define __NR_rmdir (__NR_Linux + 82)
+#define __NR_creat (__NR_Linux + 83)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_link (__NR_Linux + 84)
+#define __NR_unlink (__NR_Linux + 85)
+#define __NR_symlink (__NR_Linux + 86)
+#define __NR_readlink (__NR_Linux + 87)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chmod (__NR_Linux + 88)
+#define __NR_fchmod (__NR_Linux + 89)
+#define __NR_chown (__NR_Linux + 90)
+#define __NR_fchown (__NR_Linux + 91)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lchown (__NR_Linux + 92)
+#define __NR_umask (__NR_Linux + 93)
+#define __NR_gettimeofday (__NR_Linux + 94)
+#define __NR_getrlimit (__NR_Linux + 95)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getrusage (__NR_Linux + 96)
+#define __NR_sysinfo (__NR_Linux + 97)
+#define __NR_times (__NR_Linux + 98)
+#define __NR_ptrace (__NR_Linux + 99)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getuid (__NR_Linux + 100)
+#define __NR_syslog (__NR_Linux + 101)
+#define __NR_getgid (__NR_Linux + 102)
+#define __NR_setuid (__NR_Linux + 103)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setgid (__NR_Linux + 104)
+#define __NR_geteuid (__NR_Linux + 105)
+#define __NR_getegid (__NR_Linux + 106)
+#define __NR_setpgid (__NR_Linux + 107)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getppid (__NR_Linux + 108)
+#define __NR_getpgrp (__NR_Linux + 109)
+#define __NR_setsid (__NR_Linux + 110)
+#define __NR_setreuid (__NR_Linux + 111)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setregid (__NR_Linux + 112)
+#define __NR_getgroups (__NR_Linux + 113)
+#define __NR_setgroups (__NR_Linux + 114)
+#define __NR_setresuid (__NR_Linux + 115)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getresuid (__NR_Linux + 116)
+#define __NR_setresgid (__NR_Linux + 117)
+#define __NR_getresgid (__NR_Linux + 118)
+#define __NR_getpgid (__NR_Linux + 119)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setfsuid (__NR_Linux + 120)
+#define __NR_setfsgid (__NR_Linux + 121)
+#define __NR_getsid (__NR_Linux + 122)
+#define __NR_capget (__NR_Linux + 123)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_capset (__NR_Linux + 124)
+#define __NR_rt_sigpending (__NR_Linux + 125)
+#define __NR_rt_sigtimedwait (__NR_Linux + 126)
+#define __NR_rt_sigqueueinfo (__NR_Linux + 127)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigsuspend (__NR_Linux + 128)
+#define __NR_sigaltstack (__NR_Linux + 129)
+#define __NR_utime (__NR_Linux + 130)
+#define __NR_mknod (__NR_Linux + 131)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_personality (__NR_Linux + 132)
+#define __NR_ustat (__NR_Linux + 133)
+#define __NR_statfs (__NR_Linux + 134)
+#define __NR_fstatfs (__NR_Linux + 135)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sysfs (__NR_Linux + 136)
+#define __NR_getpriority (__NR_Linux + 137)
+#define __NR_setpriority (__NR_Linux + 138)
+#define __NR_sched_setparam (__NR_Linux + 139)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_getparam (__NR_Linux + 140)
+#define __NR_sched_setscheduler (__NR_Linux + 141)
+#define __NR_sched_getscheduler (__NR_Linux + 142)
+#define __NR_sched_get_priority_max (__NR_Linux + 143)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_get_priority_min (__NR_Linux + 144)
+#define __NR_sched_rr_get_interval (__NR_Linux + 145)
+#define __NR_mlock (__NR_Linux + 146)
+#define __NR_munlock (__NR_Linux + 147)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mlockall (__NR_Linux + 148)
+#define __NR_munlockall (__NR_Linux + 149)
+#define __NR_vhangup (__NR_Linux + 150)
+#define __NR_pivot_root (__NR_Linux + 151)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR__sysctl (__NR_Linux + 152)
+#define __NR_prctl (__NR_Linux + 153)
+#define __NR_adjtimex (__NR_Linux + 154)
+#define __NR_setrlimit (__NR_Linux + 155)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chroot (__NR_Linux + 156)
+#define __NR_sync (__NR_Linux + 157)
+#define __NR_acct (__NR_Linux + 158)
+#define __NR_settimeofday (__NR_Linux + 159)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mount (__NR_Linux + 160)
+#define __NR_umount2 (__NR_Linux + 161)
+#define __NR_swapon (__NR_Linux + 162)
+#define __NR_swapoff (__NR_Linux + 163)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_reboot (__NR_Linux + 164)
+#define __NR_sethostname (__NR_Linux + 165)
+#define __NR_setdomainname (__NR_Linux + 166)
+#define __NR_create_module (__NR_Linux + 167)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_init_module (__NR_Linux + 168)
+#define __NR_delete_module (__NR_Linux + 169)
+#define __NR_get_kernel_syms (__NR_Linux + 170)
+#define __NR_query_module (__NR_Linux + 171)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_quotactl (__NR_Linux + 172)
+#define __NR_nfsservctl (__NR_Linux + 173)
+#define __NR_getpmsg (__NR_Linux + 174)
+#define __NR_putpmsg (__NR_Linux + 175)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_afs_syscall (__NR_Linux + 176)
+#define __NR_reserved177 (__NR_Linux + 177)
+#define __NR_gettid (__NR_Linux + 178)
+#define __NR_readahead (__NR_Linux + 179)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setxattr (__NR_Linux + 180)
+#define __NR_lsetxattr (__NR_Linux + 181)
+#define __NR_fsetxattr (__NR_Linux + 182)
+#define __NR_getxattr (__NR_Linux + 183)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lgetxattr (__NR_Linux + 184)
+#define __NR_fgetxattr (__NR_Linux + 185)
+#define __NR_listxattr (__NR_Linux + 186)
+#define __NR_llistxattr (__NR_Linux + 187)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_flistxattr (__NR_Linux + 188)
+#define __NR_removexattr (__NR_Linux + 189)
+#define __NR_lremovexattr (__NR_Linux + 190)
+#define __NR_fremovexattr (__NR_Linux + 191)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_tkill (__NR_Linux + 192)
+#define __NR_reserved193 (__NR_Linux + 193)
+#define __NR_futex (__NR_Linux + 194)
+#define __NR_sched_setaffinity (__NR_Linux + 195)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_getaffinity (__NR_Linux + 196)
+#define __NR_cacheflush (__NR_Linux + 197)
+#define __NR_cachectl (__NR_Linux + 198)
+#define __NR_sysmips (__NR_Linux + 199)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_io_setup (__NR_Linux + 200)
+#define __NR_io_destroy (__NR_Linux + 201)
+#define __NR_io_getevents (__NR_Linux + 202)
+#define __NR_io_submit (__NR_Linux + 203)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_io_cancel (__NR_Linux + 204)
+#define __NR_exit_group (__NR_Linux + 205)
+#define __NR_lookup_dcookie (__NR_Linux + 206)
+#define __NR_epoll_create (__NR_Linux + 207)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_epoll_ctl (__NR_Linux + 208)
+#define __NR_epoll_wait (__NR_Linux + 209)
+#define __NR_remap_file_pages (__NR_Linux + 210)
+#define __NR_rt_sigreturn (__NR_Linux + 211)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_set_tid_address (__NR_Linux + 212)
+#define __NR_restart_syscall (__NR_Linux + 213)
+#define __NR_semtimedop (__NR_Linux + 214)
+#define __NR_fadvise64 (__NR_Linux + 215)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_create (__NR_Linux + 216)
+#define __NR_timer_settime (__NR_Linux + 217)
+#define __NR_timer_gettime (__NR_Linux + 218)
+#define __NR_timer_getoverrun (__NR_Linux + 219)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_delete (__NR_Linux + 220)
+#define __NR_clock_settime (__NR_Linux + 221)
+#define __NR_clock_gettime (__NR_Linux + 222)
+#define __NR_clock_getres (__NR_Linux + 223)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_clock_nanosleep (__NR_Linux + 224)
+#define __NR_tgkill (__NR_Linux + 225)
+#define __NR_utimes (__NR_Linux + 226)
+#define __NR_mbind (__NR_Linux + 227)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_get_mempolicy (__NR_Linux + 228)
+#define __NR_set_mempolicy (__NR_Linux + 229)
+#define __NR_mq_open (__NR_Linux + 230)
+#define __NR_mq_unlink (__NR_Linux + 231)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_timedsend (__NR_Linux + 232)
+#define __NR_mq_timedreceive (__NR_Linux + 233)
+#define __NR_mq_notify (__NR_Linux + 234)
+#define __NR_mq_getsetattr (__NR_Linux + 235)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_vserver (__NR_Linux + 236)
+#define __NR_waitid (__NR_Linux + 237)
+#define __NR_add_key (__NR_Linux + 239)
+#define __NR_request_key (__NR_Linux + 240)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_keyctl (__NR_Linux + 241)
+#define __NR_set_thread_area (__NR_Linux + 242)
+#define __NR_inotify_init (__NR_Linux + 243)
+#define __NR_inotify_add_watch (__NR_Linux + 244)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_inotify_rm_watch (__NR_Linux + 245)
+#define __NR_migrate_pages (__NR_Linux + 246)
+#define __NR_openat (__NR_Linux + 247)
+#define __NR_mkdirat (__NR_Linux + 248)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mknodat (__NR_Linux + 249)
+#define __NR_fchownat (__NR_Linux + 250)
+#define __NR_futimesat (__NR_Linux + 251)
+#define __NR_newfstatat (__NR_Linux + 252)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_unlinkat (__NR_Linux + 253)
+#define __NR_renameat (__NR_Linux + 254)
+#define __NR_linkat (__NR_Linux + 255)
+#define __NR_symlinkat (__NR_Linux + 256)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_readlinkat (__NR_Linux + 257)
+#define __NR_fchmodat (__NR_Linux + 258)
+#define __NR_faccessat (__NR_Linux + 259)
+#define __NR_pselect6 (__NR_Linux + 260)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_ppoll (__NR_Linux + 261)
+#define __NR_unshare (__NR_Linux + 262)
+#define __NR_splice (__NR_Linux + 263)
+#define __NR_sync_file_range (__NR_Linux + 264)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_tee (__NR_Linux + 265)
+#define __NR_vmsplice (__NR_Linux + 266)
+#define __NR_move_pages (__NR_Linux + 267)
+#define __NR_set_robust_list (__NR_Linux + 268)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_get_robust_list (__NR_Linux + 269)
+#define __NR_kexec_load (__NR_Linux + 270)
+#define __NR_getcpu (__NR_Linux + 271)
+#define __NR_epoll_pwait (__NR_Linux + 272)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_ioprio_set (__NR_Linux + 273)
+#define __NR_ioprio_get (__NR_Linux + 274)
+#define __NR_utimensat (__NR_Linux + 275)
+#define __NR_signalfd (__NR_Linux + 276)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timerfd (__NR_Linux + 277)
+#define __NR_eventfd (__NR_Linux + 278)
+#define __NR_fallocate (__NR_Linux + 279)
+#define __NR_timerfd_create (__NR_Linux + 280)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timerfd_gettime (__NR_Linux + 281)
+#define __NR_timerfd_settime (__NR_Linux + 282)
+#define __NR_signalfd4 (__NR_Linux + 283)
+#define __NR_eventfd2 (__NR_Linux + 284)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_epoll_create1 (__NR_Linux + 285)
+#define __NR_dup3 (__NR_Linux + 286)
+#define __NR_pipe2 (__NR_Linux + 287)
+#define __NR_inotify_init1 (__NR_Linux + 288)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_Linux_syscalls 288
+#endif
+#define __NR_64_Linux 5000
+#define __NR_64_Linux_syscalls 288
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#if _MIPS_SIM == _MIPS_SIM_NABI32
+#define __NR_Linux 6000
+#define __NR_read (__NR_Linux + 0)
+#define __NR_write (__NR_Linux + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_open (__NR_Linux + 2)
+#define __NR_close (__NR_Linux + 3)
+#define __NR_stat (__NR_Linux + 4)
+#define __NR_fstat (__NR_Linux + 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lstat (__NR_Linux + 6)
+#define __NR_poll (__NR_Linux + 7)
+#define __NR_lseek (__NR_Linux + 8)
+#define __NR_mmap (__NR_Linux + 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mprotect (__NR_Linux + 10)
+#define __NR_munmap (__NR_Linux + 11)
+#define __NR_brk (__NR_Linux + 12)
+#define __NR_rt_sigaction (__NR_Linux + 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigprocmask (__NR_Linux + 14)
+#define __NR_ioctl (__NR_Linux + 15)
+#define __NR_pread64 (__NR_Linux + 16)
+#define __NR_pwrite64 (__NR_Linux + 17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_readv (__NR_Linux + 18)
+#define __NR_writev (__NR_Linux + 19)
+#define __NR_access (__NR_Linux + 20)
+#define __NR_pipe (__NR_Linux + 21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR__newselect (__NR_Linux + 22)
+#define __NR_sched_yield (__NR_Linux + 23)
+#define __NR_mremap (__NR_Linux + 24)
+#define __NR_msync (__NR_Linux + 25)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mincore (__NR_Linux + 26)
+#define __NR_madvise (__NR_Linux + 27)
+#define __NR_shmget (__NR_Linux + 28)
+#define __NR_shmat (__NR_Linux + 29)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_shmctl (__NR_Linux + 30)
+#define __NR_dup (__NR_Linux + 31)
+#define __NR_dup2 (__NR_Linux + 32)
+#define __NR_pause (__NR_Linux + 33)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_nanosleep (__NR_Linux + 34)
+#define __NR_getitimer (__NR_Linux + 35)
+#define __NR_setitimer (__NR_Linux + 36)
+#define __NR_alarm (__NR_Linux + 37)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getpid (__NR_Linux + 38)
+#define __NR_sendfile (__NR_Linux + 39)
+#define __NR_socket (__NR_Linux + 40)
+#define __NR_connect (__NR_Linux + 41)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_accept (__NR_Linux + 42)
+#define __NR_sendto (__NR_Linux + 43)
+#define __NR_recvfrom (__NR_Linux + 44)
+#define __NR_sendmsg (__NR_Linux + 45)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_recvmsg (__NR_Linux + 46)
+#define __NR_shutdown (__NR_Linux + 47)
+#define __NR_bind (__NR_Linux + 48)
+#define __NR_listen (__NR_Linux + 49)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsockname (__NR_Linux + 50)
+#define __NR_getpeername (__NR_Linux + 51)
+#define __NR_socketpair (__NR_Linux + 52)
+#define __NR_setsockopt (__NR_Linux + 53)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsockopt (__NR_Linux + 54)
+#define __NR_clone (__NR_Linux + 55)
+#define __NR_fork (__NR_Linux + 56)
+#define __NR_execve (__NR_Linux + 57)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_exit (__NR_Linux + 58)
+#define __NR_wait4 (__NR_Linux + 59)
+#define __NR_kill (__NR_Linux + 60)
+#define __NR_uname (__NR_Linux + 61)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_semget (__NR_Linux + 62)
+#define __NR_semop (__NR_Linux + 63)
+#define __NR_semctl (__NR_Linux + 64)
+#define __NR_shmdt (__NR_Linux + 65)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_msgget (__NR_Linux + 66)
+#define __NR_msgsnd (__NR_Linux + 67)
+#define __NR_msgrcv (__NR_Linux + 68)
+#define __NR_msgctl (__NR_Linux + 69)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fcntl (__NR_Linux + 70)
+#define __NR_flock (__NR_Linux + 71)
+#define __NR_fsync (__NR_Linux + 72)
+#define __NR_fdatasync (__NR_Linux + 73)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_truncate (__NR_Linux + 74)
+#define __NR_ftruncate (__NR_Linux + 75)
+#define __NR_getdents (__NR_Linux + 76)
+#define __NR_getcwd (__NR_Linux + 77)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chdir (__NR_Linux + 78)
+#define __NR_fchdir (__NR_Linux + 79)
+#define __NR_rename (__NR_Linux + 80)
+#define __NR_mkdir (__NR_Linux + 81)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rmdir (__NR_Linux + 82)
+#define __NR_creat (__NR_Linux + 83)
+#define __NR_link (__NR_Linux + 84)
+#define __NR_unlink (__NR_Linux + 85)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_symlink (__NR_Linux + 86)
+#define __NR_readlink (__NR_Linux + 87)
+#define __NR_chmod (__NR_Linux + 88)
+#define __NR_fchmod (__NR_Linux + 89)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_chown (__NR_Linux + 90)
+#define __NR_fchown (__NR_Linux + 91)
+#define __NR_lchown (__NR_Linux + 92)
+#define __NR_umask (__NR_Linux + 93)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_gettimeofday (__NR_Linux + 94)
+#define __NR_getrlimit (__NR_Linux + 95)
+#define __NR_getrusage (__NR_Linux + 96)
+#define __NR_sysinfo (__NR_Linux + 97)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_times (__NR_Linux + 98)
+#define __NR_ptrace (__NR_Linux + 99)
+#define __NR_getuid (__NR_Linux + 100)
+#define __NR_syslog (__NR_Linux + 101)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getgid (__NR_Linux + 102)
+#define __NR_setuid (__NR_Linux + 103)
+#define __NR_setgid (__NR_Linux + 104)
+#define __NR_geteuid (__NR_Linux + 105)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getegid (__NR_Linux + 106)
+#define __NR_setpgid (__NR_Linux + 107)
+#define __NR_getppid (__NR_Linux + 108)
+#define __NR_getpgrp (__NR_Linux + 109)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setsid (__NR_Linux + 110)
+#define __NR_setreuid (__NR_Linux + 111)
+#define __NR_setregid (__NR_Linux + 112)
+#define __NR_getgroups (__NR_Linux + 113)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setgroups (__NR_Linux + 114)
+#define __NR_setresuid (__NR_Linux + 115)
+#define __NR_getresuid (__NR_Linux + 116)
+#define __NR_setresgid (__NR_Linux + 117)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getresgid (__NR_Linux + 118)
+#define __NR_getpgid (__NR_Linux + 119)
+#define __NR_setfsuid (__NR_Linux + 120)
+#define __NR_setfsgid (__NR_Linux + 121)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getsid (__NR_Linux + 122)
+#define __NR_capget (__NR_Linux + 123)
+#define __NR_capset (__NR_Linux + 124)
+#define __NR_rt_sigpending (__NR_Linux + 125)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_rt_sigtimedwait (__NR_Linux + 126)
+#define __NR_rt_sigqueueinfo (__NR_Linux + 127)
+#define __NR_rt_sigsuspend (__NR_Linux + 128)
+#define __NR_sigaltstack (__NR_Linux + 129)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utime (__NR_Linux + 130)
+#define __NR_mknod (__NR_Linux + 131)
+#define __NR_personality (__NR_Linux + 132)
+#define __NR_ustat (__NR_Linux + 133)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_statfs (__NR_Linux + 134)
+#define __NR_fstatfs (__NR_Linux + 135)
+#define __NR_sysfs (__NR_Linux + 136)
+#define __NR_getpriority (__NR_Linux + 137)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setpriority (__NR_Linux + 138)
+#define __NR_sched_setparam (__NR_Linux + 139)
+#define __NR_sched_getparam (__NR_Linux + 140)
+#define __NR_sched_setscheduler (__NR_Linux + 141)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_sched_getscheduler (__NR_Linux + 142)
+#define __NR_sched_get_priority_max (__NR_Linux + 143)
+#define __NR_sched_get_priority_min (__NR_Linux + 144)
+#define __NR_sched_rr_get_interval (__NR_Linux + 145)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mlock (__NR_Linux + 146)
+#define __NR_munlock (__NR_Linux + 147)
+#define __NR_mlockall (__NR_Linux + 148)
+#define __NR_munlockall (__NR_Linux + 149)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_vhangup (__NR_Linux + 150)
+#define __NR_pivot_root (__NR_Linux + 151)
+#define __NR__sysctl (__NR_Linux + 152)
+#define __NR_prctl (__NR_Linux + 153)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_adjtimex (__NR_Linux + 154)
+#define __NR_setrlimit (__NR_Linux + 155)
+#define __NR_chroot (__NR_Linux + 156)
+#define __NR_sync (__NR_Linux + 157)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_acct (__NR_Linux + 158)
+#define __NR_settimeofday (__NR_Linux + 159)
+#define __NR_mount (__NR_Linux + 160)
+#define __NR_umount2 (__NR_Linux + 161)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_swapon (__NR_Linux + 162)
+#define __NR_swapoff (__NR_Linux + 163)
+#define __NR_reboot (__NR_Linux + 164)
+#define __NR_sethostname (__NR_Linux + 165)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_setdomainname (__NR_Linux + 166)
+#define __NR_create_module (__NR_Linux + 167)
+#define __NR_init_module (__NR_Linux + 168)
+#define __NR_delete_module (__NR_Linux + 169)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_get_kernel_syms (__NR_Linux + 170)
+#define __NR_query_module (__NR_Linux + 171)
+#define __NR_quotactl (__NR_Linux + 172)
+#define __NR_nfsservctl (__NR_Linux + 173)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getpmsg (__NR_Linux + 174)
+#define __NR_putpmsg (__NR_Linux + 175)
+#define __NR_afs_syscall (__NR_Linux + 176)
+#define __NR_reserved177 (__NR_Linux + 177)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_gettid (__NR_Linux + 178)
+#define __NR_readahead (__NR_Linux + 179)
+#define __NR_setxattr (__NR_Linux + 180)
+#define __NR_lsetxattr (__NR_Linux + 181)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fsetxattr (__NR_Linux + 182)
+#define __NR_getxattr (__NR_Linux + 183)
+#define __NR_lgetxattr (__NR_Linux + 184)
+#define __NR_fgetxattr (__NR_Linux + 185)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_listxattr (__NR_Linux + 186)
+#define __NR_llistxattr (__NR_Linux + 187)
+#define __NR_flistxattr (__NR_Linux + 188)
+#define __NR_removexattr (__NR_Linux + 189)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lremovexattr (__NR_Linux + 190)
+#define __NR_fremovexattr (__NR_Linux + 191)
+#define __NR_tkill (__NR_Linux + 192)
+#define __NR_reserved193 (__NR_Linux + 193)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_futex (__NR_Linux + 194)
+#define __NR_sched_setaffinity (__NR_Linux + 195)
+#define __NR_sched_getaffinity (__NR_Linux + 196)
+#define __NR_cacheflush (__NR_Linux + 197)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_cachectl (__NR_Linux + 198)
+#define __NR_sysmips (__NR_Linux + 199)
+#define __NR_io_setup (__NR_Linux + 200)
+#define __NR_io_destroy (__NR_Linux + 201)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_io_getevents (__NR_Linux + 202)
+#define __NR_io_submit (__NR_Linux + 203)
+#define __NR_io_cancel (__NR_Linux + 204)
+#define __NR_exit_group (__NR_Linux + 205)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_lookup_dcookie (__NR_Linux + 206)
+#define __NR_epoll_create (__NR_Linux + 207)
+#define __NR_epoll_ctl (__NR_Linux + 208)
+#define __NR_epoll_wait (__NR_Linux + 209)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_remap_file_pages (__NR_Linux + 210)
+#define __NR_rt_sigreturn (__NR_Linux + 211)
+#define __NR_fcntl64 (__NR_Linux + 212)
+#define __NR_set_tid_address (__NR_Linux + 213)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_restart_syscall (__NR_Linux + 214)
+#define __NR_semtimedop (__NR_Linux + 215)
+#define __NR_fadvise64 (__NR_Linux + 216)
+#define __NR_statfs64 (__NR_Linux + 217)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fstatfs64 (__NR_Linux + 218)
+#define __NR_sendfile64 (__NR_Linux + 219)
+#define __NR_timer_create (__NR_Linux + 220)
+#define __NR_timer_settime (__NR_Linux + 221)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_timer_gettime (__NR_Linux + 222)
+#define __NR_timer_getoverrun (__NR_Linux + 223)
+#define __NR_timer_delete (__NR_Linux + 224)
+#define __NR_clock_settime (__NR_Linux + 225)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_clock_gettime (__NR_Linux + 226)
+#define __NR_clock_getres (__NR_Linux + 227)
+#define __NR_clock_nanosleep (__NR_Linux + 228)
+#define __NR_tgkill (__NR_Linux + 229)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utimes (__NR_Linux + 230)
+#define __NR_mbind (__NR_Linux + 231)
+#define __NR_get_mempolicy (__NR_Linux + 232)
+#define __NR_set_mempolicy (__NR_Linux + 233)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_open (__NR_Linux + 234)
+#define __NR_mq_unlink (__NR_Linux + 235)
+#define __NR_mq_timedsend (__NR_Linux + 236)
+#define __NR_mq_timedreceive (__NR_Linux + 237)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_mq_notify (__NR_Linux + 238)
+#define __NR_mq_getsetattr (__NR_Linux + 239)
+#define __NR_vserver (__NR_Linux + 240)
+#define __NR_waitid (__NR_Linux + 241)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_add_key (__NR_Linux + 243)
+#define __NR_request_key (__NR_Linux + 244)
+#define __NR_keyctl (__NR_Linux + 245)
+#define __NR_set_thread_area (__NR_Linux + 246)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_inotify_init (__NR_Linux + 247)
+#define __NR_inotify_add_watch (__NR_Linux + 248)
+#define __NR_inotify_rm_watch (__NR_Linux + 249)
+#define __NR_migrate_pages (__NR_Linux + 250)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_openat (__NR_Linux + 251)
+#define __NR_mkdirat (__NR_Linux + 252)
+#define __NR_mknodat (__NR_Linux + 253)
+#define __NR_fchownat (__NR_Linux + 254)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_futimesat (__NR_Linux + 255)
+#define __NR_newfstatat (__NR_Linux + 256)
+#define __NR_unlinkat (__NR_Linux + 257)
+#define __NR_renameat (__NR_Linux + 258)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_linkat (__NR_Linux + 259)
+#define __NR_symlinkat (__NR_Linux + 260)
+#define __NR_readlinkat (__NR_Linux + 261)
+#define __NR_fchmodat (__NR_Linux + 262)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_faccessat (__NR_Linux + 263)
+#define __NR_pselect6 (__NR_Linux + 264)
+#define __NR_ppoll (__NR_Linux + 265)
+#define __NR_unshare (__NR_Linux + 266)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_splice (__NR_Linux + 267)
+#define __NR_sync_file_range (__NR_Linux + 268)
+#define __NR_tee (__NR_Linux + 269)
+#define __NR_vmsplice (__NR_Linux + 270)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_move_pages (__NR_Linux + 271)
+#define __NR_set_robust_list (__NR_Linux + 272)
+#define __NR_get_robust_list (__NR_Linux + 273)
+#define __NR_kexec_load (__NR_Linux + 274)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_getcpu (__NR_Linux + 275)
+#define __NR_epoll_pwait (__NR_Linux + 276)
+#define __NR_ioprio_set (__NR_Linux + 277)
+#define __NR_ioprio_get (__NR_Linux + 278)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_utimensat (__NR_Linux + 279)
+#define __NR_signalfd (__NR_Linux + 280)
+#define __NR_timerfd (__NR_Linux + 281)
+#define __NR_eventfd (__NR_Linux + 282)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_fallocate (__NR_Linux + 283)
+#define __NR_timerfd_create (__NR_Linux + 284)
+#define __NR_timerfd_gettime (__NR_Linux + 285)
+#define __NR_timerfd_settime (__NR_Linux + 286)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_signalfd4 (__NR_Linux + 287)
+#define __NR_eventfd2 (__NR_Linux + 288)
+#define __NR_epoll_create1 (__NR_Linux + 289)
+#define __NR_dup3 (__NR_Linux + 290)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_pipe2 (__NR_Linux + 291)
+#define __NR_inotify_init1 (__NR_Linux + 292)
+#define __NR_Linux_syscalls 292
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_N32_Linux 6000
+#define __NR_N32_Linux_syscalls 292
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/user.h b/ndk/platforms/android-9/arch-mips/include/asm/user.h
new file mode 100644
index 0000000..a87f239
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/user.h
@@ -0,0 +1,49 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_USER_H
+#define _ASM_USER_H
+#include <asm/page.h>
+#include <asm/reg.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EF_SIZE 180
+struct user {
+ unsigned long regs[EF_SIZE /
+ sizeof(unsigned long) + 64];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ size_t u_tsize;
+ size_t u_dsize;
+ size_t u_ssize;
+ unsigned long start_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long start_data;
+ unsigned long start_stack;
+ long int signal;
+ unsigned long u_ar0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long magic;
+ char u_comm[32];
+};
+#define NBPG PAGE_SIZE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR (u.start_code)
+#define HOST_DATA_START_ADDR (u.start_data)
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/vga.h b/ndk/platforms/android-9/arch-mips/include/asm/vga.h
new file mode 100644
index 0000000..c0c2535
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/vga.h
@@ -0,0 +1,35 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_VGA_H
+#define _ASM_VGA_H
+#include <asm/byteorder.h>
+#define VGA_MAP_MEM(x, s) (0xb0000000L + (unsigned long)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define vga_readb(x) (*(x))
+#define vga_writeb(x, y) (*(y) = (x))
+#define VT_BUF_HAVE_RW
+#undef scr_writew
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#undef scr_readw
+#define scr_memcpyw(d, s, c) memcpy(d, s, c)
+#define scr_memmovew(d, s, c) memmove(d, s, c)
+#define VT_BUF_HAVE_MEMCPYW
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VT_BUF_HAVE_MEMMOVEW
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/vr41xx/irq.h b/ndk/platforms/android-9/arch-mips/include/asm/vr41xx/irq.h
new file mode 100644
index 0000000..1c54b66
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/vr41xx/irq.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __NEC_VR41XX_IRQ_H
+#define __NEC_VR41XX_IRQ_H
+#define MIPS_CPU_IRQ_BASE 0
+#define MIPS_CPU_IRQ(x) (MIPS_CPU_IRQ_BASE + (x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define MIPS_SOFTINT0_IRQ MIPS_CPU_IRQ(0)
+#define MIPS_SOFTINT1_IRQ MIPS_CPU_IRQ(1)
+#define INT0_IRQ MIPS_CPU_IRQ(2)
+#define INT1_IRQ MIPS_CPU_IRQ(3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INT2_IRQ MIPS_CPU_IRQ(4)
+#define INT3_IRQ MIPS_CPU_IRQ(5)
+#define INT4_IRQ MIPS_CPU_IRQ(6)
+#define TIMER_IRQ MIPS_CPU_IRQ(7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYSINT1_IRQ_BASE 8
+#define SYSINT1_IRQ(x) (SYSINT1_IRQ_BASE + (x))
+#define BATTRY_IRQ SYSINT1_IRQ(0)
+#define POWER_IRQ SYSINT1_IRQ(1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define RTCLONG1_IRQ SYSINT1_IRQ(2)
+#define ELAPSEDTIME_IRQ SYSINT1_IRQ(3)
+#define PIU_IRQ SYSINT1_IRQ(5)
+#define AIU_IRQ SYSINT1_IRQ(6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KIU_IRQ SYSINT1_IRQ(7)
+#define GIUINT_IRQ SYSINT1_IRQ(8)
+#define SIU_IRQ SYSINT1_IRQ(9)
+#define BUSERR_IRQ SYSINT1_IRQ(10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SOFTINT_IRQ SYSINT1_IRQ(11)
+#define CLKRUN_IRQ SYSINT1_IRQ(12)
+#define DOZEPIU_IRQ SYSINT1_IRQ(13)
+#define SYSINT1_IRQ_LAST DOZEPIU_IRQ
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SYSINT2_IRQ_BASE 24
+#define SYSINT2_IRQ(x) (SYSINT2_IRQ_BASE + (x))
+#define RTCLONG2_IRQ SYSINT2_IRQ(0)
+#define LED_IRQ SYSINT2_IRQ(1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define HSP_IRQ SYSINT2_IRQ(2)
+#define TCLOCK_IRQ SYSINT2_IRQ(3)
+#define FIR_IRQ SYSINT2_IRQ(4)
+#define CEU_IRQ SYSINT2_IRQ(4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define DSIU_IRQ SYSINT2_IRQ(5)
+#define PCI_IRQ SYSINT2_IRQ(6)
+#define SCU_IRQ SYSINT2_IRQ(7)
+#define CSI_IRQ SYSINT2_IRQ(8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BCU_IRQ SYSINT2_IRQ(9)
+#define ETHERNET_IRQ SYSINT2_IRQ(10)
+#define SYSINT2_IRQ_LAST ETHERNET_IRQ
+#define GIU_IRQ_BASE 40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define GIU_IRQ(x) (GIU_IRQ_BASE + (x))  
+#define GIU_IRQ_LAST GIU_IRQ(31)
+#define VRC4173_IRQ_BASE 72
+#define VRC4173_IRQ(x) (VRC4173_IRQ_BASE + (x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VRC4173_USB_IRQ VRC4173_IRQ(0)
+#define VRC4173_PCMCIA2_IRQ VRC4173_IRQ(1)
+#define VRC4173_PCMCIA1_IRQ VRC4173_IRQ(2)
+#define VRC4173_PS2CH2_IRQ VRC4173_IRQ(3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VRC4173_PS2CH1_IRQ VRC4173_IRQ(4)
+#define VRC4173_PIU_IRQ VRC4173_IRQ(5)
+#define VRC4173_AIU_IRQ VRC4173_IRQ(6)
+#define VRC4173_KIU_IRQ VRC4173_IRQ(7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VRC4173_GIU_IRQ VRC4173_IRQ(8)
+#define VRC4173_AC97_IRQ VRC4173_IRQ(9)
+#define VRC4173_AC97INT1_IRQ VRC4173_IRQ(10)
+#define VRC4173_DOZEPIU_IRQ VRC4173_IRQ(13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VRC4173_IRQ_LAST VRC4173_DOZEPIU_IRQ
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/war.h b/ndk/platforms/android-9/arch-mips/include/asm/war.h
new file mode 100644
index 0000000..d8f95b2
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/war.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_WAR_H
+#define _ASM_WAR_H
+#include <war.h>
+#define R4000_WAR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define R4400_WAR 0
+#define DADDI_WAR 0
+#ifndef R4600_V1_INDEX_ICACHEOP_WAR
+#error Check setting of R4600_V1_INDEX_ICACHEOP_WAR for your platform
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef R4600_V1_HIT_CACHEOP_WAR
+#error Check setting of R4600_V1_HIT_CACHEOP_WAR for your platform
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef R4600_V2_HIT_CACHEOP_WAR
+#error Check setting of R4600_V2_HIT_CACHEOP_WAR for your platform
+#endif
+#ifndef R5432_CP0_INTERRUPT_WAR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#error Check setting of R5432_CP0_INTERRUPT_WAR for your platform
+#endif
+#ifndef BCM1250_M3_WAR
+#error Check setting of BCM1250_M3_WAR for your platform
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef SIBYTE_1956_WAR
+#error Check setting of SIBYTE_1956_WAR for your platform
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef MIPS4K_ICACHE_REFILL_WAR
+#error Check setting of MIPS4K_ICACHE_REFILL_WAR for your platform
+#endif
+#ifndef MIPS_CACHE_SYNC_WAR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#error Check setting of MIPS_CACHE_SYNC_WAR for your platform
+#endif
+#ifndef TX49XX_ICACHE_INDEX_INV_WAR
+#error Check setting of TX49XX_ICACHE_INDEX_INV_WAR for your platform
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#ifndef RM9000_CDEX_SMP_WAR
+#error Check setting of RM9000_CDEX_SMP_WAR for your platform
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#ifndef ICACHE_REFILLS_WORKAROUND_WAR
+#error Check setting of ICACHE_REFILLS_WORKAROUND_WAR for your platform
+#endif
+#ifndef R10000_LLSC_WAR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#error Check setting of R10000_LLSC_WAR for your platform
+#endif
+#ifndef MIPS34K_MISSED_ITLB_WAR
+#error Check setting of MIPS34K_MISSED_ITLB_WAR for your platform
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/xtalk/xtalk.h b/ndk/platforms/android-9/arch-mips/include/asm/xtalk/xtalk.h
new file mode 100644
index 0000000..3dfbaa0
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/xtalk/xtalk.h
@@ -0,0 +1,45 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_XTALK_XTALK_H
+#define _ASM_XTALK_XTALK_H
+#ifndef __ASSEMBLY__
+typedef char xwidgetnum_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XWIDGET_NONE -1
+typedef int xwidget_part_num_t;
+#define XWIDGET_PART_NUM_NONE -1
+typedef int xwidget_rev_num_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XWIDGET_REV_NUM_NONE -1
+typedef int xwidget_mfg_num_t;
+#define XWIDGET_MFG_NUM_NONE -1
+typedef struct xtalk_piomap_s *xtalk_piomap_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XIO_NOWHERE (0xFFFFFFFFFFFFFFFFull)
+#define XIO_ADDR_BITS (0x0000FFFFFFFFFFFFull)
+#define XIO_PORT_BITS (0xF000000000000000ull)
+#define XIO_PORT_SHIFT (60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XIO_PACKED(x) (((x)&XIO_PORT_BITS) != 0)
+#define XIO_ADDR(x) ((x)&XIO_ADDR_BITS)
+#define XIO_PORT(x) ((xwidgetnum_t)(((x)&XIO_PORT_BITS) >> XIO_PORT_SHIFT))
+#define XIO_PACK(p, o) ((((uint64_t)(p))<<XIO_PORT_SHIFT) | ((o)&XIO_ADDR_BITS))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/asm/xtalk/xwidget.h b/ndk/platforms/android-9/arch-mips/include/asm/xtalk/xwidget.h
new file mode 100644
index 0000000..03bb4c1
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/asm/xtalk/xwidget.h
@@ -0,0 +1,154 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _ASM_XTALK_XWIDGET_H
+#define _ASM_XTALK_XWIDGET_H
+#include <linux/types.h>
+#include <asm/xtalk/xtalk.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_ID 0x04
+#define WIDGET_STATUS 0x0c
+#define WIDGET_ERR_UPPER_ADDR 0x14
+#define WIDGET_ERR_LOWER_ADDR 0x1c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_CONTROL 0x24
+#define WIDGET_REQ_TIMEOUT 0x2c
+#define WIDGET_INTDEST_UPPER_ADDR 0x34
+#define WIDGET_INTDEST_LOWER_ADDR 0x3c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_ERR_CMD_WORD 0x44
+#define WIDGET_LLP_CFG 0x4c
+#define WIDGET_TFLUSH 0x54
+#define WIDGET_REV_NUM 0xf0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_PART_NUM 0x0ffff000
+#define WIDGET_MFG_NUM 0x00000ffe
+#define WIDGET_REV_NUM_SHFT 28
+#define WIDGET_PART_NUM_SHFT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_MFG_NUM_SHFT 1
+#define XWIDGET_PART_NUM(widgetid) (((widgetid) & WIDGET_PART_NUM) >> WIDGET_PART_NUM_SHFT)
+#define XWIDGET_REV_NUM(widgetid) (((widgetid) & WIDGET_REV_NUM) >> WIDGET_REV_NUM_SHFT)
+#define XWIDGET_MFG_NUM(widgetid) (((widgetid) & WIDGET_MFG_NUM) >> WIDGET_MFG_NUM_SHFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_LLP_REC_CNT 0xff000000
+#define WIDGET_LLP_TX_CNT 0x00ff0000
+#define WIDGET_PENDING 0x0000001f
+#define WIDGET_ERR_UPPER_ADDR_ONLY 0x0000ffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_F_BAD_PKT 0x00010000
+#define WIDGET_LLP_XBAR_CRD 0x0000f000
+#define WIDGET_LLP_XBAR_CRD_SHFT 12
+#define WIDGET_CLR_RLLP_CNT 0x00000800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_CLR_TLLP_CNT 0x00000400
+#define WIDGET_SYS_END 0x00000200
+#define WIDGET_MAX_TRANS 0x000001f0
+#define WIDGET_WIDGET_ID 0x0000000f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_INT_VECTOR 0xff000000
+#define WIDGET_INT_VECTOR_SHFT 24
+#define WIDGET_TARGET_ID 0x000f0000
+#define WIDGET_TARGET_ID_SHFT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_UPP_ADDR 0x0000ffff
+#define WIDGET_DIDN 0xf0000000
+#define WIDGET_SIDN 0x0f000000
+#define WIDGET_PACTYP 0x00f00000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_TNUM 0x000f8000
+#define WIDGET_COHERENT 0x00004000
+#define WIDGET_DS 0x00003000
+#define WIDGET_GBR 0x00000800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_VBPM 0x00000400
+#define WIDGET_ERROR 0x00000200
+#define WIDGET_BARRIER 0x00000100
+#define WIDGET_LLP_MAXRETRY 0x03ff0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_LLP_MAXRETRY_SHFT 16
+#define WIDGET_LLP_NULLTIMEOUT 0x0000fc00
+#define WIDGET_LLP_NULLTIMEOUT_SHFT 10
+#define WIDGET_LLP_MAXBURST 0x000003ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define WIDGET_LLP_MAXBURST_SHFT 0
+#ifndef __ASSEMBLY__
+typedef u32 widgetreg_t;
+typedef volatile struct widget_cfg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widgetreg_t w_pad_0;
+ widgetreg_t w_id;
+ widgetreg_t w_pad_1;
+ widgetreg_t w_status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widgetreg_t w_pad_2;
+ widgetreg_t w_err_upper_addr;
+ widgetreg_t w_pad_3;
+ widgetreg_t w_err_lower_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widgetreg_t w_pad_4;
+ widgetreg_t w_control;
+ widgetreg_t w_pad_5;
+ widgetreg_t w_req_timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widgetreg_t w_pad_6;
+ widgetreg_t w_intdest_upper_addr;
+ widgetreg_t w_pad_7;
+ widgetreg_t w_intdest_lower_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widgetreg_t w_pad_8;
+ widgetreg_t w_err_cmd_word;
+ widgetreg_t w_pad_9;
+ widgetreg_t w_llp_cfg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ widgetreg_t w_pad_10;
+ widgetreg_t w_tflush;
+} widget_cfg_t;
+typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned didn:4;
+ unsigned sidn:4;
+ unsigned pactyp:4;
+ unsigned tnum:5;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned ct:1;
+ unsigned ds:2;
+ unsigned gbr:1;
+ unsigned vbpm:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned error:1;
+ unsigned bo:1;
+ unsigned other:8;
+} w_err_cmd_word_f;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union {
+ widgetreg_t r;
+ w_err_cmd_word_f f;
+} w_err_cmd_word_u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct xwidget_info_s *xwidget_info_t;
+typedef struct xwidget_hwid_s {
+ xwidget_part_num_t part_num;
+ xwidget_rev_num_t rev_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ xwidget_mfg_num_t mfg_num;
+} *xwidget_hwid_t;
+#define XWIDGET_HARDWARE_ID_MATCH(hwid1, hwid2)   (((hwid1)->part_num == (hwid2)->part_num) &&   (((hwid1)->mfg_num == XWIDGET_MFG_NUM_NONE) ||   ((hwid2)->mfg_num == XWIDGET_MFG_NUM_NONE) ||   ((hwid1)->mfg_num == (hwid2)->mfg_num)))
+#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/link.h b/ndk/platforms/android-9/arch-mips/include/link.h
new file mode 100644
index 0000000..1c009c6
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/link.h
@@ -0,0 +1,26 @@
+/* 
+   For building unwind-dw2-fde-glibc.c for MIPS frame unwinding,
+   we need to have <link.h> that defines struct dl_phdr_info,
+   ELFW(type), and dl_iterate_phdr().
+*/ 
+
+#include <sys/types.h>
+#include <elf.h>
+
+struct dl_phdr_info
+{
+    Elf32_Addr dlpi_addr;
+    const char *dlpi_name;
+    const Elf32_Phdr *dlpi_phdr;
+    Elf32_Half dlpi_phnum;
+};
+
+#if _MIPS_SZPTR == 32
+#define ElfW(type)	Elf32_##type
+#elif _MIPS_SZPTR == 64
+#define ElfW(type)	Elf64_##type
+#endif
+
+int
+dl_iterate_phdr(int (*cb)(struct dl_phdr_info *info, size_t size, void *data),
+                void *data);
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/_types.h b/ndk/platforms/android-9/arch-mips/include/machine/_types.h
new file mode 100644
index 0000000..1cc6c21
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/_types.h
@@ -0,0 +1,145 @@
+/*	$OpenBSD: _types.h,v 1.5 2008/07/21 20:50:54 martynas Exp $	*/
+
+/*-
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)types.h	8.3 (Berkeley) 1/5/94
+ *	@(#)ansi.h	8.2 (Berkeley) 1/4/94
+ */
+
+#ifndef _MIPS64__TYPES_H_
+#define _MIPS64__TYPES_H_
+
+/*
+ *  We need to handle the various ISA levels for sizes.
+ */
+#define	_MIPS_ISA_MIPS1	1	/* R2000/R3000 */
+#define	_MIPS_ISA_MIPS2	2	/* R4000/R6000 */
+#define	_MIPS_ISA_MIPS3	3	/* R4000 */
+#define	_MIPS_ISA_MIPS4	4	/* TFP (R1x000) */
+
+/* 7.18.1.1 Exact-width integer types */
+typedef	__signed char		__int8_t;
+typedef	unsigned char		__uint8_t;
+typedef	short			__int16_t;
+typedef	unsigned short		__uint16_t;
+typedef	int			__int32_t;
+typedef	unsigned int		__uint32_t;
+/* LONGLONG */
+typedef	long long		__int64_t;
+/* LONGLONG */
+typedef	unsigned long long	__uint64_t;
+
+/* 7.18.1.2 Minimum-width integer types */
+typedef	__int8_t		__int_least8_t;
+typedef	__uint8_t		__uint_least8_t;
+typedef	__int16_t		__int_least16_t;
+typedef	__uint16_t		__uint_least16_t;
+typedef	__int32_t		__int_least32_t;
+typedef	__uint32_t		__uint_least32_t;
+typedef	__int64_t		__int_least64_t;
+typedef	__uint64_t		__uint_least64_t;
+
+/* 7.18.1.3 Fastest minimum-width integer types */
+typedef	__int32_t		__int_fast8_t;
+typedef	__uint32_t		__uint_fast8_t;
+typedef	__int32_t		__int_fast16_t;
+typedef	__uint32_t		__uint_fast16_t;
+typedef	__int32_t		__int_fast32_t;
+typedef	__uint32_t		__uint_fast32_t;
+typedef	__int64_t		__int_fast64_t;
+typedef	__uint64_t		__uint_fast64_t;
+
+/* 7.18.1.4 Integer types capable of holding object pointers */
+typedef	long			__intptr_t;
+typedef	unsigned long		__uintptr_t;
+
+/* 7.18.1.5 Greatest-width integer types */
+typedef	__int64_t		__intmax_t;
+typedef	__uint64_t		__uintmax_t;
+
+/* Register size */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4)
+typedef __int64_t		__register_t;
+typedef __int64_t		f_register_t;	/* XXX */
+#else
+typedef __int32_t		__register_t;
+typedef __int32_t		f_register_t;	/* XXX */
+#endif
+
+/* VM system types */
+typedef unsigned long		__vaddr_t;
+typedef unsigned long		__paddr_t;
+typedef unsigned long		__vsize_t;
+typedef unsigned long		__psize_t;
+
+/* Standard system types */
+typedef int			__clock_t;
+typedef int			__clockid_t;
+typedef double			__double_t;
+typedef float			__float_t;
+typedef long long		__off_t;
+typedef long			__ptrdiff_t;
+/*typedef	unsigned long		__size_t;*/
+typedef	long			__ssize_t;
+typedef	int			__time_t;
+typedef int			__timer_t;
+#if defined(__GNUC__) && __GNUC__ >= 3
+typedef	__builtin_va_list	__va_list;
+#else
+typedef	char *			__va_list;
+#endif
+
+/* Wide character support types */
+#ifndef __cplusplus
+typedef	int			__wchar_t;
+#endif
+typedef int			__wint_t;
+typedef	int			__rune_t;
+typedef	void *			__wctrans_t;
+typedef	void *			__wctype_t;
+
+#ifdef __MIPSEB__
+#define _BYTE_ORDER _BIG_ENDIAN
+#else
+#define _BYTE_ORDER _LITTLE_ENDIAN
+#endif
+
+#if defined(_KERNEL)
+typedef struct label_t {
+	__register_t val[14];
+} label_t;
+#endif
+
+/* XXX check why this still has to be defined. pmap.c issue? */
+#define __SWAP_BROKEN
+
+/* Feature test macros */
+#define __HAVE_TIMECOUNTER
+
+#endif	/* _MIPS64__TYPES_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/asm.h b/ndk/platforms/android-9/arch-mips/include/machine/asm.h
new file mode 100644
index 0000000..43dbc09
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/asm.h
@@ -0,0 +1,305 @@
+/*	$OpenBSD: asm.h,v 1.7 2004/10/20 12:49:15 pefo Exp $ */
+
+/*
+ * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+#ifndef _MIPS64_ASM_H
+#define _MIPS64_ASM_H
+
+#include <machine/regdef.h>
+
+#ifdef NEED_OLD_RM7KFIX
+#define ITLBNOPFIX      nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
+#else
+#define ITLBNOPFIX      nop;nop;nop;nop
+#endif
+
+#define	_MIPS_ISA_MIPS1	1	/* R2000/R3000 */
+#define	_MIPS_ISA_MIPS2	2	/* R4000/R6000 */
+#define	_MIPS_ISA_MIPS3	3	/* R4000 */
+#define	_MIPS_ISA_MIPS4	4	/* TFP (R1x000) */
+#ifdef __linux__
+#define	_MIPS_ISA_MIPS5 5
+#define	_MIPS_ISA_MIPS32 6
+#define	_MIPS_ISA_MIPS64 7
+#else
+#define	_MIPS_ISA_MIPS32 32	/* MIPS32 */
+#endif
+
+#if !defined(ABICALLS) && !defined(_NO_ABICALLS)
+#define	ABICALLS	.abicalls
+#endif
+
+#if defined(ABICALLS) && !defined(_KERNEL)
+	ABICALLS
+#endif
+
+#define _C_LABEL(x) x		/* XXX Obsolete but keep for a while */
+
+#if !defined(__MIPSEL__) && !defined(__MIPSEB__)
+#error "__MIPSEL__ or __MIPSEB__ must be defined"
+#endif
+/*
+ * Define how to access unaligned data word
+ */
+#if defined(__MIPSEL__)
+#define LWLO    lwl
+#define LWHI    lwr
+#define	SWLO	swl
+#define	SWHI	swr
+#define LDLO    ldl
+#define LDHI    ldr
+#define	SDLO	sdl
+#define	SDHI	sdr
+#endif
+#if defined(__MIPSEB__)
+#define LWLO    lwr
+#define LWHI    lwl
+#define	SWLO	swr
+#define	SWHI	swl
+#define LDLO    ldr
+#define LDHI    ldl
+#define	SDLO	sdr
+#define	SDHI	sdl
+#endif
+
+/*
+ *  Define programming environment for ABI.
+ */
+#if defined(ABICALLS) && !defined(_KERNEL) && !defined(_STANDALONE)
+
+#ifndef _MIPS_SIM
+#define _MIPS_SIM 1
+#define _ABIO32	1
+#endif
+#ifndef _MIPS_ISA
+#define _MIPS_ISA 2
+#define _MIPS_ISA_MIPS2 2
+#endif
+
+#if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
+#define NARGSAVE	4
+
+#define	SETUP_GP		\
+	.set	noreorder;	\
+	.cpload	t9;		\
+	.set	reorder;
+
+#define	SAVE_GP(x)		\
+	.cprestore x
+
+#define	SETUP_GP64(gpoff, name)
+#define	RESTORE_GP64
+#endif
+
+#if (_MIPS_SIM == _ABI64) || (_MIPS_SIM == _ABIN32)
+#define NARGSAVE	0
+
+#define	SETUP_GP
+#define	SAVE_GP(x)
+#define	SETUP_GP64(gpoff, name)	\
+	.cpsetup t9, gpoff, name
+#define	RESTORE_GP64		\
+	.cpreturn
+#endif
+
+#define	MKFSIZ(narg,locals) (((narg+locals)*REGSZ+31)&(~31))
+
+#else /* defined(ABICALLS) && !defined(_KERNEL) */
+
+#define	NARGSAVE	4
+#define	SETUP_GP
+#define	SAVE_GP(x)
+
+#define	ALIGNSZ		16	/* Stack layout alignment */
+#define	FRAMESZ(sz)	(((sz) + (ALIGNSZ-1)) & ~(ALIGNSZ-1))
+
+#endif
+
+/*
+ *  Basic register operations based on selected ISA
+ */
+#if (_MIPS_ISA == _MIPS_ISA_MIPS1 || _MIPS_ISA == _MIPS_ISA_MIPS2 || _MIPS_ISA == _MIPS_ISA_MIPS32)
+#define REGSZ		4	/* 32 bit mode register size */
+#define LOGREGSZ	2	/* log rsize */
+#define	REG_S	sw
+#define	REG_L	lw
+#define	CF_SZ		24	/* Call frame size */
+#define	CF_ARGSZ	16	/* Call frame arg size */
+#define	CF_RA_OFFS	20	/* Call ra save offset */
+#endif
+
+#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4)
+#define REGSZ		8	/* 64 bit mode register size */
+#define LOGREGSZ	3	/* log rsize */
+#define	REG_S	sd
+#define	REG_L	ld
+#define	CF_SZ		48	/* Call frame size (multiple of ALIGNSZ) */
+#define	CF_ARGSZ	32	/* Call frame arg size */
+#define	CF_RA_OFFS	40	/* Call ra save offset */
+#endif
+
+#define REGSZ_FP	 8	/* 64 bit FP register size */
+
+#ifndef __LP64__
+#define	PTR_L		lw
+#define	PTR_S		sw
+#define	PTR_SUB		sub
+#define	PTR_ADD		add
+#define	PTR_SUBU	subu
+#define	PTR_ADDU	addu
+#define LI		li
+#define	LA		la
+#define	PTR_SLL		sll
+#define	PTR_SRL		srl
+#define	PTR_VAL		.word
+#else
+#define	PTR_L		ld
+#define	PTR_S		sd
+#define	PTR_ADD		dadd
+#define	PTR_SUB		dsub
+#define	PTR_SUBU	dsubu
+#define	PTR_ADDU	daddu
+#define LI		dli
+#define LA		dla
+#define	PTR_SLL		dsll
+#define	PTR_SRL		dsrl
+#define	PTR_VAL		.dword
+#endif
+
+/*
+ * Define -pg profile entry code.
+ */
+#if defined(XGPROF) || defined(XPROF)
+#define	MCOUNT			\
+	PTR_SUBU sp, sp, 32;	\
+	SAVE_GP(16);		\
+	sw	ra, 28(sp);	\
+	sw	gp, 24(sp);	\
+	.set	noat;		\
+	.set	noreorder;	\
+	move	AT, ra;		\
+	jal	_mcount;	\
+	PTR_SUBU sp, sp, 8;	\
+	lw	ra, 28(sp);	\
+	PTR_ADDU sp, sp, 32;	\
+	.set reorder;		\
+	.set	at;
+#else
+#define	MCOUNT
+#endif
+
+/*
+ * LEAF(x, fsize)
+ *
+ *	Declare a leaf routine.
+ */
+#define LEAF(x, fsize)		\
+	.align	3;		\
+	.globl x;		\
+	.ent x, 0;		\
+x: ;				\
+	.frame sp, fsize, ra;	\
+	SETUP_GP		\
+	MCOUNT
+
+#define	ALEAF(x)		\
+	.globl	x;		\
+x:
+
+/*
+ * NLEAF(x)
+ *
+ *	Declare a non-profiled leaf routine.
+ */
+#define NLEAF(x, fsize)		\
+	.align	3;		\
+	.globl x;		\
+	.ent x, 0;		\
+x: ;				\
+	.frame sp, fsize, ra;	\
+	SETUP_GP
+
+/*
+ * NON_LEAF(x)
+ *
+ *	Declare a non-leaf routine (a routine that makes other C calls).
+ */
+#define NON_LEAF(x, fsize, retpc) \
+	.align	3;		\
+	.globl x;		\
+	.ent x, 0;		\
+x: ;				\
+	.frame sp, fsize, retpc; \
+	SETUP_GP		\
+	MCOUNT
+
+/*
+ * NNON_LEAF(x)
+ *
+ *	Declare a non-profiled non-leaf routine
+ *	(a routine that makes other C calls).
+ */
+#define NNON_LEAF(x, fsize, retpc) \
+	.align	3;		\
+	.globl x;		\
+	.ent x, 0;		\
+x: ;				\
+	.frame sp, fsize, retpc	\
+	SETUP_GP
+
+/*
+ * END(x)
+ *
+ *	Mark end of a procedure.
+ */
+#define END(x) \
+	.end x
+
+/*
+ * Macros to panic and printf from assembly language.
+ */
+#define PANIC(msg) \
+	LA	a0, 9f; \
+	jal	panic;	\
+	nop	;	\
+	MSG(msg)
+
+#define	PRINTF(msg) \
+	la	a0, 9f; \
+	jal	printf; \
+	nop	;	\
+	MSG(msg)
+
+#define	MSG(msg) \
+	.rdata; \
+9:	.asciiz	msg; \
+	.text
+
+#define ASMSTR(str) \
+	.asciiz str; \
+	.align	3
+
+#endif /* !_MIPS_ASM_H */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/cdefs.h b/ndk/platforms/android-9/arch-mips/include/machine/cdefs.h
new file mode 100644
index 0000000..d52376a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/cdefs.h
@@ -0,0 +1,47 @@
+/*	$OpenBSD: cdefs.h,v 1.4 2006/01/10 00:04:04 millert Exp $	*/
+
+/*
+ * Copyright (c) 2002-2003 Opsycon AB  (www.opsycon.se / www.opsycon.com)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+
+#ifndef _MIPS_CDEFS_H_
+#define	_MIPS_CDEFS_H_
+
+#if defined(lint)
+#define __indr_reference(sym,alias)	__lint_equal__(sym,alias)
+#define __warn_references(sym,msg)
+#define __weak_alias(alias,sym)		__lint_equal__(sym,alias)
+#elif defined(__GNUC__) && defined(__STDC__)
+#define __weak_alias(alias,sym)				\
+	__asm__(".weak " __STRING(alias) " ; "		\
+	    __STRING(alias) " = " __STRING(sym))
+#define	__warn_references(sym,msg)			\
+	__asm__(".section .gnu.warning." __STRING(sym)	\
+	    " ; .ascii \"" msg "\" ; .text")
+#define	__indr_references(sym,msg)	/* nothing */
+#endif
+
+#endif /* !_MIPS_CDEFS_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/exec.h b/ndk/platforms/android-9/arch-mips/include/machine/exec.h
new file mode 100644
index 0000000..3c63f74
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/exec.h
@@ -0,0 +1,188 @@
+/*	$OpenBSD: exec.h,v 1.1 2004/10/18 19:05:36 grange Exp $	*/
+
+/*
+ * Copyright (c) 1996-2004 Per Fogelstrom, Opsycon AB
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#ifndef _MIPS64_EXEC_H_
+#define _MIPS64_EXEC_H_
+
+#define	__LDPGSZ	4096
+
+/*
+ *  Define what exec "formats" we should handle.
+ */
+#define NATIVE_EXEC_ELF
+#define NATIVE_ELFSIZE 64
+#define	EXEC_SCRIPT
+
+/*
+ *  If included from sys/exec.h define kernels ELF format.
+ */
+#ifdef __LP64__
+#define	ARCH_ELFSIZE 64
+#define DB_ELFSIZE 64
+#define ELF_TARG_CLASS  ELFCLASS64
+#else
+#define	ARCH_ELFSIZE 32
+#define DB_ELFSIZE 32
+#define ELF_TARG_CLASS  ELFCLASS32
+#endif
+
+#if defined(__MIPSEB__)
+#define ELF_TARG_DATA		ELFDATA2MSB
+#else
+#define ELF_TARG_DATA		ELFDATA2LSB
+#endif
+#define ELF_TARG_MACH		EM_MIPS
+
+#define _NLIST_DO_ELF
+
+#if defined(_LP64)
+#define _KERN_DO_ELF64
+#if defined(COMPAT_O32)
+#define _KERN_DO_ELF
+#endif
+#else
+#define _KERN_DO_ELF
+#endif
+
+/* Information taken from MIPS ABI supplemental */
+
+/* Architecture dependent Segment types - p_type */
+#define PT_MIPS_REGINFO 0x70000000      /* Register usage information */
+
+/* Architecture dependent d_tag field for Elf32_Dyn.  */
+#define DT_MIPS_RLD_VERSION  0x70000001 /* Runtime Linker Interface ID */
+#define DT_MIPS_TIME_STAMP   0x70000002 /* Timestamp */
+#define DT_MIPS_ICHECKSUM    0x70000003 /* Cksum of ext. str. and com. sizes */
+#define DT_MIPS_IVERSION     0x70000004 /* Version string (string tbl index) */
+#define DT_MIPS_FLAGS        0x70000005 /* Flags */
+#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Segment base address */
+#define DT_MIPS_CONFLICT     0x70000008 /* Adr of .conflict section */
+#define DT_MIPS_LIBLIST      0x70000009 /* Address of .liblist section */
+#define DT_MIPS_LOCAL_GOTNO  0x7000000a /* Number of local .GOT entries */
+#define DT_MIPS_CONFLICTNO   0x7000000b /* Number of .conflict entries */
+#define DT_MIPS_LIBLISTNO    0x70000010 /* Number of .liblist entries */
+#define DT_MIPS_SYMTABNO     0x70000011 /* Number of .dynsym entries */
+#define DT_MIPS_UNREFEXTNO   0x70000012 /* First external DYNSYM */
+#define DT_MIPS_GOTSYM       0x70000013 /* First GOT entry in .dynsym */
+#define DT_MIPS_HIPAGENO     0x70000014 /* Number of GOT page table entries */
+#define DT_MIPS_RLD_MAP      0x70000016 /* Address of debug map pointer */
+
+#define DT_PROCNUM (DT_MIPS_RLD_MAP - DT_LOPROC + 1)
+
+/*
+ * Legal values for e_flags field of Elf32_Ehdr.
+ */
+#define EF_MIPS_NOREORDER	0x00000001	/* .noreorder was used */
+#define EF_MIPS_PIC		0x00000002	/* Contains PIC code */
+#define EF_MIPS_CPIC		0x00000004	/* Uses PIC calling sequence */
+#define	EF_MIPS_ABI2		0x00000020	/* -n32 on Irix 6 */
+#define	EF_MIPS_32BITMODE	0x00000100	/* 64 bit in 32 bit mode... */
+#define EF_MIPS_ARCH		0xf0000000	/* MIPS architecture level */
+#define	E_MIPS_ARCH_1		0x00000000
+#define	E_MIPS_ARCH_2		0x10000000
+#define	E_MIPS_ARCH_3		0x20000000
+#define	E_MIPS_ARCH_4		0x30000000
+#define	EF_MIPS_ABI		0x0000f000	/* ABI level */
+#define	E_MIPS_ABI_NONE		0x00000000	/* ABI level not set */
+#define	E_MIPS_ABI_O32		0x00001000
+#define	E_MIPS_ABI_O64		0x00002000
+#define	E_MIPS_ABI_EABI32	0x00004000
+#define	E_MIPS_ABI_EABI64	0x00004000
+
+/*
+ * Mips special sections.
+ */
+#define	SHN_MIPS_ACOMMON	0xff00		/* Allocated common symbols */
+#define	SHN_MIPS_SCOMMON	0xff03		/* Small common symbols */
+#define	SHN_MIPS_SUNDEFINED	0xff04		/* Small undefined symbols */
+
+/*
+ * Legal values for sh_type field of Elf32_Shdr.
+ */
+#define	SHT_MIPS_LIBLIST  0x70000000	/* Shared objects used in link */
+#define	SHT_MIPS_CONFLICT 0x70000002	/* Conflicting symbols */
+#define	SHT_MIPS_GPTAB    0x70000003	/* Global data area sizes */
+#define	SHT_MIPS_UCODE    0x70000004	/* Reserved for SGI/MIPS compilers */
+#define	SHT_MIPS_DEBUG    0x70000005	/* MIPS ECOFF debugging information */
+#define	SHT_MIPS_REGINFO  0x70000006	/* Register usage information */
+
+/*
+ * Legal values for sh_flags field of Elf32_Shdr.
+ */
+#define	SHF_MIPS_GPREL	0x10000000	/* Must be part of global data area */
+
+#if 0
+/*
+ * Entries found in sections of type SHT_MIPS_GPTAB.
+ */
+typedef union {
+	struct {
+		Elf32_Word gt_current_g_value;	/* -G val used in compilation */
+		Elf32_Word gt_unused;	/* Not used */
+	} gt_header;			/* First entry in section */
+	struct {
+		Elf32_Word gt_g_value;	/* If this val were used for -G */
+		Elf32_Word gt_bytes;	/* This many bytes would be used */
+	} gt_entry;			/* Subsequent entries in section */
+} Elf32_gptab;
+
+/*
+ * Entry found in sections of type SHT_MIPS_REGINFO.
+ */
+typedef struct {
+	Elf32_Word	ri_gprmask;	/* General registers used */
+	Elf32_Word	ri_cprmask[4];	/* Coprocessor registers used */
+	Elf32_Sword	ri_gp_value;	/* $gp register value */
+} Elf32_RegInfo;
+#endif
+
+
+/*
+ * Mips relocations.
+ */
+
+#define	R_MIPS_NONE	0	/* No reloc */
+#define	R_MIPS_16	1	/* Direct 16 bit */
+#define	R_MIPS_32	2	/* Direct 32 bit */
+#define	R_MIPS_REL32	3	/* PC relative 32 bit */
+#define	R_MIPS_26	4	/* Direct 26 bit shifted */
+#define	R_MIPS_HI16	5	/* High 16 bit */
+#define	R_MIPS_LO16	6	/* Low 16 bit */
+#define	R_MIPS_GPREL16	7	/* GP relative 16 bit */
+#define	R_MIPS_LITERAL	8	/* 16 bit literal entry */
+#define	R_MIPS_GOT16	9	/* 16 bit GOT entry */
+#define	R_MIPS_PC16	10	/* PC relative 16 bit */
+#define	R_MIPS_CALL16	11	/* 16 bit GOT entry for function */
+#define	R_MIPS_GPREL32	12	/* GP relative 32 bit */
+
+#define	R_MIPS_64	18
+
+#define	R_MIPS_REL32_64	((R_MIPS_64 << 8) | R_MIPS_REL32)
+
+
+#endif	/* !_MIPS64_EXEC_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/ieee.h b/ndk/platforms/android-9/arch-mips/include/machine/ieee.h
new file mode 100644
index 0000000..520a77b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/ieee.h
@@ -0,0 +1,169 @@
+/*	$OpenBSD: ieee.h,v 1.4 2010/01/23 19:11:21 miod Exp $	*/
+
+/*
+ * Copyright (c) 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This software was developed by the Computer Systems Engineering group
+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ * contributed to Berkeley.
+ *
+ * All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ *	This product includes software developed by the University of
+ *	California, Lawrence Berkeley Laboratory.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)ieee.h	8.1 (Berkeley) 6/11/93
+ */
+
+/*
+ * ieee.h defines the machine-dependent layout of the machine's IEEE
+ * floating point.  It does *not* define (yet?) any of the rounding
+ * mode bits, exceptions, and so forth.
+ */
+
+/*
+ * Define the number of bits in each fraction and exponent.
+ *
+ *		     k	         k+1
+ * Note that  1.0 x 2  == 0.1 x 2      and that denorms are represented
+ *
+ *					  (-exp_bias+1)
+ * as fractions that look like 0.fffff x 2             .  This means that
+ *
+ *			 -126
+ * the number 0.10000 x 2    , for instance, is the same as the normalized
+ *
+ *		-127			   -128
+ * float 1.0 x 2    .  Thus, to represent 2    , we need one leading zero
+ *
+ *				  -129
+ * in the fraction; to represent 2    , we need two, and so on.  This
+ *
+ *						     (-exp_bias-fracbits+1)
+ * implies that the smallest denormalized number is 2
+ *
+ * for whichever format we are talking about: for single precision, for
+ *
+ *						-126		-149
+ * instance, we get .00000000000000000000001 x 2    , or 1.0 x 2    , and
+ *
+ * -149 == -127 - 23 + 1.
+ */
+#define	SNG_EXPBITS	8
+#define	SNG_FRACBITS	23
+
+#define	DBL_EXPBITS	11
+#define	DBL_FRACHBITS	20
+#define	DBL_FRACLBITS	32
+#define	DBL_FRACBITS	52
+
+#define	EXT_EXPBITS	15
+#define	EXT_FRACHBITS	16
+#define	EXT_FRACHMBITS	32
+#define	EXT_FRACLMBITS	32
+#define	EXT_FRACLBITS	32
+#define	EXT_FRACBITS	112
+
+#define	EXT_IMPLICIT_NBIT
+
+#define	EXT_TO_ARRAY32(p, a) do {		\
+	(a)[0] = (uint32_t)(p)->ext_fracl;	\
+	(a)[1] = (uint32_t)(p)->ext_fraclm;	\
+	(a)[2] = (uint32_t)(p)->ext_frachm;	\
+	(a)[3] = (uint32_t)(p)->ext_frach;	\
+} while(0)
+
+struct ieee_single {
+#ifdef __MIPSEB__
+	u_int	sng_sign:1;
+	u_int	sng_exp:8;
+	u_int	sng_frac:23;
+#else
+	u_int	sng_frac:23;
+	u_int	sng_exp:8;
+	u_int	sng_sign:1;
+#endif
+};
+
+struct ieee_double {
+#ifdef __MIPSEB__
+	u_int	dbl_sign:1;
+	u_int	dbl_exp:11;
+	u_int	dbl_frach:20;
+	u_int	dbl_fracl;
+#else
+	u_int	dbl_fracl;
+	u_int	dbl_frach:20;
+	u_int	dbl_exp:11;
+	u_int	dbl_sign:1;
+#endif
+};
+
+struct ieee_ext {
+#ifdef __MIPSEB__
+	u_int	ext_sign:1;
+	u_int	ext_exp:15;
+	u_int	ext_frach:16;
+	u_int	ext_frachm;
+	u_int	ext_fraclm;
+	u_int	ext_fracl;
+#else
+	u_int	ext_fracl;
+	u_int	ext_fraclm;
+	u_int	ext_frachm;
+	u_int	ext_frach:16;
+	u_int	ext_exp:15;
+	u_int	ext_sign:1;
+#endif
+};
+
+/*
+ * Floats whose exponent is in [1..INFNAN) (of whatever type) are
+ * `normal'.  Floats whose exponent is INFNAN are either Inf or NaN.
+ * Floats whose exponent is zero are either zero (iff all fraction
+ * bits are zero) or subnormal values.
+ *
+ * A NaN is a `signalling NaN' if its QUIETNAN bit is clear in its
+ * high fraction; if the bit is set, it is a `quiet NaN'.
+ */
+#define	SNG_EXP_INFNAN	255
+#define	DBL_EXP_INFNAN	2047
+#define	EXT_EXP_INFNAN	32767
+
+#if 0
+#define	SNG_QUIETNAN	(1 << 22)
+#define	DBL_QUIETNAN	(1 << 19)
+#define	EXT_QUIETNAN	(1 << 15)
+#endif
+
+/*
+ * Exponent biases.
+ */
+#define	SNG_EXP_BIAS	127
+#define	DBL_EXP_BIAS	1023
+#define	EXT_EXP_BIAS	16383
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/internal_types.h b/ndk/platforms/android-9/arch-mips/include/machine/internal_types.h
new file mode 100644
index 0000000..529079f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/internal_types.h
@@ -0,0 +1,8 @@
+/* $OpenBSD: internal_types.h,v 1.1 2004/08/06 20:56:02 pefo Exp $ */
+/* Public domain */
+#ifndef _MIPS64_INTERNAL_TYPES_H_
+#define _MIPS64_INTERNAL_TYPES_H_
+
+/* Machine special type definitions */
+
+#endif
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/kernel.h b/ndk/platforms/android-9/arch-mips/include/machine/kernel.h
new file mode 100644
index 0000000..462b8e3
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/kernel.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _ARCH_ARM_KERNEL_H
+#define _ARCH_ARM_KERNEL_H
+
+/* this file contains kernel-specific definitions that were optimized out of
+   our processed kernel headers, but still useful nonetheless... */
+
+typedef unsigned long   __kernel_blkcnt_t;
+typedef unsigned long   __kernel_blksize_t;
+
+/* these aren't really defined by the kernel headers though... */
+typedef unsigned long   __kernel_fsblkcnt_t;
+typedef unsigned long   __kernel_fsfilcnt_t;
+typedef unsigned int    __kernel_id_t;
+
+#endif /* _ARCH_ARM_KERNEL_H */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/limits.h b/ndk/platforms/android-9/arch-mips/include/machine/limits.h
new file mode 100644
index 0000000..339444d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/limits.h
@@ -0,0 +1,62 @@
+/*	$OpenBSD: limits.h,v 1.5 2007/05/07 20:51:07 kettenis Exp $	*/
+
+/*
+ * Copyright (c) 1988, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)limits.h	8.3 (Berkeley) 1/4/94
+ */
+
+#ifndef _MIPS_LIMITS_H_
+#define _MIPS_LIMITS_H_
+
+#include <sys/cdefs.h>
+
+#define	MB_LEN_MAX	6		/* Allow 31 bit UTF2 */
+
+#ifndef	SIZE_MAX
+#define	SIZE_MAX	ULONG_MAX	/* max value for a size_t */
+#endif
+#define	SSIZE_MAX	LONG_MAX	/* max value for a ssize_t */
+
+#if __BSD_VISIBLE
+#define	SIZE_T_MAX	ULONG_MAX	/* max value for a size_t (historic) */
+
+/* Quads and longs are the same on mips64 */
+#define	UQUAD_MAX	(ULONG_MAX)	/* max value for a uquad_t */
+#define	QUAD_MAX	(LONG_MAX)	/* max value for a quad_t */
+#define	QUAD_MIN	(LONG_MIN)	/* min value for a quad_t */
+
+#endif /* __BSD_VISIBLE */
+
+
+#define LONGLONG_BIT    64
+#define LONGLONG_MIN    (-9223372036854775807LL-1)
+#define LONGLONG_MAX    9223372036854775807LL
+#define ULONGLONG_MAX   18446744073709551615ULL
+
+#endif /* !_MIPS_LIMITS_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/regdef.h b/ndk/platforms/android-9/arch-mips/include/machine/regdef.h
new file mode 100644
index 0000000..ae18392
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/regdef.h
@@ -0,0 +1,92 @@
+/*	$OpenBSD: regdef.h,v 1.3 2005/08/07 07:29:44 miod Exp $	*/
+
+/*
+ * Copyright (c) 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Ralph Campbell. This file is derived from the MIPS RISC
+ * Architecture book by Gerry Kane.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)regdef.h	8.1 (Berkeley) 6/10/93
+ */
+#ifndef _MIPS_REGDEF_H_
+#define _MIPS_REGDEF_H_
+
+#define zero	$0	/* always zero */
+#define AT	$at	/* assembler temp */
+#define v0	$2	/* return value */
+#define v1	$3
+#define a0	$4	/* argument registers */
+#define a1	$5
+#define a2	$6
+#define a3	$7
+#if defined(__mips_n32) || defined(__mips_n64)
+#define a4	$8	/* expanded register arguments */
+#define a5	$9
+#define a6	$10
+#define a7	$11
+#define ta0	$8	/* alias */
+#define ta1	$9
+#define ta2	$10
+#define ta3	$11
+#define t0	$12	/* temp registers (not saved across subroutine calls) */
+#define t1	$13
+#define t2	$14
+#define t3	$15
+#else
+#define t0	$8	/* temp registers (not saved across subroutine calls) */
+#define t1	$9
+#define t2	$10
+#define t3	$11
+#define t4	$12
+#define t5	$13
+#define t6	$14
+#define t7	$15
+#define ta0	$12	/* alias */
+#define ta1	$13
+#define ta2	$14
+#define ta3	$15
+#endif
+#define s0	$16	/* saved across subroutine calls (callee saved) */
+#define s1	$17
+#define s2	$18
+#define s3	$19
+#define s4	$20
+#define s5	$21
+#define s6	$22
+#define s7	$23
+#define t8	$24	/* two more temp registers */
+#define t9	$25
+#define k0	$26	/* kernel temporary */
+#define k1	$27
+#define gp	$28	/* global pointer */
+#define sp	$29	/* stack pointer */
+#define s8	$30	/* one more callee saved */
+#define ra	$31	/* return address */
+
+#endif /* !_MIPS_REGDEF_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/regnum.h b/ndk/platforms/android-9/arch-mips/include/machine/regnum.h
new file mode 100644
index 0000000..bfe1280
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/regnum.h
@@ -0,0 +1,119 @@
+/*	$OpenBSD: regnum.h,v 1.3 2004/08/10 20:28:13 deraadt Exp $ */
+
+/*
+ * Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
+
+#ifndef _MIPS64_REGNUM_H_
+#define _MIPS64_REGNUM_H_
+
+/*
+ * Location of the saved registers relative to ZERO.
+ * Usage is p->p_regs[XX].
+ */
+#define ZERO	0
+#define AST	1
+#define V0	2
+#define V1	3
+#define A0	4
+#define A1	5
+#define A2	6
+#define A3	7
+#define T0	8
+#define T1	9
+#define T2	10
+#define T3	11
+#define T4	12
+#define T5	13
+#define T6	14
+#define T7	15
+#define S0	16
+#define S1	17
+#define S2	18
+#define S3	19
+#define S4	20
+#define S5	21
+#define S6	22
+#define S7	23
+#define T8	24
+#define T9	25
+#define K0	26
+#define K1	27
+#define GP	28
+#define SP	29
+#define S8	30
+#define RA	31
+#define	SR	32
+#define	PS	SR	/* alias for SR */
+#define MULLO	33
+#define MULHI	34
+#define BADVADDR 35
+#define CAUSE	36
+#define	PC	37
+#define	IC	38
+#define	CPL	39
+
+#define	NUMSAVEREGS 40		/* Number of registers saved in trap */
+
+#define FPBASE	NUMSAVEREGS
+#define F0	(FPBASE+0)
+#define F1	(FPBASE+1)
+#define F2	(FPBASE+2)
+#define F3	(FPBASE+3)
+#define F4	(FPBASE+4)
+#define F5	(FPBASE+5)
+#define F6	(FPBASE+6)
+#define F7	(FPBASE+7)
+#define F8	(FPBASE+8)
+#define F9	(FPBASE+9)
+#define F10	(FPBASE+10)
+#define F11	(FPBASE+11)
+#define F12	(FPBASE+12)
+#define F13	(FPBASE+13)
+#define F14	(FPBASE+14)
+#define F15	(FPBASE+15)
+#define F16	(FPBASE+16)
+#define F17	(FPBASE+17)
+#define F18	(FPBASE+18)
+#define F19	(FPBASE+19)
+#define F20	(FPBASE+20)
+#define F21	(FPBASE+21)
+#define F22	(FPBASE+22)
+#define F23	(FPBASE+23)
+#define F24	(FPBASE+24)
+#define F25	(FPBASE+25)
+#define F26	(FPBASE+26)
+#define F27	(FPBASE+27)
+#define F28	(FPBASE+28)
+#define F29	(FPBASE+29)
+#define F30	(FPBASE+30)
+#define F31	(FPBASE+31)
+#define	FSR	(FPBASE+32)
+
+#define	NUMFPREGS 33
+
+#define	NREGS	(NUMSAVEREGS + NUMFPREGS)
+
+#endif /* !_MIPS64_REGNUM_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/setjmp.h b/ndk/platforms/android-9/arch-mips/include/machine/setjmp.h
new file mode 100644
index 0000000..55ba7be
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/setjmp.h
@@ -0,0 +1,10 @@
+/*	$OpenBSD: setjmp.h,v 1.2 2004/08/10 21:10:56 pefo Exp $	*/
+
+/* Public domain */
+
+#ifndef _MIPS_SETJMP_H_
+#define _MIPS_SETJMP_H_
+
+#define	_JBLEN	157		/* size, in longs, of a jmp_buf */
+
+#endif /* !_MIPS_SETJMP_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/machine/signal.h b/ndk/platforms/android-9/arch-mips/include/machine/signal.h
new file mode 100644
index 0000000..96ebf76
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/machine/signal.h
@@ -0,0 +1,147 @@
+/*	$OpenBSD: signal.h,v 1.8 2006/01/09 18:18:37 millert Exp $	*/
+
+/*
+ * Copyright (c) 1992, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Ralph Campbell.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)signal.h	8.1 (Berkeley) 6/10/93
+ */
+
+#ifndef _MIPS_SIGNAL_H_
+#define _MIPS_SIGNAL_H_
+
+#include <sys/cdefs.h>
+
+#if !defined(__LANGUAGE_ASSEMBLY)
+#include <sys/types.h>
+
+/*
+ * Machine-dependent signal definitions
+ */
+typedef int sig_atomic_t;
+
+#if __BSD_VISIBLE || __XPG_VISIBLE >= 420
+
+/*
+ * Information pushed on stack when a signal is delivered.
+ * This is used by the kernel to restore state following
+ * execution of the signal handler.  It is also made available
+ * to the handler to allow it to restore state properly if
+ * a non-standard exit is performed.
+ */
+
+#if defined(ANDROID_CHANGES)
+
+/*
+ * The Linux and OpenBSD sigcontext structures are slightly different
+ * This is the Linux O32 ABI compatible sigcontext
+ */
+
+struct sigcontext {
+	unsigned int sc_regmask;
+	unsigned int sc_status;
+	unsigned long long sc_pc;
+	unsigned long long sc_regs[32];
+	unsigned long long sc_fpregs[32];
+	unsigned int sc_acx;
+	unsigned int sc_fpc_csr;
+	unsigned int sc_fpc_eir;
+	unsigned int sc_used_math;
+	unsigned int sc_dsp;
+	unsigned long long sc_mdhi;
+	unsigned long long sc_mdlo;
+	unsigned long sc_hi1;
+	unsigned long sc_lo1;
+	unsigned long sc_hi2;
+	unsigned long sc_lo2;
+	unsigned long sc_hi3;
+	unsigned long sc_lo3;
+};
+
+#else
+
+struct	sigcontext {
+	long	sc_onstack;	/* sigstack state to restore */
+	long	 sc_mask;	/* signal mask to restore */
+	__register_t sc_pc;	/* pc at time of signal */
+	__register_t sc_regs[32]; /* processor regs 0 to 31 */
+	__register_t mullo;	/* mullo and mulhi registers... */
+	__register_t mulhi;	/* mullo and mulhi registers... */
+	f_register_t sc_fpregs[33]; /* fp regs 0 to 31 and csr */
+	long	sc_fpused;	/* fp has been used */
+	long	sc_fpc_eir;	/* floating point exception instruction reg */
+	long	xxx[8];		/* XXX reserved */
+};
+#endif
+#endif /* __BSD_VISIBLE || __XPG_VISIBLE >= 420 */
+
+#else /* __LANGUAGE_ASSEMBLY */
+
+#ifdef ANDROID_CHANGES
+
+#define	SC_REGMASK	(0*REGSZ)
+#define	SC_STATUS	(1*REGSZ)
+#define	SC_PC		(2*REGSZ)
+#define	SC_REGS		(SC_PC+8)
+#define	SC_FPREGS	(SC_REGS+32*8)
+#define	SC_ACX		(SC_FPREGS+32*REGSZ_FP)
+#define	SC_FPC_CSR	(SC_ACX+1*REGSZ)
+#define	SC_FPC_EIR	(SC_ACX+2*REGSZ)
+#define	SC_USED_MATH	(SC_ACX+3*REGSZ)
+#define	SC_DSP		(SC_ACX+4*REGSZ)
+#define	SC_MDHI		(SC_ACX+5*REGSZ)
+#define	SC_MDLO		(SC_MDHI+8)
+#define	SC_HI1		(SC_MDLO+8)
+#define	SC_LO1		(SC_HI1+1*REGSZ)
+#define	SC_HI2		(SC_HI1+2*REGSZ)
+#define	SC_LO2		(SC_HI1+3*REGSZ)
+#define	SC_HI3		(SC_HI1+4*REGSZ)
+#define	SC_LO3		(SC_HI1+5*REGSZ)
+/* OpenBSD compatibility */
+#define	SC_MASK		SC_REGMASK
+#define	SC_FPUSED	SC_USED_MATH
+
+#else
+
+#define SC_ONSTACK	(0 * REGSZ)
+#define	SC_MASK		(1 * REGSZ)
+#define	SC_PC		(2 * REGSZ)
+#define	SC_REGS		(3 * REGSZ)
+#define	SC_MULLO	(35 * REGSZ)
+#define	SC_MULHI	(36 * REGSZ)
+#define	SC_FPREGS	(37 * REGSZ)
+#define	SC_FPUSED	(70 * REGSZ)
+#define	SC_FPC_EIR	(71 * REGSZ)
+
+#endif /*ANDROID CHANGES*/
+
+#endif /* __LANGUAGE_ASSEMBLY */
+
+#endif	/* !_MIPS_SIGNAL_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/_sigdefs.h b/ndk/platforms/android-9/arch-mips/include/sys/_sigdefs.h
new file mode 100644
index 0000000..6b47a03
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/_sigdefs.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * this header is used to define signal constants and names;
+ * it might be included several times
+ */
+
+#ifndef __BIONIC_SIGDEF
+#error __BIONIC_SIGDEF not defined
+#endif
+
+__BIONIC_SIGDEF(HUP,1,"Hangup")
+__BIONIC_SIGDEF(INT,2,"Interrupt")
+__BIONIC_SIGDEF(QUIT,3,"Quit")
+__BIONIC_SIGDEF(ILL,4,"Illegal instruction")
+__BIONIC_SIGDEF(TRAP,5,"Trap")
+__BIONIC_SIGDEF(ABRT,6,"Aborted")
+#ifdef __mips__
+__BIONIC_SIGDEF(EMT,7,"EMT")
+#else
+__BIONIC_SIGDEF(BUS,7,"Bus error")
+#endif
+__BIONIC_SIGDEF(FPE,8,"Floating point exception")
+__BIONIC_SIGDEF(KILL,9,"Killed")
+#ifdef __mips__
+__BIONIC_SIGDEF(BUS,10,"Bus error")
+#else
+__BIONIC_SIGDEF(USR1,10,"User signal 1")
+#endif
+__BIONIC_SIGDEF(SEGV,11,"Segmentation fault")
+#ifdef __mips__
+__BIONIC_SIGDEF(SYS,12,"Bad system call")
+#else
+__BIONIC_SIGDEF(USR2,12,"User signal 2")
+#endif
+__BIONIC_SIGDEF(PIPE,13,"Broken pipe")
+__BIONIC_SIGDEF(ALRM,14,"Alarm clock")
+__BIONIC_SIGDEF(TERM,15,"Terminated")
+#ifdef __mips__
+__BIONIC_SIGDEF(USR1,16,"User signal 1")
+__BIONIC_SIGDEF(USR2,17,"User signal 2")
+__BIONIC_SIGDEF(CHLD,18,"Child exited")
+__BIONIC_SIGDEF(PWR,19,"Power failure")
+__BIONIC_SIGDEF(WINCH,20,"Window size changed")
+__BIONIC_SIGDEF(URG,21,"Urgent I/O condition")
+__BIONIC_SIGDEF(IO,22,"I/O possible")
+__BIONIC_SIGDEF(STOP,23,"Stopped (signal)")
+__BIONIC_SIGDEF(TSTP,24,"Stopped")
+__BIONIC_SIGDEF(CONT,25,"Continue")
+__BIONIC_SIGDEF(TTIN,26,"Stopped (tty input)")
+__BIONIC_SIGDEF(TTOU,27,"Stopped (tty output)")
+__BIONIC_SIGDEF(VTALRM,28,"Virtual timer expired")
+__BIONIC_SIGDEF(PROF,29,"Profiling timer expired")
+__BIONIC_SIGDEF(XCPU,30,"CPU time limit exceeded")
+__BIONIC_SIGDEF(XFSZ,31,"File size limit exceeded")
+#else
+__BIONIC_SIGDEF(STKFLT,16,"Stack fault")
+__BIONIC_SIGDEF(CHLD,17,"Child exited")
+__BIONIC_SIGDEF(CONT,18,"Continue")
+__BIONIC_SIGDEF(STOP,19,"Stopped (signal)")
+__BIONIC_SIGDEF(TSTP,20,"Stopped")
+__BIONIC_SIGDEF(TTIN,21,"Stopped (tty input)")
+__BIONIC_SIGDEF(TTOU,22,"Stopper (tty output)")
+__BIONIC_SIGDEF(URG,23,"Urgent I/O condition")
+__BIONIC_SIGDEF(XCPU,24,"CPU time limit exceeded")
+__BIONIC_SIGDEF(XFSZ,25,"File size limit exceeded")
+__BIONIC_SIGDEF(VTALRM,26,"Virtual timer expired")
+__BIONIC_SIGDEF(PROF,27,"Profiling timer expired")
+__BIONIC_SIGDEF(WINCH,28,"Window size changed")
+__BIONIC_SIGDEF(IO,29,"I/O possible")
+__BIONIC_SIGDEF(PWR,30,"Power failure")
+__BIONIC_SIGDEF(SYS,31,"Bad system call")
+#endif
+
+#undef __BIONIC_SIGDEF
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/cachectl.h b/ndk/platforms/android-9/arch-mips/include/sys/cachectl.h
new file mode 100644
index 0000000..51b3266
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/cachectl.h
@@ -0,0 +1,10 @@
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H 1
+
+#ifdef __mips__
+#include <asm/cachectl.h>
+extern int __cachectl (void *addr, __const int nbytes, __const int op);
+extern int _flush_cache (char *addr, __const int nbytes, __const int op);
+#endif
+
+#endif /* sys/cachectl.h */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/ioctl_compat.h b/ndk/platforms/android-9/arch-mips/include/sys/ioctl_compat.h
new file mode 100644
index 0000000..d9ba4c7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/ioctl_compat.h
@@ -0,0 +1,174 @@
+/*	$NetBSD: ioctl_compat.h,v 1.15 2005/12/03 17:10:46 christos Exp $	*/
+
+/*
+ * Copyright (c) 1990, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)ioctl_compat.h	8.4 (Berkeley) 1/21/94
+ */
+
+#ifndef _SYS_IOCTL_COMPAT_H_
+#define	_SYS_IOCTL_COMPAT_H_
+
+/*#include <sys/ttychars.h>*/
+/*#include <sys/ttydev.h>*/
+
+#if !defined(__mips__)
+struct tchars {
+	char	t_intrc;	/* interrupt */
+	char	t_quitc;	/* quit */
+	char	t_startc;	/* start output */
+	char	t_stopc;	/* stop output */
+	char	t_eofc;		/* end-of-file */
+	char	t_brkc;		/* input delimiter (like nl) */
+};
+
+struct ltchars {
+	char	t_suspc;	/* stop process signal */
+	char	t_dsuspc;	/* delayed stop process signal */
+	char	t_rprntc;	/* reprint line */
+	char	t_flushc;	/* flush output (toggles) */
+	char	t_werasc;	/* word erase */
+	char	t_lnextc;	/* literal next character */
+};
+
+/*
+ * Structure for TIOCGETP and TIOCSETP ioctls.
+ */
+#ifndef _SGTTYB_
+#define	_SGTTYB_
+struct sgttyb {
+	char	sg_ispeed;		/* input speed */
+	char	sg_ospeed;		/* output speed */
+	char	sg_erase;		/* erase character */
+	char	sg_kill;		/* kill character */
+	short	sg_flags;		/* mode flags */
+};
+#endif
+#endif
+
+#ifdef USE_OLD_TTY
+# undef  TIOCGETD
+# define TIOCGETD	_IOR('t', 0, int)	/* get line discipline */
+# undef  TIOCSETD
+# define TIOCSETD	_IOW('t', 1, int)	/* set line discipline */
+#else
+# define OTIOCGETD	_IOR('t', 0, int)	/* get line discipline */
+# define OTIOCSETD	_IOW('t', 1, int)	/* set line discipline */
+#endif
+#define	TIOCHPCL	_IO('t', 2)		/* hang up on last close */
+#if !defined(__mips__)
+#define	TIOCGETP	_IOR('t', 8,struct sgttyb)/* get parameters -- gtty */
+#define	TIOCSETP	_IOW('t', 9,struct sgttyb)/* set parameters -- stty */
+#define	TIOCSETN	_IOW('t',10,struct sgttyb)/* as above, but no flushtty*/
+#endif
+#define	TIOCSETC	_IOW('t',17,struct tchars)/* set special characters */
+#define	TIOCGETC	_IOR('t',18,struct tchars)/* get special characters */
+#if 0
+/* BUG: a bunch of these conflict with #defines in asm/termbits.h */
+#define		TANDEM		0x00000001	/* send stopc on out q full */
+#define		CBREAK		0x00000002	/* half-cooked mode */
+#define		LCASE		0x00000004	/* simulate lower case */
+#define		ECHO		0x00000008	/* enable echoing */
+#define		CRMOD		0x00000010	/* map \r to \r\n on output */
+#define		RAW		0x00000020	/* no i/o processing */
+#define		ODDP		0x00000040	/* get/send odd parity */
+#define		EVENP		0x00000080	/* get/send even parity */
+#define		ANYP		0x000000c0	/* get any parity/send none */
+#define		NLDELAY		0x00000300	/* \n delay */
+#define			NL0	0x00000000
+#define			NL1	0x00000100	/* tty 37 */
+#define			NL2	0x00000200	/* vt05 */
+#define			NL3	0x00000300
+#define		TBDELAY		0x00000c00	/* horizontal tab delay */
+#define			TAB0	0x00000000
+#define			TAB1	0x00000400	/* tty 37 */
+#define			TAB2	0x00000800
+#define		XTABS		0x00000c00	/* expand tabs on output */
+#define		CRDELAY		0x00003000	/* \r delay */
+#define			CR0	0x00000000
+#define			CR1	0x00001000	/* tn 300 */
+#define			CR2	0x00002000	/* tty 37 */
+#define			CR3	0x00003000	/* concept 100 */
+#define		VTDELAY		0x00004000	/* vertical tab delay */
+#define			FF0	0x00000000
+#define			FF1	0x00004000	/* tty 37 */
+#define		BSDELAY		0x00008000	/* \b delay */
+#define			BS0	0x00000000
+#define			BS1	0x00008000
+#define		ALLDELAY	(NLDELAY|TBDELAY|CRDELAY|VTDELAY|BSDELAY)
+#define		CRTBS		0x00010000	/* do backspacing for crt */
+#define		PRTERA		0x00020000	/* \ ... / erase */
+#define		CRTERA		0x00040000	/* " \b " to wipe out char */
+#define		TILDE		0x00080000	/* hazeltine tilde kludge */
+#define		MDMBUF		0x00100000	/* DTR/DCD hardware flow control */
+#define		LITOUT		0x00200000	/* literal output */
+#define		TOSTOP		0x00400000	/* stop background jobs on output */
+#define		FLUSHO		0x00800000	/* output being flushed (state) */
+#define		NOHANG		0x01000000	/* (no-op) was no SIGHUP on carrier drop */
+#define		L001000		0x02000000
+#define		CRTKIL		0x04000000	/* kill line with " \b " */
+#define		PASS8		0x08000000
+#define		CTLECH		0x10000000	/* echo control chars as ^X */
+#define		PENDIN		0x20000000	/* re-echo input buffer at next read */
+#define		DECCTQ		0x40000000	/* only ^Q starts after ^S */
+#define		NOFLSH		0x80000000	/* don't flush output on signal */
+#endif
+#define	TIOCLBIS	_IOW('t', 127, int)	/* bis local mode bits */
+#define	TIOCLBIC	_IOW('t', 126, int)	/* bic local mode bits */
+#define	TIOCLSET	_IOW('t', 125, int)	/* set entire local mode word */
+#define	TIOCLGET	_IOR('t', 124, int)	/* get local modes */
+#define		LCRTBS		(CRTBS>>16)
+#define		LPRTERA		(PRTERA>>16)
+#define		LCRTERA		(CRTERA>>16)
+#define		LTILDE		(TILDE>>16)
+#define		LMDMBUF		(MDMBUF>>16)
+#define		LLITOUT		(LITOUT>>16)
+#define		LTOSTOP		(TOSTOP>>16)
+#define		LFLUSHO		(FLUSHO>>16)
+#define		LNOHANG		(NOHANG>>16)
+#define		LCRTKIL		(CRTKIL>>16)
+#define		LPASS8		(PASS8>>16)
+#define		LCTLECH		(CTLECH>>16)
+#define		LPENDIN		(PENDIN>>16)
+#define		LDECCTQ		(DECCTQ>>16)
+#define		LNOFLSH		(NOFLSH>>16)
+#if !defined(__mips__)
+#define	TIOCSLTC	_IOW('t',117,struct ltchars)/* set local special chars*/
+#define	TIOCGLTC	_IOR('t',116,struct ltchars)/* get local special chars*/
+#endif
+#define OTIOCCONS	_IO('t', 98)	/* for hp300 -- sans int arg */
+#define	OTTYDISC	0
+#define	NETLDISC	1
+#define	NTTYDISC	2
+
+#endif /* !_SYS_IOCTL_COMPAT_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/linux-syscalls.h b/ndk/platforms/android-9/arch-mips/include/sys/linux-syscalls.h
new file mode 100644
index 0000000..f913d40
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/linux-syscalls.h
@@ -0,0 +1,508 @@
+/* auto-generated by gensyscalls.py, do not touch */
+#ifndef _BIONIC_LINUX_SYSCALLS_H_
+
+#if !defined __ASM_ARM_UNISTD_H && !defined __ASM_I386_UNISTD_H && !defined __ASM_MIPS_UNISTD_H
+#if defined __arm__ && !defined __ARM_EABI__ && !defined __thumb__
+#  define __NR_SYSCALL_BASE  0x900000
+#elif defined(__mips__)
+#  define __NR_SYSCALL_BASE 4000
+#else
+#  define  __NR_SYSCALL_BASE  0
+#endif
+
+#define __NR_exit                         (__NR_SYSCALL_BASE + 1)
+#define __NR_fork                         (__NR_SYSCALL_BASE + 2)
+#define __NR_read                         (__NR_SYSCALL_BASE + 3)
+#define __NR_write                        (__NR_SYSCALL_BASE + 4)
+#define __NR_open                         (__NR_SYSCALL_BASE + 5)
+#define __NR_close                        (__NR_SYSCALL_BASE + 6)
+#define __NR_link                         (__NR_SYSCALL_BASE + 9)
+#define __NR_unlink                       (__NR_SYSCALL_BASE + 10)
+#define __NR_execve                       (__NR_SYSCALL_BASE + 11)
+#define __NR_chdir                        (__NR_SYSCALL_BASE + 12)
+#define __NR_mknod                        (__NR_SYSCALL_BASE + 14)
+#define __NR_chmod                        (__NR_SYSCALL_BASE + 15)
+#define __NR_lseek                        (__NR_SYSCALL_BASE + 19)
+#define __NR_getpid                       (__NR_SYSCALL_BASE + 20)
+#define __NR_mount                        (__NR_SYSCALL_BASE + 21)
+#define __NR_ptrace                       (__NR_SYSCALL_BASE + 26)
+#define __NR_pause                        (__NR_SYSCALL_BASE + 29)
+#define __NR_access                       (__NR_SYSCALL_BASE + 33)
+#define __NR_sync                         (__NR_SYSCALL_BASE + 36)
+#define __NR_rename                       (__NR_SYSCALL_BASE + 38)
+#define __NR_mkdir                        (__NR_SYSCALL_BASE + 39)
+#define __NR_rmdir                        (__NR_SYSCALL_BASE + 40)
+#define __NR_dup                          (__NR_SYSCALL_BASE + 41)
+#define __NR_times                        (__NR_SYSCALL_BASE + 43)
+#define __NR_brk                          (__NR_SYSCALL_BASE + 45)
+#define __NR_acct                         (__NR_SYSCALL_BASE + 51)
+#define __NR_umount2                      (__NR_SYSCALL_BASE + 52)
+#define __NR_ioctl                        (__NR_SYSCALL_BASE + 54)
+#define __NR_fcntl                        (__NR_SYSCALL_BASE + 55)
+#define __NR_setpgid                      (__NR_SYSCALL_BASE + 57)
+#define __NR_umask                        (__NR_SYSCALL_BASE + 60)
+#define __NR_chroot                       (__NR_SYSCALL_BASE + 61)
+#define __NR_dup2                         (__NR_SYSCALL_BASE + 63)
+#define __NR_getppid                      (__NR_SYSCALL_BASE + 64)
+#define __NR_setsid                       (__NR_SYSCALL_BASE + 66)
+#define __NR_sigaction                    (__NR_SYSCALL_BASE + 67)
+#define __NR_sigsuspend                   (__NR_SYSCALL_BASE + 72)
+#define __NR_sigpending                   (__NR_SYSCALL_BASE + 73)
+#define __NR_setrlimit                    (__NR_SYSCALL_BASE + 75)
+#define __NR_getrusage                    (__NR_SYSCALL_BASE + 77)
+#define __NR_gettimeofday                 (__NR_SYSCALL_BASE + 78)
+#define __NR_settimeofday                 (__NR_SYSCALL_BASE + 79)
+#define __NR_symlink                      (__NR_SYSCALL_BASE + 83)
+#define __NR_readlink                     (__NR_SYSCALL_BASE + 85)
+#define __NR_reboot                       (__NR_SYSCALL_BASE + 88)
+#define __NR_munmap                       (__NR_SYSCALL_BASE + 91)
+#define __NR_truncate                     (__NR_SYSCALL_BASE + 92)
+#define __NR_ftruncate                    (__NR_SYSCALL_BASE + 93)
+#define __NR_fchmod                       (__NR_SYSCALL_BASE + 94)
+#define __NR_getpriority                  (__NR_SYSCALL_BASE + 96)
+#define __NR_setpriority                  (__NR_SYSCALL_BASE + 97)
+#define __NR_syslog                       (__NR_SYSCALL_BASE + 103)
+#define __NR_syslog                       (__NR_SYSCALL_BASE + 103)
+#define __NR_setitimer                    (__NR_SYSCALL_BASE + 104)
+#define __NR_getitimer                    (__NR_SYSCALL_BASE + 105)
+#define __NR_wait4                        (__NR_SYSCALL_BASE + 114)
+#define __NR_sysinfo                      (__NR_SYSCALL_BASE + 116)
+#define __NR_fsync                        (__NR_SYSCALL_BASE + 118)
+#define __NR_clone                        (__NR_SYSCALL_BASE + 120)
+#define __NR_uname                        (__NR_SYSCALL_BASE + 122)
+#define __NR_mprotect                     (__NR_SYSCALL_BASE + 125)
+#define __NR_sigprocmask                  (__NR_SYSCALL_BASE + 126)
+#define __NR_init_module                  (__NR_SYSCALL_BASE + 128)
+#define __NR_delete_module                (__NR_SYSCALL_BASE + 129)
+#define __NR_getpgid                      (__NR_SYSCALL_BASE + 132)
+#define __NR_fchdir                       (__NR_SYSCALL_BASE + 133)
+#define __NR__llseek                      (__NR_SYSCALL_BASE + 140)
+#define __NR__newselect                   (__NR_SYSCALL_BASE + 142)
+#define __NR_flock                        (__NR_SYSCALL_BASE + 143)
+#define __NR_msync                        (__NR_SYSCALL_BASE + 144)
+#define __NR_readv                        (__NR_SYSCALL_BASE + 145)
+#define __NR_writev                       (__NR_SYSCALL_BASE + 146)
+
+#ifdef __arm__
+#define __NR_pipe                         (__NR_SYSCALL_BASE + 42)
+#define __NR_fdatasync                    (__NR_SYSCALL_BASE + 148)
+#define __NR_mlock                        (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock                      (__NR_SYSCALL_BASE + 151)
+#define __NR_sched_setparam               (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam               (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler           (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler           (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield                  (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max       (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min       (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval        (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep                    (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap                       (__NR_SYSCALL_BASE + 163)
+#define __NR_poll                         (__NR_SYSCALL_BASE + 168)
+#define __NR_prctl                        (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigaction                 (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask               (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigtimedwait              (__NR_SYSCALL_BASE + 177)
+#define __NR_pread64                      (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64                     (__NR_SYSCALL_BASE + 181)
+#define __NR_getcwd                       (__NR_SYSCALL_BASE + 183)
+#define __NR_capget                       (__NR_SYSCALL_BASE + 184)
+#define __NR_capset                       (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack                  (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile                     (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork                        (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit                   (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2                        (__NR_SYSCALL_BASE + 192)
+#define __NR_ftruncate64                  (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64                       (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64                      (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64                      (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32                     (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32                     (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32                     (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32                    (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32                    (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32                   (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32                   (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32                  (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32                  (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32                     (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32                  (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32                  (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32                  (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32                  (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32                      (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32                     (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32                     (__NR_SYSCALL_BASE + 214)
+#define __NR_getdents64                   (__NR_SYSCALL_BASE + 217)
+#define __NR_mincore                      (__NR_SYSCALL_BASE + 219)
+#define __NR_madvise                      (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64                      (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid                       (__NR_SYSCALL_BASE + 224)
+#define __NR_futex                        (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity            (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity            (__NR_SYSCALL_BASE + 242)
+#define __NR_exit_group                   (__NR_SYSCALL_BASE + 248)
+#define __NR_epoll_create                 (__NR_SYSCALL_BASE + 250)
+#define __NR_epoll_ctl                    (__NR_SYSCALL_BASE + 251)
+#define __NR_epoll_wait                   (__NR_SYSCALL_BASE + 252)
+#define __NR_timer_create                 (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime                (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime                (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun             (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_delete                 (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime                (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime                (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres                 (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_nanosleep              (__NR_SYSCALL_BASE + 265)
+#define __NR_statfs64                     (__NR_SYSCALL_BASE + 266)
+#define __NR_fstatfs64                    (__NR_SYSCALL_BASE + 267)
+#define __NR_utimes                       (__NR_SYSCALL_BASE + 269)
+#define __NR_waitid                       (__NR_SYSCALL_BASE + 280)
+#define __NR_socket                       (__NR_SYSCALL_BASE + 281)
+#define __NR_bind                         (__NR_SYSCALL_BASE + 282)
+#define __NR_connect                      (__NR_SYSCALL_BASE + 283)
+#define __NR_listen                       (__NR_SYSCALL_BASE + 284)
+#define __NR_accept                       (__NR_SYSCALL_BASE + 285)
+#define __NR_getsockname                  (__NR_SYSCALL_BASE + 286)
+#define __NR_getpeername                  (__NR_SYSCALL_BASE + 287)
+#define __NR_socketpair                   (__NR_SYSCALL_BASE + 288)
+#define __NR_sendto                       (__NR_SYSCALL_BASE + 290)
+#define __NR_recvfrom                     (__NR_SYSCALL_BASE + 292)
+#define __NR_shutdown                     (__NR_SYSCALL_BASE + 293)
+#define __NR_setsockopt                   (__NR_SYSCALL_BASE + 294)
+#define __NR_getsockopt                   (__NR_SYSCALL_BASE + 295)
+#define __NR_sendmsg                      (__NR_SYSCALL_BASE + 296)
+#define __NR_recvmsg                      (__NR_SYSCALL_BASE + 297)
+#define __NR_ioprio_set                   (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get                   (__NR_SYSCALL_BASE + 315)
+#define __NR_inotify_init                 (__NR_SYSCALL_BASE + 316)
+#define __NR_inotify_add_watch            (__NR_SYSCALL_BASE + 317)
+#define __NR_inotify_rm_watch             (__NR_SYSCALL_BASE + 318)
+#define __NR_openat                       (__NR_SYSCALL_BASE + 322)
+#define __NR_mkdirat                      (__NR_SYSCALL_BASE + 323)
+#define __NR_fchownat                     (__NR_SYSCALL_BASE + 325)
+#define __NR_fstatat64                    (__NR_SYSCALL_BASE + 327)
+#define __NR_unlinkat                     (__NR_SYSCALL_BASE + 328)
+#define __NR_renameat                     (__NR_SYSCALL_BASE + 329)
+#define __NR_fchmodat                     (__NR_SYSCALL_BASE + 333)
+#define __NR_getcpu                       (__NR_SYSCALL_BASE + 345)
+#define __NR_utimensat                    (__NR_SYSCALL_BASE + 348)
+#define __NR_eventfd2                     (__NR_SYSCALL_BASE + 356)
+#define __NR_pipe2                        (__NR_SYSCALL_BASE + 359)
+#define __NR_ARM_cacheflush               (__NR_SYSCALL_BASE + 983042)
+#define __NR_ARM_set_tls                  (__NR_SYSCALL_BASE + 983045)
+#endif
+
+#ifdef __i386__
+#define __NR_waitpid                      (__NR_SYSCALL_BASE + 7)
+#define __NR_kill                         (__NR_SYSCALL_BASE + 37)
+#define __NR_pipe                         (__NR_SYSCALL_BASE + 42)
+#define __NR_socketcall                   (__NR_SYSCALL_BASE + 102)
+#define __NR_fdatasync                    (__NR_SYSCALL_BASE + 148)
+#define __NR_mlock                        (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock                      (__NR_SYSCALL_BASE + 151)
+#define __NR_sched_setparam               (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam               (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler           (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler           (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield                  (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max       (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min       (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval        (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep                    (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap                       (__NR_SYSCALL_BASE + 163)
+#define __NR_poll                         (__NR_SYSCALL_BASE + 168)
+#define __NR_prctl                        (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigaction                 (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask               (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigtimedwait              (__NR_SYSCALL_BASE + 177)
+#define __NR_pread64                      (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64                     (__NR_SYSCALL_BASE + 181)
+#define __NR_getcwd                       (__NR_SYSCALL_BASE + 183)
+#define __NR_capget                       (__NR_SYSCALL_BASE + 184)
+#define __NR_capset                       (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack                  (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile                     (__NR_SYSCALL_BASE + 187)
+#define __NR_ugetrlimit                   (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2                        (__NR_SYSCALL_BASE + 192)
+#define __NR_ftruncate64                  (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64                       (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64                      (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64                      (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32                     (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32                     (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32                     (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32                    (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32                    (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32                   (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32                   (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32                  (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32                  (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32                     (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32                  (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32                  (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32                  (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32                  (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32                      (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32                     (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32                     (__NR_SYSCALL_BASE + 214)
+#define __NR_mincore                      (__NR_SYSCALL_BASE + 218)
+#define __NR_madvise                      (__NR_SYSCALL_BASE + 219)
+#define __NR_getdents64                   (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64                      (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid                       (__NR_SYSCALL_BASE + 224)
+#define __NR_tkill                        (__NR_SYSCALL_BASE + 238)
+#define __NR_futex                        (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity            (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity            (__NR_SYSCALL_BASE + 242)
+#define __NR_set_thread_area              (__NR_SYSCALL_BASE + 243)
+#define __NR_exit_group                   (__NR_SYSCALL_BASE + 252)
+#define __NR_epoll_create                 (__NR_SYSCALL_BASE + 254)
+#define __NR_epoll_ctl                    (__NR_SYSCALL_BASE + 255)
+#define __NR_epoll_wait                   (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create                 (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_settime                (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_gettime                (__NR_SYSCALL_BASE + 261)
+#define __NR_timer_getoverrun             (__NR_SYSCALL_BASE + 262)
+#define __NR_timer_delete                 (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_settime                (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_gettime                (__NR_SYSCALL_BASE + 265)
+#define __NR_clock_getres                 (__NR_SYSCALL_BASE + 266)
+#define __NR_clock_nanosleep              (__NR_SYSCALL_BASE + 267)
+#define __NR_statfs64                     (__NR_SYSCALL_BASE + 268)
+#define __NR_fstatfs64                    (__NR_SYSCALL_BASE + 269)
+#define __NR_utimes                       (__NR_SYSCALL_BASE + 271)
+#define __NR_waitid                       (__NR_SYSCALL_BASE + 284)
+#define __NR_ioprio_set                   (__NR_SYSCALL_BASE + 289)
+#define __NR_ioprio_get                   (__NR_SYSCALL_BASE + 290)
+#define __NR_inotify_init                 (__NR_SYSCALL_BASE + 291)
+#define __NR_inotify_add_watch            (__NR_SYSCALL_BASE + 292)
+#define __NR_inotify_rm_watch             (__NR_SYSCALL_BASE + 293)
+#define __NR_openat                       (__NR_SYSCALL_BASE + 295)
+#define __NR_mkdirat                      (__NR_SYSCALL_BASE + 296)
+#define __NR_fchownat                     (__NR_SYSCALL_BASE + 298)
+#define __NR_fstatat64                    (__NR_SYSCALL_BASE + 300)
+#define __NR_unlinkat                     (__NR_SYSCALL_BASE + 301)
+#define __NR_renameat                     (__NR_SYSCALL_BASE + 302)
+#define __NR_fchmodat                     (__NR_SYSCALL_BASE + 306)
+#define __NR_getcpu                       (__NR_SYSCALL_BASE + 318)
+#define __NR_utimensat                    (__NR_SYSCALL_BASE + 320)
+#define __NR_eventfd2                     (__NR_SYSCALL_BASE + 328)
+#define __NR_pipe2                        (__NR_SYSCALL_BASE + 331)
+#endif
+
+#if defined(__SH3__) || defined(__SH4__) 
+#define __NR_waitpid                      (__NR_SYSCALL_BASE + 7)
+#define __NR_kill                         (__NR_SYSCALL_BASE + 37)
+#define __NR_socketcall                   (__NR_SYSCALL_BASE + 102)
+#define __NR_fdatasync                    (__NR_SYSCALL_BASE + 148)
+#define __NR_mlock                        (__NR_SYSCALL_BASE + 150)
+#define __NR_munlock                      (__NR_SYSCALL_BASE + 151)
+#define __NR_sched_setparam               (__NR_SYSCALL_BASE + 154)
+#define __NR_sched_getparam               (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setscheduler           (__NR_SYSCALL_BASE + 156)
+#define __NR_sched_getscheduler           (__NR_SYSCALL_BASE + 157)
+#define __NR_sched_yield                  (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_get_priority_max       (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_get_priority_min       (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_rr_get_interval        (__NR_SYSCALL_BASE + 161)
+#define __NR_nanosleep                    (__NR_SYSCALL_BASE + 162)
+#define __NR_mremap                       (__NR_SYSCALL_BASE + 163)
+#define __NR_poll                         (__NR_SYSCALL_BASE + 168)
+#define __NR_prctl                        (__NR_SYSCALL_BASE + 172)
+#define __NR_rt_sigaction                 (__NR_SYSCALL_BASE + 174)
+#define __NR_rt_sigprocmask               (__NR_SYSCALL_BASE + 175)
+#define __NR_rt_sigtimedwait              (__NR_SYSCALL_BASE + 177)
+#define __NR_pread64                      (__NR_SYSCALL_BASE + 180)
+#define __NR_pwrite64                     (__NR_SYSCALL_BASE + 181)
+#define __NR_getcwd                       (__NR_SYSCALL_BASE + 183)
+#define __NR_capget                       (__NR_SYSCALL_BASE + 184)
+#define __NR_capset                       (__NR_SYSCALL_BASE + 185)
+#define __NR_sigaltstack                  (__NR_SYSCALL_BASE + 186)
+#define __NR_sendfile                     (__NR_SYSCALL_BASE + 187)
+#define __NR_vfork                        (__NR_SYSCALL_BASE + 190)
+#define __NR_ugetrlimit                   (__NR_SYSCALL_BASE + 191)
+#define __NR_mmap2                        (__NR_SYSCALL_BASE + 192)
+#define __NR_ftruncate64                  (__NR_SYSCALL_BASE + 194)
+#define __NR_stat64                       (__NR_SYSCALL_BASE + 195)
+#define __NR_lstat64                      (__NR_SYSCALL_BASE + 196)
+#define __NR_fstat64                      (__NR_SYSCALL_BASE + 197)
+#define __NR_lchown32                     (__NR_SYSCALL_BASE + 198)
+#define __NR_getuid32                     (__NR_SYSCALL_BASE + 199)
+#define __NR_getgid32                     (__NR_SYSCALL_BASE + 200)
+#define __NR_geteuid32                    (__NR_SYSCALL_BASE + 201)
+#define __NR_getegid32                    (__NR_SYSCALL_BASE + 202)
+#define __NR_setreuid32                   (__NR_SYSCALL_BASE + 203)
+#define __NR_setregid32                   (__NR_SYSCALL_BASE + 204)
+#define __NR_getgroups32                  (__NR_SYSCALL_BASE + 205)
+#define __NR_setgroups32                  (__NR_SYSCALL_BASE + 206)
+#define __NR_fchown32                     (__NR_SYSCALL_BASE + 207)
+#define __NR_setresuid32                  (__NR_SYSCALL_BASE + 208)
+#define __NR_getresuid32                  (__NR_SYSCALL_BASE + 209)
+#define __NR_setresgid32                  (__NR_SYSCALL_BASE + 210)
+#define __NR_getresgid32                  (__NR_SYSCALL_BASE + 211)
+#define __NR_chown32                      (__NR_SYSCALL_BASE + 212)
+#define __NR_setuid32                     (__NR_SYSCALL_BASE + 213)
+#define __NR_setgid32                     (__NR_SYSCALL_BASE + 214)
+#define __NR_mincore                      (__NR_SYSCALL_BASE + 218)
+#define __NR_madvise                      (__NR_SYSCALL_BASE + 219)
+#define __NR_getdents64                   (__NR_SYSCALL_BASE + 220)
+#define __NR_fcntl64                      (__NR_SYSCALL_BASE + 221)
+#define __NR_gettid                       (__NR_SYSCALL_BASE + 224)
+#define __NR_tkill                        (__NR_SYSCALL_BASE + 238)
+#define __NR_futex                        (__NR_SYSCALL_BASE + 240)
+#define __NR_sched_setaffinity            (__NR_SYSCALL_BASE + 241)
+#define __NR_sched_getaffinity            (__NR_SYSCALL_BASE + 242)
+#define __NR_set_thread_area              (__NR_SYSCALL_BASE + 243)
+#define __NR_exit_group                   (__NR_SYSCALL_BASE + 252)
+#define __NR_epoll_create                 (__NR_SYSCALL_BASE + 254)
+#define __NR_epoll_ctl                    (__NR_SYSCALL_BASE + 255)
+#define __NR_epoll_wait                   (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create                 (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_settime                (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_gettime                (__NR_SYSCALL_BASE + 261)
+#define __NR_timer_getoverrun             (__NR_SYSCALL_BASE + 262)
+#define __NR_timer_delete                 (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_settime                (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_gettime                (__NR_SYSCALL_BASE + 265)
+#define __NR_clock_getres                 (__NR_SYSCALL_BASE + 266)
+#define __NR_clock_nanosleep              (__NR_SYSCALL_BASE + 267)
+#define __NR_statfs64                     (__NR_SYSCALL_BASE + 268)
+#define __NR_fstatfs64                    (__NR_SYSCALL_BASE + 269)
+#define __NR_utimes                       (__NR_SYSCALL_BASE + 271)
+#define __NR_waitid                       (__NR_SYSCALL_BASE + 284)
+#define __NR_ioprio_set                   (__NR_SYSCALL_BASE + 288)
+#define __NR_ioprio_get                   (__NR_SYSCALL_BASE + 289)
+#define __NR_inotify_init                 (__NR_SYSCALL_BASE + 290)
+#define __NR_inotify_add_watch            (__NR_SYSCALL_BASE + 291)
+#define __NR_inotify_rm_watch             (__NR_SYSCALL_BASE + 292)
+#define __NR_openat                       (__NR_SYSCALL_BASE + 295)
+#define __NR_mkdirat                      (__NR_SYSCALL_BASE + 296)
+#define __NR_fchownat                     (__NR_SYSCALL_BASE + 298)
+#define __NR_fstatat64                    (__NR_SYSCALL_BASE + 300)
+#define __NR_unlinkat                     (__NR_SYSCALL_BASE + 301)
+#define __NR_renameat                     (__NR_SYSCALL_BASE + 302)
+#define __NR_fchmodat                     (__NR_SYSCALL_BASE + 306)
+#define __NR_getcpu                       (__NR_SYSCALL_BASE + 318)
+#define __NR_utimensat                    (__NR_SYSCALL_BASE + 320)
+#define __NR_eventfd2                     (__NR_SYSCALL_BASE + 328)
+#define __NR_pipe2                        (__NR_SYSCALL_BASE + 331)
+#endif
+
+#ifdef __mips__
+#define __NR_syscall                      (__NR_SYSCALL_BASE + 0)
+#define __NR_waitpid                      (__NR_SYSCALL_BASE + 7)
+#define __NR_lchown                       (__NR_SYSCALL_BASE + 16)
+#define __NR_setuid                       (__NR_SYSCALL_BASE + 23)
+#define __NR_getuid                       (__NR_SYSCALL_BASE + 24)
+#define __NR_kill                         (__NR_SYSCALL_BASE + 37)
+#define __NR_setgid                       (__NR_SYSCALL_BASE + 46)
+#define __NR_getgid                       (__NR_SYSCALL_BASE + 47)
+#define __NR_geteuid                      (__NR_SYSCALL_BASE + 49)
+#define __NR_getegid                      (__NR_SYSCALL_BASE + 50)
+#define __NR_setreuid                     (__NR_SYSCALL_BASE + 70)
+#define __NR_setregid                     (__NR_SYSCALL_BASE + 71)
+#define __NR_getrlimit                    (__NR_SYSCALL_BASE + 76)
+#define __NR_getgroups                    (__NR_SYSCALL_BASE + 80)
+#define __NR_setgroups                    (__NR_SYSCALL_BASE + 81)
+#define __NR_fchown                       (__NR_SYSCALL_BASE + 95)
+#define __NR_cacheflush                   (__NR_SYSCALL_BASE + 147)
+#define __NR_fdatasync                    (__NR_SYSCALL_BASE + 152)
+#define __NR_mlock                        (__NR_SYSCALL_BASE + 154)
+#define __NR_munlock                      (__NR_SYSCALL_BASE + 155)
+#define __NR_sched_setparam               (__NR_SYSCALL_BASE + 158)
+#define __NR_sched_getparam               (__NR_SYSCALL_BASE + 159)
+#define __NR_sched_setscheduler           (__NR_SYSCALL_BASE + 160)
+#define __NR_sched_getscheduler           (__NR_SYSCALL_BASE + 161)
+#define __NR_sched_yield                  (__NR_SYSCALL_BASE + 162)
+#define __NR_sched_get_priority_max       (__NR_SYSCALL_BASE + 163)
+#define __NR_sched_get_priority_min       (__NR_SYSCALL_BASE + 164)
+#define __NR_sched_rr_get_interval        (__NR_SYSCALL_BASE + 165)
+#define __NR_nanosleep                    (__NR_SYSCALL_BASE + 166)
+#define __NR_mremap                       (__NR_SYSCALL_BASE + 167)
+#define __NR_accept                       (__NR_SYSCALL_BASE + 168)
+#define __NR_bind                         (__NR_SYSCALL_BASE + 169)
+#define __NR_connect                      (__NR_SYSCALL_BASE + 170)
+#define __NR_getpeername                  (__NR_SYSCALL_BASE + 171)
+#define __NR_getsockname                  (__NR_SYSCALL_BASE + 172)
+#define __NR_getsockopt                   (__NR_SYSCALL_BASE + 173)
+#define __NR_listen                       (__NR_SYSCALL_BASE + 174)
+#define __NR_recvfrom                     (__NR_SYSCALL_BASE + 176)
+#define __NR_recvmsg                      (__NR_SYSCALL_BASE + 177)
+#define __NR_sendmsg                      (__NR_SYSCALL_BASE + 179)
+#define __NR_sendto                       (__NR_SYSCALL_BASE + 180)
+#define __NR_setsockopt                   (__NR_SYSCALL_BASE + 181)
+#define __NR_shutdown                     (__NR_SYSCALL_BASE + 182)
+#define __NR_socket                       (__NR_SYSCALL_BASE + 183)
+#define __NR_socketpair                   (__NR_SYSCALL_BASE + 184)
+#define __NR_setresuid                    (__NR_SYSCALL_BASE + 185)
+#define __NR_getresuid                    (__NR_SYSCALL_BASE + 186)
+#define __NR_poll                         (__NR_SYSCALL_BASE + 188)
+#define __NR_setresgid                    (__NR_SYSCALL_BASE + 190)
+#define __NR_getresgid                    (__NR_SYSCALL_BASE + 191)
+#define __NR_prctl                        (__NR_SYSCALL_BASE + 192)
+#define __NR_rt_sigaction                 (__NR_SYSCALL_BASE + 194)
+#define __NR_rt_sigprocmask               (__NR_SYSCALL_BASE + 195)
+#define __NR_rt_sigtimedwait              (__NR_SYSCALL_BASE + 197)
+#define __NR_pread64                      (__NR_SYSCALL_BASE + 200)
+#define __NR_pwrite64                     (__NR_SYSCALL_BASE + 201)
+#define __NR_chown                        (__NR_SYSCALL_BASE + 202)
+#define __NR_getcwd                       (__NR_SYSCALL_BASE + 203)
+#define __NR_capget                       (__NR_SYSCALL_BASE + 204)
+#define __NR_capset                       (__NR_SYSCALL_BASE + 205)
+#define __NR_sigaltstack                  (__NR_SYSCALL_BASE + 206)
+#define __NR_sendfile                     (__NR_SYSCALL_BASE + 207)
+#define __NR_mmap2                        (__NR_SYSCALL_BASE + 210)
+#define __NR_ftruncate64                  (__NR_SYSCALL_BASE + 212)
+#define __NR_stat64                       (__NR_SYSCALL_BASE + 213)
+#define __NR_lstat64                      (__NR_SYSCALL_BASE + 214)
+#define __NR_fstat64                      (__NR_SYSCALL_BASE + 215)
+#define __NR_mincore                      (__NR_SYSCALL_BASE + 217)
+#define __NR_madvise                      (__NR_SYSCALL_BASE + 218)
+#define __NR_getdents64                   (__NR_SYSCALL_BASE + 219)
+#define __NR_fcntl64                      (__NR_SYSCALL_BASE + 220)
+#define __NR_gettid                       (__NR_SYSCALL_BASE + 222)
+#define __NR_tkill                        (__NR_SYSCALL_BASE + 236)
+#define __NR_futex                        (__NR_SYSCALL_BASE + 238)
+#define __NR_sched_setaffinity            (__NR_SYSCALL_BASE + 239)
+#define __NR_sched_getaffinity            (__NR_SYSCALL_BASE + 240)
+#define __NR_exit_group                   (__NR_SYSCALL_BASE + 246)
+#define __NR_epoll_create                 (__NR_SYSCALL_BASE + 248)
+#define __NR_epoll_ctl                    (__NR_SYSCALL_BASE + 249)
+#define __NR_epoll_wait                   (__NR_SYSCALL_BASE + 250)
+#define __NR_statfs64                     (__NR_SYSCALL_BASE + 255)
+#define __NR_fstatfs64                    (__NR_SYSCALL_BASE + 256)
+#define __NR_timer_create                 (__NR_SYSCALL_BASE + 257)
+#define __NR_timer_settime                (__NR_SYSCALL_BASE + 258)
+#define __NR_timer_gettime                (__NR_SYSCALL_BASE + 259)
+#define __NR_timer_getoverrun             (__NR_SYSCALL_BASE + 260)
+#define __NR_timer_delete                 (__NR_SYSCALL_BASE + 261)
+#define __NR_clock_settime                (__NR_SYSCALL_BASE + 262)
+#define __NR_clock_gettime                (__NR_SYSCALL_BASE + 263)
+#define __NR_clock_getres                 (__NR_SYSCALL_BASE + 264)
+#define __NR_clock_nanosleep              (__NR_SYSCALL_BASE + 265)
+#define __NR_utimes                       (__NR_SYSCALL_BASE + 267)
+#define __NR_waitid                       (__NR_SYSCALL_BASE + 278)
+#define __NR_set_thread_area              (__NR_SYSCALL_BASE + 283)
+#define __NR_inotify_init                 (__NR_SYSCALL_BASE + 284)
+#define __NR_inotify_add_watch            (__NR_SYSCALL_BASE + 285)
+#define __NR_inotify_rm_watch             (__NR_SYSCALL_BASE + 286)
+#define __NR_openat                       (__NR_SYSCALL_BASE + 288)
+#define __NR_mkdirat                      (__NR_SYSCALL_BASE + 289)
+#define __NR_fchownat                     (__NR_SYSCALL_BASE + 291)
+#define __NR_fstatat64                    (__NR_SYSCALL_BASE + 293)
+#define __NR_unlinkat                     (__NR_SYSCALL_BASE + 294)
+#define __NR_renameat                     (__NR_SYSCALL_BASE + 295)
+#define __NR_fchmodat                     (__NR_SYSCALL_BASE + 299)
+#define __NR_getcpu                       (__NR_SYSCALL_BASE + 312)
+#define __NR_ioprio_set                   (__NR_SYSCALL_BASE + 314)
+#define __NR_ioprio_get                   (__NR_SYSCALL_BASE + 315)
+#define __NR_utimensat                    (__NR_SYSCALL_BASE + 316)
+#define __NR_eventfd2                     (__NR_SYSCALL_BASE + 325)
+#define __NR_pipe2                        (__NR_SYSCALL_BASE + 328)
+#endif
+
+#endif
+
+#endif /* _BIONIC_LINUX_SYSCALLS_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/linux-unistd.h b/ndk/platforms/android-9/arch-mips/include/sys/linux-unistd.h
new file mode 100644
index 0000000..2bb3c95
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/linux-unistd.h
@@ -0,0 +1,237 @@
+/* auto-generated by gensyscalls.py, do not touch */
+#ifndef _BIONIC_LINUX_UNISTD_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void             _exit (int);
+void             _exit_thread (int);
+pid_t            __fork (void);
+pid_t            _waitpid (pid_t, int*, int, struct rusage*);
+int              __waitid (int, pid_t, struct siginfo_t*, int,void*);
+pid_t            __sys_clone (int, void*, int*, void*, int*);
+int              execve (const char*, char* const*, char* const*);
+int              __setuid (uid_t);
+int              __setuid (uid_t);
+uid_t            getuid (void);
+uid_t            getuid (void);
+gid_t            getgid (void);
+gid_t            getgid (void);
+uid_t            geteuid (void);
+uid_t            geteuid (void);
+gid_t            getegid (void);
+gid_t            getegid (void);
+uid_t            getresuid (void);
+uid_t            getresuid (void);
+gid_t            getresgid (void);
+gid_t            getresgid (void);
+pid_t            gettid (void);
+int              getgroups (int, gid_t *);
+int              getgroups (int, gid_t *);
+pid_t            getpgid (pid_t);
+pid_t            getppid (void);
+pid_t            setsid (void);
+int              setgid (gid_t);
+int              setgid (gid_t);
+int              seteuid (uid_t);
+int              __setreuid (uid_t, uid_t);
+int              __setreuid (uid_t, uid_t);
+int              __setresuid (uid_t, uid_t, uid_t);
+int              __setresuid (uid_t, uid_t, uid_t);
+int              setresgid (gid_t, gid_t, gid_t);
+int              setresgid (gid_t, gid_t, gid_t);
+void*            __brk (void*);
+int              kill (pid_t, int);
+int              tkill (pid_t tid, int sig);
+int              __ptrace (int request, int pid, void* addr, void* data);
+int              __set_thread_area (void*  user_desc);
+int              __getpriority (int, int);
+int              setpriority (int, int, int);
+int              setrlimit (int resource, const struct rlimit *rlp);
+int              getrlimit (int resource, struct rlimit *rlp);
+int              getrlimit (int resource, struct rlimit *rlp);
+int              getrusage (int who, struct rusage*  r_usage);
+int              setgroups (int, const gid_t *);
+int              setgroups (int, const gid_t *);
+pid_t            getpgrp (void);
+int              setpgid (pid_t, pid_t);
+pid_t            vfork (void);
+int              setregid (gid_t, gid_t);
+int              setregid (gid_t, gid_t);
+int              chroot (const char *);
+int              prctl (int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5);
+int              capget (cap_user_header_t header, cap_user_data_t data);
+int              capset (cap_user_header_t header, const cap_user_data_t data);
+int              sigaltstack (const stack_t*, stack_t*);
+int              acct (const char*  filepath);
+ssize_t          read (int, void*, size_t);
+ssize_t          write (int, const void*, size_t);
+ssize_t          pread64 (int, void *, size_t, off64_t);
+ssize_t          pwrite64 (int, void *, size_t, off64_t);
+int              __open (const char*, int, mode_t);
+int              __openat (int, const char*, int, mode_t);
+int              close (int);
+int              creat (const char*, mode_t);
+off_t            lseek (int, off_t, int);
+int              __llseek (int, unsigned long, unsigned long, loff_t*, int);
+pid_t            getpid (void);
+void *           mmap (void *, size_t, int, int, int, long);
+void *           __mmap2 (void*, size_t, int, int, int, long);
+int              munmap (void *, size_t);
+void *           mremap (void *, size_t, size_t, unsigned long);
+int              msync (const void *, size_t, int);
+int              mprotect (const void *, size_t, int);
+int              madvise (const void *, size_t, int);
+int              mlock (const void *addr, size_t len);
+int              munlock (const void *addr, size_t len);
+int              mincore (void*  start, size_t  length, unsigned char*  vec);
+int              __ioctl (int, int, void *);
+int              readv (int, const struct iovec *, int);
+int              writev (int, const struct iovec *, int);
+int              __fcntl (int, int, void*);
+int              flock (int, int);
+int              fchmod (int, mode_t);
+int              dup (int);
+int              pipe (int *);
+int              pipe2 (int *, int);
+int              dup2 (int, int);
+int              select (int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *);
+int              ftruncate (int, off_t);
+int              ftruncate64 (int, off64_t);
+int              getdents (unsigned int, struct dirent *, unsigned int);
+int              fsync (int);
+int              fdatasync (int);
+int              fchown (int, uid_t, gid_t);
+int              fchown (int, uid_t, gid_t);
+void             sync (void);
+int              __fcntl64 (int, int, void *);
+int              __fstatfs64 (int, size_t, struct statfs *);
+ssize_t          sendfile (int out_fd, int in_fd, off_t *offset, size_t count);
+int              fstatat (int dirfd, const char *path, struct stat *buf, int flags);
+int              mkdirat (int dirfd, const char *pathname, mode_t mode);
+int              fchownat (int dirfd, const char *path, uid_t owner, gid_t group, int flags);
+int              fchmodat (int dirfd, const char *path, mode_t mode, int flags);
+int              renameat (int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+int              link (const char*, const char*);
+int              unlink (const char*);
+int              unlinkat (int, const char *, int);
+int              chdir (const char*);
+int              mknod (const char*, mode_t, dev_t);
+int              chmod (const char*,mode_t);
+int              chown (const char *, uid_t, gid_t);
+int              chown (const char *, uid_t, gid_t);
+int              lchown (const char*, uid_t, gid_t);
+int              lchown (const char*, uid_t, gid_t);
+int              mount (const char*, const char*, const char*, unsigned long, const void*);
+int              umount (const char*);
+int              umount2 (const char*, int);
+int              fstat (int, struct stat*);
+int              stat (const char *, struct stat *);
+int              lstat (const char *, struct stat *);
+int              mkdir (const char *, mode_t);
+int              readlink (const char *, char *, size_t);
+int              rmdir (const char *);
+int              rename (const char *, const char *);
+int              __getcwd (char * buf, size_t size);
+int              access (const char *, int);
+int              symlink (const char *, const char *);
+int              fchdir (int);
+int              truncate (const char*, off_t);
+int              __statfs64 (const char *, size_t, struct statfs *);
+int              pause (void);
+int              gettimeofday (struct timeval*, struct timezone*);
+int              settimeofday (const struct timeval*, const struct timezone*);
+clock_t          times (struct tms *);
+int              nanosleep (const struct timespec *, struct timespec *);
+int              clock_gettime (clockid_t clk_id, struct timespec *tp);
+int              clock_settime (clockid_t clk_id, const struct timespec *tp);
+int              clock_getres (clockid_t clk_id, struct timespec *res);
+int              clock_nanosleep (const struct timespec *req, struct timespec *rem);
+int              getitimer (int, const struct itimerval *);
+int              setitimer (int, const struct itimerval *, struct itimerval *);
+int              __timer_create (clockid_t clockid, struct sigevent *evp, timer_t *timerid);
+int              __timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*);
+int              __timer_gettime (timer_t, struct itimerspec*);
+int              __timer_getoverrun (timer_t);
+int              __timer_delete (timer_t);
+int              utimes (const char*, const struct timeval tvp[2]);
+int              utimensat (int, const char *, const struct timespec times[2], int);
+int              sigaction (int, const struct sigaction *, struct sigaction *);
+int              sigprocmask (int, const sigset_t *, sigset_t *);
+int              __sigsuspend (int unused1, int unused2, unsigned mask);
+int              __rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize);
+int              __rt_sigprocmask (int  how, const sigset_t *set, sigset_t *oset, size_t sigsetsize);
+int              __rt_sigtimedwait (const sigset_t *set, struct siginfo_t  *info, struct timespec_t  *timeout, size_t  sigset_size);
+int              sigpending (sigset_t *);
+int              socket (int, int, int);
+int              socketpair (int, int, int, int*);
+int              bind (int, struct sockaddr *, int);
+int              connect (int, struct sockaddr *, socklen_t);
+int              listen (int, int);
+int              accept (int, struct sockaddr *, socklen_t *);
+int              getsockname (int, struct sockaddr *, socklen_t *);
+int              getpeername (int, struct sockaddr *, socklen_t *);
+int              sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
+int              recvfrom (int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *);
+int              shutdown (int, int);
+int              setsockopt (int, int, int, const void *, socklen_t);
+int              getsockopt (int, int, int, void *, socklen_t *);
+int              sendmsg (int, const struct msghdr *, unsigned int);
+int              recvmsg (int, struct msghdr *, unsigned int);
+int              socket (int, int, int);
+int              bind (int, struct sockaddr *, int);
+int              connect (int, struct sockaddr *, socklen_t);
+int              listen (int, int);
+int              accept (int, struct sockaddr *, socklen_t *);
+int              getsockname (int, struct sockaddr *, socklen_t *);
+int              getpeername (int, struct sockaddr *, socklen_t *);
+int              socketpair (int, int, int, int*);
+int              sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
+int              recvfrom (int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *);
+int              shutdown (int, int);
+int              setsockopt (int, int, int, const void *, socklen_t);
+int              getsockopt (int, int, int, void *, socklen_t *);
+int              sendmsg (int, const struct msghdr *, unsigned int);
+int              recvmsg (int, struct msghdr *, unsigned int);
+int              __socketcall (int, unsigned long*);
+int              sched_setscheduler (pid_t pid, int policy, const struct sched_param *param);
+int              sched_getscheduler (pid_t pid);
+int              sched_yield (void);
+int              sched_setparam (pid_t pid, const struct sched_param *param);
+int              sched_getparam (pid_t pid, struct sched_param *param);
+int              sched_get_priority_max (int policy);
+int              sched_get_priority_min (int policy);
+int              sched_rr_get_interval (pid_t pid, struct timespec *interval);
+int              sched_setaffinity (pid_t pid, size_t setsize, const cpu_set_t* set);
+int              __sched_getaffinity (pid_t pid, size_t setsize, cpu_set_t* set);
+int              __getcpu (unsigned *cpu, unsigned *node, void *unused);
+int              ioprio_set (int which, int who, int ioprio);
+int              ioprio_get (int which, int who);
+int              uname (struct utsname *);
+pid_t            __wait4 (pid_t pid, int *status, int options, struct rusage *rusage);
+mode_t           umask (mode_t);
+int              __reboot (int, int, int, void *);
+int              __syslog (int, char *, int);
+int              init_module (void *, unsigned long, const char *);
+int              delete_module (const char*, unsigned int);
+int              klogctl (int, char *, int);
+int              sysinfo (struct sysinfo *);
+int              futex (void *, int, int, void *, void *, int);
+int              epoll_create (int size);
+int              epoll_ctl (int epfd, int op, int fd, struct epoll_event *event);
+int              epoll_wait (int epfd, struct epoll_event *events, int max, int timeout);
+int              inotify_init (void);
+int              inotify_add_watch (int, const char *, unsigned int);
+int              inotify_rm_watch (int, unsigned int);
+int              poll (struct pollfd *, unsigned int, long);
+int              eventfd (unsigned int, int);
+int              __set_tls (void*);
+int              cacheflush (long start, long end, long flags);
+int              _flush_cache (char *addr, const int nbytes, const int op);
+int              syscall (int number,...);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BIONIC_LINUX_UNISTD_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/socket.h b/ndk/platforms/android-9/arch-mips/include/sys/socket.h
new file mode 100644
index 0000000..348ae0a
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/socket.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_SOCKET_H_
+#define _SYS_SOCKET_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <linux/socket.h>
+
+__BEGIN_DECLS
+
+#ifdef __mips__
+#define SOCK_DGRAM	1
+#define SOCK_STREAM	2
+#define SOCK_RAW	3
+#define SOCK_RDM	4
+#define SOCK_SEQPACKET	5
+#define SOCK_DCCP	6
+#define SOCK_PACKET	10
+#else
+#define SOCK_STREAM      1
+#define SOCK_DGRAM       2
+#define SOCK_RAW         3
+#define SOCK_RDM         4
+#define SOCK_SEQPACKET   5
+#define SOCK_PACKET      10
+#endif
+
+#ifdef __i386__
+# define __socketcall extern __attribute__((__cdecl__))
+#else
+# define __socketcall extern
+#endif
+
+/* BIONIC: second argument to shutdown() */
+enum {
+    SHUT_RD = 0,        /* no more receptions */
+#define SHUT_RD         SHUT_RD
+    SHUT_WR,            /* no more transmissions */
+#define SHUT_WR         SHUT_WR
+    SHUT_RDWR           /* no more receptions or transmissions */
+#define SHUT_RDWR       SHUT_RDWR
+};
+
+
+typedef int socklen_t;
+
+__socketcall int socket(int, int, int);
+__socketcall int bind(int, const struct sockaddr *, int);
+__socketcall int connect(int, const struct sockaddr *, socklen_t);
+__socketcall int listen(int, int);
+__socketcall int accept(int, struct sockaddr *, socklen_t *);
+__socketcall int getsockname(int, struct sockaddr *, socklen_t *);
+__socketcall int getpeername(int, struct sockaddr *, socklen_t *);
+__socketcall int socketpair(int, int, int, int *);
+__socketcall int shutdown(int, int);
+__socketcall int setsockopt(int, int, int, const void *, socklen_t);
+__socketcall int getsockopt(int, int, int, void *, socklen_t *);
+__socketcall int sendmsg(int, const struct msghdr *, unsigned int);
+__socketcall int recvmsg(int, struct msghdr *, unsigned int);
+
+extern  ssize_t  send(int, const void *, size_t, unsigned int);
+extern  ssize_t  recv(int, void *, size_t, unsigned int);
+
+__socketcall ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t);
+__socketcall ssize_t recvfrom(int, void *, size_t, unsigned int, const struct sockaddr *, socklen_t *);
+
+#undef __socketcall
+
+__END_DECLS
+
+#endif /* _SYS_SOCKET_H */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/stat.h b/ndk/platforms/android-9/arch-mips/include/sys/stat.h
new file mode 100644
index 0000000..a4de33e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/stat.h
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_STAT_H_
+#define _SYS_STAT_H_
+
+#include <sys/cdefs.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <linux/stat.h>
+
+#include <endian.h>
+
+__BEGIN_DECLS
+
+/* really matches stat64 in the kernel, hence the padding
+ * Note: The kernel zero's the padded region because glibc might read them
+ * in the hope that the kernel has stretched to using larger sizes.
+ */
+#ifdef __mips__
+struct stat {
+    unsigned long	st_dev;
+    unsigned long       __pad0[3];
+
+    unsigned long long  st_ino;
+
+    unsigned int        st_mode;
+    unsigned int        st_nlink;
+
+    unsigned long       st_uid;
+    unsigned long       st_gid;
+
+    unsigned long	st_rdev;
+    unsigned long       __pad1[3];
+
+    long long           st_size;
+
+    unsigned long       st_atime;
+    unsigned long       st_atime_nsec;
+
+    unsigned long       st_mtime;
+    unsigned long       st_mtime_nsec;
+
+    unsigned long       st_ctime;
+    unsigned long       st_ctime_nsec;
+
+    unsigned long	st_blksize;
+    unsigned long	__pad2;
+
+    unsigned long long  st_blocks;
+};
+#else
+struct stat {
+    unsigned long long  st_dev;
+    unsigned char       __pad0[4];
+
+    unsigned long       __st_ino;
+    unsigned int        st_mode;
+    unsigned int        st_nlink;
+
+    unsigned long       st_uid;
+    unsigned long       st_gid;
+
+    unsigned long long  st_rdev;
+    unsigned char       __pad3[4];
+
+    long long           st_size;
+    unsigned long	st_blksize;
+    unsigned long long  st_blocks;
+
+    unsigned long       st_atime;
+    unsigned long       st_atime_nsec;
+
+    unsigned long       st_mtime;
+    unsigned long       st_mtime_nsec;
+
+    unsigned long       st_ctime;
+    unsigned long       st_ctime_nsec;
+
+    unsigned long long  st_ino;
+};
+#endif
+
+/* For compatibility with GLibc, we provide macro aliases
+ * for the non-Posix nano-seconds accessors.
+ */
+#define  st_atimensec  st_atime_nsec
+#define  st_mtimensec  st_mtime_nsec
+#define  st_ctimensec  st_ctime_nsec
+
+extern int    chmod(const char *, mode_t);
+extern int    fchmod(int, mode_t);
+extern int    mkdir(const char *, mode_t);
+
+extern int    stat(const char *, struct stat *);
+extern int    fstat(int, struct stat *);
+extern int    lstat(const char *, struct stat *);
+extern int    mknod(const char *, mode_t, dev_t);
+extern mode_t umask(mode_t);
+
+#define  stat64    stat
+#define  fstat64   fstat
+#define  lstat64   lstat
+
+static __inline__ int mkfifo(const char *__p, mode_t __m)
+{
+  return mknod(__p, (__m & ~S_IFMT) | S_IFIFO, (dev_t)0);
+}
+
+extern int  fstatat(int dirfd, const char *path, struct stat *buf, int flags);
+extern int  mkdirat(int dirfd, const char *pathname, mode_t mode);
+extern int fchownat(int dirfd, const char *path, uid_t owner, gid_t group, int flags);
+extern int fchmodat(int dirfd, const char *path, mode_t mode, int flags);
+extern int renameat(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
+
+__END_DECLS
+
+#endif /* _SYS_STAT_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/include/sys/vfs.h b/ndk/platforms/android-9/arch-mips/include/sys/vfs.h
new file mode 100644
index 0000000..d14944d
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/include/sys/vfs.h
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _SYS_VFS_H_
+#define _SYS_VFS_H_
+
+#include <stdint.h>
+#include <sys/cdefs.h>
+#include <sys/types.h>
+
+__BEGIN_DECLS
+
+/* note: this corresponds to the kernel's statfs64 type */
+#ifdef __mips__
+struct statfs {
+    uint32_t        f_type;
+    uint32_t        f_bsize;
+    uint32_t        f_frsize;
+    uint32_t        __pad;
+    uint64_t        f_blocks;
+    uint64_t        f_bfree;
+    uint64_t        f_files;
+    uint64_t        f_ffree;
+    uint64_t        f_bavail;
+    __kernel_fsid_t f_fsid;
+    uint32_t        f_namelen;
+    uint32_t        f_spare[6];
+};
+#else
+struct statfs {
+    uint32_t        f_type;
+    uint32_t        f_bsize;
+    uint64_t        f_blocks;
+    uint64_t        f_bfree;
+    uint64_t        f_bavail;
+    uint64_t        f_files;
+    uint64_t        f_ffree;
+    __kernel_fsid_t f_fsid;
+    uint32_t        f_namelen;
+    uint32_t        f_frsize;
+    uint32_t        f_spare[5];
+};
+#endif
+
+#define  ADFS_SUPER_MAGIC      0xadf5
+#define  AFFS_SUPER_MAGIC      0xADFF
+#define  BEFS_SUPER_MAGIC      0x42465331
+#define  BFS_MAGIC             0x1BADFACE
+#define  CIFS_MAGIC_NUMBER     0xFF534D42
+#define  CODA_SUPER_MAGIC      0x73757245
+#define  COH_SUPER_MAGIC       0x012FF7B7
+#define  CRAMFS_MAGIC          0x28cd3d45
+#define  DEVFS_SUPER_MAGIC     0x1373
+#define  EFS_SUPER_MAGIC       0x00414A53
+#define  EXT_SUPER_MAGIC       0x137D
+#define  EXT2_OLD_SUPER_MAGIC  0xEF51
+#define  EXT2_SUPER_MAGIC      0xEF53
+#define  EXT3_SUPER_MAGIC      0xEF53
+#define  HFS_SUPER_MAGIC       0x4244
+#define  HPFS_SUPER_MAGIC      0xF995E849
+#define  HUGETLBFS_MAGIC       0x958458f6
+#define  ISOFS_SUPER_MAGIC     0x9660
+#define  JFFS2_SUPER_MAGIC     0x72b6
+#define  JFS_SUPER_MAGIC       0x3153464a
+#define  MINIX_SUPER_MAGIC     0x137F /* orig. minix */
+#define  MINIX_SUPER_MAGIC2    0x138F /* 30 char minix */
+#define  MINIX2_SUPER_MAGIC    0x2468 /* minix V2 */
+#define  MINIX2_SUPER_MAGIC2   0x2478 /* minix V2, 30 char names */
+#define  MSDOS_SUPER_MAGIC     0x4d44
+#define  NCP_SUPER_MAGIC       0x564c
+#define  NFS_SUPER_MAGIC       0x6969
+#define  NTFS_SB_MAGIC         0x5346544e
+#define  OPENPROM_SUPER_MAGIC  0x9fa1
+#define  PROC_SUPER_MAGIC      0x9fa0
+#define  QNX4_SUPER_MAGIC      0x002f
+#define  REISERFS_SUPER_MAGIC  0x52654973
+#define  ROMFS_MAGIC           0x7275
+#define  SMB_SUPER_MAGIC       0x517B
+#define  SYSV2_SUPER_MAGIC     0x012FF7B6
+#define  SYSV4_SUPER_MAGIC     0x012FF7B5
+#define  TMPFS_MAGIC           0x01021994
+#define  UDF_SUPER_MAGIC       0x15013346
+#define  UFS_MAGIC             0x00011954
+#define  USBDEVICE_SUPER_MAGIC 0x9fa2
+#define  VXFS_SUPER_MAGIC      0xa501FCF5
+#define  XENIX_SUPER_MAGIC     0x012FF7B4
+#define  XFS_SUPER_MAGIC       0x58465342
+#define  _XIAFS_SUPER_MAGIC    0x012FD16D
+
+extern int statfs(const char *, struct statfs *);
+extern int fstatfs(int, struct statfs *);
+
+__END_DECLS
+
+#endif /* _SYS_VFS_H_ */
diff --git a/ndk/platforms/android-9/arch-mips/lib/libc.a b/ndk/platforms/android-9/arch-mips/lib/libc.a
new file mode 100644
index 0000000..d84d6b3
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib/libc.a
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib/libm.a b/ndk/platforms/android-9/arch-mips/lib/libm.a
new file mode 100644
index 0000000..8faed91
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib/libm.a
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/lib/libstdc++.a b/ndk/platforms/android-9/arch-mips/lib/libstdc++.a
new file mode 100644
index 0000000..9bdce4f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/lib/libstdc++.a
Binary files differ
diff --git a/ndk/platforms/android-9/arch-mips/src/__dso_handle.S b/ndk/platforms/android-9/arch-mips/src/__dso_handle.S
new file mode 100644
index 0000000..77a5d7f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/__dso_handle.S
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+# The __dso_handle global variable is used by static
+# C++ constructors and destructors in the binary.
+# See http://www.codesourcery.com/public/cxx-abi/abi.html#dso-dtor
+#
+	.data
+        .align 4
+	.hidden __dso_handle
+        .globl __dso_handle
+__dso_handle:
+        .long __dso_handle
diff --git a/ndk/platforms/android-9/arch-mips/src/atexit.S b/ndk/platforms/android-9/arch-mips/src/atexit.S
new file mode 100644
index 0000000..7f0c820
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/atexit.S
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.text
+	.globl	atexit
+	.hidden	atexit
+	.type	atexit, @function
+	.align  4
+	.ent	atexit
+atexit:
+	.set	noreorder
+	.cpload	$t9
+	.set	reorder
+	la	$t9, __cxa_atexit
+	move	$a1, $0
+	la      $a2, __dso_handle
+	j	$t9
+	.size	atexit, .-atexit
+	.end	atexit
diff --git a/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S b/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S
new file mode 100644
index 0000000..7d1fac7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/crtbegin_dynamic.S
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.text
+	.align 4
+	.type __start,@function
+	.globl __start
+	.globl _start
+
+# this is the small startup code that is first run when
+# any executable that is dynamically-linked with Bionic
+# runs.
+#
+# it's purpose is to call __libc_init with appropriate
+# arguments, which are:
+#
+#    - the address of the raw data block setup by the Linux
+#      kernel ELF loader
+#
+#    - address of an "onexit" function, not used on any
+#      platform supported by Bionic
+#
+#    - address of the "main" function of the program.
+#
+#    - address of the constructor list
+#
+
+	.ent	__start
+__start:	
+_start:
+	bal	1f
+1:
+	.set	noreorder
+	.cpload	$ra
+	.set	reorder
+
+	move	$a0, $sp
+	move	$a1, $0
+	la	$a2, main
+	la	$a3, 1f
+	subu	$sp, 32
+	la	$t9, __libc_init
+	j	$t9
+	.end	__start
+
+1:	.long	__PREINIT_ARRAY__
+	.long	__INIT_ARRAY__
+	.long	__FINI_ARRAY__
+	.long	__CTOR_LIST__
+	.long	__DTOR_LIST__
+
+	.section .preinit_array, "aw"
+	.type __PREINIT_ARRAY__, @object
+	.globl __PREINIT_ARRAY__
+__PREINIT_ARRAY__:
+	.long -1
+
+	.section .init_array, "aw"
+	.type __INIT_ARRAY__, @object
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+
+	.section .fini_array, "aw"
+	.type __FINI_ARRAY__, @object
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+	.long __do_global_dtors_aux
+
+	.section .ctors, "aw"
+	.type __CTOR_LIST__, @object
+	.globl __CTOR_LIST__
+__CTOR_LIST__:
+	.long -1
+
+	.section .dtors, "aw"
+	.type __DTOR_LIST__, @object
+	.globl __DTOR_LIST__
+__DTOR_LIST__:
+	.long -1
+
+	.abicalls
+	.section	.eh_frame,"a",@progbits
+	.align	2
+	.type	__EH_FRAME_BEGIN__, @object
+	.size	__EH_FRAME_BEGIN__, 0
+__EH_FRAME_BEGIN__:
+	.text
+	.align	2
+	.set	nomips16
+	.ent	__do_global_dtors_aux
+	.type	__do_global_dtors_aux, @function
+__do_global_dtors_aux:
+	.frame	$sp,32,$31		# vars= 0, regs= 1/0, args= 16, gp= 8
+	.mask	0x80000000,-4
+	.fmask	0x00000000,0
+	.set	noreorder
+	.cpload	$25
+	.set	nomacro
+	addiu	$sp,$sp,-32
+	sw	$31,28($sp)
+	.cprestore	16
+	lw	$2,%got(completed.1269)($28)
+	lbu	$2,%lo(completed.1269)($2)
+	bne	$2,$0,$L8
+	nop
+
+$L4:
+	lw	$2,%got(__cxa_finalize)($28)
+	beq	$2,$0,$L6
+	nop
+
+	lw	$2,%got(__dso_handle)($28)
+	lw	$4,0($2)
+	lw	$25,%call16(__cxa_finalize)($28)
+	.reloc	1f,R_MIPS_JALR,__cxa_finalize
+1:	jalr	$25
+	nop
+
+	lw	$28,16($sp)
+$L6:
+	lw	$2,%got(completed.1269)($28)
+	li	$3,1			# 0x1
+	sb	$3,%lo(completed.1269)($2)
+$L8:
+	lw	$31,28($sp)
+	addiu	$sp,$sp,32
+	j	$31
+	nop
+
+	.set	macro
+	.set	reorder
+	.end	__do_global_dtors_aux
+	.size	__do_global_dtors_aux, .-__do_global_dtors_aux
+	.local	completed.1269
+	.comm	completed.1269,1,1
+	.local	object.1265
+	.comm	object.1265,24,4
+	.weak	__cxa_finalize
+
+.include "__dso_handle.S"
+.include "atexit.S"
+	
diff --git a/ndk/platforms/android-9/arch-mips/src/crtbegin_so.S b/ndk/platforms/android-9/arch-mips/src/crtbegin_so.S
new file mode 100644
index 0000000..f4fc9b8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/crtbegin_so.S
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.section .init_array, "aw"
+	.type __INIT_ARRAY__, @object
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+
+	.section .fini_array, "aw"
+	.type __FINI_ARRAY__, @object
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+	.long __do_global_dtors_aux
+
+	.section .ctors, "aw"
+	.type __CTOR_LIST__, @object
+	.globl __CTOR_LIST__
+__CTOR_LIST__:
+	.long -1
+
+	.section .dtors, "aw"
+	.type __DTOR_LIST__, @object
+	.globl __DTOR_LIST__
+__DTOR_LIST__:
+	.long -1
+
+	.abicalls
+	.section	.eh_frame,"a",@progbits
+	.align	2
+	.type	__EH_FRAME_BEGIN__, @object
+	.size	__EH_FRAME_BEGIN__, 0
+__EH_FRAME_BEGIN__:
+	.text
+	.align	2
+	.set	nomips16
+	.ent	__do_global_dtors_aux
+	.type	__do_global_dtors_aux, @function
+__do_global_dtors_aux:
+	.frame	$sp,32,$31		# vars= 0, regs= 1/0, args= 16, gp= 8
+	.mask	0x80000000,-4
+	.fmask	0x00000000,0
+	.set	noreorder
+	.cpload	$25
+	.set	nomacro
+	addiu	$sp,$sp,-32
+	sw	$31,28($sp)
+	.cprestore	16
+	lw	$2,%got(completed.1269)($28)
+	lbu	$2,%lo(completed.1269)($2)
+	bne	$2,$0,$L8
+	nop
+
+$L4:
+	lw	$2,%got(__cxa_finalize)($28)
+	beq	$2,$0,$L6
+	nop
+
+	lw	$2,%got(__dso_handle)($28)
+	lw	$4,0($2)
+	lw	$25,%call16(__cxa_finalize)($28)
+	.reloc	1f,R_MIPS_JALR,__cxa_finalize
+1:	jalr	$25
+	nop
+
+	lw	$28,16($sp)
+$L6:
+	lw	$2,%got(completed.1269)($28)
+	li	$3,1			# 0x1
+	sb	$3,%lo(completed.1269)($2)
+$L8:
+	lw	$31,28($sp)
+	addiu	$sp,$sp,32
+	j	$31
+	nop
+
+	.set	macro
+	.set	reorder
+	.end	__do_global_dtors_aux
+	.size	__do_global_dtors_aux, .-__do_global_dtors_aux
+	.local	completed.1269
+	.comm	completed.1269,1,1
+	.local	object.1265
+	.comm	object.1265,24,4
+	.weak	__cxa_finalize
+
+.include "__dso_handle.S"
+.include "atexit.S"
diff --git a/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S b/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S
new file mode 100644
index 0000000..16534e8
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/crtbegin_static.S
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.text
+	.align 4
+	.type __start,@function
+	.globl __start
+	.globl _start
+
+# this is the small startup code that is first run when
+# any executable that is statically-linked with Bionic
+# runs.
+#
+# it's purpose is to call __libc_init with appropriate
+# arguments, which are:
+#
+#    - the address of the raw data block setup by the Linux
+#      kernel ELF loader
+#
+#    - address of an "onexit" function, not used on any
+#      platform supported by Bionic
+#
+#    - address of the "main" function of the program.
+#
+#    - address of the constructor list
+#
+
+	.ent	__start
+__start:	
+_start:
+	bal	1f
+1:
+	.set	noreorder
+	.cpload	$ra
+	.set	reorder
+
+	move	$a0, $sp
+	move	$a1, $0
+	la	$a2, main
+	la	$a3, 1f
+	subu	$sp, 32
+	la	$t9, __libc_init
+	j	$t9
+	.end	__start
+
+1:	.long	__PREINIT_ARRAY__
+	.long	__INIT_ARRAY__
+	.long	__FINI_ARRAY__
+	.long	__CTOR_LIST__
+	.long	__DTOR_LIST__
+
+	.section .preinit_array, "aw"
+	.type __PREINIT_ARRAY__, @object
+	.globl __PREINIT_ARRAY__
+__PREINIT_ARRAY__:
+	.long -1
+
+	.section .init_array, "aw"
+	.type __INIT_ARRAY__, @object
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+	.long frame_dummy
+
+	.section .fini_array, "aw"
+	.type __FINI_ARRAY__, @object
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+	.long __do_global_dtors_aux
+
+	.section .ctors, "aw"
+	.type __CTOR_LIST__, @object
+	.globl __CTOR_LIST__
+__CTOR_LIST__:
+	.long -1
+
+	.section .dtors, "aw"
+	.type __DTOR_LIST__, @object
+	.globl __DTOR_LIST__
+__DTOR_LIST__:
+	.long -1
+
+	.abicalls
+	.section	.eh_frame,"a",@progbits
+	.align	2
+	.type	__EH_FRAME_BEGIN__, @object
+	.size	__EH_FRAME_BEGIN__, 0
+__EH_FRAME_BEGIN__:
+	.text
+	.align	2
+	.set	nomips16
+	.ent	frame_dummy
+	.type	frame_dummy, @function
+frame_dummy:
+	.frame	$sp,32,$31		# vars= 0, regs= 1/0, args= 16, gp= 8
+	.mask	0x80000000,-4
+	.fmask	0x00000000,0
+	.set	noreorder
+	.cpload	$25
+	.set	nomacro
+	addiu	$sp,$sp,-32
+	sw	$31,28($sp)
+	.cprestore	16
+	lw	$2,%got(__register_frame_info)($28)
+	beq	$2,$0,$L1
+	nop
+
+	lw	$2,%got(__EH_FRAME_BEGIN__)($28)
+	addiu	$4,$2,%lo(__EH_FRAME_BEGIN__)
+	lw	$2,%got(object.1265)($28)
+	addiu	$5,$2,%lo(object.1265)
+	lw	$2,%call16(__register_frame_info)($28)
+	move	$25,$2
+	.reloc	1f,R_MIPS_JALR,__register_frame_info
+1:	jalr	$25
+	nop
+
+	lw	$28,16($sp)
+$L1:
+	lw	$31,28($sp)
+	addiu	$sp,$sp,32
+	j	$31
+	nop
+
+	.text
+	.set	macro
+	.set	reorder
+	.end	frame_dummy
+	.size	frame_dummy, .-frame_dummy
+	.align	2
+	.set	nomips16
+	.ent	__do_global_dtors_aux
+	.type	__do_global_dtors_aux, @function
+__do_global_dtors_aux:
+	.frame	$sp,32,$31		# vars= 0, regs= 1/0, args= 16, gp= 8
+	.mask	0x80000000,-4
+	.fmask	0x00000000,0
+	.set	noreorder
+	.cpload	$25
+	.set	nomacro
+	addiu	$sp,$sp,-32
+	sw	$31,28($sp)
+	.cprestore	16
+	lw	$2,%got(completed.1269)($28)
+	lbu	$2,%lo(completed.1269)($2)
+	bne	$2,$0,$L8
+	nop
+
+$L4:
+	lw	$2,%got(__cxa_finalize)($28)
+	beq	$2,$0,$L6
+	nop
+
+	lw	$2,%got(__dso_handle)($28)
+	lw	$2,0($2)
+	move	$4,$2
+	lw	$2,%call16(__cxa_finalize)($28)
+	move	$25,$2
+	.reloc	1f,R_MIPS_JALR,__cxa_finalize
+1:	jalr	$25
+	nop
+
+	lw	$28,16($sp)
+$L6:
+	lw	$2,%got(__deregister_frame_info)($28)
+	beq	$2,$0,$L7
+	nop
+
+	lw	$2,%got(__EH_FRAME_BEGIN__)($28)
+	addiu	$4,$2,%lo(__EH_FRAME_BEGIN__)
+	lw	$2,%call16(__deregister_frame_info)($28)
+	move	$25,$2
+	.reloc	1f,R_MIPS_JALR,__deregister_frame_info
+1:	jalr	$25
+	nop
+
+	lw	$28,16($sp)
+$L7:
+	lw	$2,%got(completed.1269)($28)
+	li	$3,1			# 0x1
+	sb	$3,%lo(completed.1269)($2)
+	b	$L3
+	nop
+
+$L8:
+	nop
+$L3:
+	lw	$31,28($sp)
+	addiu	$sp,$sp,32
+	j	$31
+	nop
+
+	.set	macro
+	.set	reorder
+	.end	__do_global_dtors_aux
+	.size	__do_global_dtors_aux, .-__do_global_dtors_aux
+	.local	completed.1269
+	.comm	completed.1269,1,1
+	.local	object.1265
+	.comm	object.1265,24,4
+	.weak	__deregister_frame_info
+	.weak	__cxa_finalize
+	.weak	__register_frame_info
+
+.include "__dso_handle.S"
+/* NOTE: atexit() is  not be provided by crtbegin_static.S, but by libc.a */
diff --git a/ndk/platforms/android-9/arch-mips/src/crtend_android.S b/ndk/platforms/android-9/arch-mips/src/crtend_android.S
new file mode 100644
index 0000000..8a3cc6c
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/crtend_android.S
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	
+	.section .preinit_array, "aw"
+	.long 0
+
+	.section .init_array, "aw"
+	.long 0
+
+	.section .fini_array, "aw"
+	.long 0
+
+	.section .ctors, "aw"
+	.type __CTOR_END__, @object
+__CTOR_END__:
+	.long 0
+
+	.section .dtors, "aw"
+	.type __DTOR_END__, @object
+__DTOR_END__:
+	.long 0
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__FRAME_END__, @object
+	.size	__FRAME_END__, 4
+__FRAME_END__:
+	.zero	4
diff --git a/ndk/platforms/android-9/arch-mips/src/crtend_so.S b/ndk/platforms/android-9/arch-mips/src/crtend_so.S
new file mode 100644
index 0000000..d0bb090
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/src/crtend_so.S
@@ -0,0 +1,23 @@
+	.section .init_array, "aw"
+	.long 0
+
+	.section .fini_array, "aw"
+	.long 0
+
+	.section .ctors, "aw", @progbits
+	.type __CTOR_END__, @object
+__CTOR_END__:
+	.long 0
+	
+	.section .dtors, "aw", @progbits
+	.type __DTOR_END__, @object
+__DTOR_END__:
+	.long 0
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__FRAME_END__, @object
+	.size	__FRAME_END__, 4
+__FRAME_END__:
+	.zero	4
+	
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libEGL.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libEGL.so.functions.txt
new file mode 100644
index 0000000..12d92a3
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libEGL.so.functions.txt
@@ -0,0 +1,39 @@
+eglBindAPI
+eglBindTexImage
+eglChooseConfig
+eglCopyBuffers
+eglCreateContext
+eglCreateImageKHR
+eglCreatePbufferFromClientBuffer
+eglCreatePbufferSurface
+eglCreatePixmapSurface
+eglCreateWindowSurface
+eglDestroyContext
+eglDestroyImageKHR
+eglDestroySurface
+eglGetConfigAttrib
+eglGetConfigs
+eglGetCurrentContext
+eglGetCurrentDisplay
+eglGetCurrentSurface
+eglGetDisplay
+eglGetError
+eglGetProcAddress
+eglInitialize
+eglLockSurfaceKHR
+eglMakeCurrent
+eglQueryAPI
+eglQueryContext
+eglQueryString
+eglQuerySurface
+eglReleaseTexImage
+eglReleaseThread
+eglSetSwapRectangleANDROID
+eglSurfaceAttrib
+eglSwapBuffers
+eglSwapInterval
+eglTerminate
+eglUnlockSurfaceKHR
+eglWaitClient
+eglWaitGL
+eglWaitNative
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libEGL.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libEGL.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libEGL.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libGLESv1_CM.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libGLESv1_CM.so.functions.txt
new file mode 100644
index 0000000..8dc96a4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libGLESv1_CM.so.functions.txt
@@ -0,0 +1,278 @@
+glActiveTexture
+glAlphaFunc
+glAlphaFuncx
+glAlphaFuncxOES
+glBindBuffer
+glBindFramebufferOES
+glBindRenderbufferOES
+glBindTexture
+glBindVertexArrayOES
+glBlendEquationOES
+glBlendEquationSeparateOES
+glBlendFunc
+glBlendFuncSeparateOES
+glBufferData
+glBufferSubData
+glCheckFramebufferStatusOES
+glClear
+glClearColor
+glClearColorx
+glClearColorxOES
+glClearDepthf
+glClearDepthfOES
+glClearDepthx
+glClearDepthxOES
+glClearStencil
+glClientActiveTexture
+glClipPlanef
+glClipPlanefIMG
+glClipPlanefOES
+glClipPlanex
+glClipPlanexIMG
+glClipPlanexOES
+glColor4f
+glColor4ub
+glColor4x
+glColor4xOES
+glColorMask
+glColorPointer
+glColorPointerBounds
+glCompressedTexImage2D
+glCompressedTexSubImage2D
+glCopyTexImage2D
+glCopyTexSubImage2D
+glCullFace
+glCurrentPaletteMatrixOES
+glDeleteBuffers
+glDeleteFencesNV
+glDeleteFramebuffersOES
+glDeleteRenderbuffersOES
+glDeleteTextures
+glDeleteVertexArraysOES
+glDepthFunc
+glDepthMask
+glDepthRangef
+glDepthRangefOES
+glDepthRangex
+glDepthRangexOES
+glDisable
+glDisableClientState
+glDisableDriverControlQCOM
+glDiscardFramebufferEXT
+glDrawArrays
+glDrawElements
+glDrawTexfOES
+glDrawTexfvOES
+glDrawTexiOES
+glDrawTexivOES
+glDrawTexsOES
+glDrawTexsvOES
+glDrawTexxOES
+glDrawTexxvOES
+glEGLImageTargetRenderbufferStorageOES
+glEGLImageTargetTexture2DOES
+glEnable
+glEnableClientState
+glEnableDriverControlQCOM
+glEndTilingQCOM
+glExtGetBufferPointervQCOM
+glExtGetBuffersQCOM
+glExtGetFramebuffersQCOM
+glExtGetProgramBinarySourceQCOM
+glExtGetProgramsQCOM
+glExtGetRenderbuffersQCOM
+glExtGetShadersQCOM
+glExtGetTexLevelParameterivQCOM
+glExtGetTexSubImageQCOM
+glExtGetTexturesQCOM
+glExtIsProgramBinaryQCOM
+glExtTexObjectStateOverrideiQCOM
+glFinish
+glFinishFenceNV
+glFlush
+glFogf
+glFogfv
+glFogx
+glFogxOES
+glFogxv
+glFogxvOES
+glFramebufferRenderbufferOES
+glFramebufferTexture2DMultisampleIMG
+glFramebufferTexture2DOES
+glFrontFace
+glFrustumf
+glFrustumfOES
+glFrustumx
+glFrustumxOES
+glGenBuffers
+glGenFencesNV
+glGenFramebuffersOES
+glGenRenderbuffersOES
+glGenTextures
+glGenVertexArraysOES
+glGenerateMipmapOES
+glGetBooleanv
+glGetBufferParameteriv
+glGetBufferPointervOES
+glGetClipPlanef
+glGetClipPlanefOES
+glGetClipPlanex
+glGetClipPlanexOES
+glGetDriverControlStringQCOM
+glGetDriverControlsQCOM
+glGetError
+glGetFenceivNV
+glGetFixedv
+glGetFixedvOES
+glGetFloatv
+glGetFramebufferAttachmentParameterivOES
+glGetIntegerv
+glGetLightfv
+glGetLightxv
+glGetLightxvOES
+glGetMaterialfv
+glGetMaterialxv
+glGetMaterialxvOES
+glGetPointerv
+glGetRenderbufferParameterivOES
+glGetString
+glGetTexEnvfv
+glGetTexEnviv
+glGetTexEnvxv
+glGetTexEnvxvOES
+glGetTexGenfvOES
+glGetTexGenivOES
+glGetTexGenxvOES
+glGetTexParameterfv
+glGetTexParameteriv
+glGetTexParameterxv
+glGetTexParameterxvOES
+glHint
+glIsBuffer
+glIsEnabled
+glIsFenceNV
+glIsFramebufferOES
+glIsRenderbufferOES
+glIsTexture
+glIsVertexArrayOES
+glLightModelf
+glLightModelfv
+glLightModelx
+glLightModelxOES
+glLightModelxv
+glLightModelxvOES
+glLightf
+glLightfv
+glLightx
+glLightxOES
+glLightxv
+glLightxvOES
+glLineWidth
+glLineWidthx
+glLineWidthxOES
+glLoadIdentity
+glLoadMatrixf
+glLoadMatrixx
+glLoadMatrixxOES
+glLoadPaletteFromModelViewMatrixOES
+glLogicOp
+glMapBufferOES
+glMaterialf
+glMaterialfv
+glMaterialx
+glMaterialxOES
+glMaterialxv
+glMaterialxvOES
+glMatrixIndexPointerOES
+glMatrixIndexPointerOESBounds
+glMatrixMode
+glMultMatrixf
+glMultMatrixx
+glMultMatrixxOES
+glMultiDrawArraysEXT
+glMultiDrawElementsEXT
+glMultiTexCoord4f
+glMultiTexCoord4x
+glMultiTexCoord4xOES
+glNormal3f
+glNormal3x
+glNormal3xOES
+glNormalPointer
+glNormalPointerBounds
+glOrthof
+glOrthofOES
+glOrthox
+glOrthoxOES
+glPixelStorei
+glPointParameterf
+glPointParameterfv
+glPointParameterx
+glPointParameterxOES
+glPointParameterxv
+glPointParameterxvOES
+glPointSize
+glPointSizePointerOES
+glPointSizePointerOESBounds
+glPointSizex
+glPointSizexOES
+glPolygonOffset
+glPolygonOffsetx
+glPolygonOffsetxOES
+glPopMatrix
+glPushMatrix
+glQueryMatrixxOES
+glReadPixels
+glRenderbufferStorageMultisampleIMG
+glRenderbufferStorageOES
+glRotatef
+glRotatex
+glRotatexOES
+glSampleCoverage
+glSampleCoveragex
+glSampleCoveragexOES
+glScalef
+glScalex
+glScalexOES
+glScissor
+glSetFenceNV
+glShadeModel
+glStartTilingQCOM
+glStencilFunc
+glStencilMask
+glStencilOp
+glTestFenceNV
+glTexCoordPointer
+glTexCoordPointerBounds
+glTexEnvf
+glTexEnvfv
+glTexEnvi
+glTexEnviv
+glTexEnvx
+glTexEnvxOES
+glTexEnvxv
+glTexEnvxvOES
+glTexGenfOES
+glTexGenfvOES
+glTexGeniOES
+glTexGenivOES
+glTexGenxOES
+glTexGenxvOES
+glTexImage2D
+glTexParameterf
+glTexParameterfv
+glTexParameteri
+glTexParameteriv
+glTexParameterx
+glTexParameterxOES
+glTexParameterxv
+glTexParameterxvOES
+glTexSubImage2D
+glTranslatef
+glTranslatex
+glTranslatexOES
+glUnmapBufferOES
+glVertexPointer
+glVertexPointerBounds
+glViewport
+glWeightPointerOES
+glWeightPointerOESBounds
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libGLESv1_CM.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libGLESv1_CM.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libGLESv1_CM.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libGLESv2.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libGLESv2.so.functions.txt
new file mode 100644
index 0000000..13c4644
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libGLESv2.so.functions.txt
@@ -0,0 +1,202 @@
+glActiveTexture
+glAttachShader
+glBeginPerfMonitorAMD
+glBindAttribLocation
+glBindBuffer
+glBindFramebuffer
+glBindRenderbuffer
+glBindTexture
+glBindVertexArrayOES
+glBlendColor
+glBlendEquation
+glBlendEquationSeparate
+glBlendFunc
+glBlendFuncSeparate
+glBufferData
+glBufferSubData
+glCheckFramebufferStatus
+glClear
+glClearColor
+glClearDepthf
+glClearStencil
+glColorMask
+glCompileShader
+glCompressedTexImage2D
+glCompressedTexImage3DOES
+glCompressedTexSubImage2D
+glCompressedTexSubImage3DOES
+glCopyTexImage2D
+glCopyTexSubImage2D
+glCopyTexSubImage3DOES
+glCoverageMaskNV
+glCoverageOperationNV
+glCreateProgram
+glCreateShader
+glCullFace
+glDeleteBuffers
+glDeleteFencesNV
+glDeleteFramebuffers
+glDeletePerfMonitorsAMD
+glDeleteProgram
+glDeleteRenderbuffers
+glDeleteShader
+glDeleteTextures
+glDeleteVertexArraysOES
+glDepthFunc
+glDepthMask
+glDepthRangef
+glDetachShader
+glDisable
+glDisableDriverControlQCOM
+glDisableVertexAttribArray
+glDiscardFramebufferEXT
+glDrawArrays
+glDrawElements
+glEGLImageTargetRenderbufferStorageOES
+glEGLImageTargetTexture2DOES
+glEnable
+glEnableDriverControlQCOM
+glEnableVertexAttribArray
+glEndPerfMonitorAMD
+glEndTilingQCOM
+glExtGetBufferPointervQCOM
+glExtGetBuffersQCOM
+glExtGetFramebuffersQCOM
+glExtGetProgramBinarySourceQCOM
+glExtGetProgramsQCOM
+glExtGetRenderbuffersQCOM
+glExtGetShadersQCOM
+glExtGetTexLevelParameterivQCOM
+glExtGetTexSubImageQCOM
+glExtGetTexturesQCOM
+glExtIsProgramBinaryQCOM
+glExtTexObjectStateOverrideiQCOM
+glFinish
+glFinishFenceNV
+glFlush
+glFramebufferRenderbuffer
+glFramebufferTexture2D
+glFramebufferTexture2DMultisampleIMG
+glFramebufferTexture3DOES
+glFrontFace
+glGenBuffers
+glGenFencesNV
+glGenFramebuffers
+glGenPerfMonitorsAMD
+glGenRenderbuffers
+glGenTextures
+glGenVertexArraysOES
+glGenerateMipmap
+glGetActiveAttrib
+glGetActiveUniform
+glGetAttachedShaders
+glGetAttribLocation
+glGetBooleanv
+glGetBufferParameteriv
+glGetBufferPointervOES
+glGetDriverControlStringQCOM
+glGetDriverControlsQCOM
+glGetError
+glGetFenceivNV
+glGetFloatv
+glGetFramebufferAttachmentParameteriv
+glGetIntegerv
+glGetPerfMonitorCounterDataAMD
+glGetPerfMonitorCounterInfoAMD
+glGetPerfMonitorCounterStringAMD
+glGetPerfMonitorCountersAMD
+glGetPerfMonitorGroupStringAMD
+glGetPerfMonitorGroupsAMD
+glGetProgramBinaryOES
+glGetProgramInfoLog
+glGetProgramiv
+glGetRenderbufferParameteriv
+glGetShaderInfoLog
+glGetShaderPrecisionFormat
+glGetShaderSource
+glGetShaderiv
+glGetString
+glGetTexParameterfv
+glGetTexParameteriv
+glGetUniformLocation
+glGetUniformfv
+glGetUniformiv
+glGetVertexAttribPointerv
+glGetVertexAttribfv
+glGetVertexAttribiv
+glHint
+glIsBuffer
+glIsEnabled
+glIsFenceNV
+glIsFramebuffer
+glIsProgram
+glIsRenderbuffer
+glIsShader
+glIsTexture
+glIsVertexArrayOES
+glLineWidth
+glLinkProgram
+glMapBufferOES
+glMultiDrawArraysEXT
+glMultiDrawElementsEXT
+glPixelStorei
+glPolygonOffset
+glProgramBinaryOES
+glReadPixels
+glReleaseShaderCompiler
+glRenderbufferStorage
+glRenderbufferStorageMultisampleIMG
+glSampleCoverage
+glScissor
+glSelectPerfMonitorCountersAMD
+glSetFenceNV
+glShaderBinary
+glShaderSource
+glStartTilingQCOM
+glStencilFunc
+glStencilFuncSeparate
+glStencilMask
+glStencilMaskSeparate
+glStencilOp
+glStencilOpSeparate
+glTestFenceNV
+glTexImage2D
+glTexImage3DOES
+glTexParameterf
+glTexParameterfv
+glTexParameteri
+glTexParameteriv
+glTexSubImage2D
+glTexSubImage3DOES
+glUniform1f
+glUniform1fv
+glUniform1i
+glUniform1iv
+glUniform2f
+glUniform2fv
+glUniform2i
+glUniform2iv
+glUniform3f
+glUniform3fv
+glUniform3i
+glUniform3iv
+glUniform4f
+glUniform4fv
+glUniform4i
+glUniform4iv
+glUniformMatrix2fv
+glUniformMatrix3fv
+glUniformMatrix4fv
+glUnmapBufferOES
+glUseProgram
+glValidateProgram
+glVertexAttrib1f
+glVertexAttrib1fv
+glVertexAttrib2f
+glVertexAttrib2fv
+glVertexAttrib3f
+glVertexAttrib3fv
+glVertexAttrib4f
+glVertexAttrib4fv
+glVertexAttribPointer
+glViewport
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libGLESv2.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libGLESv2.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libGLESv2.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libOpenSLES.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libOpenSLES.so.functions.txt
new file mode 100644
index 0000000..f69a3e5
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libOpenSLES.so.functions.txt
@@ -0,0 +1,3 @@
+slCreateEngine
+slQueryNumSupportedEngineInterfaces
+slQuerySupportedEngineInterfaces
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libOpenSLES.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libOpenSLES.so.variables.txt
new file mode 100644
index 0000000..0c94828
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libOpenSLES.so.variables.txt
@@ -0,0 +1,49 @@
+SL_IID_3DCOMMIT
+SL_IID_3DDOPPLER
+SL_IID_3DGROUPING
+SL_IID_3DLOCATION
+SL_IID_3DMACROSCOPIC
+SL_IID_3DSOURCE
+SL_IID_ANDROIDCONFIGURATION
+SL_IID_ANDROIDEFFECT
+SL_IID_ANDROIDEFFECTCAPABILITIES
+SL_IID_ANDROIDEFFECTSEND
+SL_IID_ANDROIDSIMPLEBUFFERQUEUE
+SL_IID_AUDIODECODERCAPABILITIES
+SL_IID_AUDIOENCODER
+SL_IID_AUDIOENCODERCAPABILITIES
+SL_IID_AUDIOIODEVICECAPABILITIES
+SL_IID_BASSBOOST
+SL_IID_BUFFERQUEUE
+SL_IID_DEVICEVOLUME
+SL_IID_DYNAMICINTERFACEMANAGEMENT
+SL_IID_DYNAMICSOURCE
+SL_IID_EFFECTSEND
+SL_IID_ENGINE
+SL_IID_ENGINECAPABILITIES
+SL_IID_ENVIRONMENTALREVERB
+SL_IID_EQUALIZER
+SL_IID_LED
+SL_IID_METADATAEXTRACTION
+SL_IID_METADATATRAVERSAL
+SL_IID_MIDIMESSAGE
+SL_IID_MIDIMUTESOLO
+SL_IID_MIDITEMPO
+SL_IID_MIDITIME
+SL_IID_MUTESOLO
+SL_IID_NULL
+SL_IID_OBJECT
+SL_IID_OUTPUTMIX
+SL_IID_PITCH
+SL_IID_PLAY
+SL_IID_PLAYBACKRATE
+SL_IID_PREFETCHSTATUS
+SL_IID_PRESETREVERB
+SL_IID_RATEPITCH
+SL_IID_RECORD
+SL_IID_SEEK
+SL_IID_THREADSYNC
+SL_IID_VIBRA
+SL_IID_VIRTUALIZER
+SL_IID_VISUALIZATION
+SL_IID_VOLUME
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libandroid.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libandroid.so.functions.txt
new file mode 100644
index 0000000..4438c5e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libandroid.so.functions.txt
@@ -0,0 +1,148 @@
+AAssetDir_close
+AAssetDir_getNextFileName
+AAssetDir_rewind
+AAssetManager_fromJava
+AAssetManager_open
+AAssetManager_openDir
+AAsset_close
+AAsset_getBuffer
+AAsset_getLength
+AAsset_getRemainingLength
+AAsset_isAllocated
+AAsset_openFileDescriptor
+AAsset_read
+AAsset_seek
+AConfiguration_copy
+AConfiguration_delete
+AConfiguration_diff
+AConfiguration_fromAssetManager
+AConfiguration_getCountry
+AConfiguration_getDensity
+AConfiguration_getKeyboard
+AConfiguration_getKeysHidden
+AConfiguration_getLanguage
+AConfiguration_getMcc
+AConfiguration_getMnc
+AConfiguration_getNavHidden
+AConfiguration_getNavigation
+AConfiguration_getOrientation
+AConfiguration_getScreenLong
+AConfiguration_getScreenSize
+AConfiguration_getSdkVersion
+AConfiguration_getTouchscreen
+AConfiguration_getUiModeNight
+AConfiguration_getUiModeType
+AConfiguration_isBetterThan
+AConfiguration_match
+AConfiguration_new
+AConfiguration_setCountry
+AConfiguration_setDensity
+AConfiguration_setKeyboard
+AConfiguration_setKeysHidden
+AConfiguration_setLanguage
+AConfiguration_setMcc
+AConfiguration_setMnc
+AConfiguration_setNavHidden
+AConfiguration_setNavigation
+AConfiguration_setOrientation
+AConfiguration_setScreenLong
+AConfiguration_setScreenSize
+AConfiguration_setSdkVersion
+AConfiguration_setTouchscreen
+AConfiguration_setUiModeNight
+AConfiguration_setUiModeType
+AInputEvent_getDeviceId
+AInputEvent_getSource
+AInputEvent_getType
+AInputQueue_attachLooper
+AInputQueue_detachLooper
+AInputQueue_finishEvent
+AInputQueue_getEvent
+AInputQueue_hasEvents
+AInputQueue_preDispatchEvent
+AKeyEvent_getAction
+AKeyEvent_getDownTime
+AKeyEvent_getEventTime
+AKeyEvent_getFlags
+AKeyEvent_getKeyCode
+AKeyEvent_getMetaState
+AKeyEvent_getRepeatCount
+AKeyEvent_getScanCode
+ALooper_acquire
+ALooper_addFd
+ALooper_forThread
+ALooper_pollAll
+ALooper_pollOnce
+ALooper_prepare
+ALooper_release
+ALooper_removeFd
+ALooper_wake
+AMotionEvent_getAction
+AMotionEvent_getDownTime
+AMotionEvent_getEdgeFlags
+AMotionEvent_getEventTime
+AMotionEvent_getFlags
+AMotionEvent_getHistoricalEventTime
+AMotionEvent_getHistoricalPressure
+AMotionEvent_getHistoricalSize
+AMotionEvent_getHistoricalX
+AMotionEvent_getHistoricalY
+AMotionEvent_getHistorySize
+AMotionEvent_getMetaState
+AMotionEvent_getOrientation
+AMotionEvent_getPointerCount
+AMotionEvent_getPointerId
+AMotionEvent_getPressure
+AMotionEvent_getRawX
+AMotionEvent_getRawY
+AMotionEvent_getSize
+AMotionEvent_getToolMajor
+AMotionEvent_getToolMinor
+AMotionEvent_getTouchMajor
+AMotionEvent_getTouchMinor
+AMotionEvent_getX
+AMotionEvent_getXOffset
+AMotionEvent_getXPrecision
+AMotionEvent_getY
+AMotionEvent_getYOffset
+AMotionEvent_getYPrecision
+ANativeActivity_finish
+ANativeActivity_hideSoftInput
+ANativeActivity_setWindowFlags
+ANativeActivity_setWindowFormat
+ANativeActivity_showSoftInput
+ANativeWindow_acquire
+ANativeWindow_fromSurface
+ANativeWindow_getFormat
+ANativeWindow_getHeight
+ANativeWindow_getWidth
+ANativeWindow_lock
+ANativeWindow_release
+ANativeWindow_setBuffersGeometry
+ANativeWindow_unlockAndPost
+AObbInfo_delete
+AObbInfo_getFlags
+AObbInfo_getPackageName
+AObbInfo_getVersion
+AObbScanner_getObbInfo
+ASensorEventQueue_disableSensor
+ASensorEventQueue_enableSensor
+ASensorEventQueue_getEvents
+ASensorEventQueue_hasEvents
+ASensorEventQueue_setEventRate
+ASensorManager_createEventQueue
+ASensorManager_destroyEventQueue
+ASensorManager_getDefaultSensor
+ASensorManager_getInstance
+ASensorManager_getSensorList
+ASensor_getMinDelay
+ASensor_getName
+ASensor_getResolution
+ASensor_getType
+ASensor_getVendor
+AStorageManager_delete
+AStorageManager_getMountedObbPath
+AStorageManager_isObbMounted
+AStorageManager_mountObb
+AStorageManager_new
+AStorageManager_unmountObb
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libandroid.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libandroid.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libandroid.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libc.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libc.so.functions.txt
new file mode 100644
index 0000000..1c72ae9
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libc.so.functions.txt
@@ -0,0 +1,950 @@
+MD5_Final
+MD5_Init
+MD5_Update
+SHA1Final
+SHA1Init
+SHA1Transform
+SHA1Update
+__arc4_getbyte
+__assert
+__assert2
+__atexit_register_cleanup
+__atomic_cmpxchg
+__atomic_dec
+__atomic_inc
+__atomic_swap
+__b64_ntop
+__b64_pton
+__brk
+__clone_thread_start
+__cxa_atexit
+__cxa_finalize
+__dn_comp
+__dn_count_labels
+__dn_skipname
+__dorand48
+__dtoa
+__errno
+__evAddTime
+__evCmpTime
+__evConsIovec
+__evConsTime
+__evNowTime
+__evSubTime
+__evTimeSpec
+__evTimeVal
+__evUTCTime
+__fcntl
+__fcntl64
+__findenv
+__fork
+__fp_nquery
+__fp_query
+__fremovelock
+__fstatfs64
+__futex_syscall3
+__futex_syscall4
+__futex_wait
+__futex_wait_ex
+__futex_wake
+__futex_wake_ex
+__get_h_errno
+__get_res_cache
+__get_sp
+__get_stack_base
+__get_thread
+__get_tls
+__getcwd
+__getpriority
+__hostalias
+__init_tls
+__ioctl
+__libc_android_log_assert
+__libc_android_log_print
+__libc_android_log_vprint
+__libc_fini
+__libc_init
+__libc_init_common
+__libc_preinit
+__llseek
+__loc_aton
+__loc_ntoa
+__memcmp16
+__mmap2
+__ns_format_ttl
+__ns_get16
+__ns_get32
+__ns_initparse
+__ns_makecanon
+__ns_msg_getflag
+__ns_name_compress
+__ns_name_ntol
+__ns_name_ntop
+__ns_name_pack
+__ns_name_pton
+__ns_name_rollback
+__ns_name_skip
+__ns_name_uncompress
+__ns_name_unpack
+__ns_parserr
+__ns_put16
+__ns_put32
+__ns_samename
+__ns_skiprr
+__ns_sprintrr
+__ns_sprintrrf
+__open
+__openat
+__p_cdname
+__p_cdnname
+__p_class
+__p_fqname
+__p_fqnname
+__p_option
+__p_query
+__p_rcode
+__p_secstodate
+__p_section
+__p_sockun
+__p_time
+__p_type
+__pread64
+__pthread_cleanup_pop
+__pthread_cleanup_push
+__pthread_clone
+__pthread_cond_timedwait
+__pthread_cond_timedwait_relative
+__ptrace
+__putlong
+__putshort
+__pwrite64
+__reboot
+__res_close
+__res_dnok
+__res_get_nibblesuffix
+__res_get_nibblesuffix2
+__res_get_state
+__res_get_static
+__res_getservers
+__res_hnok
+__res_hostalias
+__res_isourserver
+__res_mailok
+__res_nameinquery
+__res_nametoclass
+__res_nametotype
+__res_nclose
+__res_ndestroy
+__res_ninit
+__res_nmkquery
+__res_nopt
+__res_nquery
+__res_nquerydomain
+__res_nsearch
+__res_nsend
+__res_opt
+__res_ourserver_p
+__res_ownok
+__res_pquery
+__res_put_state
+__res_queriesmatch
+__res_querydomain
+__res_randomid
+__res_send
+__res_send_setqhook
+__res_send_setrhook
+__res_setservers
+__res_vinit
+__rt_sigaction
+__rt_sigprocmask
+__rt_sigtimedwait
+__sclose
+__set_errno
+__set_syscall_errno
+__set_thread_area
+__set_tls
+__setresuid
+__setreuid
+__setuid
+__sflags
+__sflush
+__sfp
+__sfvwrite
+__sigsuspend
+__sinit
+__slbexpand
+__smakebuf
+__sread
+__srefill
+__srget
+__sseek
+__stack_chk_fail
+__statfs64
+__swbuf
+__swhatbuf
+__swrite
+__swsetup
+__sym_ntop
+__sym_ntos
+__sym_ston
+__sys_clone
+__syslog
+__system_properties_init
+__system_property_find
+__system_property_find_nth
+__system_property_get
+__system_property_read
+__system_property_wait
+__thread_entry
+__timer_create
+__timer_delete
+__timer_getoverrun
+__timer_gettime
+__timer_settime
+__timer_table_start_stop
+__wait4
+__waitid
+_cleanup
+_dorand48
+_endhtent
+_exit
+_exit_thread
+_exit_with_stack_teardown
+_flush_cache
+_fwalk
+_gethtbyaddr
+_gethtbyname
+_gethtbyname2
+_gethtent
+_getlong
+_getshort
+_init_thread
+_longjmp
+_mktemp
+_sethtent
+_setjmp
+_thread_created_hook
+_waitpid
+abort
+accept
+access
+acct
+alarm
+alphasort
+arc4random
+arc4random_addrandom
+arc4random_buf
+arc4random_stir
+arc4random_uniform
+asctime
+asctime64
+asctime64_r
+asctime_r
+asprintf
+atexit
+atoi
+atol
+atoll
+basename
+basename_r
+bcopy
+bind
+bindresvport
+brk
+bsd_signal
+bsearch
+btowc
+bzero
+cacheflush
+calloc
+capget
+capset
+chdir
+chmod
+chown
+chroot
+clearenv
+clearerr
+clock
+clock_getres
+clock_gettime
+clock_nanosleep
+clock_settime
+clone
+close
+closedir
+closelog
+closelog_r
+connect
+copy_TM_to_tm
+copy_tm_to_TM
+cpuacct_add
+creat
+ctime
+ctime64
+ctime64_r
+ctime_r
+daemon
+delete_module
+difftime
+dirfd
+dirname
+dirname_r
+div
+dlcalloc
+dlfree
+dlindependent_calloc
+dlindependent_comalloc
+dlmallinfo
+dlmalloc
+dlmalloc_footprint
+dlmalloc_max_footprint
+dlmalloc_stats
+dlmalloc_trim
+dlmalloc_usable_size
+dlmalloc_walk_free_pages
+dlmalloc_walk_heap
+dlmallopt
+dlmemalign
+dlpvalloc
+dlrealloc
+dlvalloc
+dn_expand
+drand48
+dup
+dup2
+endpwent
+endservent
+endusershell
+endutent
+epoll_create
+epoll_ctl
+epoll_wait
+erand48
+err
+errx
+eventfd
+eventfd_read
+eventfd_write
+execl
+execle
+execlp
+execv
+execve
+execvp
+exit
+fchdir
+fchmod
+fchmodat
+fchown
+fchownat
+fclose
+fcntl
+fdatasync
+fdopen
+fdopendir
+fdprintf
+feof
+ferror
+fflush
+ffs
+fgetc
+fgetln
+fgetpos
+fgets
+fgetwc
+fgetws
+fileno
+flock
+flockfile
+fnmatch
+fopen
+fork
+fpathconf
+fprintf
+fpurge
+fputc
+fputs
+fputwc
+fputws
+fread
+free
+freeaddrinfo
+freedtoa
+freopen
+fscanf
+fseek
+fseeko
+fsetpos
+fstat
+fstatat
+fstatfs
+fsync
+ftell
+ftello
+ftime
+ftok
+ftruncate
+ftrylockfile
+fts_children
+fts_close
+fts_open
+fts_read
+fts_set
+funlockfile
+funopen
+futex
+fwide
+fwprintf
+fwrite
+fwscanf
+gai_strerror
+get_malloc_leak_info
+getaddrinfo
+getc
+getc_unlocked
+getchar
+getchar_unlocked
+getcwd
+getdents
+getdtablesize
+getegid
+getenv
+geteuid
+getgid
+getgrgid
+getgrnam
+getgrouplist
+getgroups
+gethostbyaddr
+gethostbyname
+gethostbyname2
+gethostbyname_r
+gethostent
+gethostname
+getitimer
+getlogin
+getmntent
+getnameinfo
+getnetbyaddr
+getnetbyname
+getopt
+getopt_long
+getopt_long_only
+getpeername
+getpgid
+getpgrp
+getpid
+getppid
+getpriority
+getprotobyname
+getprotobynumber
+getpt
+getpwnam
+getpwuid
+getresgid
+getresuid
+getrlimit
+getrusage
+gets
+getservbyname
+getservbyport
+getservent
+getservent_r
+getsockname
+getsockopt
+gettid
+gettimeofday
+getuid
+getusershell
+getutent
+getwc
+getwchar
+gmtime
+gmtime64
+gmtime64_r
+gmtime_r
+herror
+hstrerror
+if_indextoname
+if_nametoindex
+index
+inet_addr
+inet_aton
+inet_nsap_addr
+inet_nsap_ntoa
+inet_ntoa
+inet_ntop
+inet_pton
+init_module
+initgroups
+inotify_add_watch
+inotify_init
+inotify_rm_watch
+ioctl
+ioprio_get
+ioprio_set
+isalnum
+isalpha
+isascii
+isatty
+isblank
+iscntrl
+isdigit
+isgraph
+islower
+isprint
+ispunct
+issetugid
+isspace
+isupper
+iswalnum
+iswalpha
+iswcntrl
+iswctype
+iswdigit
+iswgraph
+iswlower
+iswprint
+iswpunct
+iswspace
+iswupper
+iswxdigit
+isxdigit
+jrand48
+kill
+killpg
+klogctl
+lchown
+ldexp
+ldiv
+link
+listen
+lldiv
+localtime
+localtime64
+localtime64_r
+localtime_r
+longjmp
+longjmperror
+lrand48
+lseek
+lseek64
+lstat
+madvise
+mallinfo
+malloc
+malloc_debug_init
+mbrlen
+mbrtowc
+mbsinit
+mbsrtowcs
+mbstowcs
+memalign
+memccpy
+memchr
+memcmp
+memcpy
+memmem
+memmove
+memrchr
+memset
+memswap
+mincore
+mkdir
+mkdirat
+mkdtemp
+mknod
+mkstemp
+mkstemps
+mktemp
+mktime
+mktime64
+mlock
+mmap
+mount
+mprotect
+mrand48
+mremap
+msync
+munlock
+munmap
+nanosleep
+nice
+nrand48
+nsdispatch
+open
+openat
+opendir
+openlog
+openlog_r
+pathconf
+pause
+pclose
+perror
+pipe
+pipe2
+poll
+popen
+prctl
+pread
+printf
+pselect
+pthread_attr_destroy
+pthread_attr_getdetachstate
+pthread_attr_getguardsize
+pthread_attr_getschedparam
+pthread_attr_getschedpolicy
+pthread_attr_getscope
+pthread_attr_getstack
+pthread_attr_getstackaddr
+pthread_attr_getstacksize
+pthread_attr_init
+pthread_attr_setdetachstate
+pthread_attr_setguardsize
+pthread_attr_setschedparam
+pthread_attr_setschedpolicy
+pthread_attr_setscope
+pthread_attr_setstack
+pthread_attr_setstackaddr
+pthread_attr_setstacksize
+pthread_cond_broadcast
+pthread_cond_destroy
+pthread_cond_init
+pthread_cond_signal
+pthread_cond_timedwait
+pthread_cond_timedwait_monotonic
+pthread_cond_timedwait_monotonic_np
+pthread_cond_timedwait_relative_np
+pthread_cond_timeout_np
+pthread_cond_wait
+pthread_condattr_destroy
+pthread_condattr_getpshared
+pthread_condattr_init
+pthread_condattr_setpshared
+pthread_create
+pthread_detach
+pthread_equal
+pthread_exit
+pthread_getattr_np
+pthread_getcpuclockid
+pthread_getschedparam
+pthread_getspecific
+pthread_join
+pthread_key_create
+pthread_key_delete
+pthread_kill
+pthread_mutex_destroy
+pthread_mutex_init
+pthread_mutex_lock
+pthread_mutex_lock_timeout_np
+pthread_mutex_trylock
+pthread_mutex_unlock
+pthread_mutexattr_destroy
+pthread_mutexattr_getpshared
+pthread_mutexattr_gettype
+pthread_mutexattr_init
+pthread_mutexattr_setpshared
+pthread_mutexattr_settype
+pthread_once
+pthread_rwlock_destroy
+pthread_rwlock_init
+pthread_rwlock_rdlock
+pthread_rwlock_timedrdlock
+pthread_rwlock_timedwrlock
+pthread_rwlock_tryrdlock
+pthread_rwlock_trywrlock
+pthread_rwlock_unlock
+pthread_rwlock_wrlock
+pthread_rwlockattr_destroy
+pthread_rwlockattr_getpshared
+pthread_rwlockattr_init
+pthread_rwlockattr_setpshared
+pthread_self
+pthread_setname_np
+pthread_setschedparam
+pthread_setspecific
+pthread_sigmask
+ptrace
+ptsname
+ptsname_r
+putc
+putc_unlocked
+putchar
+putchar_unlocked
+putenv
+puts
+pututline
+putw
+putwc
+putwchar
+pwrite
+qsort
+raise
+read
+readdir
+readdir_r
+readlink
+readv
+realloc
+realpath
+reboot
+recv
+recvfrom
+recvmsg
+regcomp
+regerror
+regexec
+regfree
+remove
+rename
+renameat
+res_init
+res_mkquery
+res_need_init
+res_query
+res_search
+rewind
+rewinddir
+rmdir
+sbrk
+scandir
+scanf
+sched_get_priority_max
+sched_get_priority_min
+sched_getparam
+sched_getscheduler
+sched_rr_get_interval
+sched_setparam
+sched_setscheduler
+sched_yield
+seed48
+select
+sem_close
+sem_destroy
+sem_getvalue
+sem_init
+sem_open
+sem_post
+sem_timedwait
+sem_trywait
+sem_unlink
+sem_wait
+send
+sendfile
+sendmsg
+sendto
+setbuf
+setbuffer
+setegid
+setenv
+seteuid
+setgid
+setgroups
+setitimer
+setjmp
+setlinebuf
+setlocale
+setlogmask
+setlogmask_r
+setpgid
+setpgrp
+setpriority
+setregid
+setresgid
+setresuid
+setreuid
+setrlimit
+setservent
+setsid
+setsockopt
+settimeofday
+setuid
+setusershell
+setutent
+setvbuf
+shutdown
+sigaction
+sigaltstack
+sigblock
+siginterrupt
+siglongjmp
+sigpending
+sigprocmask
+sigsetjmp
+sigsetmask
+sigsuspend
+sigwait
+sleep
+snprintf
+socket
+socketpair
+sprintf
+srand48
+sscanf
+stat
+statfs
+strcasecmp
+strcasestr
+strcat
+strchr
+strcmp
+strcoll
+strcpy
+strcspn
+strdup
+strerror
+strerror_r
+strftime
+strftime_tz
+strlcat
+strlcpy
+strlen
+strncasecmp
+strncat
+strncmp
+strncpy
+strndup
+strnlen
+strntoimax
+strntoumax
+strpbrk
+strptime
+strrchr
+strsep
+strsignal
+strspn
+strstr
+strtod
+strtoimax
+strtok
+strtok_r
+strtol
+strtoll
+strtotimeval
+strtoul
+strtoull
+strtoumax
+strxfrm
+swprintf
+swscanf
+symlink
+sync
+syscall
+sysconf
+sysinfo
+syslog
+syslog_r
+system
+sysv_signal
+tcgetpgrp
+tcsetpgrp
+tempnam
+time
+timegm64
+timelocal64
+timer_create
+timer_delete
+timer_getoverrun
+timer_gettime
+timer_settime
+times
+tkill
+tmpfile
+tmpnam
+toascii
+tolower
+toupper
+towlower
+towupper
+truncate
+ttyname
+ttyname_r
+tzset
+umask
+umount
+umount2
+uname
+ungetc
+ungetwc
+unlink
+unlinkat
+unlockpt
+unsetenv
+usleep
+utime
+utimes
+utmpname
+valid_tm_mon
+valid_tm_wday
+valloc
+vasprintf
+verr
+verrx
+vfdprintf
+vfork
+vfprintf
+vfscanf
+vfwprintf
+vprintf
+vscanf
+vsnprintf
+vsprintf
+vsscanf
+vswprintf
+vsyslog
+vsyslog_r
+vwarn
+vwarnx
+vwprintf
+wait
+wait3
+waitid
+waitpid
+warn
+warnx
+wcpcpy
+wcpncpy
+wcrtomb
+wcscasecmp
+wcscat
+wcschr
+wcscmp
+wcscoll
+wcscpy
+wcscspn
+wcsdup
+wcsftime
+wcslcat
+wcslcpy
+wcslen
+wcsncasecmp
+wcsncat
+wcsncmp
+wcsncpy
+wcsnlen
+wcspbrk
+wcsrchr
+wcsrtombs
+wcsspn
+wcsstr
+wcstod
+wcstok
+wcstol
+wcstombs
+wcstoul
+wcswcs
+wcswidth
+wcsxfrm
+wctob
+wctype
+wcwidth
+wmemchr
+wmemcmp
+wmemcpy
+wmemmove
+wmemset
+wprintf
+write
+writev
+wscanf
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libc.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libc.so.variables.txt
new file mode 100644
index 0000000..ce5ef63
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libc.so.variables.txt
@@ -0,0 +1,51 @@
+_C_ctype_
+_C_tolower_
+_C_toupper_
+__atexit
+__atexit_invalid
+__bionic_brk
+__evOptMonoTime
+__isthreaded
+__libc_malloc_default_dispatch
+__libc_malloc_dispatch
+__p_cert_syms
+__p_class_syms
+__p_default_section_syms
+__p_key_syms
+__p_rcode_syms
+__p_type_syms
+__p_update_section_syms
+__page_shift
+__page_size
+__progname
+__rand48_add
+__rand48_mult
+__rand48_seed
+__sF
+__sFext
+__sdidinit
+__sglue
+__stack_chk_guard
+__system_property_area__
+_ctype_
+_nres
+_ns_flagdata
+_rand48_add
+_rand48_mult
+_rand48_seed
+_res_opcodes
+_tolower_tab_
+_toupper_tab_
+daylight
+environ
+h_errlist
+h_nerr
+optarg
+opterr
+optind
+optopt
+optreset
+sys_siglist
+sys_signame
+timezone
+tzname
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libdl.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libdl.so.functions.txt
new file mode 100644
index 0000000..0419f74
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libdl.so.functions.txt
@@ -0,0 +1,6 @@
+dl_iterate_phdr
+dladdr
+dlclose
+dlerror
+dlopen
+dlsym
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libdl.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libdl.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libdl.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libjnigraphics.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libjnigraphics.so.functions.txt
new file mode 100644
index 0000000..61612d4
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libjnigraphics.so.functions.txt
@@ -0,0 +1,3 @@
+AndroidBitmap_getInfo
+AndroidBitmap_lockPixels
+AndroidBitmap_unlockPixels
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libjnigraphics.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libjnigraphics.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libjnigraphics.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/liblog.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/liblog.so.functions.txt
new file mode 100644
index 0000000..d7a4b72
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/liblog.so.functions.txt
@@ -0,0 +1,9 @@
+__android_log_assert
+__android_log_btwrite
+__android_log_buf_print
+__android_log_buf_write
+__android_log_bwrite
+__android_log_dev_available
+__android_log_print
+__android_log_vprint
+__android_log_write
diff --git a/ndk/platforms/android-9/arch-mips/symbols/liblog.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/liblog.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/liblog.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libm.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libm.so.functions.txt
new file mode 100644
index 0000000..7115405
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libm.so.functions.txt
@@ -0,0 +1,181 @@
+__exp__D
+__fpclassifyd
+__fpclassifyf
+__fpclassifyl
+__ieee754_rem_pio2
+__ieee754_rem_pio2f
+__isfinite
+__isfinitef
+__isfinitel
+__isinf
+__isinff
+__isinfl
+__isnanl
+__isnormal
+__isnormalf
+__isnormall
+__kernel_cos
+__kernel_cosdf
+__kernel_rem_pio2
+__kernel_sin
+__kernel_sindf
+__kernel_tan
+__kernel_tandf
+__log__D
+__signbit
+__signbitf
+__signbitl
+acos
+acosf
+acosh
+acoshf
+asin
+asinf
+asinh
+asinhf
+atan
+atan2
+atan2f
+atanf
+atanh
+atanhf
+cbrt
+cbrtf
+ceil
+ceilf
+ceill
+copysign
+copysignf
+copysignl
+cos
+cosf
+cosh
+coshf
+drem
+dremf
+erf
+erfc
+erfcf
+erff
+exp
+exp2
+exp2f
+expf
+expm1
+expm1f
+fabs
+fabsf
+fabsl
+fdim
+fdimf
+fdiml
+finite
+finitef
+floor
+floorf
+floorl
+fma
+fmaf
+fmax
+fmaxf
+fmaxl
+fmin
+fminf
+fminl
+fmod
+fmodf
+frexp
+frexpf
+gamma
+gamma_r
+gammaf
+gammaf_r
+hypot
+hypotf
+ilogb
+ilogbf
+ilogbl
+isnan
+isnanf
+j0
+j0f
+j1
+j1f
+jn
+jnf
+ldexp
+ldexpf
+ldexpl
+lgamma
+lgamma_r
+lgammaf
+lgammaf_r
+llrint
+llrintf
+llround
+llroundf
+llroundl
+log
+log10
+log10f
+log1p
+log1pf
+logb
+logbf
+logf
+lrint
+lrintf
+lround
+lroundf
+lroundl
+modf
+modff
+nearbyint
+nearbyintf
+nextafter
+nextafterf
+nexttowardf
+pow
+powf
+remainder
+remainderf
+remquo
+remquof
+rint
+rintf
+round
+roundf
+roundl
+scalb
+scalbf
+scalbln
+scalblnf
+scalblnl
+scalbn
+scalbnf
+scalbnl
+significand
+significandf
+sin
+sincos
+sincosf
+sincosl
+sinf
+sinh
+sinhf
+sqrt
+sqrtf
+tan
+tanf
+tanh
+tanhf
+tgamma
+trunc
+truncf
+truncl
+y0
+y0f
+y1
+y1f
+yn
+ynf
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libm.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libm.so.variables.txt
new file mode 100644
index 0000000..a1b63fc
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libm.so.variables.txt
@@ -0,0 +1,2 @@
+__fe_dfl_env
+signgam
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libstdc++.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libstdc++.so.functions.txt
new file mode 100644
index 0000000..3fb5bf7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libstdc++.so.functions.txt
@@ -0,0 +1,23 @@
+_ZN9type_infoC1ERKS_
+_ZN9type_infoC1Ev
+_ZN9type_infoC2ERKS_
+_ZN9type_infoC2Ev
+_ZN9type_infoD0Ev
+_ZN9type_infoD1Ev
+_ZN9type_infoD2Ev
+_ZNK9type_info4nameEv
+_ZNK9type_info6beforeERKS_
+_ZNK9type_infoeqERKS_
+_ZNK9type_infoneERKS_
+_ZdaPv
+_ZdaPvRKSt9nothrow_t
+_ZdlPv
+_ZdlPvRKSt9nothrow_t
+_Znaj
+_ZnajRKSt9nothrow_t
+_Znwj
+_ZnwjRKSt9nothrow_t
+__cxa_guard_abort
+__cxa_guard_acquire
+__cxa_guard_release
+__cxa_pure_virtual
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libstdc++.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libstdc++.so.variables.txt
new file mode 100644
index 0000000..d5aab66
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libstdc++.so.variables.txt
@@ -0,0 +1,2 @@
+_ZSt7nothrow
+_ZTV9type_info
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libthread_db.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libthread_db.so.functions.txt
new file mode 100644
index 0000000..e31e447
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libthread_db.so.functions.txt
@@ -0,0 +1,12 @@
+td_symbol_list
+td_ta_clear_event
+td_ta_delete
+td_ta_event_addr
+td_ta_event_getmsg
+td_ta_map_lwp2thr
+td_ta_new
+td_ta_set_event
+td_ta_thr_iter
+td_thr_event_enable
+td_thr_get_info
+td_thr_tls_get_addr
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libthread_db.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libthread_db.so.variables.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libthread_db.so.variables.txt
@@ -0,0 +1 @@
+
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libz.so.functions.txt b/ndk/platforms/android-9/arch-mips/symbols/libz.so.functions.txt
new file mode 100644
index 0000000..05c7c03
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libz.so.functions.txt
@@ -0,0 +1,71 @@
+adler32
+adler32_combine
+adler32_combine64
+compress
+compress2
+compressBound
+crc32
+crc32_combine
+crc32_combine64
+deflate
+deflateBound
+deflateCopy
+deflateEnd
+deflateInit2_
+deflateInit_
+deflateParams
+deflatePrime
+deflateReset
+deflateSetDictionary
+deflateSetHeader
+deflateTune
+get_crc_table
+gzbuffer
+gzclearerr
+gzclose
+gzclose_r
+gzclose_w
+gzdirect
+gzdopen
+gzeof
+gzerror
+gzflush
+gzgetc
+gzgets
+gzoffset
+gzoffset64
+gzopen
+gzopen64
+gzprintf
+gzputc
+gzputs
+gzread
+gzrewind
+gzseek
+gzseek64
+gzsetparams
+gztell
+gztell64
+gzungetc
+gzwrite
+inflate
+inflateBack
+inflateBackEnd
+inflateBackInit_
+inflateCopy
+inflateEnd
+inflateGetHeader
+inflateInit2_
+inflateInit_
+inflateMark
+inflatePrime
+inflateReset
+inflateReset2
+inflateSetDictionary
+inflateSync
+inflateSyncPoint
+inflateUndermine
+uncompress
+zError
+zlibCompileFlags
+zlibVersion
diff --git a/ndk/platforms/android-9/arch-mips/symbols/libz.so.variables.txt b/ndk/platforms/android-9/arch-mips/symbols/libz.so.variables.txt
new file mode 100644
index 0000000..6e070cd
--- /dev/null
+++ b/ndk/platforms/android-9/arch-mips/symbols/libz.so.variables.txt
@@ -0,0 +1,3 @@
+deflate_copyright
+inflate_copyright
+z_errmsg
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/a.out.h b/ndk/platforms/android-9/arch-x86/include/asm/a.out.h
index 6aecff7..fa287b5 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/a.out.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/a.out.h
@@ -7,25 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_A_OUT_H
 #define _ASM_X86_A_OUT_H
-
 struct exec
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int a_info;
  unsigned a_text;
  unsigned a_data;
  unsigned a_bss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned a_syms;
  unsigned a_entry;
  unsigned a_trsize;
  unsigned a_drsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define N_TRSIZE(a) ((a).a_trsize)
 #define N_DRSIZE(a) ((a).a_drsize)
 #define N_SYMSIZE(a) ((a).a_syms)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/acpi.h b/ndk/platforms/android-9/arch-x86/include/asm/acpi.h
index 0115ce9..92e6b7d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/acpi.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/acpi.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_ACPI_H
 #define _ASM_X86_ACPI_H
-
-#include "acpi_64.h"
-
+#include "acpi_32.h"
 #include <asm/processor.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/acpi_32.h b/ndk/platforms/android-9/arch-x86/include/asm/acpi_32.h
index fe0043c..af60c63 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/acpi_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/acpi_32.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_ACPI_H
 #define _ASM_ACPI_H
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/alternative.h b/ndk/platforms/android-9/arch-x86/include/asm/alternative.h
index 17c1dc5..107f551 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/alternative.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/alternative.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "alternative_64.h"
+#include "alternative_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/alternative_32.h b/ndk/platforms/android-9/arch-x86/include/asm/alternative_32.h
index ef13111..5aa2088 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/alternative_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/alternative_32.h
@@ -7,32 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_ALTERNATIVE_H
 #define _I386_ALTERNATIVE_H
-
 #include <asm/types.h>
 #include <linux/stddef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
-
 struct alt_instr {
  u8 *instr;
  u8 *replacement;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 cpuid;
  u8 instrlen;
  u8 replacementlen;
  u8 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct module;
 #define alternative(oldinstr, newinstr, feature)   asm volatile ("661:\n\t" oldinstr "\n662:\n"   ".section .altinstructions,\"a\"\n"   "  .align 4\n"   "  .long 661b\n"     "  .long 663f\n"     "  .byte %c0\n"     "  .byte 662b-661b\n"     "  .byte 664f-663f\n"     ".previous\n"   ".section .altinstr_replacement,\"ax\"\n"   "663:\n\t" newinstr "\n664:\n"    ".previous" :: "i" (feature) : "memory")
 #define alternative_input(oldinstr, newinstr, feature, input...)   asm volatile ("661:\n\t" oldinstr "\n662:\n"   ".section .altinstructions,\"a\"\n"   "  .align 4\n"   "  .long 661b\n"     "  .long 663f\n"     "  .byte %c0\n"     "  .byte 662b-661b\n"     "  .byte 664f-663f\n"     ".previous\n"   ".section .altinstr_replacement,\"ax\"\n"   "663:\n\t" newinstr "\n664:\n"    ".previous" :: "i" (feature), ##input)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define alternative_io(oldinstr, newinstr, feature, output, input...)   asm volatile ("661:\n\t" oldinstr "\n662:\n"   ".section .altinstructions,\"a\"\n"   "  .align 4\n"   "  .long 661b\n"     "  .long 663f\n"     "  .byte %c[feat]\n"     "  .byte 662b-661b\n"     "  .byte 664f-663f\n"     ".previous\n"   ".section .altinstr_replacement,\"ax\"\n"   "663:\n\t" newinstr "\n664:\n"     ".previous" : output : [feat] "i" (feature), ##input)
 #define ASM_OUTPUT2(a, b) a, b
 #define LOCK_PREFIX ""
-
+struct paravirt_patch_site;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __parainstructions NULL
 #define __parainstructions_end NULL
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/apic.h b/ndk/platforms/android-9/arch-x86/include/asm/apic.h
index 5cb7181..bf6ac72 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/apic.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/apic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "apic_64.h"
+#include "apic_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/apic_32.h b/ndk/platforms/android-9/arch-x86/include/asm/apic_32.h
index 02c9d9b..ccb390b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/apic_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/apic_32.h
@@ -7,25 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_APIC_H
 #define __ASM_APIC_H
-
 #include <linux/pm.h>
 #include <linux/delay.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/fixmap.h>
 #include <asm/apicdef.h>
 #include <asm/processor.h>
 #include <asm/system.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Dprintk(x...)
-
 #define APIC_QUIET 0
 #define APIC_VERBOSE 1
 #define APIC_DEBUG 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define apic_printk(v, s, a...) do {   if ((v) <= apic_verbosity)   printk(s, ##a);   } while (0)
-
 #define local_apic_timer_c2_ok 1
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/apicdef.h b/ndk/platforms/android-9/arch-x86/include/asm/apicdef.h
index bd19f5a..af5b074 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/apicdef.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/apicdef.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "apicdef_64.h"
+#include "apicdef_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/apicdef_32.h b/ndk/platforms/android-9/arch-x86/include/asm/apicdef_32.h
index a4a5edb..1f1bb2f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/apicdef_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/apicdef_32.h
@@ -7,366 +7,398 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_APICDEF_H
 #define __ASM_APICDEF_H
-
 #define APIC_DEFAULT_PHYS_BASE 0xfee00000
-
 #define APIC_ID 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVR 0x30
 #define APIC_LVR_MASK 0xFF00FF
 #define GET_APIC_VERSION(x) ((x)&0xFF)
 #define GET_APIC_MAXLVT(x) (((x)>>16)&0xFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_INTEGRATED(x) ((x)&0xF0)
 #define APIC_XAPIC(x) ((x) >= 0x14)
 #define APIC_TASKPRI 0x80
 #define APIC_TPRI_MASK 0xFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ARBPRI 0x90
 #define APIC_ARBPRI_MASK 0xFF
 #define APIC_PROCPRI 0xA0
 #define APIC_EOI 0xB0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_EIO_ACK 0x0  
 #define APIC_RRR 0xC0
 #define APIC_LDR 0xD0
 #define APIC_LDR_MASK (0xFF<<24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_APIC_LOGICAL_ID(x) (((x)>>24)&0xFF)
 #define SET_APIC_LOGICAL_ID(x) (((x)<<24))
 #define APIC_ALL_CPUS 0xFF
 #define APIC_DFR 0xE0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DFR_CLUSTER 0x0FFFFFFFul
 #define APIC_DFR_FLAT 0xFFFFFFFFul
 #define APIC_SPIV 0xF0
 #define APIC_SPIV_FOCUS_DISABLED (1<<9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_SPIV_APIC_ENABLED (1<<8)
 #define APIC_ISR 0x100
 #define APIC_ISR_NR 0x8  
 #define APIC_TMR 0x180
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_IRR 0x200
 #define APIC_ESR 0x280
 #define APIC_ESR_SEND_CS 0x00001
 #define APIC_ESR_RECV_CS 0x00002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ESR_SEND_ACC 0x00004
 #define APIC_ESR_RECV_ACC 0x00008
 #define APIC_ESR_SENDILL 0x00020
 #define APIC_ESR_RECVILL 0x00040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ESR_ILLREGA 0x00080
 #define APIC_ICR 0x300
 #define APIC_DEST_SELF 0x40000
 #define APIC_DEST_ALLINC 0x80000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DEST_ALLBUT 0xC0000
 #define APIC_ICR_RR_MASK 0x30000
 #define APIC_ICR_RR_INVALID 0x00000
 #define APIC_ICR_RR_INPROG 0x10000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ICR_RR_VALID 0x20000
 #define APIC_INT_LEVELTRIG 0x08000
 #define APIC_INT_ASSERT 0x04000
 #define APIC_ICR_BUSY 0x01000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DEST_LOGICAL 0x00800
 #define APIC_DM_FIXED 0x00000
 #define APIC_DM_LOWEST 0x00100
 #define APIC_DM_SMI 0x00200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DM_REMRD 0x00300
 #define APIC_DM_NMI 0x00400
 #define APIC_DM_INIT 0x00500
 #define APIC_DM_STARTUP 0x00600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DM_EXTINT 0x00700
 #define APIC_VECTOR_MASK 0x000FF
 #define APIC_ICR2 0x310
 #define GET_APIC_DEST_FIELD(x) (((x)>>24)&0xFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_APIC_DEST_FIELD(x) ((x)<<24)
 #define APIC_LVTT 0x320
 #define APIC_LVTTHMR 0x330
 #define APIC_LVTPC 0x340
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVT0 0x350
 #define APIC_LVT_TIMER_BASE_MASK (0x3<<18)
 #define GET_APIC_TIMER_BASE(x) (((x)>>18)&0x3)
 #define SET_APIC_TIMER_BASE(x) (((x)<<18))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TIMER_BASE_CLKIN 0x0
 #define APIC_TIMER_BASE_TMBASE 0x1
 #define APIC_TIMER_BASE_DIV 0x2
 #define APIC_LVT_TIMER_PERIODIC (1<<17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVT_MASKED (1<<16)
 #define APIC_LVT_LEVEL_TRIGGER (1<<15)
 #define APIC_LVT_REMOTE_IRR (1<<14)
 #define APIC_INPUT_POLARITY (1<<13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_SEND_PENDING (1<<12)
 #define APIC_MODE_MASK 0x700
 #define GET_APIC_DELIVERY_MODE(x) (((x)>>8)&0x7)
 #define SET_APIC_DELIVERY_MODE(x,y) (((x)&~0x700)|((y)<<8))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_MODE_FIXED 0x0
 #define APIC_MODE_NMI 0x4
 #define APIC_MODE_EXTINT 0x7
 #define APIC_LVT1 0x360
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVTERR 0x370
 #define APIC_TMICT 0x380
 #define APIC_TMCCT 0x390
 #define APIC_TDCR 0x3E0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TDR_DIV_TMBASE (1<<2)
 #define APIC_TDR_DIV_1 0xB
 #define APIC_TDR_DIV_2 0x0
 #define APIC_TDR_DIV_4 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TDR_DIV_8 0x2
 #define APIC_TDR_DIV_16 0x3
 #define APIC_TDR_DIV_32 0x8
 #define APIC_TDR_DIV_64 0x9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TDR_DIV_128 0xA
-
 #define APIC_BASE (fix_to_virt(FIX_APIC_BASE))
-
 #define MAX_IO_APICS 64
-
 #define u32 unsigned int
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct local_apic {
-
   struct { u32 __reserved[4]; } __reserved_01;
-
   struct { u32 __reserved[4]; } __reserved_02;
-
   struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_1 : 24,
  phys_apic_id : 4,
  __reserved_2 : 4;
  u32 __reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } id;
-
   const
  struct {
  u32 version : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_1 : 8,
  max_lvt : 8,
  __reserved_2 : 8;
  u32 __reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } version;
-
   struct { u32 __reserved[4]; } __reserved_03;
-
   struct { u32 __reserved[4]; } __reserved_04;
-
   struct { u32 __reserved[4]; } __reserved_05;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_06;
-
   struct {
  u32 priority : 8,
  __reserved_1 : 24;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2[3];
  } tpr;
-
   const
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 priority : 8,
  __reserved_1 : 24;
  u32 __reserved_2[3];
  } apr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   const
  struct {
  u32 priority : 8,
  __reserved_1 : 24;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2[3];
  } ppr;
-
   struct {
  u32 eoi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved[3];
  } eoi;
-
   struct { u32 __reserved[4]; } __reserved_07;
-
   struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_1 : 24,
  logical_dest : 8;
  u32 __reserved_2[3];
  } ldr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 __reserved_1 : 28,
  model : 4;
  u32 __reserved_2[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } dfr;
-
   struct {
  u32 spurious_vector : 8,
  apic_enabled : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  focus_cpu : 1,
  __reserved_2 : 22;
  u32 __reserved_3[3];
  } svr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
   u32 bitfield;
  u32 __reserved[3];
  } isr [8];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
   u32 bitfield;
  u32 __reserved[3];
  } tmr [8];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
   u32 bitfield;
  u32 __reserved[3];
  } irr [8];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   union {
  struct {
  u32 send_cs_error : 1,
  receive_cs_error : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  send_accept_error : 1,
  receive_accept_error : 1,
  __reserved_1 : 1,
  send_illegal_vector : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  receive_illegal_vector : 1,
  illegal_register_address : 1,
  __reserved_2 : 24;
  u32 __reserved_3[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } error_bits;
  struct {
  u32 errors;
  u32 __reserved_3[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } all_errors;
  } esr;
-
   struct { u32 __reserved[4]; } __reserved_08;
-
   struct { u32 __reserved[4]; } __reserved_09;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_10;
-
   struct { u32 __reserved[4]; } __reserved_11;
-
   struct { u32 __reserved[4]; } __reserved_12;
-
   struct { u32 __reserved[4]; } __reserved_13;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_14;
-
   struct {
  u32 vector : 8,
  delivery_mode : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  destination_mode : 1,
  delivery_status : 1,
  __reserved_1 : 1,
  level : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  trigger : 1,
  __reserved_2 : 2,
  shorthand : 2,
  __reserved_3 : 12;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_4[3];
  } icr1;
-
   struct {
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_1 : 24,
  phys_dest : 4,
  __reserved_2 : 4;
  u32 __reserved_3 : 24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  logical_dest : 8;
  } dest;
  u32 __reserved_4[3];
  } icr2;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 vector : 8,
  __reserved_1 : 4,
  delivery_status : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_2 : 3,
  mask : 1,
  timer_mode : 1,
  __reserved_3 : 14;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_4[3];
  } lvt_timer;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  __reserved_1 : 1,
  delivery_status : 1,
  __reserved_2 : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mask : 1,
  __reserved_3 : 15;
  u32 __reserved_4[3];
  } lvt_thermal;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 vector : 8,
  delivery_mode : 3,
  __reserved_1 : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_status : 1,
  __reserved_2 : 3,
  mask : 1,
  __reserved_3 : 15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_4[3];
  } lvt_pc;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  __reserved_1 : 1,
  delivery_status : 1,
  polarity : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  remote_irr : 1,
  trigger : 1,
  mask : 1,
  __reserved_2 : 15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_3[3];
  } lvt_lint0;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  __reserved_1 : 1,
  delivery_status : 1,
  polarity : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  remote_irr : 1,
  trigger : 1,
  mask : 1,
  __reserved_2 : 15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_3[3];
  } lvt_lint1;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_1 : 4,
  delivery_status : 1,
  __reserved_2 : 3,
  mask : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_3 : 15;
  u32 __reserved_4[3];
  } lvt_error;
-
   struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 initial_count;
  u32 __reserved_2[3];
  } timer_icr;
-
   const
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u32 curr_count;
  u32 __reserved_2[3];
  } timer_ccr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_16;
-
   struct { u32 __reserved[4]; } __reserved_17;
-
   struct { u32 __reserved[4]; } __reserved_18;
-
   struct { u32 __reserved[4]; } __reserved_19;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 divisor : 4,
  __reserved_1 : 28;
  u32 __reserved_2[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } timer_dcr;
-
   struct { u32 __reserved[4]; } __reserved_20;
-
 } __attribute__ ((packed));
-
 #undef u32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/atomic.h b/ndk/platforms/android-9/arch-x86/include/asm/atomic.h
index 00289cf..9c65347 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/atomic.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/atomic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "atomic_64.h"
+#include "atomic_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/atomic_32.h b/ndk/platforms/android-9/arch-x86/include/asm/atomic_32.h
index 677aac8..355b620 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/atomic_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/atomic_32.h
@@ -7,33 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_I386_ATOMIC__
 #define __ARCH_I386_ATOMIC__
-
 #include <linux/compiler.h>
 #include <asm/processor.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cmpxchg.h>
-
 typedef struct { int counter; } atomic_t;
-
 #define ATOMIC_INIT(i) { (i) }
-
 #define atomic_read(v) ((v)->counter)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define atomic_set(v,i) (((v)->counter) = (i))
-
 #define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
 #define atomic_xchg(v, new) (xchg(&((v)->counter), (new)))
 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define atomic_inc_return(v) (atomic_add_return(1,v))
 #define atomic_dec_return(v) (atomic_sub_return(1,v))
 #define atomic_clear_mask(mask, addr)  __asm__ __volatile__(LOCK_PREFIX "andl %0,%1"  : : "r" (~(mask)),"m" (*addr) : "memory")
 #define atomic_set_mask(mask, addr)  __asm__ __volatile__(LOCK_PREFIX "orl %0,%1"  : : "r" (mask),"m" (*(addr)) : "memory")
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_mb__before_atomic_dec() barrier()
 #define smp_mb__after_atomic_dec() barrier()
 #define smp_mb__before_atomic_inc() barrier()
 #define smp_mb__after_atomic_inc() barrier()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/atomic.h>
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/auxvec.h b/ndk/platforms/android-9/arch-x86/include/asm/auxvec.h
index f065eb1..d3cffec 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/auxvec.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/auxvec.h
@@ -7,14 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_AUXVEC_H
 #define _ASM_X86_AUXVEC_H
-
-#ifdef __i386__
 #define AT_SYSINFO 32
-#endif
 #define AT_SYSINFO_EHDR 33
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/bitops.h b/ndk/platforms/android-9/arch-x86/include/asm/bitops.h
index 3b58565..491b611 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/bitops.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/bitops.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "bitops_64.h"
+#include "bitops_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/bitops_32.h b/ndk/platforms/android-9/arch-x86/include/asm/bitops_32.h
index fa77fe2..b17b5f9 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/bitops_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/bitops_32.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_BITOPS_H
 #define _I386_BITOPS_H
-
 #ifndef _LINUX_BITOPS_H
 #error only <linux/bitops.h> can be included directly
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #include <linux/compiler.h>
 #include <asm/alternative.h>
-
 #define ADDR (*(volatile long *) addr)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_mb__before_clear_bit() barrier()
 #define smp_mb__after_clear_bit() barrier()
 #define test_bit(nr,addr)  (__builtin_constant_p(nr) ?   constant_test_bit((nr),(addr)) :   variable_test_bit((nr),(addr)))
 #undef ADDR
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/bitops/fls64.h>
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/bug.h b/ndk/platforms/android-9/arch-x86/include/asm/bug.h
index 9247022..4b3edf4 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/bug.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/bug.h
@@ -7,10 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_BUG_H
 #define _ASM_X86_BUG_H
-
 #include <asm-generic/bug.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/byteorder.h b/ndk/platforms/android-9/arch-x86/include/asm/byteorder.h
index a839798..74dc9d6 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/byteorder.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/byteorder.h
@@ -7,64 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_BYTEORDER_H
 #define _ASM_X86_BYTEORDER_H
-
 #include <asm/types.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __GNUC__
-
-#ifdef __i386__
-
 static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
 {
  __asm__("xchgb %b0,%h0\n\t"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  "rorl $16,%0\n\t"
  "xchgb %b0,%h0"
  :"=q" (x)
  : "0" (x));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  return x;
 }
-
 static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 val)
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct { __u32 a,b; } s;
  __u64 u;
  } v;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  v.u = val;
  v.s.a = ___arch__swab32(v.s.a);
  v.s.b = ___arch__swab32(v.s.b);
  __asm__("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  return v.u;
 }
-
-#else
-
-static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x)
-{
- __asm__("bswapq %0" : "=r" (x) : "0" (x));
- return x;
-}
-
-static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
-{
- __asm__("bswapl %0" : "=r" (x) : "0" (x));
- return x;
-}
-
-#endif
-
 #define __arch__swab64(x) ___arch__swab64(x)
 #define __arch__swab32(x) ___arch__swab32(x)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __BYTEORDER_HAS_U64__
-
 #endif
-
 #include <linux/byteorder/little_endian.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cache.h b/ndk/platforms/android-9/arch-x86/include/asm/cache.h
index 2766a71..9c607e9 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cache.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cache.h
@@ -7,14 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARCH_X86_CACHE_H
 #define _ARCH_X86_CACHE_H
-
 #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __read_mostly __attribute__((__section__(".data.read_mostly")))
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cacheflush.h b/ndk/platforms/android-9/arch-x86/include/asm/cacheflush.h
index 028277b..92a6458 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cacheflush.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cacheflush.h
@@ -7,28 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_CACHEFLUSH_H
 #define _ASM_X86_CACHEFLUSH_H
-
 #include <linux/mm.h>
-
 #define flush_cache_all() do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_cache_mm(mm) do { } while (0)
 #define flush_cache_dup_mm(mm) do { } while (0)
 #define flush_cache_range(vma, start, end) do { } while (0)
 #define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_dcache_page(page) do { } while (0)
 #define flush_dcache_mmap_lock(mapping) do { } while (0)
 #define flush_dcache_mmap_unlock(mapping) do { } while (0)
 #define flush_icache_range(start, end) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_icache_page(vma,pg) do { } while (0)
 #define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
 #define flush_cache_vmap(start, end) do { } while (0)
 #define flush_cache_vunmap(start, end) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define copy_to_user_page(vma, page, vaddr, dst, src, len)   memcpy(dst, src, len)
 #define copy_from_user_page(vma, page, vaddr, dst, src, len)   memcpy(dst, src, len)
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg.h b/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg.h
index de059a2..9447850 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "cmpxchg_64.h"
+#include "cmpxchg_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg_32.h b/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg_32.h
index 3632f4c..0da9b38 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cmpxchg_32.h
@@ -7,25 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_CMPXCHG_H
 #define __ASM_CMPXCHG_H
-
 #include <linux/bitops.h>  
-
 #define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __xchg_dummy { unsigned long a[100]; };
 #define __xg(x) ((struct __xchg_dummy *)(x))
-
 #define ll_low(x) *(((unsigned int*)&(x))+0)
 #define ll_high(x) *(((unsigned int*)&(x))+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_64bit(ptr,value)  (__builtin_constant_p(value) ?   __set_64bit_constant(ptr, value) :   __set_64bit_var(ptr, value) )
 #define _set_64bit(ptr,value)  (__builtin_constant_p(value) ?   __set_64bit(ptr, (unsigned int)(value), (unsigned int)((value)>>32ULL) ) :   __set_64bit(ptr, ll_low(value), ll_high(value)) )
-
 #define cmpxchg(ptr,o,n)  ({   __typeof__(*(ptr)) __ret;   if (likely(boot_cpu_data.x86 > 3))   __ret = __cmpxchg((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   else   __ret = cmpxchg_386((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   __ret;  })
 #define cmpxchg_local(ptr,o,n)  ({   __typeof__(*(ptr)) __ret;   if (likely(boot_cpu_data.x86 > 3))   __ret = __cmpxchg_local((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   else   __ret = cmpxchg_386((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   __ret;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cmpxchg64(ptr,o,n)  ((__typeof__(*(ptr)))__cmpxchg64((ptr),(unsigned long long)(o),  (unsigned long long)(n)))
 #define cmpxchg64_local(ptr,o,n)  ((__typeof__(*(ptr)))__cmpxchg64_local((ptr),(unsigned long long)(o),  (unsigned long long)(n)))
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cpufeature.h b/ndk/platforms/android-9/arch-x86/include/asm/cpufeature.h
index 47af457..7fcfacf 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cpufeature.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cpufeature.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "cpufeature_64.h"
+#include "cpufeature_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cpufeature_32.h b/ndk/platforms/android-9/arch-x86/include/asm/cpufeature_32.h
index a8ebc40..d3caa6f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cpufeature_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cpufeature_32.h
@@ -7,145 +7,165 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_CPUFEATURE_H
 #define __ASM_I386_CPUFEATURE_H
-
 #ifndef __ASSEMBLY__
 #include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #include <asm/required-features.h>
-
 #define NCAPINTS 8  
-
 #define X86_FEATURE_FPU (0*32+ 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_VME (0*32+ 1)  
 #define X86_FEATURE_DE (0*32+ 2)  
 #define X86_FEATURE_PSE (0*32+ 3)  
 #define X86_FEATURE_TSC (0*32+ 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MSR (0*32+ 5)  
 #define X86_FEATURE_PAE (0*32+ 6)  
 #define X86_FEATURE_MCE (0*32+ 7)  
 #define X86_FEATURE_CX8 (0*32+ 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_APIC (0*32+ 9)  
 #define X86_FEATURE_SEP (0*32+11)  
 #define X86_FEATURE_MTRR (0*32+12)  
 #define X86_FEATURE_PGE (0*32+13)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MCA (0*32+14)  
 #define X86_FEATURE_CMOV (0*32+15)  
 #define X86_FEATURE_PAT (0*32+16)  
 #define X86_FEATURE_PSE36 (0*32+17)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_PN (0*32+18)  
 #define X86_FEATURE_CLFLSH (0*32+19)  
 #define X86_FEATURE_DS (0*32+21)  
 #define X86_FEATURE_ACPI (0*32+22)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MMX (0*32+23)  
 #define X86_FEATURE_FXSR (0*32+24)  
-
 #define X86_FEATURE_XMM (0*32+25)  
 #define X86_FEATURE_XMM2 (0*32+26)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_SELFSNOOP (0*32+27)  
 #define X86_FEATURE_HT (0*32+28)  
 #define X86_FEATURE_ACC (0*32+29)  
 #define X86_FEATURE_IA64 (0*32+30)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_SYSCALL (1*32+11)  
 #define X86_FEATURE_MP (1*32+19)  
 #define X86_FEATURE_NX (1*32+20)  
 #define X86_FEATURE_MMXEXT (1*32+22)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_RDTSCP (1*32+27)  
 #define X86_FEATURE_LM (1*32+29)  
 #define X86_FEATURE_3DNOWEXT (1*32+30)  
 #define X86_FEATURE_3DNOW (1*32+31)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_RECOVERY (2*32+ 0)  
 #define X86_FEATURE_LONGRUN (2*32+ 1)  
 #define X86_FEATURE_LRTI (2*32+ 3)  
-
 #define X86_FEATURE_CXMMX (3*32+ 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_K6_MTRR (3*32+ 1)  
 #define X86_FEATURE_CYRIX_ARR (3*32+ 2)  
 #define X86_FEATURE_CENTAUR_MCR (3*32+ 3)  
-
 #define X86_FEATURE_K8 (3*32+ 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_K7 (3*32+ 5)  
 #define X86_FEATURE_P3 (3*32+ 6)  
 #define X86_FEATURE_P4 (3*32+ 7)  
 #define X86_FEATURE_CONSTANT_TSC (3*32+ 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_UP (3*32+ 9)  
 #define X86_FEATURE_FXSAVE_LEAK (3*32+10)  
 #define X86_FEATURE_ARCH_PERFMON (3*32+11)  
 #define X86_FEATURE_PEBS (3*32+12)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_BTS (3*32+13)  
-
 #define X86_FEATURE_SYNC_RDTSC (3*32+15)  
 #define X86_FEATURE_REP_GOOD (3*32+16)  
-
 #define X86_FEATURE_XMM3 (4*32+ 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MWAIT (4*32+ 3)  
 #define X86_FEATURE_DSCPL (4*32+ 4)  
 #define X86_FEATURE_EST (4*32+ 7)  
 #define X86_FEATURE_TM2 (4*32+ 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_CID (4*32+10)  
 #define X86_FEATURE_CX16 (4*32+13)  
 #define X86_FEATURE_XTPR (4*32+14)  
 #define X86_FEATURE_DCA (4*32+18)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_XSTORE (5*32+ 2)  
 #define X86_FEATURE_XSTORE_EN (5*32+ 3)  
 #define X86_FEATURE_XCRYPT (5*32+ 6)  
 #define X86_FEATURE_XCRYPT_EN (5*32+ 7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_ACE2 (5*32+ 8)  
 #define X86_FEATURE_ACE2_EN (5*32+ 9)  
 #define X86_FEATURE_PHE (5*32+ 10)  
 #define X86_FEATURE_PHE_EN (5*32+ 11)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_PMM (5*32+ 12)  
 #define X86_FEATURE_PMM_EN (5*32+ 13)  
-
 #define X86_FEATURE_LAHF_LM (6*32+ 0)  
 #define X86_FEATURE_CMP_LEGACY (6*32+ 1)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_IDA (7*32+ 0)  
-
 #define cpu_has(c, bit)   (__builtin_constant_p(bit) &&   ( (((bit)>>5)==0 && (1UL<<((bit)&31) & REQUIRED_MASK0)) ||   (((bit)>>5)==1 && (1UL<<((bit)&31) & REQUIRED_MASK1)) ||   (((bit)>>5)==2 && (1UL<<((bit)&31) & REQUIRED_MASK2)) ||   (((bit)>>5)==3 && (1UL<<((bit)&31) & REQUIRED_MASK3)) ||   (((bit)>>5)==4 && (1UL<<((bit)&31) & REQUIRED_MASK4)) ||   (((bit)>>5)==5 && (1UL<<((bit)&31) & REQUIRED_MASK5)) ||   (((bit)>>5)==6 && (1UL<<((bit)&31) & REQUIRED_MASK6)) ||   (((bit)>>5)==7 && (1UL<<((bit)&31) & REQUIRED_MASK7)) )   ? 1 :   test_bit(bit, (c)->x86_capability))
 #define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
-
 #define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_vme boot_cpu_has(X86_FEATURE_VME)
 #define cpu_has_de boot_cpu_has(X86_FEATURE_DE)
 #define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE)
 #define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_pae boot_cpu_has(X86_FEATURE_PAE)
 #define cpu_has_pge boot_cpu_has(X86_FEATURE_PGE)
 #define cpu_has_apic boot_cpu_has(X86_FEATURE_APIC)
 #define cpu_has_sep boot_cpu_has(X86_FEATURE_SEP)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_mtrr boot_cpu_has(X86_FEATURE_MTRR)
 #define cpu_has_mmx boot_cpu_has(X86_FEATURE_MMX)
 #define cpu_has_fxsr boot_cpu_has(X86_FEATURE_FXSR)
 #define cpu_has_xmm boot_cpu_has(X86_FEATURE_XMM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_xmm2 boot_cpu_has(X86_FEATURE_XMM2)
 #define cpu_has_xmm3 boot_cpu_has(X86_FEATURE_XMM3)
 #define cpu_has_ht boot_cpu_has(X86_FEATURE_HT)
 #define cpu_has_mp boot_cpu_has(X86_FEATURE_MP)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_nx boot_cpu_has(X86_FEATURE_NX)
 #define cpu_has_k6_mtrr boot_cpu_has(X86_FEATURE_K6_MTRR)
 #define cpu_has_cyrix_arr boot_cpu_has(X86_FEATURE_CYRIX_ARR)
 #define cpu_has_centaur_mcr boot_cpu_has(X86_FEATURE_CENTAUR_MCR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_xstore boot_cpu_has(X86_FEATURE_XSTORE)
 #define cpu_has_xstore_enabled boot_cpu_has(X86_FEATURE_XSTORE_EN)
 #define cpu_has_xcrypt boot_cpu_has(X86_FEATURE_XCRYPT)
 #define cpu_has_xcrypt_enabled boot_cpu_has(X86_FEATURE_XCRYPT_EN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_ace2 boot_cpu_has(X86_FEATURE_ACE2)
 #define cpu_has_ace2_enabled boot_cpu_has(X86_FEATURE_ACE2_EN)
 #define cpu_has_phe boot_cpu_has(X86_FEATURE_PHE)
 #define cpu_has_phe_enabled boot_cpu_has(X86_FEATURE_PHE_EN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_pmm boot_cpu_has(X86_FEATURE_PMM)
 #define cpu_has_pmm_enabled boot_cpu_has(X86_FEATURE_PMM_EN)
 #define cpu_has_ds boot_cpu_has(X86_FEATURE_DS)
 #define cpu_has_pebs boot_cpu_has(X86_FEATURE_PEBS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_clflush boot_cpu_has(X86_FEATURE_CLFLSH)
 #define cpu_has_bts boot_cpu_has(X86_FEATURE_BTS)
-
 #endif
-
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/cputime.h b/ndk/platforms/android-9/arch-x86/include/asm/cputime.h
index 0e79e0b..5035a63 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/cputime.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/cputime.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/cputime.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/current.h b/ndk/platforms/android-9/arch-x86/include/asm/current.h
index b53c6fe..da85169 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/current.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/current.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "current_64.h"
+#include "current_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/current_32.h b/ndk/platforms/android-9/arch-x86/include/asm/current_32.h
index f74b371..0882f79 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/current_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/current_32.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_CURRENT_H
 #define _I386_CURRENT_H
-
 #include <linux/compiler.h>
 #include <asm/percpu.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct task_struct;
-
 #define current get_current()
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/delay.h b/ndk/platforms/android-9/arch-x86/include/asm/delay.h
index 7cb5f74..455455a 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/delay.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/delay.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_DELAY_H
 #define _ASM_X86_DELAY_H
-
 #define udelay(n) (__builtin_constant_p(n) ?   ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) :   __udelay(n))
-
 #define ndelay(n) (__builtin_constant_p(n) ?   ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) :   __ndelay(n))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/desc.h b/ndk/platforms/android-9/arch-x86/include/asm/desc.h
index e9d448b..b60787e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/desc.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/desc.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "desc_64.h"
+#include "desc_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/desc_32.h b/ndk/platforms/android-9/arch-x86/include/asm/desc_32.h
index f53191c..bb98242 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/desc_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/desc_32.h
@@ -7,59 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_DESC_H
 #define __ARCH_DESC_H
-
 #include <asm/ldt.h>
 #include <asm/segment.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 #include <linux/preempt.h>
 #include <linux/smp.h>
 #include <linux/percpu.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/mmu.h>
-
 struct Xgt_desc_struct {
  unsigned short size;
  unsigned long address __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short pad;
 } __attribute__ ((packed));
-
 struct gdt_page
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct desc_struct gdt[GDT_ENTRIES];
 } __attribute__((aligned(PAGE_SIZE)));
-
 #define DESCTYPE_LDT 0x82  
 #define DESCTYPE_TSS 0x89  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DESCTYPE_TASK 0x85  
 #define DESCTYPE_INT 0x8e  
 #define DESCTYPE_TRAP 0x8f  
 #define DESCTYPE_DPL3 0x60  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DESCTYPE_S 0x10  
 #define load_TR_desc() native_load_tr_desc()
 #define load_gdt(dtr) native_load_gdt(dtr)
 #define load_idt(dtr) native_load_idt(dtr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define load_tr(tr) __asm__ __volatile("ltr %0"::"m" (tr))
 #define load_ldt(ldt) __asm__ __volatile("lldt %0"::"m" (ldt))
 #define store_gdt(dtr) native_store_gdt(dtr)
 #define store_idt(dtr) native_store_idt(dtr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define store_tr(tr) (tr = native_store_tr())
 #define store_ldt(ldt) __asm__ ("sldt %0":"=m" (ldt))
 #define load_TLS(t, cpu) native_load_tls(t, cpu)
 #define set_ldt native_set_ldt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define write_ldt_entry(dt, entry, a, b) write_dt_entry(dt, entry, a, b)
 #define write_gdt_entry(dt, entry, a, b) write_dt_entry(dt, entry, a, b)
 #define write_idt_entry(dt, entry, a, b) write_dt_entry(dt, entry, a, b)
 #define set_tss_desc(cpu,addr) __set_tss_desc(cpu, GDT_ENTRY_TSS, addr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LDT_entry_a(info)   ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff))
 #define LDT_entry_b(info)   (((info)->base_addr & 0xff000000) |   (((info)->base_addr & 0x00ff0000) >> 16) |   ((info)->limit & 0xf0000) |   (((info)->read_exec_only ^ 1) << 9) |   ((info)->contents << 10) |   (((info)->seg_not_present ^ 1) << 15) |   ((info)->seg_32bit << 22) |   ((info)->limit_in_pages << 23) |   ((info)->useable << 20) |   0x7000)
 #define LDT_empty(info) (  (info)->base_addr == 0 &&   (info)->limit == 0 &&   (info)->contents == 0 &&   (info)->read_exec_only == 1 &&   (info)->seg_32bit == 0 &&   (info)->limit_in_pages == 0 &&   (info)->seg_not_present == 1 &&   (info)->useable == 0 )
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_DESC_BASE(idx, gdt, base, lo_w, lo_b, hi_b)   movb idx*8+4(gdt), lo_b;   movb idx*8+7(gdt), hi_b;   shll $16, base;   movw idx*8+2(gdt), lo_w;
 #endif
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/desc_defs.h b/ndk/platforms/android-9/arch-x86/include/asm/desc_defs.h
index bf6de4a..32b46e1 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/desc_defs.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/desc_defs.h
@@ -7,64 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_DESC_DEFS_H
 #define __ARCH_DESC_DEFS_H
-
 #ifndef __ASSEMBLY__
-
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct desc_struct {
  u16 limit0;
  u16 base0;
  unsigned base1 : 8, type : 4, s : 1, dpl : 2, p : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned limit : 4, avl : 1, l : 1, d : 1, g : 1, base2 : 8;
 } __attribute__((packed));
-
 struct n_desc_struct {
  unsigned int a,b;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  GATE_INTERRUPT = 0xE,
  GATE_TRAP = 0xF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  GATE_CALL = 0xC,
 };
-
 struct gate_struct {
  u16 offset_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 segment;
  unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1;
  u16 offset_middle;
  u32 offset_high;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 zero1;
 } __attribute__((packed));
-
 #define PTR_LOW(x) ((unsigned long)(x) & 0xFFFF)
 #define PTR_MIDDLE(x) (((unsigned long)(x) >> 16) & 0xFFFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTR_HIGH(x) ((unsigned long)(x) >> 32)
-
 enum {
  DESC_TSS = 0x9,
  DESC_LDT = 0x2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ldttss_desc {
  u16 limit0;
  u16 base0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned base1 : 8, type : 5, dpl : 2, p : 1;
  unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8;
  u32 base3;
  u32 zero1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct desc_ptr {
  unsigned short size;
  unsigned long address;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed)) ;
-
 #endif
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/div64.h b/ndk/platforms/android-9/arch-x86/include/asm/div64.h
index 3fef43e..420d9e3 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/div64.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/div64.h
@@ -7,11 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_DIV64_H
 #define _ASM_X86_DIV64_H
-
-#include <asm-generic/div64.h>
-
+#include <linux/types.h>
+#define do_div(n,base) ({   unsigned long __upper, __low, __high, __mod, __base;   __base = (base);   asm("":"=a" (__low), "=d" (__high):"A" (n));   __upper = __high;   if (__high) {   __upper = __high % (__base);   __high = __high / (__base);   }   asm("divl %2":"=a" (__low), "=d" (__mod):"rm" (__base), "0" (__low), "1" (__upper));   asm("":"=A" (n):"a" (__low),"d" (__high));   __mod;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define div_long_long_rem(a,b,c) div_ll_X_l_rem(a,b,c)
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping.h b/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping.h
index 3da1da6..0a9d23b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "dma-mapping_64.h"
+#include "dma-mapping_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping_32.h b/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping_32.h
index 974a60b..6b41adf 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/dma-mapping_32.h
@@ -7,22 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_I386_DMA_MAPPING_H
 #define _ASM_I386_DMA_MAPPING_H
-
 #include <linux/mm.h>
 #include <linux/scatterlist.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cache.h>
 #include <asm/io.h>
 #include <asm/bug.h>
-
 #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
-
 #define dma_is_consistent(d, h) (1)
 #define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/dma.h b/ndk/platforms/android-9/arch-x86/include/asm/dma.h
index ae51e02..1e96d90 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/dma.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/dma.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "dma_64.h"
+#include "dma_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/dma_32.h b/ndk/platforms/android-9/arch-x86/include/asm/dma_32.h
index 9c24f5e..8b77878 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/dma_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/dma_32.h
@@ -7,84 +7,92 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_DMA_H
 #define _ASM_DMA_H
-
 #include <linux/spinlock.h>  
 #include <asm/io.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/delay.h>
-
 #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
 #define dma_outb outb_p
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dma_outb outb
 #endif
-
 #define dma_inb inb
-
 #define MAX_DMA_CHANNELS 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_DMA_ADDRESS (PAGE_OFFSET+0x1000000)
-
 #define IO_DMA1_BASE 0x00  
 #define IO_DMA2_BASE 0xC0  
-
 #define DMA1_CMD_REG 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA1_STAT_REG 0x08  
 #define DMA1_REQ_REG 0x09  
 #define DMA1_MASK_REG 0x0A  
 #define DMA1_MODE_REG 0x0B  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA1_CLEAR_FF_REG 0x0C  
 #define DMA1_TEMP_REG 0x0D  
 #define DMA1_RESET_REG 0x0D  
 #define DMA1_CLR_MASK_REG 0x0E  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA1_MASK_ALL_REG 0x0F  
-
 #define DMA2_CMD_REG 0xD0  
 #define DMA2_STAT_REG 0xD0  
 #define DMA2_REQ_REG 0xD2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA2_MASK_REG 0xD4  
 #define DMA2_MODE_REG 0xD6  
 #define DMA2_CLEAR_FF_REG 0xD8  
 #define DMA2_TEMP_REG 0xDA  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA2_RESET_REG 0xDA  
 #define DMA2_CLR_MASK_REG 0xDC  
 #define DMA2_MASK_ALL_REG 0xDE  
-
 #define DMA_ADDR_0 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_ADDR_1 0x02
 #define DMA_ADDR_2 0x04
 #define DMA_ADDR_3 0x06
 #define DMA_ADDR_4 0xC0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_ADDR_5 0xC4
 #define DMA_ADDR_6 0xC8
 #define DMA_ADDR_7 0xCC
-
 #define DMA_CNT_0 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_CNT_1 0x03
 #define DMA_CNT_2 0x05
 #define DMA_CNT_3 0x07
 #define DMA_CNT_4 0xC2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_CNT_5 0xC6
 #define DMA_CNT_6 0xCA
 #define DMA_CNT_7 0xCE
-
 #define DMA_PAGE_0 0x87  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_PAGE_1 0x83
 #define DMA_PAGE_2 0x81
 #define DMA_PAGE_3 0x82
 #define DMA_PAGE_5 0x8B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_PAGE_6 0x89
 #define DMA_PAGE_7 0x8A
-
 #define DMA_MODE_READ 0x44  
 #define DMA_MODE_WRITE 0x48  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_MODE_CASCADE 0xC0  
-
 #define DMA_AUTOINIT 0x10
-
 #define isa_dma_bridge_buggy (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/dwarf2.h b/ndk/platforms/android-9/arch-x86/include/asm/dwarf2.h
index c937591..916bcb8 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/dwarf2.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/dwarf2.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "dwarf2_64.h"
+#include "dwarf2_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/dwarf2_32.h b/ndk/platforms/android-9/arch-x86/include/asm/dwarf2_32.h
index a2dc3f1..0ec1650 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/dwarf2_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/dwarf2_32.h
@@ -7,27 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _DWARF2_H
 #define _DWARF2_H
-
 #ifndef __ASSEMBLY__
 #warning "asm/dwarf2.h should be only included in pure assembly files"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define CFI_STARTPROC ignore
 #define CFI_ENDPROC ignore
 #define CFI_DEF_CFA ignore
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_DEF_CFA_REGISTER ignore
 #define CFI_DEF_CFA_OFFSET ignore
 #define CFI_ADJUST_CFA_OFFSET ignore
 #define CFI_OFFSET ignore
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_REL_OFFSET ignore
 #define CFI_REGISTER ignore
 #define CFI_RESTORE ignore
 #define CFI_REMEMBER_STATE ignore
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_RESTORE_STATE ignore
 #define CFI_UNDEFINED ignore
 #define CFI_SIGNAL_FRAME ignore
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/e820.h b/ndk/platforms/android-9/arch-x86/include/asm/e820.h
index 8a88ff0..08d5af9 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/e820.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/e820.h
@@ -7,30 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_E820_H
 #define __ASM_E820_H
 #define E820MAP 0x2d0  
 #define E820MAX 128  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define E820NR 0x1e8  
-
 #define E820_RAM 1
 #define E820_RESERVED 2
 #define E820_ACPI 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define E820_NVS 4
-
 #ifndef __ASSEMBLY__
 struct e820entry {
  __u64 addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 size;
  __u32 type;
 } __attribute__((packed));
-
 struct e820map {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 nr_map;
  struct e820entry map[E820MAX];
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/elf.h b/ndk/platforms/android-9/arch-x86/include/asm/elf.h
index 6c6fbbf..2d1edfd 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/elf.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/elf.h
@@ -7,68 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_ELF_H
 #define _ASM_X86_ELF_H
-
 #include <asm/ptrace.h>
 #include <asm/user.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/auxvec.h>
-
 typedef unsigned long elf_greg_t;
-
 #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct user_i387_struct elf_fpregset_t;
-
-#ifdef __i386__
-
 typedef struct user_fxsr_struct elf_fpxregset_t;
-
 #define R_386_NONE 0
 #define R_386_32 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_386_PC32 2
 #define R_386_GOT32 3
 #define R_386_PLT32 4
 #define R_386_COPY 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_386_GLOB_DAT 6
 #define R_386_JMP_SLOT 7
 #define R_386_RELATIVE 8
 #define R_386_GOTOFF 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_386_GOTPC 10
 #define R_386_NUM 11
-
 #define ELF_CLASS ELFCLASS32
 #define ELF_DATA ELFDATA2LSB
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_ARCH EM_386
-
-#else
-
-#define R_X86_64_NONE 0  
-#define R_X86_64_64 1  
-#define R_X86_64_PC32 2  
-#define R_X86_64_GOT32 3  
-#define R_X86_64_PLT32 4  
-#define R_X86_64_COPY 5  
-#define R_X86_64_GLOB_DAT 6  
-#define R_X86_64_JUMP_SLOT 7  
-#define R_X86_64_RELATIVE 8  
-#define R_X86_64_GOTPCREL 9  
-#define R_X86_64_32 10  
-#define R_X86_64_32S 11  
-#define R_X86_64_16 12  
-#define R_X86_64_PC16 13  
-#define R_X86_64_8 14  
-#define R_X86_64_PC8 15  
-
-#define R_X86_64_NUM 16
-
-#define ELF_CLASS ELFCLASS64
-#define ELF_DATA ELFDATA2LSB
-#define ELF_ARCH EM_X86_64
-
-#endif
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/errno.h b/ndk/platforms/android-9/arch-x86/include/asm/errno.h
index e8f7425..392cd94 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/errno.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/errno.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/errno.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/fcntl.h b/ndk/platforms/android-9/arch-x86/include/asm/fcntl.h
index 00630ad..518d3a7 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/fcntl.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/fcntl.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/fcntl.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/fixmap.h b/ndk/platforms/android-9/arch-x86/include/asm/fixmap.h
index 19b9cc8..f8a1d18 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/fixmap.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/fixmap.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "fixmap_64.h"
+#include "fixmap_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/fixmap_32.h b/ndk/platforms/android-9/arch-x86/include/asm/fixmap_32.h
index 95de8a0..94a20a6 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/fixmap_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/fixmap_32.h
@@ -7,49 +7,53 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_FIXMAP_H
 #define _ASM_FIXMAP_H
-
 #define FIXADDR_USER_START __fix_to_virt(FIX_VDSO)
 #define FIXADDR_USER_END __fix_to_virt(FIX_VDSO - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
 #include <linux/kernel.h>
 #include <asm/acpi.h>
 #include <asm/apicdef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
-
 enum fixed_addresses {
  FIX_HOLE,
  FIX_VDSO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FIX_DBGP_BASE,
  FIX_EARLYCON_MEM_BASE,
  __end_of_permanent_fixed_addresses,
-
 #define NR_FIX_BTMAPS 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FIX_BTMAP_END = __end_of_permanent_fixed_addresses,
  FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS - 1,
  FIX_WP_TEST,
  __end_of_fixed_addresses
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define set_fixmap(idx, phys)   __set_fixmap(idx, phys, PAGE_KERNEL)
-
 #define set_fixmap_nocache(idx, phys)   __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
-
 #define clear_fixmap(idx)   __set_fixmap(idx, 0, __pgprot(0))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIXADDR_TOP ((unsigned long)__FIXADDR_TOP)
-
 #define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT)
 #define __FIXADDR_BOOT_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
 #define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIXADDR_BOOT_START (FIXADDR_TOP - __FIXADDR_BOOT_SIZE)
-
 #define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
 #define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/genapic.h b/ndk/platforms/android-9/arch-x86/include/asm/genapic.h
index 84e687e..3dc5e45 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/genapic.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/genapic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "genapic_64.h"
+#include "genapic_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/genapic_32.h b/ndk/platforms/android-9/arch-x86/include/asm/genapic_32.h
index 07801ea..89a68b3 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/genapic_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/genapic_32.h
@@ -7,67 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENAPIC_H
 #define _ASM_GENAPIC_H 1
-
 #include <asm/mpspec.h>
-
 struct mpc_config_translation;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mpc_config_bus;
 struct mp_config_table;
 struct mpc_config_processor;
-
 struct genapic {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  int (*probe)(void);
-
  int (*apic_id_registered)(void);
  cpumask_t (*target_cpus)(void);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int int_delivery_mode;
  int int_dest_mode;
  int ESR_DISABLE;
  int apic_destination_logical;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long (*check_apicid_used)(physid_mask_t bitmap, int apicid);
  unsigned long (*check_apicid_present)(int apicid);
  int no_balance_irq;
  int no_ioapic_check;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*init_apic_ldr)(void);
  physid_mask_t (*ioapic_phys_id_map)(physid_mask_t map);
-
  void (*setup_apic_routing)(void);
  int (*multi_timer_check)(int apic, int irq);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*apicid_to_node)(int logical_apicid);
  int (*cpu_to_logical_apicid)(int cpu);
  int (*cpu_present_to_apicid)(int mps_cpu);
  physid_mask_t (*apicid_to_cpu_present)(int phys_apicid);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*mpc_apic_id)(struct mpc_config_processor *m,
  struct mpc_config_translation *t);
  void (*setup_portio_remap)(void);
  int (*check_phys_apicid_present)(int boot_cpu_physical_apicid);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*enable_apic_mode)(void);
  u32 (*phys_pkg_id)(u32 cpuid_apic, int index_msb);
-
  void (*mpc_oem_bus_info)(struct mpc_config_bus *, char *,
  struct mpc_config_translation *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*mpc_oem_pci_bus)(struct mpc_config_bus *,
  struct mpc_config_translation *);
-
  int (*mps_oem_check)(struct mp_config_table *mpc, char *oem,
  char *productid);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id);
-
  unsigned (*get_apic_id)(unsigned long x);
  unsigned long apic_id_mask;
  unsigned int (*cpu_mask_to_apicid)(cpumask_t cpumask);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define APICFUNC(x) .x = x,
-
 #define IPIFUNC(x)
-
 #define APIC_INIT(aname, aprobe) {   .name = aname,   .probe = aprobe,   .int_delivery_mode = INT_DELIVERY_MODE,   .int_dest_mode = INT_DEST_MODE,   .no_balance_irq = NO_BALANCE_IRQ,   .ESR_DISABLE = esr_disable,   .apic_destination_logical = APIC_DEST_LOGICAL,   APICFUNC(apic_id_registered)   APICFUNC(target_cpus)   APICFUNC(check_apicid_used)   APICFUNC(check_apicid_present)   APICFUNC(init_apic_ldr)   APICFUNC(ioapic_phys_id_map)   APICFUNC(setup_apic_routing)   APICFUNC(multi_timer_check)   APICFUNC(apicid_to_node)   APICFUNC(cpu_to_logical_apicid)   APICFUNC(cpu_present_to_apicid)   APICFUNC(apicid_to_cpu_present)   APICFUNC(mpc_apic_id)   APICFUNC(setup_portio_remap)   APICFUNC(check_phys_apicid_present)   APICFUNC(mpc_oem_bus_info)   APICFUNC(mpc_oem_pci_bus)   APICFUNC(mps_oem_check)   APICFUNC(get_apic_id)   .apic_id_mask = APIC_ID_MASK,   APICFUNC(cpu_mask_to_apicid)   APICFUNC(acpi_madt_oem_check)   IPIFUNC(send_IPI_mask)   IPIFUNC(send_IPI_allbutself)   IPIFUNC(send_IPI_all)   APICFUNC(enable_apic_mode)   APICFUNC(phys_pkg_id)   }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/hardirq.h b/ndk/platforms/android-9/arch-x86/include/asm/hardirq.h
index ee224f1..4e3b8c1 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/hardirq.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/hardirq.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "hardirq_64.h"
+#include "hardirq_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/hardirq_32.h b/ndk/platforms/android-9/arch-x86/include/asm/hardirq_32.h
index b682f66..c1ee64f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/hardirq_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/hardirq_32.h
@@ -7,30 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_HARDIRQ_H
 #define __ASM_HARDIRQ_H
-
 #include <linux/threads.h>
 #include <linux/irq.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  unsigned int __softirq_pending;
  unsigned long idle_timestamp;
  unsigned int __nmi_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int apic_timer_irqs;
  unsigned int irq0_irqs;
  unsigned int irq_resched_count;
  unsigned int irq_call_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int irq_tlb_count;
  unsigned int irq_thermal_count;
  unsigned int irq_spurious_count;
 } ____cacheline_aligned irq_cpustat_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_IRQ_STAT
 #define __IRQ_STAT(cpu, member) (per_cpu(irq_stat, cpu).member)
-
 #include <linux/irq_cpustat.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/highmem.h b/ndk/platforms/android-9/arch-x86/include/asm/highmem.h
index f738851..c669819 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/highmem.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/highmem.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_HIGHMEM_H
 #define _ASM_HIGHMEM_H
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/hw_irq.h b/ndk/platforms/android-9/arch-x86/include/asm/hw_irq.h
index ed937c7..d69d8e9 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/hw_irq.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/hw_irq.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "hw_irq_64.h"
+#include "hw_irq_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/hw_irq_32.h b/ndk/platforms/android-9/arch-x86/include/asm/hw_irq_32.h
index 6f584fc..44fcd47 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/hw_irq_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/hw_irq_32.h
@@ -7,18 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_HW_IRQ_H
 #define _ASM_HW_IRQ_H
-
 #include <linux/profile.h>
 #include <asm/atomic.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/irq.h>
 #include <asm/sections.h>
-
 #define NMI_VECTOR 0x02
-
 #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/i387.h b/ndk/platforms/android-9/arch-x86/include/asm/i387.h
index 2692557..9333051 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/i387.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/i387.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "i387_64.h"
+#include "i387_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/i387_32.h b/ndk/platforms/android-9/arch-x86/include/asm/i387_32.h
index 8563fb9..4543da5 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/i387_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/i387_32.h
@@ -7,27 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_I387_H
 #define __ASM_I386_I387_H
-
 #include <linux/sched.h>
 #include <linux/init.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernel_stat.h>
 #include <asm/processor.h>
 #include <asm/sigcontext.h>
 #include <asm/user.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define restore_fpu(tsk)   alternative_input(   "nop ; frstor %1",   "fxrstor %1",   X86_FEATURE_FXSR,   "m" ((tsk)->thread.i387.fxsave))
-
 #define kernel_fpu_end() do { stts(); preempt_enable(); } while(0)
-
 #define safe_address (kstat_cpu(0).cpustat.user)
-
 #define __unlazy_fpu( tsk ) do {   if (task_thread_info(tsk)->status & TS_USEDFPU) {   __save_init_fpu(tsk);   stts();   } else   tsk->fpu_counter = 0;  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __clear_fpu( tsk )  do {   if (task_thread_info(tsk)->status & TS_USEDFPU) {   asm volatile("fnclex ; fwait");   task_thread_info(tsk)->status &= ~TS_USEDFPU;   stts();   }  } while (0)
 #define unlazy_fpu( tsk ) do {   preempt_disable();   __unlazy_fpu(tsk);   preempt_enable();  } while (0)
 #define clear_fpu( tsk ) do {   preempt_disable();   __clear_fpu( tsk );   preempt_enable();  } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/i8253.h b/ndk/platforms/android-9/arch-x86/include/asm/i8253.h
index 93b1d1a..576a356 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/i8253.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/i8253.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I8253_H__
 #define __ASM_I8253_H__
-
 #define PIT_MODE 0x43
 #define PIT_CH0 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PIT_CH2 0x42
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/i8259.h b/ndk/platforms/android-9/arch-x86/include/asm/i8259.h
index c2366ea..dc7e786 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/i8259.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/i8259.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I8259_H__
 #define __ASM_I8259_H__
-
 #define __byte(x,y) (((unsigned char *) &(y))[x])
 #define cached_master_mask (__byte(0, cached_irq_mask))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cached_slave_mask (__byte(1, cached_irq_mask))
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ia32_unistd.h b/ndk/platforms/android-9/arch-x86/include/asm/ia32_unistd.h
index 848d228..2cb53d0 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ia32_unistd.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ia32_unistd.h
@@ -7,16 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_64_IA32_UNISTD_H_
 #define _ASM_X86_64_IA32_UNISTD_H_
-
 #define __NR_ia32_restart_syscall 0
 #define __NR_ia32_exit 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ia32_read 3
 #define __NR_ia32_write 4
 #define __NR_ia32_sigreturn 119
 #define __NR_ia32_rt_sigreturn 173
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/io.h b/ndk/platforms/android-9/arch-x86/include/asm/io.h
index ea52e66..4e81b8c 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/io.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/io.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "io_64.h"
+#include "io_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/io_32.h b/ndk/platforms/android-9/arch-x86/include/asm/io_32.h
index f7e0025..e0615be 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/io_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/io_32.h
@@ -7,21 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IO_H
 #define _ASM_IO_H
-
 #include <linux/string.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_SPACE_LIMIT 0xffff
-
 #define XQUAD_PORTIO_BASE 0xfe400000
 #define XQUAD_PORTIO_QUAD 0x40000  
-
 #ifdef REALLY_SLOW_IO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define __BUILDIO(bwl,bw,type)  static inline void out##bwl(unsigned type value, int port) {   out##bwl##_local(value, port);  }  static inline unsigned type in##bwl(int port) {   return in##bwl##_local(port);  }
 #define BUILDIO(bwl,bw,type)  static inline void out##bwl##_local(unsigned type value, int port) {   __asm__ __volatile__("out" #bwl " %" #bw "0, %w1" : : "a"(value), "Nd"(port));  }  static inline unsigned type in##bwl##_local(int port) {   unsigned type value;   __asm__ __volatile__("in" #bwl " %w1, %" #bw "0" : "=a"(value) : "Nd"(port));   return value;  }  static inline void out##bwl##_local_p(unsigned type value, int port) {   out##bwl##_local(value, port);   slow_down_io();  }  static inline unsigned type in##bwl##_local_p(int port) {   unsigned type value = in##bwl##_local(port);   slow_down_io();   return value;  }  __BUILDIO(bwl,bw,type)  static inline void out##bwl##_p(unsigned type value, int port) {   out##bwl(value, port);   slow_down_io();  }  static inline unsigned type in##bwl##_p(int port) {   unsigned type value = in##bwl(port);   slow_down_io();   return value;  }  static inline void outs##bwl(int port, const void *addr, unsigned long count) {   __asm__ __volatile__("rep; outs" #bwl : "+S"(addr), "+c"(count) : "d"(port));  }  static inline void ins##bwl(int port, void *addr, unsigned long count) {   __asm__ __volatile__("rep; ins" #bwl : "+D"(addr), "+c"(count) : "d"(port));  }
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/io_apic.h b/ndk/platforms/android-9/arch-x86/include/asm/io_apic.h
index ed608d3..54bf23a 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/io_apic.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/io_apic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "io_apic_64.h"
+#include "io_apic_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/io_apic_32.h b/ndk/platforms/android-9/arch-x86/include/asm/io_apic_32.h
index cc858a3..1cd4401 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/io_apic_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/io_apic_32.h
@@ -7,90 +7,103 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_IO_APIC_H
 #define __ASM_IO_APIC_H
-
 #include <asm/types.h>
 #include <asm/mpspec.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/apicdef.h>
-
 union IO_APIC_reg_00 {
  u32 raw;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2 : 14,
  LTS : 1,
  delivery_type : 1,
  __reserved_1 : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ID : 8;
  } __attribute__ ((packed)) bits;
 };
-
 union IO_APIC_reg_01 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 raw;
  struct {
  u32 version : 8,
  __reserved_2 : 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PRQ : 1,
  entries : 8,
  __reserved_1 : 8;
  } __attribute__ ((packed)) bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union IO_APIC_reg_02 {
  u32 raw;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2 : 24,
  arbitration : 4,
  __reserved_1 : 4;
  } __attribute__ ((packed)) bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union IO_APIC_reg_03 {
  u32 raw;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 boot_DT : 1,
  __reserved_1 : 31;
  } __attribute__ ((packed)) bits;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ioapic_irq_destination_types {
  dest_Fixed = 0,
  dest_LowestPrio = 1,
  dest_SMI = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dest__reserved_1 = 3,
  dest_NMI = 4,
  dest_INIT = 5,
  dest__reserved_2 = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dest_ExtINT = 7
 };
-
 struct IO_APIC_route_entry {
  __u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  dest_mode : 1,
  delivery_status : 1,
  polarity : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  irr : 1,
  trigger : 1,
  mask : 1,
  __reserved_2 : 15;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union { struct { __u32
  __reserved_1 : 24,
  physical_dest : 4,
  __reserved_2 : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } physical;
-
  struct { __u32
  __reserved_1 : 24,
  logical_dest : 8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } logical;
  } dest;
-
 } __attribute__ ((packed));
-
 #define io_apic_assign_pci_irqs 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ioctl.h b/ndk/platforms/android-9/arch-x86/include/asm/ioctl.h
index 6e446b6..7b7bd37 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ioctl.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ioctl.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/ioctl.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ioctls.h b/ndk/platforms/android-9/arch-x86/include/asm/ioctls.h
index 3aedc04..9eccb2b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ioctls.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ioctls.h
@@ -7,89 +7,107 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_IOCTLS_H
 #define _ASM_X86_IOCTLS_H
-
 #include <asm/ioctl.h>
-
 #define TCGETS 0x5401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETS 0x5402  
 #define TCSETSW 0x5403
 #define TCSETSF 0x5404
 #define TCGETA 0x5405
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETA 0x5406
 #define TCSETAW 0x5407
 #define TCSETAF 0x5408
 #define TCSBRK 0x5409
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCXONC 0x540A
 #define TCFLSH 0x540B
 #define TIOCEXCL 0x540C
 #define TIOCNXCL 0x540D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSCTTY 0x540E
 #define TIOCGPGRP 0x540F
 #define TIOCSPGRP 0x5410
 #define TIOCOUTQ 0x5411
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSTI 0x5412
 #define TIOCGWINSZ 0x5413
 #define TIOCSWINSZ 0x5414
 #define TIOCMGET 0x5415
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCMBIS 0x5416
 #define TIOCMBIC 0x5417
 #define TIOCMSET 0x5418
 #define TIOCGSOFTCAR 0x5419
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSSOFTCAR 0x541A
 #define FIONREAD 0x541B
 #define TIOCINQ FIONREAD
 #define TIOCLINUX 0x541C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCCONS 0x541D
 #define TIOCGSERIAL 0x541E
 #define TIOCSSERIAL 0x541F
 #define TIOCPKT 0x5420
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIONBIO 0x5421
 #define TIOCNOTTY 0x5422
 #define TIOCSETD 0x5423
 #define TIOCGETD 0x5424
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSBRKP 0x5425  
-
 #define TIOCSBRK 0x5427  
 #define TIOCCBRK 0x5428  
 #define TIOCGSID 0x5429  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCGETS2 _IOR('T',0x2A, struct termios2)
 #define TCSETS2 _IOW('T',0x2B, struct termios2)
 #define TCSETSW2 _IOW('T',0x2C, struct termios2)
 #define TCSETSF2 _IOW('T',0x2D, struct termios2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGPTN _IOR('T',0x30, unsigned int)  
 #define TIOCSPTLCK _IOW('T',0x31, int)  
-
 #define FIONCLEX 0x5450
 #define FIOCLEX 0x5451
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOASYNC 0x5452
 #define TIOCSERCONFIG 0x5453
 #define TIOCSERGWILD 0x5454
 #define TIOCSERSWILD 0x5455
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGLCKTRMIOS 0x5456
 #define TIOCSLCKTRMIOS 0x5457
 #define TIOCSERGSTRUCT 0x5458  
 #define TIOCSERGETLSR 0x5459  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSERGETMULTI 0x545A  
 #define TIOCSERSETMULTI 0x545B  
-
 #define TIOCMIWAIT 0x545C  
 #define TIOCGICOUNT 0x545D  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGHAYESESP 0x545E  
 #define TIOCSHAYESESP 0x545F  
 #define FIOQSIZE 0x5460
-
 #define TIOCPKT_DATA 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCPKT_FLUSHREAD 1
 #define TIOCPKT_FLUSHWRITE 2
 #define TIOCPKT_STOP 4
 #define TIOCPKT_START 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCPKT_NOSTOP 16
 #define TIOCPKT_DOSTOP 32
-
 #define TIOCSER_TEMT 0x01  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ipcbuf.h b/ndk/platforms/android-9/arch-x86/include/asm/ipcbuf.h
index 32342c1..83dc12f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ipcbuf.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ipcbuf.h
@@ -7,24 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_IPCBUF_H
 #define _ASM_X86_IPCBUF_H
-
 struct ipc64_perm
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_key_t key;
  __kernel_uid32_t uid;
  __kernel_gid32_t gid;
  __kernel_uid32_t cuid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_gid32_t cgid;
  __kernel_mode_t mode;
  unsigned short __pad1;
  unsigned short seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short __pad2;
  unsigned long __unused1;
  unsigned long __unused2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/irq.h b/ndk/platforms/android-9/arch-x86/include/asm/irq.h
index 07a331d..eaa65db 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/irq.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/irq.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "irq_64.h"
+#include "irq_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/irq_32.h b/ndk/platforms/android-9/arch-x86/include/asm/irq_32.h
index 3141071..1d7fab6 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/irq_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/irq_32.h
@@ -7,17 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IRQ_H
 #define _ASM_IRQ_H
-
 #include <linux/sched.h>
-
 #include "irq_vectors.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/thread_info.h>
-
 #define irq_ctx_init(cpu) do { } while (0)
 #define irq_ctx_exit(cpu) do { } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/irqflags.h b/ndk/platforms/android-9/arch-x86/include/asm/irqflags.h
index 4f84662..4136598 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/irqflags.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/irqflags.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "irqflags_64.h"
+#include "irqflags_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/irqflags_32.h b/ndk/platforms/android-9/arch-x86/include/asm/irqflags_32.h
index 9002e44..9d77264 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/irqflags_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/irqflags_32.h
@@ -7,27 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IRQFLAGS_H
 #define _ASM_IRQFLAGS_H
 #include <asm/processor-flags.h>
-
 #ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __ASSEMBLY__
 #else
 #define DISABLE_INTERRUPTS(clobbers) cli
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENABLE_INTERRUPTS(clobbers) sti
 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
 #define INTERRUPT_RETURN iret
 #define GET_CR0_INTO_EAX movl %cr0, %eax
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __ASSEMBLY__
 #define raw_local_save_flags(flags)   do { (flags) = __raw_local_save_flags(); } while (0)
 #define raw_local_irq_save(flags)   do { (flags) = __raw_local_irq_save(); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define TRACE_IRQS_ON
 #define TRACE_IRQS_OFF
 #define LOCKDEP_SYS_EXIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ist.h b/ndk/platforms/android-9/arch-x86/include/asm/ist.h
index 0abab19..0349bd3 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ist.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ist.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IST_H
 #define _ASM_IST_H
-
 #include <linux/types.h>
-
 struct ist_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 signature;
  __u32 command;
  __u32 event;
  __u32 perf_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/kmap_types.h b/ndk/platforms/android-9/arch-x86/include/asm/kmap_types.h
index c2313ee..ba6af93 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/kmap_types.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/kmap_types.h
@@ -7,30 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_KMAP_TYPES_H
 #define _ASM_X86_KMAP_TYPES_H
-
 #define D(n)
-
 enum km_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(0) KM_BOUNCE_READ,
 D(1) KM_SKB_SUNRPC_DATA,
 D(2) KM_SKB_DATA_SOFTIRQ,
 D(3) KM_USER0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(4) KM_USER1,
 D(5) KM_BIO_SRC_IRQ,
 D(6) KM_BIO_DST_IRQ,
 D(7) KM_PTE0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(8) KM_PTE1,
 D(9) KM_IRQ0,
 D(10) KM_IRQ1,
 D(11) KM_SOFTIRQ0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(12) KM_SOFTIRQ1,
 D(13) KM_TYPE_NR
 };
-
 #undef D
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ldt.h b/ndk/platforms/android-9/arch-x86/include/asm/ldt.h
index 19b91ab..ff88760 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ldt.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ldt.h
@@ -7,35 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_LDT_H
 #define _ASM_X86_LDT_H
-
 #define LDT_ENTRIES 8192
-
 #define LDT_ENTRY_SIZE 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 struct user_desc {
  unsigned int entry_number;
  unsigned int base_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int limit;
  unsigned int seg_32bit:1;
  unsigned int contents:2;
  unsigned int read_exec_only:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int limit_in_pages:1;
  unsigned int seg_not_present:1;
  unsigned int useable:1;
 #ifdef __x86_64__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int lm:1;
 #endif
 };
-
 #define MODIFY_LDT_CONTENTS_DATA 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MODIFY_LDT_CONTENTS_STACK 1
 #define MODIFY_LDT_CONTENTS_CODE 2
-
 #endif
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/linkage.h b/ndk/platforms/android-9/arch-x86/include/asm/linkage.h
index f149e4d..3aae43d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/linkage.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/linkage.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "linkage_64.h"
+#include "linkage_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/linkage_32.h b/ndk/platforms/android-9/arch-x86/include/asm/linkage_32.h
index 6db10ee..e850947 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/linkage_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/linkage_32.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
-
 #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
 #define FASTCALL(x) x __attribute__((regparm(3)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define fastcall __attribute__((regparm(3)))
-
 #define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret))
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/local.h b/ndk/platforms/android-9/arch-x86/include/asm/local.h
index 85080b8..99acf6d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/local.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/local.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "local_64.h"
+#include "local_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/local_32.h b/ndk/platforms/android-9/arch-x86/include/asm/local_32.h
index fcad753..9c4c2b2 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/local_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/local_32.h
@@ -7,45 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARCH_I386_LOCAL_H
 #define _ARCH_I386_LOCAL_H
-
 #include <linux/percpu.h>
 #include <asm/system.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/atomic.h>
-
 typedef struct
 {
  atomic_long_t a;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } local_t;
-
 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
-
 #define local_read(l) atomic_long_read(&(l)->a)
 #define local_set(l,i) atomic_long_set(&(l)->a, (i))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define local_inc_return(l) (local_add_return(1,l))
 #define local_dec_return(l) (local_sub_return(1,l))
 #define local_cmpxchg(l, o, n)   (cmpxchg_local(&((l)->a.counter), (o), (n)))
 #define local_xchg(l, n) (xchg(&((l)->a.counter), (n)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define local_add_unless(l, a, u)  ({   long c, old;   c = local_read(l);   for (;;) {   if (unlikely(c == (u)))   break;   old = local_cmpxchg((l), c, c + (a));   if (likely(old == c))   break;   c = old;   }   c != (u);  })
 #define local_inc_not_zero(l) local_add_unless((l), 1, 0)
 #define __local_inc(l) local_inc(l)
 #define __local_dec(l) local_dec(l)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __local_add(i,l) local_add((i),(l))
 #define __local_sub(i,l) local_sub((i),(l))
 #define cpu_local_wrap_v(l)   ({ local_t res__;   preempt_disable();   res__ = (l);   preempt_enable();   res__; })
 #define cpu_local_wrap(l)   ({ preempt_disable();   l;   preempt_enable(); })  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var(l)))
 #define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var(l), (i)))
 #define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var(l)))
 #define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var(l)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var(l)))
 #define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var(l)))
 #define __cpu_local_inc(l) cpu_local_inc(l)
 #define __cpu_local_dec(l) cpu_local_dec(l)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_local_add(i, l) cpu_local_add((i), (l))
 #define __cpu_local_sub(i, l) cpu_local_sub((i), (l))
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/math_emu.h b/ndk/platforms/android-9/arch-x86/include/asm/math_emu.h
index 9380d19..068006c 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/math_emu.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/math_emu.h
@@ -7,34 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_MATH_EMU_H
 #define _I386_MATH_EMU_H
-
 #include <asm/sigcontext.h>
-
 struct info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___orig_eip;
  long ___ebx;
  long ___ecx;
  long ___edx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___esi;
  long ___edi;
  long ___ebp;
  long ___eax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___ds;
  long ___es;
  long ___fs;
  long ___orig_eax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___eip;
  long ___cs;
  long ___eflags;
  long ___esp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___ss;
  long ___vm86_es;
  long ___vm86_ds;
  long ___vm86_fs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___vm86_gs;
 };
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc.h b/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc.h
index 8497877..f7e8781 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "mc146818rtc_64.h"
+#include "mc146818rtc_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc_32.h b/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc_32.h
index 899d608..b6af33a 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mc146818rtc_32.h
@@ -7,38 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_MC146818RTC_H
 #define _ASM_MC146818RTC_H
-
 #include <asm/io.h>
 #include <asm/system.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/processor.h>
 #include <linux/mc146818rtc.h>
-
 #ifndef RTC_PORT
 #define RTC_PORT(x) (0x70 + (x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_ALWAYS_BCD 1  
 #endif
-
 #ifdef __HAVE_ARCH_CMPXCHG
-
 #include <linux/smp.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define lock_cmos_prefix(reg)   do {   unsigned long cmos_flags;   local_irq_save(cmos_flags);   lock_cmos(reg)
 #define lock_cmos_suffix(reg)   unlock_cmos();   local_irq_restore(cmos_flags);   } while (0)
 #else
 #define lock_cmos_prefix(reg) do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define lock_cmos_suffix(reg) do {} while (0)
 #define lock_cmos(reg)
 #define unlock_cmos()
 #define do_i_have_lock_cmos() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define current_lock_cmos_reg() 0
 #endif
 #define CMOS_READ(addr) rtc_cmos_read(addr)
 #define CMOS_WRITE(val, addr) rtc_cmos_write(val, addr)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_IRQ 8
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mman.h b/ndk/platforms/android-9/arch-x86/include/asm/mman.h
index 7eda319..b0b4e1d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mman.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mman.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_MMAN_H
 #define _ASM_X86_MMAN_H
-
 #include <asm-generic/mman.h>
-
 #define MAP_32BIT 0x40  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_GROWSDOWN 0x0100  
 #define MAP_DENYWRITE 0x0800  
 #define MAP_EXECUTABLE 0x1000  
 #define MAP_LOCKED 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_NORESERVE 0x4000  
 #define MAP_POPULATE 0x8000  
 #define MAP_NONBLOCK 0x10000  
-
 #define MCL_CURRENT 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MCL_FUTURE 2  
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mmsegment.h b/ndk/platforms/android-9/arch-x86/include/asm/mmsegment.h
index 76045c7..01bffca 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mmsegment.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mmsegment.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_MMSEGMENT_H
 #define _ASM_MMSEGMENT_H 1
-
 typedef struct {
  unsigned long seg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mm_segment_t;
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mmu.h b/ndk/platforms/android-9/arch-x86/include/asm/mmu.h
index 30db10a..61c3cc0 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mmu.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mmu.h
@@ -7,19 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_MMU_H
 #define _ASM_X86_MMU_H
-
 #include <linux/spinlock.h>
 #include <linux/mutex.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  void *ldt;
  int size;
  struct mutex lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *vdso;
 } mm_context_t;
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/module.h b/ndk/platforms/android-9/arch-x86/include/asm/module.h
index ff292d4..296ed2b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/module.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/module.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "module_64.h"
+#include "module_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/module_32.h b/ndk/platforms/android-9/arch-x86/include/asm/module_32.h
index 2e26729..fd1d099 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/module_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/module_32.h
@@ -7,23 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_I386_MODULE_H
 #define _ASM_I386_MODULE_H
-
 struct mod_arch_specific
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define Elf_Shdr Elf32_Shdr
 #define Elf_Sym Elf32_Sym
 #define Elf_Ehdr Elf32_Ehdr
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error unknown processor family
-
 #define MODULE_STACKSIZE ""
-
 #define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mpspec.h b/ndk/platforms/android-9/arch-x86/include/asm/mpspec.h
index 2336504..217a7d4 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mpspec.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mpspec.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "mpspec_64.h"
+#include "mpspec_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mpspec_32.h b/ndk/platforms/android-9/arch-x86/include/asm/mpspec_32.h
index 7acbe8a..909c3c4 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mpspec_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mpspec_32.h
@@ -7,46 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MPSPEC_H
 #define __ASM_MPSPEC_H
-
 #include <linux/cpumask.h>
 #include <asm/mpspec_def.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mach_mpspec.h>
-
 #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
-
 struct physid_mask
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mask[PHYSID_ARRAY_SIZE];
 };
-
 typedef struct physid_mask physid_mask_t;
-
 #define physid_set(physid, map) set_bit(physid, (map).mask)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physid_clear(physid, map) clear_bit(physid, (map).mask)
 #define physid_isset(physid, map) test_bit(physid, (map).mask)
 #define physid_test_and_set(physid, map) test_and_set_bit(physid, (map).mask)
-
 #define physids_and(dst, src1, src2) bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physids_or(dst, src1, src2) bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
 #define physids_clear(map) bitmap_zero((map).mask, MAX_APICS)
 #define physids_complement(dst, src) bitmap_complement((dst).mask,(src).mask, MAX_APICS)
 #define physids_empty(map) bitmap_empty((map).mask, MAX_APICS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physids_equal(map1, map2) bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
 #define physids_weight(map) bitmap_weight((map).mask, MAX_APICS)
 #define physids_shift_right(d, s, n) bitmap_shift_right((d).mask, (s).mask, n, MAX_APICS)
 #define physids_shift_left(d, s, n) bitmap_shift_left((d).mask, (s).mask, n, MAX_APICS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physids_coerce(map) ((map).mask[0])
-
 #define physids_promote(physids)   ({   physid_mask_t __physid_mask = PHYSID_MASK_NONE;   __physid_mask.mask[0] = physids;   __physid_mask;   })
-
 #define physid_mask_of_physid(physid)   ({   physid_mask_t __physid_mask = PHYSID_MASK_NONE;   physid_set(physid, __physid_mask);   __physid_mask;   })
-
 #define PHYSID_MASK_ALL { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHYSID_MASK_NONE { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} }
-
 #endif
-
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/mpspec_def.h b/ndk/platforms/android-9/arch-x86/include/asm/mpspec_def.h
index 1f15363..f9bb33a 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/mpspec_def.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/mpspec_def.h
@@ -7,165 +7,190 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MPSPEC_DEF_H
 #define __ASM_MPSPEC_DEF_H
-
 #define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')
-
 #define MAX_MPC_ENTRY 1024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_APICS 256
-
 struct intel_mp_floating
 {
  char mpf_signature[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mpf_physptr;
  unsigned char mpf_length;
  unsigned char mpf_specification;
  unsigned char mpf_checksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpf_feature1;
  unsigned char mpf_feature2;
  unsigned char mpf_feature3;
  unsigned char mpf_feature4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpf_feature5;
 };
-
 struct mp_config_table
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mpc_signature[4];
 #define MPC_SIGNATURE "PCMP"
  unsigned short mpc_length;
  char mpc_spec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mpc_checksum;
  char mpc_oem[8];
  char mpc_productid[12];
  unsigned long mpc_oemptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short mpc_oemsize;
  unsigned short mpc_oemcount;
  unsigned long mpc_lapic;
  unsigned long reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MP_PROCESSOR 0
 #define MP_BUS 1
 #define MP_IOAPIC 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MP_INTSRC 3
 #define MP_LINTSRC 4
 #define MP_TRANSLATION 192  
-
 struct mpc_config_processor
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned char mpc_type;
  unsigned char mpc_apicid;
  unsigned char mpc_apicver;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_cpuflag;
 #define CPU_ENABLED 1  
 #define CPU_BOOTPROCESSOR 2  
  unsigned long mpc_cpufeature;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_STEPPING_MASK 0x0F
 #define CPU_MODEL_MASK 0xF0
 #define CPU_FAMILY_MASK 0xF00
  unsigned long mpc_featureflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mpc_reserved[2];
 };
-
 struct mpc_config_bus
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char mpc_busid;
  unsigned char mpc_bustype[6];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_EISA "EISA"
 #define BUSTYPE_ISA "ISA"
 #define BUSTYPE_INTERN "INTERN"  
 #define BUSTYPE_MCA "MCA"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_VL "VL"  
 #define BUSTYPE_PCI "PCI"
 #define BUSTYPE_PCMCIA "PCMCIA"
 #define BUSTYPE_CBUS "CBUS"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_CBUSII "CBUSII"
 #define BUSTYPE_FUTURE "FUTURE"
 #define BUSTYPE_MBI "MBI"
 #define BUSTYPE_MBII "MBII"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_MPI "MPI"
 #define BUSTYPE_MPSA "MPSA"
 #define BUSTYPE_NUBUS "NUBUS"
 #define BUSTYPE_TC "TC"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_VME "VME"
 #define BUSTYPE_XPRESS "XPRESS"
-
 struct mpc_config_ioapic
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char mpc_apicid;
  unsigned char mpc_apicver;
  unsigned char mpc_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPC_APIC_USABLE 0x01
  unsigned long mpc_apicaddr;
 };
-
 struct mpc_config_intsrc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned char mpc_type;
  unsigned char mpc_irqtype;
  unsigned short mpc_irqflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_srcbus;
  unsigned char mpc_srcbusirq;
  unsigned char mpc_dstapic;
  unsigned char mpc_dstirq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum mp_irq_source_types {
  mp_INT = 0,
  mp_NMI = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mp_SMI = 2,
  mp_ExtINT = 3
 };
-
 #define MP_IRQDIR_DEFAULT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MP_IRQDIR_HIGH 1
 #define MP_IRQDIR_LOW 3
-
 struct mpc_config_lintsrc
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char mpc_irqtype;
  unsigned short mpc_irqflag;
  unsigned char mpc_srcbusid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_srcbusirq;
  unsigned char mpc_destapic;
 #define MP_APIC_ALL 0xFF
  unsigned char mpc_destapiclint;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mp_config_oemtable
 {
  char oem_signature[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPC_OEM_SIGNATURE "_OEM"
  unsigned short oem_length;
  char oem_rev;
  char oem_checksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mpc_oem[8];
 };
-
 struct mpc_config_translation
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char trans_len;
  unsigned char trans_type;
  unsigned char trans_quad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char trans_global;
  unsigned char trans_local;
  unsigned short trans_reserved;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mp_bustype {
  MP_BUS_ISA = 1,
  MP_BUS_EISA,
  MP_BUS_PCI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MP_BUS_MCA,
 };
 #endif
-
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/msgbuf.h b/ndk/platforms/android-9/arch-x86/include/asm/msgbuf.h
index 8843e78..99caf76 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/msgbuf.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/msgbuf.h
@@ -7,32 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_MSGBUF_H
 #define _ASM_X86_MSGBUF_H
-
 struct msqid64_ds {
  struct ipc64_perm msg_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_stime;
-#ifdef __i386__
  unsigned long __unused1;
-#endif
  __kernel_time_t msg_rtime;
-#ifdef __i386__
  unsigned long __unused2;
-#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_ctime;
-#ifdef __i386__
  unsigned long __unused3;
-#endif
  unsigned long msg_cbytes;
  unsigned long msg_qnum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long msg_qbytes;
  __kernel_pid_t msg_lspid;
  __kernel_pid_t msg_lrpid;
  unsigned long __unused4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused5;
 };
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/msr-index.h b/ndk/platforms/android-9/arch-x86/include/asm/msr-index.h
index 8ea204e..2336f82 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/msr-index.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/msr-index.h
@@ -7,277 +7,310 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MSR_INDEX_H
 #define __ASM_MSR_INDEX_H
-
 #define MSR_EFER 0xc0000080  
 #define MSR_STAR 0xc0000081  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_LSTAR 0xc0000082  
 #define MSR_CSTAR 0xc0000083  
 #define MSR_SYSCALL_MASK 0xc0000084  
 #define MSR_FS_BASE 0xc0000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_GS_BASE 0xc0000101  
 #define MSR_KERNEL_GS_BASE 0xc0000102  
-
 #define _EFER_SCE 0  
 #define _EFER_LME 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _EFER_LMA 10  
 #define _EFER_NX 11  
-
 #define EFER_SCE (1<<_EFER_SCE)
 #define EFER_LME (1<<_EFER_LME)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFER_LMA (1<<_EFER_LMA)
 #define EFER_NX (1<<_EFER_NX)
-
 #define MSR_IA32_PERFCTR0 0x000000c1
 #define MSR_IA32_PERFCTR1 0x000000c2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_FSB_FREQ 0x000000cd
-
 #define MSR_MTRRcap 0x000000fe
 #define MSR_IA32_BBL_CR_CTL 0x00000119
-
 #define MSR_IA32_SYSENTER_CS 0x00000174
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_SYSENTER_ESP 0x00000175
 #define MSR_IA32_SYSENTER_EIP 0x00000176
-
 #define MSR_IA32_MCG_CAP 0x00000179
 #define MSR_IA32_MCG_STATUS 0x0000017a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCG_CTL 0x0000017b
-
 #define MSR_IA32_PEBS_ENABLE 0x000003f1
 #define MSR_IA32_DS_AREA 0x00000600
 #define MSR_IA32_PERF_CAPABILITIES 0x00000345
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_MTRRfix64K_00000 0x00000250
 #define MSR_MTRRfix16K_80000 0x00000258
 #define MSR_MTRRfix16K_A0000 0x00000259
 #define MSR_MTRRfix4K_C0000 0x00000268
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_MTRRfix4K_C8000 0x00000269
 #define MSR_MTRRfix4K_D0000 0x0000026a
 #define MSR_MTRRfix4K_D8000 0x0000026b
 #define MSR_MTRRfix4K_E0000 0x0000026c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_MTRRfix4K_E8000 0x0000026d
 #define MSR_MTRRfix4K_F0000 0x0000026e
 #define MSR_MTRRfix4K_F8000 0x0000026f
 #define MSR_MTRRdefType 0x000002ff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_DEBUGCTLMSR 0x000001d9
 #define MSR_IA32_LASTBRANCHFROMIP 0x000001db
 #define MSR_IA32_LASTBRANCHTOIP 0x000001dc
 #define MSR_IA32_LASTINTFROMIP 0x000001dd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_LASTINTTOIP 0x000001de
-
 #define MSR_IA32_MC0_CTL 0x00000400
 #define MSR_IA32_MC0_STATUS 0x00000401
 #define MSR_IA32_MC0_ADDR 0x00000402
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MC0_MISC 0x00000403
-
 #define MSR_P6_PERFCTR0 0x000000c1
 #define MSR_P6_PERFCTR1 0x000000c2
 #define MSR_P6_EVNTSEL0 0x00000186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P6_EVNTSEL1 0x00000187
-
 #define MSR_AMD64_IBSFETCHCTL 0xc0011030
 #define MSR_AMD64_IBSFETCHLINAD 0xc0011031
 #define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSOPCTL 0xc0011033
 #define MSR_AMD64_IBSOPRIP 0xc0011034
 #define MSR_AMD64_IBSOPDATA 0xc0011035
 #define MSR_AMD64_IBSOPDATA2 0xc0011036
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSOPDATA3 0xc0011037
 #define MSR_AMD64_IBSDCLINAD 0xc0011038
 #define MSR_AMD64_IBSDCPHYSAD 0xc0011039
 #define MSR_AMD64_IBSCTL 0xc001103a
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_TOP_MEM1 0xc001001a
 #define MSR_K8_TOP_MEM2 0xc001001d
 #define MSR_K8_SYSCFG 0xc0010010
 #define MSR_K8_HWCR 0xc0010015
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_ENABLE_C1E 0xc0010055
 #define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000  
 #define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000  
 #define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL0 0xc0010000
 #define MSR_K7_PERFCTR0 0xc0010004
 #define MSR_K7_EVNTSEL1 0xc0010001
 #define MSR_K7_PERFCTR1 0xc0010005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL2 0xc0010002
 #define MSR_K7_PERFCTR2 0xc0010006
 #define MSR_K7_EVNTSEL3 0xc0010003
 #define MSR_K7_PERFCTR3 0xc0010007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_CLK_CTL 0xc001001b
 #define MSR_K7_HWCR 0xc0010015
 #define MSR_K7_FID_VID_CTL 0xc0010041
 #define MSR_K7_FID_VID_STATUS 0xc0010042
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_EFER 0xc0000080
 #define MSR_K6_STAR 0xc0000081
 #define MSR_K6_WHCR 0xc0000082
 #define MSR_K6_UWCCR 0xc0000085
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_EPMR 0xc0000086
 #define MSR_K6_PSOR 0xc0000087
 #define MSR_K6_PFIR 0xc0000088
-
 #define MSR_IDT_FCR1 0x00000107
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_FCR2 0x00000108
 #define MSR_IDT_FCR3 0x00000109
 #define MSR_IDT_FCR4 0x0000010a
-
 #define MSR_IDT_MCR0 0x00000110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR1 0x00000111
 #define MSR_IDT_MCR2 0x00000112
 #define MSR_IDT_MCR3 0x00000113
 #define MSR_IDT_MCR4 0x00000114
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR5 0x00000115
 #define MSR_IDT_MCR6 0x00000116
 #define MSR_IDT_MCR7 0x00000117
 #define MSR_IDT_MCR_CTRL 0x00000120
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_VIA_FCR 0x00001107
 #define MSR_VIA_LONGHAUL 0x0000110a
 #define MSR_VIA_RNG 0x0000110b
 #define MSR_VIA_BCR2 0x00001147
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_TMTA_LONGRUN_CTRL 0x80868010
 #define MSR_TMTA_LONGRUN_FLAGS 0x80868011
 #define MSR_TMTA_LRTI_READOUT 0x80868018
 #define MSR_TMTA_LRTI_VOLT_MHZ 0x8086801a
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_P5_MC_ADDR 0x00000000
 #define MSR_IA32_P5_MC_TYPE 0x00000001
 #define MSR_IA32_TSC 0x00000010
 #define MSR_IA32_PLATFORM_ID 0x00000017
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_EBL_CR_POWERON 0x0000002a
-
 #define MSR_IA32_APICBASE 0x0000001b
 #define MSR_IA32_APICBASE_BSP (1<<8)
 #define MSR_IA32_APICBASE_ENABLE (1<<11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_APICBASE_BASE (0xfffff<<12)
-
 #define MSR_IA32_UCODE_WRITE 0x00000079
 #define MSR_IA32_UCODE_REV 0x0000008b
-
 #define MSR_IA32_PERF_STATUS 0x00000198
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_PERF_CTL 0x00000199
-
 #define MSR_IA32_MPERF 0x000000e7
 #define MSR_IA32_APERF 0x000000e8
-
 #define MSR_IA32_THERM_CONTROL 0x0000019a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_THERM_INTERRUPT 0x0000019b
 #define MSR_IA32_THERM_STATUS 0x0000019c
 #define MSR_IA32_MISC_ENABLE 0x000001a0
-
 #define MSR_P6_EVNTSEL0 0x00000186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P6_EVNTSEL1 0x00000187
-
 #define MSR_IA32_MCG_EAX 0x00000180
 #define MSR_IA32_MCG_EBX 0x00000181
 #define MSR_IA32_MCG_ECX 0x00000182
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCG_EDX 0x00000183
 #define MSR_IA32_MCG_ESI 0x00000184
 #define MSR_IA32_MCG_EDI 0x00000185
 #define MSR_IA32_MCG_EBP 0x00000186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCG_ESP 0x00000187
 #define MSR_IA32_MCG_EFLAGS 0x00000188
 #define MSR_IA32_MCG_EIP 0x00000189
 #define MSR_IA32_MCG_RESERVED 0x0000018a
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_BPU_PERFCTR0 0x00000300
 #define MSR_P4_BPU_PERFCTR1 0x00000301
 #define MSR_P4_BPU_PERFCTR2 0x00000302
 #define MSR_P4_BPU_PERFCTR3 0x00000303
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_MS_PERFCTR0 0x00000304
 #define MSR_P4_MS_PERFCTR1 0x00000305
 #define MSR_P4_MS_PERFCTR2 0x00000306
 #define MSR_P4_MS_PERFCTR3 0x00000307
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_FLAME_PERFCTR0 0x00000308
 #define MSR_P4_FLAME_PERFCTR1 0x00000309
 #define MSR_P4_FLAME_PERFCTR2 0x0000030a
 #define MSR_P4_FLAME_PERFCTR3 0x0000030b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_PERFCTR0 0x0000030c
 #define MSR_P4_IQ_PERFCTR1 0x0000030d
 #define MSR_P4_IQ_PERFCTR2 0x0000030e
 #define MSR_P4_IQ_PERFCTR3 0x0000030f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_PERFCTR4 0x00000310
 #define MSR_P4_IQ_PERFCTR5 0x00000311
 #define MSR_P4_BPU_CCCR0 0x00000360
 #define MSR_P4_BPU_CCCR1 0x00000361
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_BPU_CCCR2 0x00000362
 #define MSR_P4_BPU_CCCR3 0x00000363
 #define MSR_P4_MS_CCCR0 0x00000364
 #define MSR_P4_MS_CCCR1 0x00000365
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_MS_CCCR2 0x00000366
 #define MSR_P4_MS_CCCR3 0x00000367
 #define MSR_P4_FLAME_CCCR0 0x00000368
 #define MSR_P4_FLAME_CCCR1 0x00000369
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_FLAME_CCCR2 0x0000036a
 #define MSR_P4_FLAME_CCCR3 0x0000036b
 #define MSR_P4_IQ_CCCR0 0x0000036c
 #define MSR_P4_IQ_CCCR1 0x0000036d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_CCCR2 0x0000036e
 #define MSR_P4_IQ_CCCR3 0x0000036f
 #define MSR_P4_IQ_CCCR4 0x00000370
 #define MSR_P4_IQ_CCCR5 0x00000371
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_ALF_ESCR0 0x000003ca
 #define MSR_P4_ALF_ESCR1 0x000003cb
 #define MSR_P4_BPU_ESCR0 0x000003b2
 #define MSR_P4_BPU_ESCR1 0x000003b3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_BSU_ESCR0 0x000003a0
 #define MSR_P4_BSU_ESCR1 0x000003a1
 #define MSR_P4_CRU_ESCR0 0x000003b8
 #define MSR_P4_CRU_ESCR1 0x000003b9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_CRU_ESCR2 0x000003cc
 #define MSR_P4_CRU_ESCR3 0x000003cd
 #define MSR_P4_CRU_ESCR4 0x000003e0
 #define MSR_P4_CRU_ESCR5 0x000003e1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_DAC_ESCR0 0x000003a8
 #define MSR_P4_DAC_ESCR1 0x000003a9
 #define MSR_P4_FIRM_ESCR0 0x000003a4
 #define MSR_P4_FIRM_ESCR1 0x000003a5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_FLAME_ESCR0 0x000003a6
 #define MSR_P4_FLAME_ESCR1 0x000003a7
 #define MSR_P4_FSB_ESCR0 0x000003a2
 #define MSR_P4_FSB_ESCR1 0x000003a3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_ESCR0 0x000003ba
 #define MSR_P4_IQ_ESCR1 0x000003bb
 #define MSR_P4_IS_ESCR0 0x000003b4
 #define MSR_P4_IS_ESCR1 0x000003b5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_ITLB_ESCR0 0x000003b6
 #define MSR_P4_ITLB_ESCR1 0x000003b7
 #define MSR_P4_IX_ESCR0 0x000003c8
 #define MSR_P4_IX_ESCR1 0x000003c9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_MOB_ESCR0 0x000003aa
 #define MSR_P4_MOB_ESCR1 0x000003ab
 #define MSR_P4_MS_ESCR0 0x000003c0
 #define MSR_P4_MS_ESCR1 0x000003c1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_PMH_ESCR0 0x000003ac
 #define MSR_P4_PMH_ESCR1 0x000003ad
 #define MSR_P4_RAT_ESCR0 0x000003bc
 #define MSR_P4_RAT_ESCR1 0x000003bd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_SAAT_ESCR0 0x000003ae
 #define MSR_P4_SAAT_ESCR1 0x000003af
 #define MSR_P4_SSU_ESCR0 0x000003be
 #define MSR_P4_SSU_ESCR1 0x000003bf  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_TBPU_ESCR0 0x000003c2
 #define MSR_P4_TBPU_ESCR1 0x000003c3
 #define MSR_P4_TC_ESCR0 0x000003c4
 #define MSR_P4_TC_ESCR1 0x000003c5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_U2L_ESCR0 0x000003b0
 #define MSR_P4_U2L_ESCR1 0x000003b1
-
 #define MSR_CORE_PERF_FIXED_CTR0 0x00000309
 #define MSR_CORE_PERF_FIXED_CTR1 0x0000030a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_CORE_PERF_FIXED_CTR2 0x0000030b
 #define MSR_CORE_PERF_FIXED_CTR_CTRL 0x0000038d
 #define MSR_CORE_PERF_GLOBAL_STATUS 0x0000038e
 #define MSR_CORE_PERF_GLOBAL_CTRL 0x0000038f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x00000390
-
 #define MSR_GEODE_BUSCONT_CONF0 0x00001900
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/msr.h b/ndk/platforms/android-9/arch-x86/include/asm/msr.h
index f1da917..00fb800 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/msr.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/msr.h
@@ -7,48 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_X86_MSR_H_
 #define __ASM_X86_MSR_H_
-
 #include <asm/msr-index.h>
-
 #ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #endif
-
-#ifdef __i386__
-
-#else
-
-#ifndef __ASSEMBLY__
-#include <linux/errno.h>
-
-#define rdmsr(msr,val1,val2)   __asm__ __volatile__("rdmsr"   : "=a" (val1), "=d" (val2)   : "c" (msr))
-
-#define rdmsrl(msr,val) do { unsigned long a__,b__;   __asm__ __volatile__("rdmsr"   : "=a" (a__), "=d" (b__)   : "c" (msr));   val = a__ | (b__<<32);  } while(0)
-
-#define wrmsr(msr,val1,val2)   __asm__ __volatile__("wrmsr"   :     : "c" (msr), "a" (val1), "d" (val2))
-
-#define wrmsrl(msr,val) wrmsr(msr,(__u32)((__u64)(val)),((__u64)(val))>>32)
-
-#define rdtsc(low,high)   __asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
-
-#define rdtscl(low)   __asm__ __volatile__ ("rdtsc" : "=a" (low) : : "edx")
-
-#define rdtscp(low,high,aux)   __asm__ __volatile__ (".byte 0x0f,0x01,0xf9" : "=a" (low), "=d" (high), "=c" (aux))
-
-#define rdtscll(val) do {   unsigned int __a,__d;   __asm__ __volatile__("rdtsc" : "=a" (__a), "=d" (__d));   (val) = ((unsigned long)__a) | (((unsigned long)__d)<<32);  } while(0)
-
-#define rdtscpll(val, aux) do {   unsigned long __a, __d;   __asm__ __volatile__ (".byte 0x0f,0x01,0xf9" : "=a" (__a), "=d" (__d), "=c" (aux));   (val) = (__d << 32) | __a;  } while (0)
-
-#define write_tsc(val1,val2) wrmsr(0x10, val1, val2)
-
-#define write_rdtscp_aux(val) wrmsr(0xc0000103, val, 0)
-
-#define rdpmc(counter,low,high)   __asm__ __volatile__("rdpmc"   : "=a" (low), "=d" (high)   : "c" (counter))
-
-#endif
-#endif
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/page.h b/ndk/platforms/android-9/arch-x86/include/asm/page.h
index e6dcf27..3b45383 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/page.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/page.h
@@ -7,10 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#ifdef __i386__
 #include "page_32.h"
-#else
-#include "page_64.h"
-#endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/page_32.h b/ndk/platforms/android-9/arch-x86/include/asm/page_32.h
index 718cf95..5e864ad 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/page_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/page_32.h
@@ -7,16 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PAGE_H
 #define _I386_PAGE_H
-
 #define PAGE_SHIFT 12
 #define PAGE_SIZE (1UL << PAGE_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_MASK (~(PAGE_SIZE-1))
-
 #define LARGE_PAGE_MASK (~(LARGE_PAGE_SIZE-1))
 #define LARGE_PAGE_SIZE (1UL << PMD_SHIFT)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/param.h b/ndk/platforms/android-9/arch-x86/include/asm/param.h
index 3fafd55..cd77123 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/param.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/param.h
@@ -7,20 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_PARAM_H
 #define _ASM_X86_PARAM_H
-
 #ifndef HZ
 #define HZ 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define EXEC_PAGESIZE 4096
-
 #ifndef NOGROUP
 #define NOGROUP (-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/paravirt.h b/ndk/platforms/android-9/arch-x86/include/asm/paravirt.h
index ab0d08e..257e968 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/paravirt.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/paravirt.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PARAVIRT_H
 #define __ASM_PARAVIRT_H
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pda.h b/ndk/platforms/android-9/arch-x86/include/asm/pda.h
index 6711224..a105f28 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pda.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pda.h
@@ -7,59 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef X86_64_PDA_H
 #define X86_64_PDA_H
-
 #ifndef __ASSEMBLY__
 #include <linux/stddef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/cache.h>
 #include <asm/page.h>
-
 struct x8664_pda {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct task_struct *pcurrent;
  unsigned long data_offset;
  unsigned long kernelstack;
  unsigned long oldrsp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int irqcount;
  int cpunumber;
  char *irqstackptr;
  int nodenumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int __softirq_pending;
  unsigned int __nmi_count;
  short mmu_state;
  short isidle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mm_struct *active_mm;
  unsigned apic_timer_irqs;
  unsigned irq0_irqs;
  unsigned irq_resched_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned irq_call_count;
  unsigned irq_tlb_count;
  unsigned irq_thermal_count;
  unsigned irq_threshold_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned irq_spurious_count;
 } ____cacheline_aligned_in_smp;
-
 #define cpu_pda(i) (_cpu_pda[i])
-
 #define pda_offset(field) offsetof(struct x8664_pda, field)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pda_to_op(op,field,val) do {   typedef typeof(_proxy_pda.field) T__;   if (0) { T__ tmp__; tmp__ = (val); }     switch (sizeof(_proxy_pda.field)) {   case 2:   asm(op "w %1,%%gs:%c2" :   "+m" (_proxy_pda.field) :   "ri" ((T__)val),   "i"(pda_offset(field)));   break;   case 4:   asm(op "l %1,%%gs:%c2" :   "+m" (_proxy_pda.field) :   "ri" ((T__)val),   "i" (pda_offset(field)));   break;   case 8:   asm(op "q %1,%%gs:%c2":   "+m" (_proxy_pda.field) :   "ri" ((T__)val),   "i"(pda_offset(field)));   break;   default:   __bad_pda_field();   }   } while (0)
-
 #define pda_from_op(op,field) ({   typeof(_proxy_pda.field) ret__;   switch (sizeof(_proxy_pda.field)) {   case 2:   asm(op "w %%gs:%c1,%0" :   "=r" (ret__) :   "i" (pda_offset(field)),   "m" (_proxy_pda.field));   break;   case 4:   asm(op "l %%gs:%c1,%0":   "=r" (ret__):   "i" (pda_offset(field)),   "m" (_proxy_pda.field));   break;   case 8:   asm(op "q %%gs:%c1,%0":   "=r" (ret__) :   "i" (pda_offset(field)),   "m" (_proxy_pda.field));   break;   default:   __bad_pda_field();   }   ret__; })
-
 #define read_pda(field) pda_from_op("mov",field)
 #define write_pda(field,val) pda_to_op("mov",field,val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define add_pda(field,val) pda_to_op("add",field,val)
 #define sub_pda(field,val) pda_to_op("sub",field,val)
 #define or_pda(field,val) pda_to_op("or",field,val)
-
 #define test_and_clear_bit_pda(bit,field) ({   int old__;   asm volatile("btr %2,%%gs:%c3\n\tsbbl %0,%0"   : "=r" (old__), "+m" (_proxy_pda.field)   : "dIr" (bit), "i" (pda_offset(field)) : "memory");   old__;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define PDA_STACKOFFSET (5*8)
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/percpu.h b/ndk/platforms/android-9/arch-x86/include/asm/percpu.h
index 7740e67..607b92e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/percpu.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/percpu.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "percpu_64.h"
+#include "percpu_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/percpu_32.h b/ndk/platforms/android-9/arch-x86/include/asm/percpu_32.h
index 21135d6..86bf3aa 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/percpu_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/percpu_32.h
@@ -7,30 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_I386_PERCPU__
 #define __ARCH_I386_PERCPU__
-
 #ifdef __ASSEMBLY__
-
 #define PER_CPU(var, reg)   movl $per_cpu__##var, reg
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PER_CPU_VAR(var) per_cpu__##var
-
 #else
-
 #include <asm-generic/percpu.h>
 #define __percpu_seg ""
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define percpu_to_op(op,var,val)   do {   typedef typeof(var) T__;   if (0) { T__ tmp__; tmp__ = (val); }   switch (sizeof(var)) {   case 1:   asm(op "b %1,"__percpu_seg"%0"   : "+m" (var)   :"ri" ((T__)val));   break;   case 2:   asm(op "w %1,"__percpu_seg"%0"   : "+m" (var)   :"ri" ((T__)val));   break;   case 4:   asm(op "l %1,"__percpu_seg"%0"   : "+m" (var)   :"ri" ((T__)val));   break;   default: __bad_percpu_size();   }   } while (0)
-
 #define percpu_from_op(op,var)   ({   typeof(var) ret__;   switch (sizeof(var)) {   case 1:   asm(op "b "__percpu_seg"%1,%0"   : "=r" (ret__)   : "m" (var));   break;   case 2:   asm(op "w "__percpu_seg"%1,%0"   : "=r" (ret__)   : "m" (var));   break;   case 4:   asm(op "l "__percpu_seg"%1,%0"   : "=r" (ret__)   : "m" (var));   break;   default: __bad_percpu_size();   }   ret__; })
-
 #define x86_read_percpu(var) percpu_from_op("mov", per_cpu__##var)
 #define x86_write_percpu(var,val) percpu_to_op("mov", per_cpu__##var, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define x86_add_percpu(var,val) percpu_to_op("add", per_cpu__##var, val)
 #define x86_sub_percpu(var,val) percpu_to_op("sub", per_cpu__##var, val)
 #define x86_or_percpu(var,val) percpu_to_op("or", per_cpu__##var, val)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pgalloc.h b/ndk/platforms/android-9/arch-x86/include/asm/pgalloc.h
index d5a032b..9175367 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pgalloc.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pgalloc.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "pgalloc_64.h"
+#include "pgalloc_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pgalloc_32.h b/ndk/platforms/android-9/arch-x86/include/asm/pgalloc_32.h
index bc0f884..022ca61 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pgalloc_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pgalloc_32.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGALLOC_H
 #define _I386_PGALLOC_H
-
 #include <linux/threads.h>
 #include <linux/mm.h>  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define paravirt_alloc_pt(mm, pfn) do { } while (0)
 #define paravirt_alloc_pd(pfn) do { } while (0)
 #define paravirt_alloc_pd(pfn) do { } while (0)
 #define paravirt_alloc_pd_clone(pfn, clonepfn, start, count) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define paravirt_release_pt(pfn) do { } while (0)
 #define paravirt_release_pd(pfn) do { } while (0)
-
 #define pmd_populate_kernel(mm, pmd, pte)  do {   paravirt_alloc_pt(mm, __pa(pte) >> PAGE_SHIFT);   set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte)));  } while (0)
-
 #define pmd_populate(mm, pmd, pte)  do {   paravirt_alloc_pt(mm, page_to_pfn(pte));   set_pmd(pmd, __pmd(_PAGE_TABLE +   ((unsigned long long)page_to_pfn(pte) <<   (unsigned long long) PAGE_SHIFT)));  } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __pte_free_tlb(tlb,pte)  do {   paravirt_release_pt(page_to_pfn(pte));   tlb_remove_page((tlb),(pte));  } while (0)
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level-defs.h b/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level-defs.h
index 9edc6c5..9a60db5 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level-defs.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level-defs.h
@@ -7,16 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGTABLE_2LEVEL_DEFS_H
 #define _I386_PGTABLE_2LEVEL_DEFS_H
-
 #define SHARED_KERNEL_PMD 0
-
 #define PGDIR_SHIFT 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRS_PER_PGD 1024
-
 #define PTRS_PER_PTE 1024
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level.h b/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level.h
index 7ade4ed..77cdefd 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pgtable-2level.h
@@ -7,33 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGTABLE_2LEVEL_H
 #define _I386_PGTABLE_2LEVEL_H
-
 #define pte_ERROR(e)   printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte_low)
 #define pgd_ERROR(e)   printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_pte(pteptr, pteval) native_set_pte(pteptr, pteval)
 #define set_pte_at(mm,addr,ptep,pteval) native_set_pte_at(mm, addr, ptep, pteval)
 #define set_pmd(pmdptr, pmdval) native_set_pmd(pmdptr, pmdval)
 #define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_pte_present(mm,addr,ptep,pteval) set_pte_at(mm,addr,ptep,pteval)
 #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
 #define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
 #define native_ptep_get_and_clear(xp) native_local_ptep_get_and_clear(xp)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_page(x) pfn_to_page(pte_pfn(x))
 #define pte_none(x) (!(x).pte_low)
 #define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT)
 #define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
 #define PTE_FILE_MAX_BITS 29
 #define pte_to_pgoff(pte)   ((((pte).pte_low >> 1) & 0x1f ) + (((pte).pte_low >> 8) << 5 ))
 #define pgoff_to_pte(off)   ((pte_t) { (((off) & 0x1f) << 1) + (((off) >> 5) << 8) + _PAGE_FILE })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __swp_type(x) (((x).val >> 1) & 0x1f)
 #define __swp_offset(x) ((x).val >> 8)
 #define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
 #define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __swp_entry_to_pte(x) ((pte_t) { (x).val })
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pgtable.h b/ndk/platforms/android-9/arch-x86/include/asm/pgtable.h
index 797e473..a9bed6b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pgtable.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pgtable.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "pgtable_64.h"
+#include "pgtable_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/pgtable_32.h b/ndk/platforms/android-9/arch-x86/include/asm/pgtable_32.h
index c63ba93..4740571 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/pgtable_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/pgtable_32.h
@@ -7,169 +7,182 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGTABLE_H
 #define _I386_PGTABLE_H
-
 #ifndef __ASSEMBLY__
 #include <asm/processor.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/fixmap.h>
 #include <linux/threads.h>
 #include <asm/paravirt.h>
-
 #include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/slab.h>
 #include <linux/list.h>
 #include <linux/spinlock.h>
-
 struct mm_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm_area_struct;
-
 #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
-
 #include <asm/pgtable-2level-defs.h>
-
 #define PGDIR_SIZE (1UL << PGDIR_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PGDIR_MASK (~(PGDIR_SIZE-1))
-
 #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE)
 #define FIRST_USER_ADDRESS 0
-
 #define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS)
-
 #define TWOLEVEL_PGDIR_SHIFT 22
 #define BOOT_USER_PGD_PTRS (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT)
 #define BOOT_KERNEL_PGD_PTRS (1024-BOOT_USER_PGD_PTRS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMALLOC_OFFSET (8*1024*1024)
 #define VMALLOC_START (((unsigned long) high_memory +   2*VMALLOC_OFFSET-1) & ~(VMALLOC_OFFSET-1))
 #define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE)
-
 #define _PAGE_BIT_PRESENT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_BIT_RW 1
 #define _PAGE_BIT_USER 2
 #define _PAGE_BIT_PWT 3
 #define _PAGE_BIT_PCD 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_BIT_ACCESSED 5
 #define _PAGE_BIT_DIRTY 6
 #define _PAGE_BIT_PSE 7  
 #define _PAGE_BIT_GLOBAL 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_BIT_UNUSED1 9  
 #define _PAGE_BIT_UNUSED2 10
 #define _PAGE_BIT_UNUSED3 11
 #define _PAGE_BIT_NX 63
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_PRESENT 0x001
 #define _PAGE_RW 0x002
 #define _PAGE_USER 0x004
 #define _PAGE_PWT 0x008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_PCD 0x010
 #define _PAGE_ACCESSED 0x020
 #define _PAGE_DIRTY 0x040
 #define _PAGE_PSE 0x080  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_GLOBAL 0x100  
 #define _PAGE_UNUSED1 0x200  
 #define _PAGE_UNUSED2 0x400
 #define _PAGE_UNUSED3 0x800
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_FILE 0x040  
 #define _PAGE_PROTNONE 0x080  
 #define _PAGE_NX 0
-
 #define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
 #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
-
 #define PAGE_NONE   __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
 #define PAGE_SHARED   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_SHARED_EXEC   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
 #define PAGE_COPY_NOEXEC   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
 #define PAGE_COPY_EXEC   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
 #define PAGE_COPY   PAGE_COPY_NOEXEC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_READONLY   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
 #define PAGE_READONLY_EXEC   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-
 #define _PAGE_KERNEL   (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
 #define _PAGE_KERNEL_EXEC   (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
 #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD)
 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-
 #define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
 #define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
 #define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
 #define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
 #define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
 #define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __P000 PAGE_NONE
 #define __P001 PAGE_READONLY
 #define __P010 PAGE_COPY
 #define __P011 PAGE_COPY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __P100 PAGE_READONLY_EXEC
 #define __P101 PAGE_READONLY_EXEC
 #define __P110 PAGE_COPY_EXEC
 #define __P111 PAGE_COPY_EXEC
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __S000 PAGE_NONE
 #define __S001 PAGE_READONLY
 #define __S010 PAGE_SHARED
 #define __S011 PAGE_SHARED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __S100 PAGE_READONLY_EXEC
 #define __S101 PAGE_READONLY_EXEC
 #define __S110 PAGE_SHARED_EXEC
 #define __S111 PAGE_SHARED_EXEC
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef TEST_ACCESS_OK
-
 #define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))
-
 #define pmd_none(x) (!(unsigned long)pmd_val(x))
 #define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
-
 #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
-
 #include <asm/pgtable-2level.h>
 #define pte_update(mm, addr, ptep) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_update_defer(mm, addr, ptep) do { } while (0)
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
 #define ptep_set_access_flags(vma, address, ptep, entry, dirty)  ({   int __changed = !pte_same(*(ptep), entry);   if (__changed && dirty) {   (ptep)->pte_low = (entry).pte_low;   pte_update_defer((vma)->vm_mm, (address), (ptep));   flush_tlb_page(vma, address);   }   __changed;  })
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ptep_test_and_clear_young(vma, addr, ptep) ({   int __ret = 0;   if (pte_young(*(ptep)))   __ret = test_and_clear_bit(_PAGE_BIT_ACCESSED,   &(ptep)->pte_low);   if (__ret)   pte_update((vma)->vm_mm, addr, ptep);   __ret;  })
 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
 #define ptep_clear_flush_young(vma, address, ptep)  ({   int __young;   __young = ptep_test_and_clear_young((vma), (address), (ptep));   if (__young)   flush_tlb_page(vma, address);   __young;  })
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
 #define __HAVE_ARCH_PTEP_SET_WRPROTECT
 #define pgprot_noncached(prot) ((boot_cpu_data.x86 > 3)   ? (__pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT)) : (prot))
 #define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_large(pmd)  ((pmd_val(pmd) & (_PAGE_PSE|_PAGE_PRESENT)) == (_PAGE_PSE|_PAGE_PRESENT))
 #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 #define pgd_index_k(addr) pgd_index(addr)
 #define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pgd_offset_k(address) pgd_offset(&init_mm, address)
 #define pmd_index(address)   (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
 #define pte_index(address)   (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 #define pte_offset_kernel(dir, address)   ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
 #define pmd_page_vaddr(pmd)   ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
-
- #define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
+#define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
 #define pte_offset_map_nested(dir, address) pte_offset_map(dir, address)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_unmap(pte) do { } while (0)
 #define pte_unmap_nested(pte) do { } while (0)
 #define kpte_clear_flush(ptep, vaddr)  do {   pte_clear(&init_mm, vaddr, ptep);   __flush_tlb_one(vaddr);  } while (0)
 #define update_mmu_cache(vma,address,pte) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
 #include <asm-generic/pgtable.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/poll.h b/ndk/platforms/android-9/arch-x86/include/asm/poll.h
index 5b16673..d7e8adc 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/poll.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/poll.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/poll.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/posix_types.h b/ndk/platforms/android-9/arch-x86/include/asm/posix_types.h
index 79bb490..4e26788 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/posix_types.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/posix_types.h
@@ -7,10 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#ifdef __i386__
 #include "posix_types_32.h"
-#else
-#include "posix_types_64.h"
-#endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/posix_types_32.h b/ndk/platforms/android-9/arch-x86/include/asm/posix_types_32.h
index 97a8b69..90136d2 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/posix_types_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/posix_types_32.h
@@ -7,64 +7,72 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_I386_POSIX_TYPES_H
 #define __ARCH_I386_POSIX_TYPES_H
-
 typedef unsigned long __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_nlink_t;
 typedef long __kernel_off_t;
 typedef int __kernel_pid_t;
 typedef unsigned short __kernel_ipc_pid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_uid_t;
 typedef unsigned short __kernel_gid_t;
 typedef unsigned int __kernel_size_t;
 typedef int __kernel_ssize_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __kernel_ptrdiff_t;
 typedef long __kernel_time_t;
 typedef long __kernel_suseconds_t;
 typedef long __kernel_clock_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __kernel_timer_t;
 typedef int __kernel_clockid_t;
 typedef int __kernel_daddr_t;
 typedef char * __kernel_caddr_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_uid16_t;
 typedef unsigned short __kernel_gid16_t;
 typedef unsigned int __kernel_uid32_t;
 typedef unsigned int __kernel_gid32_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_old_uid_t;
 typedef unsigned short __kernel_old_gid_t;
 typedef unsigned short __kernel_old_dev_t;
-
 #ifdef __GNUC__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef long long __kernel_loff_t;
 #endif
-
 typedef struct {
 #ifdef __USE_ALL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int val[2];
 #else
  int __val[2];
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __kernel_fsid_t;
-
 #if !defined(__GLIBC__) || __GLIBC__ < 2
-
 #undef __FD_SET
 #define __FD_SET(fd,fdsetp)   __asm__ __volatile__("btsl %1,%0":   "+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __FD_CLR
 #define __FD_CLR(fd,fdsetp)   __asm__ __volatile__("btrl %1,%0":   "+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd)))
-
 #undef __FD_ISSET
 #define __FD_ISSET(fd,fdsetp) (__extension__ ({   unsigned char __result;   __asm__ __volatile__("btl %1,%2 ; setb %0"   :"=q" (__result) :"r" ((int) (fd)),   "m" (*(__kernel_fd_set *) (fdsetp)));   __result; }))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __FD_ZERO
 #define __FD_ZERO(fdsetp)  do {   int __d0, __d1;   __asm__ __volatile__("cld ; rep ; stosl"   :"=m" (*(__kernel_fd_set *) (fdsetp)),   "=&c" (__d0), "=&D" (__d1)   :"a" (0), "1" (__FDSET_LONGS),   "2" ((__kernel_fd_set *) (fdsetp)) : "memory");  } while (0)
-
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/prctl.h b/ndk/platforms/android-9/arch-x86/include/asm/prctl.h
index 8852ca7..d194cf8 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/prctl.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/prctl.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef X86_64_PRCTL_H
 #define X86_64_PRCTL_H 1
-
 #define ARCH_SET_GS 0x1001
 #define ARCH_SET_FS 0x1002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARCH_GET_FS 0x1003
 #define ARCH_GET_GS 0x1004
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/processor-flags.h b/ndk/platforms/android-9/arch-x86/include/asm/processor-flags.h
index 79e8f7d..ab46527 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/processor-flags.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/processor-flags.h
@@ -7,73 +7,88 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_PROCESSOR_FLAGS_H
 #define __ASM_I386_PROCESSOR_FLAGS_H
-
 #define X86_EFLAGS_CF 0x00000001  
 #define X86_EFLAGS_PF 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_AF 0x00000010  
 #define X86_EFLAGS_ZF 0x00000040  
 #define X86_EFLAGS_SF 0x00000080  
 #define X86_EFLAGS_TF 0x00000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_IF 0x00000200  
 #define X86_EFLAGS_DF 0x00000400  
 #define X86_EFLAGS_OF 0x00000800  
 #define X86_EFLAGS_IOPL 0x00003000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_NT 0x00004000  
 #define X86_EFLAGS_RF 0x00010000  
 #define X86_EFLAGS_VM 0x00020000  
 #define X86_EFLAGS_AC 0x00040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_VIF 0x00080000  
 #define X86_EFLAGS_VIP 0x00100000  
 #define X86_EFLAGS_ID 0x00200000  
-
 #define X86_CR0_PE 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR0_MP 0x00000002  
 #define X86_CR0_EM 0x00000004  
 #define X86_CR0_TS 0x00000008  
 #define X86_CR0_ET 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR0_NE 0x00000020  
 #define X86_CR0_WP 0x00010000  
 #define X86_CR0_AM 0x00040000  
 #define X86_CR0_NW 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR0_CD 0x40000000  
 #define X86_CR0_PG 0x80000000  
-
 #define X86_CR3_PWT 0x00000008  
 #define X86_CR3_PCD 0x00000010  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_VME 0x00000001  
 #define X86_CR4_PVI 0x00000002  
 #define X86_CR4_TSD 0x00000004  
 #define X86_CR4_DE 0x00000008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_PSE 0x00000010  
 #define X86_CR4_PAE 0x00000020  
 #define X86_CR4_MCE 0x00000040  
 #define X86_CR4_PGE 0x00000080  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_PCE 0x00000100  
 #define X86_CR4_OSFXSR 0x00000200  
 #define X86_CR4_OSXMMEXCPT 0x00000400  
 #define X86_CR4_VMXE 0x00002000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR8_TPR 0x0000000F  
-
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
 #define CX86_CCR0 0xc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CX86_CCR1 0xc1
 #define CX86_CCR2 0xc2
 #define CX86_CCR3 0xc3
 #define CX86_CCR4 0xe8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CX86_CCR5 0xe9
 #define CX86_CCR6 0xea
 #define CX86_CCR7 0xeb
 #define CX86_PCR1 0xf0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CX86_DIR0 0xfe
 #define CX86_DIR1 0xff
 #define CX86_ARR_BASE 0xc4
 #define CX86_RCR_BASE 0xdc
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/processor.h b/ndk/platforms/android-9/arch-x86/include/asm/processor.h
index 7d47749..e9eaec8 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/processor.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/processor.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "processor_64.h"
+#include "processor_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/processor_32.h b/ndk/platforms/android-9/arch-x86/include/asm/processor_32.h
index 539edd1..c759016 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/processor_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/processor_32.h
@@ -7,318 +7,342 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_PROCESSOR_H
 #define __ASM_I386_PROCESSOR_H
-
 #include <asm/vm86.h>
 #include <asm/math_emu.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/segment.h>
 #include <asm/page.h>
 #include <asm/types.h>
 #include <asm/sigcontext.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cpufeature.h>
 #include <asm/msr.h>
 #include <asm/system.h>
 #include <linux/cache.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/threads.h>
 #include <asm/percpu.h>
 #include <linux/cpumask.h>
 #include <linux/init.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/processor-flags.h>
-
 struct desc_struct {
  unsigned long a,b;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define desc_empty(desc)   (!((desc)->a | (desc)->b))
-
 #define desc_equal(desc1, desc2)   (((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
-
 #define current_text_addr() ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; })
-
 struct cpuinfo_x86 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 x86;
  __u8 x86_vendor;
  __u8 x86_model;
  __u8 x86_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char wp_works_ok;
  char hlt_works_ok;
  char hard_math;
  char rfu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cpuid_level;
  unsigned long x86_capability[NCAPINTS];
  char x86_vendor_id[16];
  char x86_model_id[64];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int x86_cache_size;
  int x86_cache_alignment;
  char fdiv_bug;
  char f00f_bug;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char coma_bug;
  char pad0;
  int x86_power;
  unsigned long loops_per_jiffy;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char x86_max_cores;
  unsigned char apicid;
  unsigned short x86_clflush_size;
 } __attribute__((__aligned__(SMP_CACHE_BYTES)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_VENDOR_INTEL 0
 #define X86_VENDOR_CYRIX 1
 #define X86_VENDOR_AMD 2
 #define X86_VENDOR_UMC 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_VENDOR_NEXGEN 4
 #define X86_VENDOR_CENTAUR 5
 #define X86_VENDOR_TRANSMETA 7
 #define X86_VENDOR_NSC 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_VENDOR_NUM 9
 #define X86_VENDOR_UNKNOWN 0xff
-
 #define cpu_data(cpu) boot_cpu_data
 #define current_cpu_data boot_cpu_data
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define load_cr3(pgdir) write_cr3(__pa(pgdir))
-
 #define TASK_SIZE (PAGE_OFFSET)
-
 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
-
 #define HAVE_ARCH_PICK_MMAP_LAYOUT
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_BITMAP_BITS 65536
 #define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
 #define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
 #define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INVALID_IO_BITMAP_OFFSET 0x8000
 #define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
-
 struct i387_fsave_struct {
  long cwd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long swd;
  long twd;
  long fip;
  long fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long foo;
  long fos;
  long st_space[20];
  long status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct i387_fxsave_struct {
  unsigned short cwd;
  unsigned short swd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short twd;
  unsigned short fop;
  long fip;
  long fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long foo;
  long fos;
  long mxcsr;
  long mxcsr_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_space[32];
  long xmm_space[32];
  long padding[56];
 } __attribute__ ((aligned (16)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i387_soft_struct {
  long cwd;
  long swd;
  long twd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long fip;
  long fcs;
  long foo;
  long fos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_space[20];
  unsigned char ftop, changed, lookahead, no_update, rm, alimit;
  struct info *info;
  unsigned long entry_eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union i387_union {
  struct i387_fsave_struct fsave;
  struct i387_fxsave_struct fxsave;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i387_soft_struct soft;
 };
-
 typedef struct {
  unsigned long seg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mm_segment_t;
-
 struct thread_struct;
-
 struct i386_hw_tss {
  unsigned short back_link,__blh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esp0;
  unsigned short ss0,__ss0h;
  unsigned long esp1;
  unsigned short ss1,__ss1h;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esp2;
  unsigned short ss2,__ss2h;
  unsigned long __cr3;
  unsigned long eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eflags;
  unsigned long eax,ecx,edx,ebx;
  unsigned long esp;
  unsigned long ebp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esi;
  unsigned long edi;
  unsigned short es, __esh;
  unsigned short cs, __csh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ss, __ssh;
  unsigned short ds, __dsh;
  unsigned short fs, __fsh;
  unsigned short gs, __gsh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ldt, __ldth;
  unsigned short trace, io_bitmap_base;
 } __attribute__((packed));
-
 struct tss_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i386_hw_tss x86_tss;
-
  unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
-
  unsigned long io_bitmap_max;
  struct thread_struct *io_bitmap_owner;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __cacheline_filler[35];
-
  unsigned long stack[64];
 } __attribute__((packed));
-
 #define ARCH_MIN_TASKALIGN 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct thread_struct {
-
  struct desc_struct tls_array[GDT_ENTRY_TLS_ENTRIES];
  unsigned long esp0;
  unsigned long sysenter_cs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eip;
  unsigned long esp;
  unsigned long fs;
  unsigned long gs;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long debugreg[8];
-
  unsigned long cr2, trap_no, error_code;
-
  union i387_union i387;
-
  struct vm86_struct __user * vm86_info;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long screen_bitmap;
  unsigned long v86flags, v86mask, saved_esp0;
  unsigned int saved_fs, saved_gs;
-
  unsigned long *io_bitmap_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long iopl;
-
  unsigned long io_bitmap_max;
 };
-
 #define INIT_THREAD {   .esp0 = sizeof(init_stack) + (long)&init_stack,   .vm86_info = NULL,   .sysenter_cs = __KERNEL_CS,   .io_bitmap_ptr = NULL,   .fs = __KERNEL_PERCPU,  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INIT_TSS {   .x86_tss = {   .esp0 = sizeof(init_stack) + (long)&init_stack,   .ss0 = __KERNEL_DS,   .ss1 = __KERNEL_CS,   .io_bitmap_base = INVALID_IO_BITMAP_OFFSET,   },   .io_bitmap = { [ 0 ... IO_BITMAP_LONGS] = ~0 },  }
-
 #define start_thread(regs, new_eip, new_esp) do {   __asm__("movl %0,%%gs": :"r" (0));   regs->xfs = 0;   set_fs(USER_DS);   regs->xds = __USER_DS;   regs->xes = __USER_DS;   regs->xss = __USER_DS;   regs->xcs = __USER_CS;   regs->eip = new_eip;   regs->esp = new_esp;  } while (0)
-
 struct task_struct;
 struct mm_struct;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
 #define KSTK_TOP(info)  ({   unsigned long *__ptr = (unsigned long *)(info);   (unsigned long)(&__ptr[THREAD_SIZE_LONGS]);  })
-
 #define task_pt_regs(task)  ({   struct pt_regs *__regs__;   __regs__ = (struct pt_regs *)(KSTK_TOP(task_stack_page(task))-8);   __regs__ - 1;  })
-
 #define KSTK_EIP(task) (task_pt_regs(task)->eip)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KSTK_ESP(task) (task_pt_regs(task)->esp)
-
 struct microcode_header {
  unsigned int hdrver;
  unsigned int rev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int date;
  unsigned int sig;
  unsigned int cksum;
  unsigned int ldrver;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pf;
  unsigned int datasize;
  unsigned int totalsize;
  unsigned int reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct microcode {
  struct microcode_header hdr;
  unsigned int bits[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 typedef struct microcode microcode_t;
 typedef struct microcode_header microcode_header_t;
-
 struct extended_signature {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int sig;
  unsigned int pf;
  unsigned int cksum;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct extended_sigtable {
  unsigned int count;
  unsigned int cksum;
  unsigned int reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct extended_signature sigs[0];
 };
-
 #define cpu_relax() rep_nop()
 #define paravirt_enabled() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpuid native_cpuid
 #define get_debugreg(var, register)   (var) = native_get_debugreg(register)
 #define set_debugreg(value, register)   native_set_debugreg(register, value)
 #define set_iopl_mask native_set_iopl_mask
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENERIC_NOP1 ".byte 0x90\n"
 #define GENERIC_NOP2 ".byte 0x89,0xf6\n"
 #define GENERIC_NOP3 ".byte 0x8d,0x76,0x00\n"
 #define GENERIC_NOP4 ".byte 0x8d,0x74,0x26,0x00\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENERIC_NOP5 GENERIC_NOP1 GENERIC_NOP4
 #define GENERIC_NOP6 ".byte 0x8d,0xb6,0x00,0x00,0x00,0x00\n"
 #define GENERIC_NOP7 ".byte 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00\n"
 #define GENERIC_NOP8 GENERIC_NOP1 GENERIC_NOP7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K8_NOP1 GENERIC_NOP1
 #define K8_NOP2 ".byte 0x66,0x90\n" 
 #define K8_NOP3 ".byte 0x66,0x66,0x90\n" 
 #define K8_NOP4 ".byte 0x66,0x66,0x66,0x90\n" 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K8_NOP5 K8_NOP3 K8_NOP2 
 #define K8_NOP6 K8_NOP3 K8_NOP3
 #define K8_NOP7 K8_NOP4 K8_NOP3
 #define K8_NOP8 K8_NOP4 K8_NOP4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K7_NOP1 GENERIC_NOP1
 #define K7_NOP2 ".byte 0x8b,0xc0\n" 
 #define K7_NOP3 ".byte 0x8d,0x04,0x20\n"
 #define K7_NOP4 ".byte 0x8d,0x44,0x20,0x00\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K7_NOP5 K7_NOP4 ASM_NOP1
 #define K7_NOP6 ".byte 0x8d,0x80,0,0,0,0\n"
 #define K7_NOP7 ".byte 0x8D,0x04,0x05,0,0,0,0\n"
 #define K7_NOP8 K7_NOP7 ASM_NOP1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P6_NOP1 GENERIC_NOP1
 #define P6_NOP2 ".byte 0x66,0x90\n"
 #define P6_NOP3 ".byte 0x0f,0x1f,0x00\n"
 #define P6_NOP4 ".byte 0x0f,0x1f,0x40,0\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P6_NOP5 ".byte 0x0f,0x1f,0x44,0x00,0\n"
 #define P6_NOP6 ".byte 0x66,0x0f,0x1f,0x44,0x00,0\n"
 #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n"
 #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASM_NOP1 GENERIC_NOP1
 #define ASM_NOP2 GENERIC_NOP2
 #define ASM_NOP3 GENERIC_NOP3
 #define ASM_NOP4 GENERIC_NOP4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASM_NOP5 GENERIC_NOP5
 #define ASM_NOP6 GENERIC_NOP6
 #define ASM_NOP7 GENERIC_NOP7
 #define ASM_NOP8 GENERIC_NOP8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASM_NOP_MAX 8
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCHW
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARCH_HAS_SPINLOCK_PREFETCH
 #define spin_lock_prefetch(x) prefetchw(x)
-
 #define cache_line_size() (boot_cpu_data.x86_cache_alignment)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ptrace-abi.h b/ndk/platforms/android-9/arch-x86/include/asm/ptrace-abi.h
index 3e6ea08..bbc7e86 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ptrace-abi.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ptrace-abi.h
@@ -7,82 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_PTRACE_ABI_H
 #define _ASM_X86_PTRACE_ABI_H
-
-#ifdef __i386__
-
 #define EBX 0
 #define ECX 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EDX 2
 #define ESI 3
 #define EDI 4
 #define EBP 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EAX 6
 #define DS 7
 #define ES 8
 #define FS 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GS 10
 #define ORIG_EAX 11
 #define EIP 12
 #define CS 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFL 14
 #define UESP 15
 #define SS 16
 #define FRAME_SIZE 17
-
-#else
-
-#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
-#define R15 0
-#define R14 8
-#define R13 16
-#define R12 24
-#define RBP 32
-#define RBX 40
-
-#define R11 48
-#define R10 56
-#define R9 64
-#define R8 72
-#define RAX 80
-#define RCX 88
-#define RDX 96
-#define RSI 104
-#define RDI 112
-#define ORIG_RAX 120  
-
-#define RIP 128
-#define CS 136
-#define EFLAGS 144
-#define RSP 152
-#define SS 160
-#define ARGOFFSET R11
-#endif
-
-#define FRAME_SIZE 168
-
-#endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_GETREGS 12
 #define PTRACE_SETREGS 13
 #define PTRACE_GETFPREGS 14
 #define PTRACE_SETFPREGS 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_GETFPXREGS 18
 #define PTRACE_SETFPXREGS 19
-
 #define PTRACE_OLDSETOPTIONS 21
-
 #define PTRACE_GET_THREAD_AREA 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_SET_THREAD_AREA 26
-
 #ifdef __x86_64__
 #define PTRACE_ARCH_PRCTL 30
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_SYSEMU 31
 #define PTRACE_SYSEMU_SINGLESTEP 32
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/ptrace.h b/ndk/platforms/android-9/arch-x86/include/asm/ptrace.h
index 4743e0f..95d381e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/ptrace.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/ptrace.h
@@ -7,68 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_PTRACE_H
 #define _ASM_X86_PTRACE_H
-
 #include <linux/compiler.h>  
 #include <asm/ptrace-abi.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
-#ifdef __i386__
-
 struct pt_regs {
  long ebx;
  long ecx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long edx;
  long esi;
  long edi;
  long ebp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long eax;
  int xds;
  int xes;
  int xfs;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long orig_eax;
  long eip;
  int xcs;
  long eflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long esp;
  int xss;
 };
-
-#else
-
-struct pt_regs {
- unsigned long r15;
- unsigned long r14;
- unsigned long r13;
- unsigned long r12;
- unsigned long rbp;
- unsigned long rbx;
-
- unsigned long r11;
- unsigned long r10;
- unsigned long r9;
- unsigned long r8;
- unsigned long rax;
- unsigned long rcx;
- unsigned long rdx;
- unsigned long rsi;
- unsigned long rdi;
- unsigned long orig_rax;
-
- unsigned long rip;
- unsigned long cs;
- unsigned long eflags;
- unsigned long rsp;
- unsigned long ss;
-
-};
-
 #endif
-#endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/required-features.h b/ndk/platforms/android-9/arch-x86/include/asm/required-features.h
index a96517a..df9d33c 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/required-features.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/required-features.h
@@ -7,38 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_REQUIRED_FEATURES_H
 #define _ASM_REQUIRED_FEATURES_H 1
-
 #define NEED_FPU (1<<(X86_FEATURE_FPU & 31))
-
 #define NEED_PAE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEED_CX8 0
-
 #define NEED_CMOV 0
-
 #define NEED_3DNOW 0
-
 #define NEED_PSE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEED_MSR 0
 #define NEED_PGE 0
 #define NEED_FXSR 0
 #define NEED_XMM 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEED_XMM2 0
 #define NEED_LM 0
-
 #define REQUIRED_MASK0 (NEED_FPU|NEED_PSE|NEED_MSR|NEED_PAE|  NEED_CX8|NEED_PGE|NEED_FXSR|NEED_CMOV|  NEED_XMM|NEED_XMM2)
 #define SSE_MASK (NEED_XMM|NEED_XMM2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQUIRED_MASK1 (NEED_LM|NEED_3DNOW)
-
 #define REQUIRED_MASK2 0
 #define REQUIRED_MASK3 0
 #define REQUIRED_MASK4 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQUIRED_MASK5 0
 #define REQUIRED_MASK6 0
 #define REQUIRED_MASK7 0
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/resource.h b/ndk/platforms/android-9/arch-x86/include/asm/resource.h
index 29d9e12..371adb5 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/resource.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/resource.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/resource.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/rwlock.h b/ndk/platforms/android-9/arch-x86/include/asm/rwlock.h
index 3693542..82a96e0 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/rwlock.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/rwlock.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_RWLOCK_H
 #define _ASM_X86_RWLOCK_H
-
 #define RW_LOCK_BIAS 0x01000000
 #define RW_LOCK_BIAS_STR "0x01000000"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/scatterlist.h b/ndk/platforms/android-9/arch-x86/include/asm/scatterlist.h
index fa4d0cc..b691d08 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/scatterlist.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/scatterlist.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "scatterlist_64.h"
+#include "scatterlist_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/scatterlist_32.h b/ndk/platforms/android-9/arch-x86/include/asm/scatterlist_32.h
index 29044c3..e3c777d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/scatterlist_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/scatterlist_32.h
@@ -7,25 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_SCATTERLIST_H
 #define _I386_SCATTERLIST_H
-
 #include <asm/types.h>
-
 struct scatterlist {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long page_link;
  unsigned int offset;
  dma_addr_t dma_address;
  unsigned int length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ARCH_HAS_SG_CHAIN
-
 #define sg_dma_address(sg) ((sg)->dma_address)
 #define sg_dma_len(sg) ((sg)->length)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ISA_DMA_THRESHOLD (0x00ffffff)
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/sections.h b/ndk/platforms/android-9/arch-x86/include/asm/sections.h
index a21da3e..7f35a59 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/sections.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/sections.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/sections.h>
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/segment.h b/ndk/platforms/android-9/arch-x86/include/asm/segment.h
index 6877a80..145e21d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/segment.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/segment.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "segment_64.h"
+#include "segment_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/segment_32.h b/ndk/platforms/android-9/arch-x86/include/asm/segment_32.h
index 54b312b..5d7d0f9 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/segment_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/segment_32.h
@@ -7,83 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_SEGMENT_H
 #define _ASM_SEGMENT_H
-
 #define GDT_ENTRY_TLS_ENTRIES 3
 #define GDT_ENTRY_TLS_MIN 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
-
 #define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8)
-
 #define GDT_ENTRY_DEFAULT_USER_CS 14
 #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS * 8 + 3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_DEFAULT_USER_DS 15
 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS * 8 + 3)
-
 #define GDT_ENTRY_KERNEL_BASE 12
-
 #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
-
 #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
 #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
-
 #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5)
-
 #define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 6)
 #define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11)
-
 #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)
-
 #define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15)
 #define __KERNEL_PERCPU 0
-
 #define GDT_ENTRY_DOUBLEFAULT_TSS 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRIES 32
 #define GDT_SIZE (GDT_ENTRIES * 8)
-
 #define GDT_ENTRY_BOOT_CS 2
 #define __BOOT_CS (GDT_ENTRY_BOOT_CS * 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1)
 #define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8)
-
 #define GDT_ENTRY_PNPBIOS_CS32 (GDT_ENTRY_PNPBIOS_BASE + 0)
 #define GDT_ENTRY_PNPBIOS_CS16 (GDT_ENTRY_PNPBIOS_BASE + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_PNPBIOS_DS (GDT_ENTRY_PNPBIOS_BASE + 2)
 #define GDT_ENTRY_PNPBIOS_TS1 (GDT_ENTRY_PNPBIOS_BASE + 3)
 #define GDT_ENTRY_PNPBIOS_TS2 (GDT_ENTRY_PNPBIOS_BASE + 4)
-
 #define PNP_CS32 (GDT_ENTRY_PNPBIOS_CS32 * 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16 * 8)  
 #define PNP_DS (GDT_ENTRY_PNPBIOS_DS * 8)  
 #define PNP_TS1 (GDT_ENTRY_PNPBIOS_TS1 * 8)  
 #define PNP_TS2 (GDT_ENTRY_PNPBIOS_TS2 * 8)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDT_ENTRIES 256
-
 #define SEGMENT_RPL_MASK 0x3
-
 #define SEGMENT_TI_MASK 0x4
-
 #define USER_RPL 0x3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEGMENT_LDT 0x4
 #define SEGMENT_GDT 0x0
-
 #define get_kernel_rpl() 0
-
 #define SEGMENT_IS_KERNEL_CODE(x) (((x) & 0xfc) == GDT_ENTRY_KERNEL_CS * 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEGMENT_IS_FLAT_CODE(x) (((x) & 0xec) == GDT_ENTRY_KERNEL_CS * 8)
-
 #define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == GDT_ENTRY_PNPBIOS_BASE * 8)
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/semaphore.h b/ndk/platforms/android-9/arch-x86/include/asm/semaphore.h
index 8b4c595..7a2223e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/semaphore.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/semaphore.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "semaphore_64.h"
+#include "semaphore_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/semaphore_32.h b/ndk/platforms/android-9/arch-x86/include/asm/semaphore_32.h
index babe779..7d48d0e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/semaphore_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/semaphore_32.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_SEMAPHORE_H
 #define _I386_SEMAPHORE_H
-
 #include <linux/linkage.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/sembuf.h b/ndk/platforms/android-9/arch-x86/include/asm/sembuf.h
index 1695208..d1cb296 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/sembuf.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/sembuf.h
@@ -7,20 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SEMBUF_H
 #define _ASM_X86_SEMBUF_H
-
 struct semid64_ds {
  struct ipc64_perm sem_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t sem_otime;
  unsigned long __unused1;
  __kernel_time_t sem_ctime;
  unsigned long __unused2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long sem_nsems;
  unsigned long __unused3;
  unsigned long __unused4;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/setup.h b/ndk/platforms/android-9/arch-x86/include/asm/setup.h
index 696ed97..fe6ca0f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/setup.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/setup.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SETUP_H
 #define _ASM_X86_SETUP_H
-
 #define COMMAND_LINE_SIZE 2048
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/shmbuf.h b/ndk/platforms/android-9/arch-x86/include/asm/shmbuf.h
index 314ccb7..5ecfe08 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/shmbuf.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/shmbuf.h
@@ -7,43 +7,48 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SHMBUF_H
 #define _ASM_X86_SHMBUF_H
-
 struct shmid64_ds {
  struct ipc64_perm shm_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t shm_segsz;
  __kernel_time_t shm_atime;
-#ifdef __i386__
  unsigned long __unused1;
-#endif
  __kernel_time_t shm_dtime;
-#ifdef __i386__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused2;
-#endif
  __kernel_time_t shm_ctime;
-#ifdef __i386__
  unsigned long __unused3;
-#endif
  __kernel_pid_t shm_cpid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_pid_t shm_lpid;
  unsigned long shm_nattch;
  unsigned long __unused4;
  unsigned long __unused5;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct shminfo64 {
  unsigned long shmmax;
  unsigned long shmmin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long shmmni;
  unsigned long shmseg;
  unsigned long shmall;
  unsigned long __unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused2;
  unsigned long __unused3;
  unsigned long __unused4;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/shmparam.h b/ndk/platforms/android-9/arch-x86/include/asm/shmparam.h
index e667ba1..43fd83e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/shmparam.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/shmparam.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SHMPARAM_H
 #define _ASM_X86_SHMPARAM_H
-
 #define SHMLBA PAGE_SIZE  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/sigcontext.h b/ndk/platforms/android-9/arch-x86/include/asm/sigcontext.h
index a8f76f0..390189f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/sigcontext.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/sigcontext.h
@@ -7,126 +7,87 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SIGCONTEXT_H
 #define _ASM_X86_SIGCONTEXT_H
-
 #include <linux/compiler.h>
 #include <asm/types.h>
-
-#ifdef __i386__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _fpreg {
  unsigned short significand[4];
  unsigned short exponent;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _fpxreg {
  unsigned short significand[4];
  unsigned short exponent;
  unsigned short padding[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct _xmmreg {
  unsigned long element[4];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _fpstate {
-
  unsigned long cw;
  unsigned long sw;
  unsigned long tag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long ipoff;
  unsigned long cssel;
  unsigned long dataoff;
  unsigned long datasel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct _fpreg _st[8];
  unsigned short status;
  unsigned short magic;
-
  unsigned long _fxsr_env[6];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mxcsr;
  unsigned long reserved;
  struct _fpxreg _fxsr_st[8];
  struct _xmmreg _xmm[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long padding[56];
 };
-
 #define X86_FXSR_MAGIC 0x0000
-
 struct sigcontext {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short gs, __gsh;
  unsigned short fs, __fsh;
  unsigned short es, __esh;
  unsigned short ds, __dsh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long edi;
  unsigned long esi;
  unsigned long ebp;
  unsigned long esp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long ebx;
  unsigned long edx;
  unsigned long ecx;
  unsigned long eax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long trapno;
  unsigned long err;
  unsigned long eip;
  unsigned short cs, __csh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eflags;
  unsigned long esp_at_signal;
  unsigned short ss, __ssh;
  struct _fpstate __user * fpstate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long oldmask;
  unsigned long cr2;
 };
-
-#else
-
-struct _fpstate {
- __u16 cwd;
- __u16 swd;
- __u16 twd;
- __u16 fop;
- __u64 rip;
- __u64 rdp;
- __u32 mxcsr;
- __u32 mxcsr_mask;
- __u32 st_space[32];
- __u32 xmm_space[64];
- __u32 reserved2[24];
-};
-
-struct sigcontext {
- unsigned long r8;
- unsigned long r9;
- unsigned long r10;
- unsigned long r11;
- unsigned long r12;
- unsigned long r13;
- unsigned long r14;
- unsigned long r15;
- unsigned long rdi;
- unsigned long rsi;
- unsigned long rbp;
- unsigned long rbx;
- unsigned long rdx;
- unsigned long rax;
- unsigned long rcx;
- unsigned long rsp;
- unsigned long rip;
- unsigned long eflags;
- unsigned short cs;
- unsigned short gs;
- unsigned short fs;
- unsigned short __pad0;
- unsigned long err;
- unsigned long trapno;
- unsigned long oldmask;
- unsigned long cr2;
- struct _fpstate __user *fpstate;
- unsigned long reserved1[8];
-};
-
 #endif
-
-#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/siginfo.h b/ndk/platforms/android-9/arch-x86/include/asm/siginfo.h
index 0d21d22..6459be7 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/siginfo.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/siginfo.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SIGINFO_H
 #define _ASM_X86_SIGINFO_H
-
 #ifdef __x86_64__
 #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #include <asm-generic/siginfo.h>
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/signal.h b/ndk/platforms/android-9/arch-x86/include/asm/signal.h
index 6d84eab..1c8f2f6 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/signal.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/signal.h
@@ -7,121 +7,112 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SIGNAL_H
 #define _ASM_X86_SIGNAL_H
-
 #ifndef __ASSEMBLY__
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/time.h>
 #include <linux/compiler.h>
-
 struct siginfo;
-
 #define NSIG 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long sigset_t;
-
 #endif
-
 #define SIGHUP 1
 #define SIGINT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGQUIT 3
 #define SIGILL 4
 #define SIGTRAP 5
 #define SIGABRT 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGIOT 6
 #define SIGBUS 7
 #define SIGFPE 8
 #define SIGKILL 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGUSR1 10
 #define SIGSEGV 11
 #define SIGUSR2 12
 #define SIGPIPE 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGALRM 14
 #define SIGTERM 15
 #define SIGSTKFLT 16
 #define SIGCHLD 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGCONT 18
 #define SIGSTOP 19
 #define SIGTSTP 20
 #define SIGTTIN 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGTTOU 22
 #define SIGURG 23
 #define SIGXCPU 24
 #define SIGXFSZ 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGVTALRM 26
 #define SIGPROF 27
 #define SIGWINCH 28
 #define SIGIO 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGPOLL SIGIO
-
 #define SIGPWR 30
 #define SIGSYS 31
 #define SIGUNUSED 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGRTMIN 32
 #define SIGRTMAX _NSIG
-
 #define SA_NOCLDSTOP 0x00000001u
 #define SA_NOCLDWAIT 0x00000002u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_SIGINFO 0x00000004u
 #define SA_ONSTACK 0x08000000u
 #define SA_RESTART 0x10000000u
 #define SA_NODEFER 0x40000000u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_RESETHAND 0x80000000u
-
 #define SA_NOMASK SA_NODEFER
 #define SA_ONESHOT SA_RESETHAND
-
 #define SA_RESTORER 0x04000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SS_ONSTACK 1
 #define SS_DISABLE 2
-
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/signal.h>
-
 #ifndef __ASSEMBLY__
-
-#ifdef __i386__
-
 struct sigaction {
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __sighandler_t _sa_handler;
  void (*_sa_sigaction)(int, struct siginfo *, void *);
  } _u;
  sigset_t sa_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long sa_flags;
  void (*sa_restorer)(void);
 };
-
 #define sa_handler _u._sa_handler
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define sa_sigaction _u._sa_sigaction
-
-#else
-
-struct sigaction {
- __sighandler_t sa_handler;
- unsigned long sa_flags;
- __sigrestore_t sa_restorer;
- sigset_t sa_mask;
-};
-
-struct k_sigaction {
- struct sigaction sa;
-};
-
-#endif
-
 typedef struct sigaltstack {
  void __user *ss_sp;
  int ss_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t ss_size;
 } stack_t;
-
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/smp.h b/ndk/platforms/android-9/arch-x86/include/asm/smp.h
index 40d4601..4e439d5 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/smp.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/smp.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "smp_64.h"
+#include "smp_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/smp_32.h b/ndk/platforms/android-9/arch-x86/include/asm/smp_32.h
index f093a24..e428b7b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/smp_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/smp_32.h
@@ -7,28 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SMP_H
 #define __ASM_SMP_H
-
 #ifndef __ASSEMBLY__
 #include <linux/kernel.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/threads.h>
 #include <linux/cpumask.h>
 #endif
-
 #define BAD_APICID 0xFFu
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define safe_smp_processor_id() 0
 #define cpu_physical_id(cpu) boot_cpu_physical_apicid
-
 #define NO_PROC_ID 0xFF  
-
 #ifndef __ASSEMBLY__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define hard_smp_processor_id() 0
-
 #endif
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/socket.h b/ndk/platforms/android-9/arch-x86/include/asm/socket.h
index 27d243f..b520169 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/socket.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/socket.h
@@ -7,57 +7,63 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_SOCKET_H
 #define _ASM_SOCKET_H
-
 #include <asm/sockios.h>
-
 #define SOL_SOCKET 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_DEBUG 1
 #define SO_REUSEADDR 2
 #define SO_TYPE 3
 #define SO_ERROR 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_DONTROUTE 5
 #define SO_BROADCAST 6
 #define SO_SNDBUF 7
 #define SO_RCVBUF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_SNDBUFFORCE 32
 #define SO_RCVBUFFORCE 33
 #define SO_KEEPALIVE 9
 #define SO_OOBINLINE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_NO_CHECK 11
 #define SO_PRIORITY 12
 #define SO_LINGER 13
 #define SO_BSDCOMPAT 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PASSCRED 16
 #define SO_PEERCRED 17
 #define SO_RCVLOWAT 18
 #define SO_SNDLOWAT 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_RCVTIMEO 20
 #define SO_SNDTIMEO 21
-
 #define SO_SECURITY_AUTHENTICATION 22
 #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_SECURITY_ENCRYPTION_NETWORK 24
-
 #define SO_BINDTODEVICE 25
-
 #define SO_ATTACH_FILTER 26
 #define SO_DETACH_FILTER 27
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PEERNAME 28
 #define SO_TIMESTAMP 29
 #define SCM_TIMESTAMP SO_TIMESTAMP
-
 #define SO_ACCEPTCONN 30
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PEERSEC 31
 #define SO_PASSSEC 34
 #define SO_TIMESTAMPNS 35
 #define SCM_TIMESTAMPNS SO_TIMESTAMPNS
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/sockios.h b/ndk/platforms/android-9/arch-x86/include/asm/sockios.h
index ebdfa98..d8bd1a3 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/sockios.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/sockios.h
@@ -7,17 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SOCKIOS_H
 #define _ASM_X86_SOCKIOS_H
-
 #define FIOSETOWN 0x8901
 #define SIOCSPGRP 0x8902
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOGETOWN 0x8903
 #define SIOCGPGRP 0x8904
 #define SIOCATMARK 0x8905
 #define SIOCGSTAMP 0x8906  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGSTAMPNS 0x8907  
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/spinlock.h b/ndk/platforms/android-9/arch-x86/include/asm/spinlock.h
index 10d123a..286bf86 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/spinlock.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/spinlock.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "spinlock_64.h"
+#include "spinlock_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/spinlock_32.h b/ndk/platforms/android-9/arch-x86/include/asm/spinlock_32.h
index 171783e..5d2eb05 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/spinlock_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/spinlock_32.h
@@ -7,23 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SPINLOCK_H
 #define __ASM_SPINLOCK_H
-
 #include <asm/atomic.h>
 #include <asm/rwlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
 #include <asm/processor.h>
 #include <linux/compiler.h>
-
 #define CLI_STRING "cli"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STI_STRING "sti"
 #define CLI_STI_CLOBBERS
 #define CLI_STI_INPUT_ARGS
-
 #define _raw_spin_relax(lock) cpu_relax()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _raw_read_relax(lock) cpu_relax()
 #define _raw_write_relax(lock) cpu_relax()
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/spinlock_types.h b/ndk/platforms/android-9/arch-x86/include/asm/spinlock_types.h
index ab914c4..9af3cce 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/spinlock_types.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/spinlock_types.h
@@ -7,25 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SPINLOCK_TYPES_H
 #define __ASM_SPINLOCK_TYPES_H
-
 #ifndef __LINUX_SPINLOCK_TYPES_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef struct {
  unsigned int slock;
 } raw_spinlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RAW_SPIN_LOCK_UNLOCKED { 1 }
-
 typedef struct {
  unsigned int lock;
 } raw_rwlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS }
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/stat.h b/ndk/platforms/android-9/arch-x86/include/asm/stat.h
index 837d716..3878c88 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/stat.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/stat.h
@@ -7,114 +7,85 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_STAT_H
 #define _ASM_X86_STAT_H
-
 #define STAT_HAVE_NSEC 1
-
-#ifdef __i386__
 struct stat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_dev;
  unsigned long st_ino;
  unsigned short st_mode;
  unsigned short st_nlink;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_uid;
  unsigned short st_gid;
  unsigned long st_rdev;
  unsigned long st_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_blksize;
  unsigned long st_blocks;
  unsigned long st_atime;
  unsigned long st_atime_nsec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_mtime;
  unsigned long st_mtime_nsec;
  unsigned long st_ctime;
  unsigned long st_ctime_nsec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused4;
  unsigned long __unused5;
 };
-
 #define STAT64_HAS_BROKEN_ST_INO 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct stat64 {
  unsigned long long st_dev;
  unsigned char __pad0[4];
-
  unsigned long __st_ino;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int st_mode;
  unsigned int st_nlink;
-
  unsigned long st_uid;
  unsigned long st_gid;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long long st_rdev;
  unsigned char __pad3[4];
-
  long long st_size;
  unsigned long st_blksize;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long long st_blocks;
-
  unsigned long st_atime;
  unsigned long st_atime_nsec;
-
  unsigned long st_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int st_mtime_nsec;
-
  unsigned long st_ctime;
  unsigned long st_ctime_nsec;
-
  unsigned long long st_ino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
-#else
-
-struct stat {
- unsigned long st_dev;
- unsigned long st_ino;
- unsigned long st_nlink;
-
- unsigned int st_mode;
- unsigned int st_uid;
- unsigned int st_gid;
- unsigned int __pad0;
- unsigned long st_rdev;
- long st_size;
- long st_blksize;
- long st_blocks;
-
- unsigned long st_atime;
- unsigned long st_atime_nsec;
- unsigned long st_mtime;
- unsigned long st_mtime_nsec;
- unsigned long st_ctime;
- unsigned long st_ctime_nsec;
- long __unused[3];
-};
-#endif
-
 struct __old_kernel_stat {
  unsigned short st_dev;
  unsigned short st_ino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_mode;
  unsigned short st_nlink;
  unsigned short st_uid;
  unsigned short st_gid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_rdev;
-#ifdef __i386__
  unsigned long st_size;
  unsigned long st_atime;
  unsigned long st_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_ctime;
-#else
- unsigned int st_size;
- unsigned int st_atime;
- unsigned int st_mtime;
- unsigned int st_ctime;
-#endif
 };
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/statfs.h b/ndk/platforms/android-9/arch-x86/include/asm/statfs.h
index 592d864..7472605 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/statfs.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/statfs.h
@@ -7,56 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_STATFS_H
 #define _ASM_X86_STATFS_H
-
-#ifdef __i386__
 #include <asm-generic/statfs.h>
-#else
-
-struct statfs {
- long f_type;
- long f_bsize;
- long f_blocks;
- long f_bfree;
- long f_bavail;
- long f_files;
- long f_ffree;
- __kernel_fsid_t f_fsid;
- long f_namelen;
- long f_frsize;
- long f_spare[5];
-};
-
-struct statfs64 {
- long f_type;
- long f_bsize;
- long f_blocks;
- long f_bfree;
- long f_bavail;
- long f_files;
- long f_ffree;
- __kernel_fsid_t f_fsid;
- long f_namelen;
- long f_frsize;
- long f_spare[5];
-};
-
-struct compat_statfs64 {
- __u32 f_type;
- __u32 f_bsize;
- __u64 f_blocks;
- __u64 f_bfree;
- __u64 f_bavail;
- __u64 f_files;
- __u64 f_ffree;
- __kernel_fsid_t f_fsid;
- __u32 f_namelen;
- __u32 f_frsize;
- __u32 f_spare[5];
-} __attribute__((packed));
-
 #endif
-#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/string.h b/ndk/platforms/android-9/arch-x86/include/asm/string.h
index 92fa291..874b2f0 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/string.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/string.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "string_64.h"
+#include "string_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/string_32.h b/ndk/platforms/android-9/arch-x86/include/asm/string_32.h
index 58a72d7..3063858 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/string_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/string_32.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_STRING_H_
 #define _I386_STRING_H_
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/swiotlb.h b/ndk/platforms/android-9/arch-x86/include/asm/swiotlb.h
index 5ee37b3..79bd3e7 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/swiotlb.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/swiotlb.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_SWIOTLB_H
 #define _ASM_SWIOTLB_H 1
-
 #include <asm/dma-mapping.h>
-
 #define swiotlb 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/system.h b/ndk/platforms/android-9/arch-x86/include/asm/system.h
index 834193b..12767cd 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/system.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/system.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "system_64.h"
+#include "system_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/system_32.h b/ndk/platforms/android-9/arch-x86/include/asm/system_32.h
index d799ae6..ec01cc6 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/system_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/system_32.h
@@ -7,27 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SYSTEM_H
 #define __ASM_SYSTEM_H
-
 #include <linux/kernel.h>
 #include <asm/segment.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cpufeature.h>
 #include <asm/cmpxchg.h>
-
 #define nop() __asm__ __volatile__ ("nop")
 #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
 #define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
 #define read_barrier_depends() do { } while(0)
 #define smp_mb() barrier()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_rmb() barrier()
 #define smp_wmb() barrier()
 #define smp_read_barrier_depends() do { } while(0)
 #define set_mb(var, value) do { var = value; barrier(); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/irqflags.h>
 #define HAVE_DISABLE_HLT
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/termbits.h b/ndk/platforms/android-9/arch-x86/include/asm/termbits.h
index 6d7c5e8..0d03ddd 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/termbits.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/termbits.h
@@ -7,195 +7,230 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TERMBITS_H
 #define _ASM_X86_TERMBITS_H
-
 #include <linux/posix_types.h>
-
 typedef unsigned char cc_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned int speed_t;
 typedef unsigned int tcflag_t;
-
 #define NCCS 19
 struct termios {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_iflag;
  tcflag_t c_oflag;
  tcflag_t c_cflag;
  tcflag_t c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cc_t c_line;
  cc_t c_cc[NCCS];
 };
-
 struct termios2 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_iflag;
  tcflag_t c_oflag;
  tcflag_t c_cflag;
  tcflag_t c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cc_t c_line;
  cc_t c_cc[NCCS];
  speed_t c_ispeed;
  speed_t c_ospeed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ktermios {
  tcflag_t c_iflag;
  tcflag_t c_oflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_cflag;
  tcflag_t c_lflag;
  cc_t c_line;
  cc_t c_cc[NCCS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  speed_t c_ispeed;
  speed_t c_ospeed;
 };
-
 #define VINTR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VQUIT 1
 #define VERASE 2
 #define VKILL 3
 #define VEOF 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VTIME 5
 #define VMIN 6
 #define VSWTC 7
 #define VSTART 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VSTOP 9
 #define VSUSP 10
 #define VEOL 11
 #define VREPRINT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDISCARD 13
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IGNBRK 0000001
 #define BRKINT 0000002
 #define IGNPAR 0000004
 #define PARMRK 0000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPCK 0000020
 #define ISTRIP 0000040
 #define INLCR 0000100
 #define IGNCR 0000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICRNL 0000400
 #define IUCLC 0001000
 #define IXON 0002000
 #define IXANY 0004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IXOFF 0010000
 #define IMAXBEL 0020000
 #define IUTF8 0040000
-
 #define OPOST 0000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OLCUC 0000002
 #define ONLCR 0000004
 #define OCRNL 0000010
 #define ONOCR 0000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONLRET 0000040
 #define OFILL 0000100
 #define OFDEL 0000200
 #define NLDLY 0000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL0 0000000
 #define NL1 0000400
 #define CRDLY 0003000
 #define CR0 0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CR1 0001000
 #define CR2 0002000
 #define CR3 0003000
 #define TABDLY 0014000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TAB0 0000000
 #define TAB1 0004000
 #define TAB2 0010000
 #define TAB3 0014000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XTABS 0014000
 #define BSDLY 0020000
 #define BS0 0000000
 #define BS1 0020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VTDLY 0040000
 #define VT0 0000000
 #define VT1 0040000
 #define FFDLY 0100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF0 0000000
 #define FF1 0100000
-
 #define CBAUD 0010017
 #define B0 0000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B50 0000001
 #define B75 0000002
 #define B110 0000003
 #define B134 0000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B150 0000005
 #define B200 0000006
 #define B300 0000007
 #define B600 0000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B1200 0000011
 #define B1800 0000012
 #define B2400 0000013
 #define B4800 0000014
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B9600 0000015
 #define B19200 0000016
 #define B38400 0000017
 #define EXTA B19200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXTB B38400
 #define CSIZE 0000060
 #define CS5 0000000
 #define CS6 0000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CS7 0000040
 #define CS8 0000060
 #define CSTOPB 0000100
 #define CREAD 0000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PARENB 0000400
 #define PARODD 0001000
 #define HUPCL 0002000
 #define CLOCAL 0004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CBAUDEX 0010000
 #define BOTHER 0010000  
 #define B57600 0010001
 #define B115200 0010002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B230400 0010003
 #define B460800 0010004
 #define B500000 0010005
 #define B576000 0010006
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B921600 0010007
 #define B1000000 0010010
 #define B1152000 0010011
 #define B1500000 0010012
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B2000000 0010013
 #define B2500000 0010014
 #define B3000000 0010015
 #define B3500000 0010016
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B4000000 0010017
 #define CIBAUD 002003600000  
 #define CMSPAR 010000000000  
 #define CRTSCTS 020000000000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IBSHIFT 16  
-
 #define ISIG 0000001
 #define ICANON 0000002
 #define XCASE 0000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHO 0000010
 #define ECHOE 0000020
 #define ECHOK 0000040
 #define ECHONL 0000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NOFLSH 0000200
 #define TOSTOP 0000400
 #define ECHOCTL 0001000
 #define ECHOPRT 0002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHOKE 0004000
 #define FLUSHO 0010000
 #define PENDIN 0040000
 #define IEXTEN 0100000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCOOFF 0
 #define TCOON 1
 #define TCIOFF 2
 #define TCION 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCIFLUSH 0
 #define TCOFLUSH 1
 #define TCIOFLUSH 2
-
 #define TCSANOW 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/termios.h b/ndk/platforms/android-9/arch-x86/include/asm/termios.h
index 6542c78..2aca2fc 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/termios.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/termios.h
@@ -7,61 +7,94 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TERMIOS_H
 #define _ASM_X86_TERMIOS_H
-
 #include <asm/termbits.h>
 #include <asm/ioctls.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct winsize {
  unsigned short ws_row;
  unsigned short ws_col;
  unsigned short ws_xpixel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ws_ypixel;
 };
-
 #define NCC 8
 struct termio {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short c_iflag;
  unsigned short c_oflag;
  unsigned short c_cflag;
  unsigned short c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char c_line;
  unsigned char c_cc[NCC];
 };
-
 #define TIOCM_LE 0x001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_DTR 0x002
 #define TIOCM_RTS 0x004
 #define TIOCM_ST 0x008
 #define TIOCM_SR 0x010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_CTS 0x020
 #define TIOCM_CAR 0x040
 #define TIOCM_RNG 0x080
 #define TIOCM_DSR 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_CD TIOCM_CAR
 #define TIOCM_RI TIOCM_RNG
 #define TIOCM_OUT1 0x2000
 #define TIOCM_OUT2 0x4000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_LOOP 0x8000
-
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_HCI 15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_PPP 3
 #define N_STRIP 4
 #define N_AX25 5
 #define N_X25 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_6PACK 7
 #define N_MASC 8  
 #define N_R3964 9  
 #define N_PROFIBUS_FDL 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_IRDA 11  
 #define N_SMSBLOCK 12  
 #define N_HDLC 13  
 #define N_SYNC_PPP 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_HCI 15  
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/thread_info.h b/ndk/platforms/android-9/arch-x86/include/asm/thread_info.h
index ff46b08..d15e362 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/thread_info.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/thread_info.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "thread_info_64.h"
+#include "thread_info_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/thread_info_32.h b/ndk/platforms/android-9/arch-x86/include/asm/thread_info_32.h
index 5664ef8..07fc66b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/thread_info_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/thread_info_32.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_THREAD_INFO_H
 #define _ASM_THREAD_INFO_H
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/tlbflush.h b/ndk/platforms/android-9/arch-x86/include/asm/tlbflush.h
index fd6b226..fd576df 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/tlbflush.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/tlbflush.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "tlbflush_64.h"
+#include "tlbflush_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/tlbflush_32.h b/ndk/platforms/android-9/arch-x86/include/asm/tlbflush_32.h
index 8ebff80..e0ab132 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/tlbflush_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/tlbflush_32.h
@@ -7,37 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_TLBFLUSH_H
 #define _I386_TLBFLUSH_H
-
 #include <linux/mm.h>
 #include <asm/processor.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __flush_tlb() __native_flush_tlb()
 #define __flush_tlb_global() __native_flush_tlb_global()
 #define __flush_tlb_single(addr) __native_flush_tlb_single(addr)
-
 #define __native_flush_tlb()   do {   unsigned int tmpreg;     __asm__ __volatile__(   "movl %%cr3, %0;              \n"   "movl %0, %%cr3;  # flush TLB \n"   : "=r" (tmpreg)   :: "memory");   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __native_flush_tlb_global()   do {   unsigned int tmpreg, cr4, cr4_orig;     __asm__ __volatile__(   "movl %%cr4, %2;  # turn off PGE     \n"   "movl %2, %1;                        \n"   "andl %3, %1;                        \n"   "movl %1, %%cr4;                     \n"   "movl %%cr3, %0;                     \n"   "movl %0, %%cr3;  # flush TLB        \n"   "movl %2, %%cr4;  # turn PGE back on \n"   : "=&r" (tmpreg), "=&r" (cr4), "=&r" (cr4_orig)   : "i" (~X86_CR4_PGE)   : "memory");   } while (0)
-
 #define __native_flush_tlb_single(addr)   __asm__ __volatile__("invlpg (%0)" ::"r" (addr) : "memory")
-
 #define __flush_tlb_all()   do {   if (cpu_has_pge)   __flush_tlb_global();   else   __flush_tlb();   } while (0)
-
 #define cpu_has_invlpg (boot_cpu_data.x86 > 3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __flush_tlb_one(addr)   do {   if (cpu_has_invlpg)   __flush_tlb_single(addr);   else   __flush_tlb();   } while (0)
-
 #define TLB_FLUSH_ALL 0xffffffff
-
 #include <linux/sched.h>
-
 #define flush_tlb() __flush_tlb()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_tlb_all() __flush_tlb_all()
 #define local_flush_tlb() __flush_tlb()
-
 #define flush_tlb_others(mask, mm, va)   native_flush_tlb_others(&mask, mm, va)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/tsc.h b/ndk/platforms/android-9/arch-x86/include/asm/tsc.h
index 2528cd1..e99a1a5 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/tsc.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/tsc.h
@@ -7,16 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TSC_H
 #define _ASM_X86_TSC_H
-
 #include <asm/processor.h>
-
 #define NS_SCALE 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define US_SCALE 32  
-
 typedef unsigned long long cycles_t;
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/types.h b/ndk/platforms/android-9/arch-x86/include/asm/types.h
index 4af92b0..b71d89b 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/types.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/types.h
@@ -7,34 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TYPES_H
 #define _ASM_X86_TYPES_H
-
 #ifndef __ASSEMBLY__
-
 typedef unsigned short umode_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ char __s8;
 typedef unsigned char __u8;
-
 typedef __signed__ short __s16;
 typedef unsigned short __u16;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
-
-#ifdef __i386__
 #ifdef __GNUC__
 __extension__ typedef __signed__ long long __s64;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 __extension__ typedef unsigned long long __u64;
 #endif
-#else
-typedef __signed__ long long __s64;
-typedef unsigned long long __u64;
 #endif
-
 #endif
-
-#endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/uaccess.h b/ndk/platforms/android-9/arch-x86/include/asm/uaccess.h
index b2bec69..b167f6d 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/uaccess.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/uaccess.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#include "uaccess_64.h"
+#include "uaccess_32.h"
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/uaccess_32.h b/ndk/platforms/android-9/arch-x86/include/asm/uaccess_32.h
index 9827fc4..47e4dcd 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/uaccess_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/uaccess_32.h
@@ -7,77 +7,68 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __i386_UACCESS_H
 #define __i386_UACCESS_H
-
 #include <linux/errno.h>
 #include <linux/thread_info.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/prefetch.h>
 #include <linux/string.h>
 #include <asm/page.h>
-
 #define VERIFY_READ 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VERIFY_WRITE 1
-
 #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
-
 #define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFFUL)
 #define USER_DS MAKE_MM_SEG(PAGE_OFFSET)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define get_ds() (KERNEL_DS)
 #define get_fs() (current_thread_info()->addr_limit)
 #define set_fs(x) (current_thread_info()->addr_limit = (x))
-
 #define segment_eq(a,b) ((a).seg == (b).seg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __addr_ok(addr) ((unsigned long __force)(addr) < (current_thread_info()->addr_limit.seg))
-
 #define __range_ok(addr,size) ({   unsigned long flag,roksum;   __chk_user_ptr(addr);   asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0"   :"=&r" (flag), "=r" (roksum)   :"1" (addr),"g" ((int)(size)),"rm" (current_thread_info()->addr_limit.seg));   flag; })
-
 #define access_ok(type,addr,size) (likely(__range_ok(addr,size) == 0))
-
 struct exception_table_entry
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned long insn, fixup;
 };
-
 #define __get_user_x(size,ret,x,ptr)   __asm__ __volatile__("call __get_user_" #size   :"=a" (ret),"=d" (x)   :"0" (ptr))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define get_user(x,ptr)  ({ int __ret_gu;   unsigned long __val_gu;   __chk_user_ptr(ptr);   switch(sizeof (*(ptr))) {   case 1: __get_user_x(1,__ret_gu,__val_gu,ptr); break;   case 2: __get_user_x(2,__ret_gu,__val_gu,ptr); break;   case 4: __get_user_x(4,__ret_gu,__val_gu,ptr); break;   default: __get_user_x(X,__ret_gu,__val_gu,ptr); break;   }   (x) = (__typeof__(*(ptr)))__val_gu;   __ret_gu;  })
-
 #define __put_user_1(x, ptr) __asm__ __volatile__("call __put_user_1":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
 #define __put_user_2(x, ptr) __asm__ __volatile__("call __put_user_2":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
 #define __put_user_4(x, ptr) __asm__ __volatile__("call __put_user_4":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __put_user_8(x, ptr) __asm__ __volatile__("call __put_user_8":"=a" (__ret_pu):"A" ((typeof(*(ptr)))(x)), "c" (ptr))
 #define __put_user_X(x, ptr) __asm__ __volatile__("call __put_user_X":"=a" (__ret_pu):"c" (ptr))
-
 #define put_user(x,ptr)  ({   int __ret_pu;   __typeof__(*(ptr)) __pus_tmp = x;   __ret_pu=0;   if(unlikely(__copy_to_user_ll(ptr, &__pus_tmp,   sizeof(*(ptr))) != 0))   __ret_pu=-EFAULT;   __ret_pu;   })
-
 #define __get_user(x,ptr)   __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __put_user(x,ptr)   __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
-
 #define __put_user_nocheck(x,ptr,size)  ({   long __pu_err;   __put_user_size((x),(ptr),(size),__pu_err,-EFAULT);   __pu_err;  })
-
 #define __put_user_u64(x, addr, err)   __asm__ __volatile__(   "1:	movl %%eax,0(%2)\n"   "2:	movl %%edx,4(%2)\n"   "3:\n"   ".section .fixup,\"ax\"\n"   "4:	movl %3,%0\n"   "	jmp 3b\n"   ".previous\n"   ".section __ex_table,\"a\"\n"   "	.align 4\n"   "	.long 1b,4b\n"   "	.long 2b,4b\n"   ".previous"   : "=r"(err)   : "A" (x), "r" (addr), "i"(-EFAULT), "0"(err))
-
 #define __put_user_size(x,ptr,size,retval,errret)  do {   __typeof__(*(ptr)) __pus_tmp = x;   retval = 0;     if(unlikely(__copy_to_user_ll(ptr, &__pus_tmp, size) != 0))   retval = errret;  } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __large_struct { unsigned long buf[100]; };
 #define __m(x) (*(struct __large_struct __user *)(x))
-
 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret)   __asm__ __volatile__(   "1:	mov"itype" %"rtype"1,%2\n"   "2:\n"   ".section .fixup,\"ax\"\n"   "3:	movl %3,%0\n"   "	jmp 2b\n"   ".previous\n"   ".section __ex_table,\"a\"\n"   "	.align 4\n"   "	.long 1b,3b\n"   ".previous"   : "=r"(err)   : ltype (x), "m"(__m(addr)), "i"(errret), "0"(err))
-
 #define __get_user_nocheck(x,ptr,size)  ({   long __gu_err;   unsigned long __gu_val;   __get_user_size(__gu_val,(ptr),(size),__gu_err,-EFAULT);  (x) = (__typeof__(*(ptr)))__gu_val;   __gu_err;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_user_size(x,ptr,size,retval,errret)  do {   retval = 0;   __chk_user_ptr(ptr);   switch (size) {   case 1: __get_user_asm(x,ptr,retval,"b","b","=q",errret);break;   case 2: __get_user_asm(x,ptr,retval,"w","w","=r",errret);break;   case 4: __get_user_asm(x,ptr,retval,"l","","=r",errret);break;   default: (x) = __get_user_bad();   }  } while (0)
-
 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret)   __asm__ __volatile__(   "1:	mov"itype" %2,%"rtype"1\n"   "2:\n"   ".section .fixup,\"ax\"\n"   "3:	movl %3,%0\n"   "	xor"itype" %"rtype"1,%"rtype"1\n"   "	jmp 2b\n"   ".previous\n"   ".section __ex_table,\"a\"\n"   "	.align 4\n"   "	.long 1b,3b\n"   ".previous"   : "=r"(err), ltype (x)   : "m"(__m(addr)), "i"(errret), "0"(err))
-
 #define ARCH_HAS_NOCACHE_UACCESS
-
 #define strlen_user(str) strnlen_user(str, LONG_MAX)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/unaligned.h b/ndk/platforms/android-9/arch-x86/include/asm/unaligned.h
index ce7a8a7..8f2287c 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/unaligned.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/unaligned.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_UNALIGNED_H
 #define _ASM_X86_UNALIGNED_H
-
 #define get_unaligned(ptr) (*(ptr))
-
 #define put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/unistd.h b/ndk/platforms/android-9/arch-x86/include/asm/unistd.h
index 769f836..d109f5f 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/unistd.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/unistd.h
@@ -7,10 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#ifdef __i386__
 #include "unistd_32.h"
-#else
-#include "unistd_64.h"
-#endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/unistd_32.h b/ndk/platforms/android-9/arch-x86/include/asm/unistd_32.h
index b3d8b19..4536585 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/unistd_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/unistd_32.h
@@ -7,335 +7,419 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_I386_UNISTD_H_
 #define _ASM_I386_UNISTD_H_
-
 #define __NR_restart_syscall 0
 #define __NR_exit 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fork 2
 #define __NR_read 3
 #define __NR_write 4
 #define __NR_open 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_close 6
 #define __NR_waitpid 7
 #define __NR_creat 8
 #define __NR_link 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlink 10
 #define __NR_execve 11
 #define __NR_chdir 12
 #define __NR_time 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mknod 14
 #define __NR_chmod 15
 #define __NR_lchown 16
 #define __NR_break 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_oldstat 18
 #define __NR_lseek 19
 #define __NR_getpid 20
 #define __NR_mount 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_umount 22
 #define __NR_setuid 23
 #define __NR_getuid 24
 #define __NR_stime 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ptrace 26
 #define __NR_alarm 27
 #define __NR_oldfstat 28
 #define __NR_pause 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_utime 30
 #define __NR_stty 31
 #define __NR_gtty 32
 #define __NR_access 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_nice 34
 #define __NR_ftime 35
 #define __NR_sync 36
 #define __NR_kill 37
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rename 38
 #define __NR_mkdir 39
 #define __NR_rmdir 40
 #define __NR_dup 41
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pipe 42
 #define __NR_times 43
 #define __NR_prof 44
 #define __NR_brk 45
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setgid 46
 #define __NR_getgid 47
 #define __NR_signal 48
 #define __NR_geteuid 49
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getegid 50
 #define __NR_acct 51
 #define __NR_umount2 52
 #define __NR_lock 53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioctl 54
 #define __NR_fcntl 55
 #define __NR_mpx 56
 #define __NR_setpgid 57
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ulimit 58
 #define __NR_oldolduname 59
 #define __NR_umask 60
 #define __NR_chroot 61
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ustat 62
 #define __NR_dup2 63
 #define __NR_getppid 64
 #define __NR_getpgrp 65
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setsid 66
 #define __NR_sigaction 67
 #define __NR_sgetmask 68
 #define __NR_ssetmask 69
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setreuid 70
 #define __NR_setregid 71
 #define __NR_sigsuspend 72
 #define __NR_sigpending 73
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sethostname 74
 #define __NR_setrlimit 75
 #define __NR_getrlimit 76  
 #define __NR_getrusage 77
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_gettimeofday 78
 #define __NR_settimeofday 79
 #define __NR_getgroups 80
 #define __NR_setgroups 81
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_select 82
 #define __NR_symlink 83
 #define __NR_oldlstat 84
 #define __NR_readlink 85
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_uselib 86
 #define __NR_swapon 87
 #define __NR_reboot 88
 #define __NR_readdir 89
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mmap 90
 #define __NR_munmap 91
 #define __NR_truncate 92
 #define __NR_ftruncate 93
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchmod 94
 #define __NR_fchown 95
 #define __NR_getpriority 96
 #define __NR_setpriority 97
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_profil 98
 #define __NR_statfs 99
 #define __NR_fstatfs 100
 #define __NR_ioperm 101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_socketcall 102
 #define __NR_syslog 103
 #define __NR_setitimer 104
 #define __NR_getitimer 105
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_stat 106
 #define __NR_lstat 107
 #define __NR_fstat 108
 #define __NR_olduname 109
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_iopl 110
 #define __NR_vhangup 111
 #define __NR_idle 112
 #define __NR_vm86old 113
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_wait4 114
 #define __NR_swapoff 115
 #define __NR_sysinfo 116
 #define __NR_ipc 117
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fsync 118
 #define __NR_sigreturn 119
 #define __NR_clone 120
 #define __NR_setdomainname 121
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_uname 122
 #define __NR_modify_ldt 123
 #define __NR_adjtimex 124
 #define __NR_mprotect 125
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sigprocmask 126
 #define __NR_create_module 127
 #define __NR_init_module 128
 #define __NR_delete_module 129
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_get_kernel_syms 130
 #define __NR_quotactl 131
 #define __NR_getpgid 132
 #define __NR_fchdir 133
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_bdflush 134
 #define __NR_sysfs 135
 #define __NR_personality 136
 #define __NR_afs_syscall 137  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setfsuid 138
 #define __NR_setfsgid 139
 #define __NR__llseek 140
 #define __NR_getdents 141
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR__newselect 142
 #define __NR_flock 143
 #define __NR_msync 144
 #define __NR_readv 145
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_writev 146
 #define __NR_getsid 147
 #define __NR_fdatasync 148
 #define __NR__sysctl 149
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mlock 150
 #define __NR_munlock 151
 #define __NR_mlockall 152
 #define __NR_munlockall 153
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setparam 154
 #define __NR_sched_getparam 155
 #define __NR_sched_setscheduler 156
 #define __NR_sched_getscheduler 157
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_yield 158
 #define __NR_sched_get_priority_max 159
 #define __NR_sched_get_priority_min 160
 #define __NR_sched_rr_get_interval 161
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_nanosleep 162
 #define __NR_mremap 163
 #define __NR_setresuid 164
 #define __NR_getresuid 165
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_vm86 166
 #define __NR_query_module 167
 #define __NR_poll 168
 #define __NR_nfsservctl 169
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setresgid 170
 #define __NR_getresgid 171
 #define __NR_prctl 172
 #define __NR_rt_sigreturn 173
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigaction 174
 #define __NR_rt_sigprocmask 175
 #define __NR_rt_sigpending 176
 #define __NR_rt_sigtimedwait 177
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigqueueinfo 178
 #define __NR_rt_sigsuspend 179
 #define __NR_pread64 180
 #define __NR_pwrite64 181
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_chown 182
 #define __NR_getcwd 183
 #define __NR_capget 184
 #define __NR_capset 185
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sigaltstack 186
 #define __NR_sendfile 187
 #define __NR_getpmsg 188  
 #define __NR_putpmsg 189  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_vfork 190
 #define __NR_ugetrlimit 191  
 #define __NR_mmap2 192
 #define __NR_truncate64 193
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ftruncate64 194
 #define __NR_stat64 195
 #define __NR_lstat64 196
 #define __NR_fstat64 197
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lchown32 198
 #define __NR_getuid32 199
 #define __NR_getgid32 200
 #define __NR_geteuid32 201
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getegid32 202
 #define __NR_setreuid32 203
 #define __NR_setregid32 204
 #define __NR_getgroups32 205
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setgroups32 206
 #define __NR_fchown32 207
 #define __NR_setresuid32 208
 #define __NR_getresuid32 209
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setresgid32 210
 #define __NR_getresgid32 211
 #define __NR_chown32 212
 #define __NR_setuid32 213
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setgid32 214
 #define __NR_setfsuid32 215
 #define __NR_setfsgid32 216
 #define __NR_pivot_root 217
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mincore 218
 #define __NR_madvise 219
 #define __NR_madvise1 219  
 #define __NR_getdents64 220
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fcntl64 221
-
 #define __NR_gettid 224
 #define __NR_readahead 225
 #define __NR_setxattr 226
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lsetxattr 227
 #define __NR_fsetxattr 228
 #define __NR_getxattr 229
 #define __NR_lgetxattr 230
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fgetxattr 231
 #define __NR_listxattr 232
 #define __NR_llistxattr 233
 #define __NR_flistxattr 234
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_removexattr 235
 #define __NR_lremovexattr 236
 #define __NR_fremovexattr 237
 #define __NR_tkill 238
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile64 239
 #define __NR_futex 240
 #define __NR_sched_setaffinity 241
 #define __NR_sched_getaffinity 242
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_thread_area 243
 #define __NR_get_thread_area 244
 #define __NR_io_setup 245
 #define __NR_io_destroy 246
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_getevents 247
 #define __NR_io_submit 248
 #define __NR_io_cancel 249
 #define __NR_fadvise64 250
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_exit_group 252
 #define __NR_lookup_dcookie 253
 #define __NR_epoll_create 254
 #define __NR_epoll_ctl 255
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_wait 256
 #define __NR_remap_file_pages 257
 #define __NR_set_tid_address 258
 #define __NR_timer_create 259
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_settime (__NR_timer_create+1)
 #define __NR_timer_gettime (__NR_timer_create+2)
 #define __NR_timer_getoverrun (__NR_timer_create+3)
 #define __NR_timer_delete (__NR_timer_create+4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_settime (__NR_timer_create+5)
 #define __NR_clock_gettime (__NR_timer_create+6)
 #define __NR_clock_getres (__NR_timer_create+7)
 #define __NR_clock_nanosleep (__NR_timer_create+8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_statfs64 268
 #define __NR_fstatfs64 269
 #define __NR_tgkill 270
 #define __NR_utimes 271
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fadvise64_64 272
 #define __NR_vserver 273
 #define __NR_mbind 274
 #define __NR_get_mempolicy 275
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_mempolicy 276
 #define __NR_mq_open 277
 #define __NR_mq_unlink (__NR_mq_open+1)
 #define __NR_mq_timedsend (__NR_mq_open+2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_timedreceive (__NR_mq_open+3)
 #define __NR_mq_notify (__NR_mq_open+4)
 #define __NR_mq_getsetattr (__NR_mq_open+5)
 #define __NR_kexec_load 283
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_waitid 284
-
 #define __NR_add_key 286
 #define __NR_request_key 287
 #define __NR_keyctl 288
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioprio_set 289
 #define __NR_ioprio_get 290
 #define __NR_inotify_init 291
 #define __NR_inotify_add_watch 292
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_rm_watch 293
 #define __NR_migrate_pages 294
 #define __NR_openat 295
 #define __NR_mkdirat 296
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mknodat 297
 #define __NR_fchownat 298
 #define __NR_futimesat 299
 #define __NR_fstatat64 300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlinkat 301
 #define __NR_renameat 302
 #define __NR_linkat 303
 #define __NR_symlinkat 304
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_readlinkat 305
 #define __NR_fchmodat 306
 #define __NR_faccessat 307
 #define __NR_pselect6 308
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ppoll 309
 #define __NR_unshare 310
 #define __NR_set_robust_list 311
 #define __NR_get_robust_list 312
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_splice 313
 #define __NR_sync_file_range 314
 #define __NR_tee 315
 #define __NR_vmsplice 316
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_move_pages 317
 #define __NR_getcpu 318
 #define __NR_epoll_pwait 319
 #define __NR_utimensat 320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_signalfd 321
 #define __NR_timerfd 322
 #define __NR_eventfd 323
 #define __NR_fallocate 324
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define __NR_perf_event_open 364
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/user.h b/ndk/platforms/android-9/arch-x86/include/asm/user.h
index 980b0aa..054182ed 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/user.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/user.h
@@ -7,10 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
-#ifdef __i386__
 #include "user_32.h"
-#else
-#include "user_64.h"
-#endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/user32.h b/ndk/platforms/android-9/arch-x86/include/asm/user32.h
index 89eabb1..1549efd 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/user32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/user32.h
@@ -7,67 +7,79 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef USER32_H
 #define USER32_H 1
-
 struct user_i387_ia32_struct {
  u32 cwd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 swd;
  u32 twd;
  u32 fip;
  u32 fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 foo;
  u32 fos;
  u32 st_space[20];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user32_fxsr_struct {
  unsigned short cwd;
  unsigned short swd;
  unsigned short twd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short fop;
  int fip;
  int fcs;
  int foo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fos;
  int mxcsr;
  int reserved;
  int st_space[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int xmm_space[32];
  int padding[56];
 };
-
 struct user_regs_struct32 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ebx, ecx, edx, esi, edi, ebp, eax;
  unsigned short ds, __ds, es, __es;
  unsigned short fs, __fs, gs, __gs;
  __u32 orig_eax, eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short cs, __cs;
  __u32 eflags, esp;
  unsigned short ss, __ss;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user32 {
  struct user_regs_struct32 regs;
  int u_fpvalid;
-
  struct user_i387_ia32_struct i387;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 u_tsize;
  __u32 u_dsize;
  __u32 u_ssize;
  __u32 start_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 start_stack;
  __u32 signal;
  int reserved;
  __u32 u_ar0;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 u_fpstate;
  __u32 magic;
  char u_comm[32];
  int u_debugreg[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/user_32.h b/ndk/platforms/android-9/arch-x86/include/asm/user_32.h
index 8e0296c..6825b35 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/user_32.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/user_32.h
@@ -7,75 +7,85 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_USER_H
 #define _I386_USER_H
-
 #include <asm/page.h>
-
 struct user_i387_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long cwd;
  long swd;
  long twd;
  long fip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long fcs;
  long foo;
  long fos;
  long st_space[20];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct user_fxsr_struct {
  unsigned short cwd;
  unsigned short swd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short twd;
  unsigned short fop;
  long fip;
  long fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long foo;
  long fos;
  long mxcsr;
  long reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_space[32];
  long xmm_space[32];
  long padding[56];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user_regs_struct {
  long ebx, ecx, edx, esi, edi, ebp, eax;
  unsigned short ds, __ds, es, __es;
  unsigned short fs, __fs, gs, __gs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long orig_eax, eip;
  unsigned short cs, __cs;
  long eflags, esp;
  unsigned short ss, __ss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct user{
-
  struct user_regs_struct regs;
-
  int u_fpvalid;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct user_i387_struct i387;
-
  unsigned long int u_tsize;
  unsigned long int u_dsize;
  unsigned long int u_ssize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long start_code;
  unsigned long start_stack;
  long int signal;
  int reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct user_pt_regs * u_ar0;
-
  struct user_i387_struct* u_fpstate;
  unsigned long magic;
  char u_comm[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int u_debugreg[8];
 };
 #define NBPG PAGE_SIZE
 #define UPAGES 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HOST_TEXT_START_ADDR (u.start_code)
 #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/vm86.h b/ndk/platforms/android-9/arch-x86/include/asm/vm86.h
index d0e71f1..222a11e 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/vm86.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/vm86.h
@@ -7,107 +7,119 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_VM86_H
 #define _LINUX_VM86_H
-
 #define TF_MASK 0x00000100
 #define IF_MASK 0x00000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOPL_MASK 0x00003000
 #define NT_MASK 0x00004000
 #define VM_MASK 0  
 #define AC_MASK 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIF_MASK 0x00080000  
 #define VIP_MASK 0x00100000  
 #define ID_MASK 0x00200000
-
 #define BIOSSEG 0x0f000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_086 0
 #define CPU_186 1
 #define CPU_286 2
 #define CPU_386 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_486 4
 #define CPU_586 5
-
 #define VM86_TYPE(retval) ((retval) & 0xff)
 #define VM86_ARG(retval) ((retval) >> 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_SIGNAL 0  
 #define VM86_UNKNOWN 1  
 #define VM86_INTx 2  
 #define VM86_STI 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_PICRETURN 4  
 #define VM86_TRAP 6  
-
 #define VM86_PLUS_INSTALL_CHECK 0
 #define VM86_ENTER 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_ENTER_NO_BYPASS 2
 #define VM86_REQUEST_IRQ 3
 #define VM86_FREE_IRQ 4
 #define VM86_GET_IRQ_BITS 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_GET_AND_RESET_IRQ 6
-
 struct vm86_regs {
-
  long ebx;
  long ecx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long edx;
  long esi;
  long edi;
  long ebp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long eax;
  long __null_ds;
  long __null_es;
  long __null_fs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long __null_gs;
  long orig_eax;
  long eip;
  unsigned short cs, __csh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long eflags;
  long esp;
  unsigned short ss, __ssh;
-
  unsigned short es, __esh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ds, __dsh;
  unsigned short fs, __fsh;
  unsigned short gs, __gsh;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct revectored_struct {
  unsigned long __map[8];
 };
-
 struct vm86_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vm86_regs regs;
  unsigned long flags;
  unsigned long screen_bitmap;
  unsigned long cpu_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct revectored_struct int_revectored;
  struct revectored_struct int21_revectored;
 };
-
 #define VM86_SCREEN_BITMAP 0x0001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm86plus_info_struct {
  unsigned long force_return_for_pic:1;
  unsigned long vm86dbg_active:1;
  unsigned long vm86dbg_TFpendig:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long unused:28;
  unsigned long is_vm86pus:1;
  unsigned char vm86dbg_intxxtab[32];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm86plus_struct {
  struct vm86_regs regs;
  unsigned long flags;
  unsigned long screen_bitmap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long cpu_type;
  struct revectored_struct int_revectored;
  struct revectored_struct int21_revectored;
  struct vm86plus_info_struct vm86plus;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/voyager.h b/ndk/platforms/android-9/arch-x86/include/asm/voyager.h
index c6f50a9..364b211 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/voyager.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/voyager.h
@@ -7,431 +7,454 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #undef VOYAGER_DEBUG
 #undef VOYAGER_CAT_DEBUG
-
 #ifdef VOYAGER_DEBUG
 #define VDEBUG(x) printk x
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define VDEBUG(x)
 #endif
-
 #define VOYAGER_LEVEL5_AND_ABOVE 0x3435
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_LEVEL4 0x3360
-
 #define VOYAGER_DINO 0x43
-
 #define VOYAGER_MC_SETUP 0x96
-
 #define VOYAGER_CAT_CONFIG_PORT 0x97
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_CAT_DESELECT 0xff
 #define VOYAGER_SSPB_RELOCATION_PORT 0x98
-
 #define VOYAGER_CAT_IRCYC 0x01
-
 #define VOYAGER_CAT_DRCYC 0x02
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_CAT_RUN 0x0F
-
 #define VOYAGER_CAT_END 0x80
-
 #define VOYAGER_CAT_HOLD 0x90
-
 #define VOYAGER_CAT_STEP 0xE0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_CAT_CLEMSON 0xFF
-
 #define VOYAGER_CAT_HEADER 0x7F
-
 #define VOYAGER_MIN_MODULE 0x10
 #define VOYAGER_MAX_MODULE 0x1f
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_ASIC_ID_REG 0x00
 #define VOYAGER_ASIC_TYPE_REG 0x01
-
 #define VOYAGER_AUTO_INC_REG 0x02
 #define VOYAGER_AUTO_INC 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_NO_AUTO_INC 0xfb
 #define VOYAGER_SUBADDRDATA 0x03
 #define VOYAGER_SCANPATH 0x05
 #define VOYAGER_CONNECT_ASIC 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_DISCONNECT_ASIC 0xfe
 #define VOYAGER_SUBADDRLO 0x06
 #define VOYAGER_SUBADDRHI 0x07
 #define VOYAGER_SUBMODSELECT 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_SUBMODPRESENT 0x09
-
 #define VOYAGER_SUBADDR_LO 0xff
 #define VOYAGER_SUBADDR_HI 0xffff
-
 #define VOYAGER_MAX_SCAN_PATH 0x100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MAX_REG_SIZE 4
-
 #define VOYAGER_MAX_MODULES 16
-
 #define VOYAGER_MAX_ASICS_PER_MODULE 7
-
 #define VOYAGER_CAT_ID 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_PSI 0x1a
-
 #define VOYAGER_READ_CONFIG 0x1
 #define VOYAGER_WRITE_CONFIG 0x2
 #define VOYAGER_BYPASS 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct voyager_asic
 {
  __u8 asic_addr;
  __u8 asic_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 asic_id;
  __u8 jtag_id[4];
  __u8 asic_location;
  __u8 bit_location;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ireg_length;
  __u16 subaddr;
  struct voyager_asic *next;
 } voyager_asic_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct voyager_module {
  __u8 module_addr;
  __u8 scan_path_connected;
  __u16 ee_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 num_asics;
  __u16 inst_bits;
  __u16 largest_reg;
  __u16 smallest_reg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  voyager_asic_t *asic;
  struct voyager_module *submodule;
  struct voyager_module *next;
 } voyager_module_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct voyager_eeprom_hdr {
  __u8 module_id[4];
  __u8 version_id;
  __u8 config_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 boundry_id;
  __u16 ee_size;
  __u8 assembly[11];
  __u8 assembly_rev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 tracer[4];
  __u16 assembly_cksum;
  __u16 power_consump;
  __u16 num_asics;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 bist_time;
  __u16 err_log_offset;
  __u16 scan_path_offset;
  __u16 cct_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 log_length;
  __u16 xsum_end;
  __u8 reserved[4];
  __u8 sflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 part_number[13];
  __u8 version[10];
  __u8 signature[8];
  __u16 eeprom_chksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 data_stamp_offset;
  __u8 eflag ;
 } __attribute__((packed)) voyager_eprom_hdr_t;
-
 #define VOYAGER_EPROM_SIZE_OFFSET ((__u16)(&(((voyager_eprom_hdr_t *)0)->ee_size)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_XSUM_END_OFFSET 0x2a
-
 typedef struct voyager_sp_table {
  __u8 asic_id;
  __u8 bypass_flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 asic_data_offset;
  __u16 config_data_offset;
 } __attribute__((packed)) voyager_sp_table_t;
-
 typedef struct voyager_jtag_table {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 icode[4];
  __u8 runbist[4];
  __u8 intest[4];
  __u8 samp_preld[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ireg_len;
 } __attribute__((packed)) voyager_jtt_t;
-
 typedef struct voyager_asic_data_table {
  __u8 jtag_id[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 length_bsr;
  __u16 length_bist_reg;
  __u32 bist_clk;
  __u16 subaddr_bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 seed_bits;
  __u16 sig_bits;
  __u16 jtag_offset;
 } __attribute__((packed)) voyager_at_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_WCBIC0 0x41  
 #define VOYAGER_WCBIC1 0x49  
 #define VOYAGER_WCBIC2 0x51  
 #define VOYAGER_WCBIC3 0x59  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_WCBIC4 0x61  
 #define VOYAGER_WCBIC5 0x69  
 #define VOYAGER_WCBIC6 0x71  
 #define VOYAGER_WCBIC7 0x79  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_WCBIC_TOM_L 0x4
 #define VOYAGER_WCBIC_TOM_H 0x5
-
 #define VOYAGER_VMC1 0x81
 #define VOYAGER_VMC2 0x91
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_VMC3 0xa1
 #define VOYAGER_VMC4 0xb1
-
 #define VOYAGER_VMC_MEMORY_SETUP 0x9
 #define VMC_Interleaving 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_4Way 0x02
 #define VMC_EvenCacheLines 0x04
 #define VMC_HighLine 0x08
 #define VMC_Start0_Enable 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_Start1_Enable 0x40
 #define VMC_Vremap 0x80
 #define VOYAGER_VMC_BANK_DENSITY 0xa
 #define VMC_BANK_EMPTY 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_BANK_4MB 1
 #define VMC_BANK_16MB 2
 #define VMC_BANK_64MB 3
 #define VMC_BANK0_MASK 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_BANK1_MASK 0x0C
 #define VMC_BANK2_MASK 0x30
 #define VMC_BANK3_MASK 0xC0
-
 #define VOYAGER_MMC_ASIC_ID 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MMC_MEMORY0_MODULE 0x14
 #define VOYAGER_MMC_MEMORY1_MODULE 0x15
-
 #define VOYAGER_MMA_ASIC_ID 2
-
 #define VOYAGER_QUAD_BASEBOARD 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_QUAD_QDATA0 1
 #define VOYAGER_QUAD_QDATA1 2
 #define VOYAGER_QUAD_QABC 3
-
 #define VOYAGER_PROCESSOR_PRESENT_MASK 0x88a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MEMORY_CLICKMAP 0xa23
 #define VOYAGER_DUMP_LOCATION 0xb1a
-
 #define VOYAGER_SUS_IN_CONTROL_PORT 0x3ff
 #define VOYAGER_IN_CONTROL_FLAG 0x80
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_PSI_STATUS_REG 0x08
 #define PSI_DC_FAIL 0x01
 #define PSI_MON 0x02
 #define PSI_FAULT 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_ALARM 0x08
 #define PSI_CURRENT 0x10
 #define PSI_DVM 0x20
 #define PSI_PSCFAULT 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_STAT_CHG 0x80
-
 #define VOYAGER_PSI_SUPPLY_REG 0x8000
-
 #define PSI_FAIL_DC 0x01
 #define PSI_FAIL_AC 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_MON_INT 0x04
 #define PSI_SWITCH_OFF 0x08
 #define PSI_HX_OFF 0x10
 #define PSI_SECURITY 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_CMOS_BATT_LOW 0x40
 #define PSI_CMOS_BATT_FAIL 0x80
-
 #define PSI_CLR_SWITCH_OFF 0x13
 #define PSI_CLR_HX_OFF 0x14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_CLR_CMOS_BATT_FAIL 0x17
-
 #define VOYAGER_PSI_MASK 0x8001
 #define PSI_MASK_MASK 0x10
-
 #define VOYAGER_PSI_AC_FAIL_REG 0x8004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AC_FAIL_STAT_CHANGE 0x80
-
 #define VOYAGER_PSI_GENERAL_REG 0x8007
-
 #define PSI_SWITCH_ON 0x01
 #define PSI_SWITCH_ENABLED 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_ALARM_ENABLED 0x08
 #define PSI_SECURE_ENABLED 0x10
 #define PSI_COLD_RESET 0x20
 #define PSI_COLD_START 0x80
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_POWER_DOWN 0x10
 #define PSI_SWITCH_DISABLE 0x01
 #define PSI_SWITCH_ENABLE 0x11
 #define PSI_CLEAR 0x12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_ALARM_DISABLE 0x03
 #define PSI_ALARM_ENABLE 0x13
 #define PSI_CLEAR_COLD_RESET 0x05
 #define PSI_SET_COLD_RESET 0x15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_CLEAR_COLD_START 0x07
 #define PSI_SET_COLD_START 0x17
-
 struct voyager_bios_info {
  __u8 len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 major;
  __u8 minor;
  __u8 debug;
  __u8 num_classes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 class_1;
  __u8 class_2;
 };
-
 #define NUMBER_OF_MC_BUSSES 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SLOTS_PER_MC_BUS 8
 #define MAX_CPUS 16  
 #define MAX_PROCESSOR_BOARDS 4  
 #define MAX_CACHE_LEVELS 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_SHARED_CPUS 4  
 #define NUMBER_OF_POS_REGS 8
-
 typedef struct {
  __u8 MC_Slot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 POS_Values[NUMBER_OF_POS_REGS];
 } __attribute__((packed)) MC_SlotInformation_t;
-
 struct QuadDescription {
  __u8 Type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 StructureVersion;
  __u32 CPI_BaseAddress;
  __u32 LARC_BankSize;
  __u32 LocalMemoryStateBits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Slot;
 } __attribute__((packed));
-
 struct ProcBoardInfo {
  __u8 Type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 StructureVersion;
  __u8 NumberOfBoards;
  struct QuadDescription QuadData[MAX_PROCESSOR_BOARDS];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct CacheDescription {
  __u8 Level;
  __u32 TotalSize;
  __u16 LineSize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Associativity;
  __u8 CacheType;
  __u8 WriteType;
  __u8 Number_CPUs_SharedBy;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Shared_CPUs_Hardware_IDs[MAX_SHARED_CPUS];
-
 } __attribute__((packed));
-
 struct CPU_Description {
  __u8 CPU_HardwareId;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *FRU_String;
  __u8 NumberOfCacheLevels;
  struct CacheDescription CacheLevelData[MAX_CACHE_LEVELS];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct CPU_Info {
  __u8 Type;
  __u8 StructureVersion;
  __u8 NumberOf_CPUs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CPU_Description CPU_Data[MAX_CPUS];
 } __attribute__((packed));
-
 typedef struct {
  __u8 Mailbox_SUS;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Mailbox_OS;
  __u8 SUS_MailboxVersion;
  __u8 OS_MailboxVersion;
  __u32 OS_Flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 SUS_Flags;
  __u32 WatchDogPeriod;
  __u32 WatchDogCount;
  __u32 MemoryFor_SUS_ErrorLog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MC_SlotInformation_t MC_SlotInfo[NUMBER_OF_MC_BUSSES*SLOTS_PER_MC_BUS];
-
  struct ProcBoardInfo *BoardData;
  struct CPU_Info *CPU_Data;
-
 } Voyager_KernelSUS_Mbox_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_qic_cpi {
-
  struct {
  __u32 pad1[3];
  __u32 cpi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pad2[4];
  } qic_cpi[8];
 };
-
 struct voyager_status {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 power_fail:1;
  __u32 switch_off:1;
  __u32 request_from_kernel:1;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_psi_regs {
  __u8 cat_id;
  __u8 cat_dev;
  __u8 cat_control;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 subaddr;
  __u8 dummy4;
  __u8 checkbit;
  __u8 subaddr_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 subaddr_high;
  __u8 intstatus;
  __u8 stat1;
  __u8 stat3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fault;
  __u8 tms;
  __u8 gen;
  __u8 sysconf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dummy15;
 };
-
 struct voyager_psi_subregs {
  __u8 supply;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 mask;
  __u8 present;
  __u8 DCfail;
  __u8 ACfail;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fail;
  __u8 UPSfail;
  __u8 genstatus;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_psi {
  struct voyager_psi_regs regs;
  struct voyager_psi_subregs subregs;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_SUS {
 #define VOYAGER_DUMP_BUTTON_NMI 0x1
 #define VOYAGER_SUS_VALID 0x2
 #define VOYAGER_SYSINT_COMPLETE 0x3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 SUS_mbox;
 #define VOYAGER_NO_COMMAND 0x0
 #define VOYAGER_IGNORE_DUMP 0x1
 #define VOYAGER_DO_DUMP 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_SYSINT_HANDSHAKE 0x3
 #define VOYAGER_DO_MEM_DUMP 0x4
 #define VOYAGER_SYSINT_WAS_RECOVERED 0x5
  __u8 kernel_mbox;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MAILBOX_VERSION 0x10
  __u8 SUS_version;
  __u8 kernel_version;
 #define VOYAGER_OS_HAS_SYSINT 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_OS_IN_PROGRESS 0x2
 #define VOYAGER_UPDATING_WDPERIOD 0x4
  __u32 kernel_flags;
 #define VOYAGER_SUS_BOOTING 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_SUS_IN_PROGRESS 0x2
  __u32 SUS_flags;
  __u32 watchdog_period;
  __u32 watchdog_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 SUS_errorlog;
-
 };
-
 #define VOYAGER_PSI_READ 0
 #define VOYAGER_PSI_WRITE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_PSI_SUBREAD 2
 #define VOYAGER_PSI_SUBWRITE 3
-
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/vsyscall.h b/ndk/platforms/android-9/arch-x86/include/asm/vsyscall.h
index a7bee3b..41a52cf 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/vsyscall.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/vsyscall.h
@@ -7,21 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_64_VSYSCALL_H_
 #define _ASM_X86_64_VSYSCALL_H_
-
 enum vsyscall_num {
  __NR_vgettimeofday,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __NR_vtime,
  __NR_vgetcpu,
 };
-
 #define VSYSCALL_START (-10UL << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VSYSCALL_SIZE 1024
 #define VSYSCALL_END (-2UL << 20)
 #define VSYSCALL_MAPPED_PAGES 1
 #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/asm/xen/hypercall.h b/ndk/platforms/android-9/arch-x86/include/asm/xen/hypercall.h
index 3c523a8..bb2342c 100644
--- a/ndk/platforms/android-9/arch-x86/include/asm/xen/hypercall.h
+++ b/ndk/platforms/android-9/arch-x86/include/asm/xen/hypercall.h
@@ -7,28 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __HYPERCALL_H__
 #define __HYPERCALL_H__
-
 #include <linux/errno.h>
 #include <linux/string.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <xen/interface/xen.h>
 #include <xen/interface/sched.h>
 #include <xen/interface/physdev.h>
-
 #define _hypercall0(type, name)  ({   long __res;   asm volatile (   "call %[call]"   : "=a" (__res)   : [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _hypercall1(type, name, a1)  ({   long __res, __ign1;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1)   : "1" ((long)(a1)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #define _hypercall2(type, name, a1, a2)  ({   long __res, __ign1, __ign2;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2)   : "1" ((long)(a1)), "2" ((long)(a2)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #define _hypercall3(type, name, a1, a2, a3)  ({   long __res, __ign1, __ign2, __ign3;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2),   "=d" (__ign3)   : "1" ((long)(a1)), "2" ((long)(a2)),   "3" ((long)(a3)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #define _hypercall4(type, name, a1, a2, a3, a4)  ({   long __res, __ign1, __ign2, __ign3, __ign4;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2),   "=d" (__ign3), "=S" (__ign4)   : "1" ((long)(a1)), "2" ((long)(a2)),   "3" ((long)(a3)), "4" ((long)(a4)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _hypercall5(type, name, a1, a2, a3, a4, a5)  ({   long __res, __ign1, __ign2, __ign3, __ign4, __ign5;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2),   "=d" (__ign3), "=S" (__ign4), "=D" (__ign5)   : "1" ((long)(a1)), "2" ((long)(a2)),   "3" ((long)(a3)), "4" ((long)(a4)),   "5" ((long)(a5)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #endif
diff --git a/ndk/platforms/android-9/arch-x86/include/machine/asm.h b/ndk/platforms/android-9/arch-x86/include/machine/asm.h
index 7a23060..49d3ea8 100644
--- a/ndk/platforms/android-9/arch-x86/include/machine/asm.h
+++ b/ndk/platforms/android-9/arch-x86/include/machine/asm.h
@@ -103,6 +103,12 @@
 #define _ENTRY(x) \
 	.text; _ALIGN_TEXT; .globl x; .type x,@function; x:
 
+#define _ASM_SIZE(x)    .size x, .-x;
+
+#define _END(x) \
+	.fnend; \
+	_ASM_SIZE(x)
+
 #ifdef GPROF
 # define _PROF_PROLOGUE	\
 	pushl %ebp; movl %esp,%ebp; call PIC_PLT(mcount); popl %ebp
@@ -112,8 +118,12 @@
 
 #define	ENTRY(y)	_ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
 #define	NENTRY(y)	_ENTRY(_C_LABEL(y))
+#define	END(y)		_END(_C_LABEL(y))
 #define	ASENTRY(y)	_ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
 
+#define ENTRY_PRIVATE(y)  ENTRY(y); .hidden _C_LABEL(y)
+
+
 #define	ALTENTRY(name)	.globl _C_LABEL(name); _C_LABEL(name):
 
 #define	ASMSTR		.asciz
diff --git a/ndk/platforms/android-9/arch-x86/lib/crtbegin_dynamic.o b/ndk/platforms/android-9/arch-x86/lib/crtbegin_dynamic.o
deleted file mode 100644
index 17704f5..0000000
--- a/ndk/platforms/android-9/arch-x86/lib/crtbegin_dynamic.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-9/arch-x86/lib/crtbegin_so.o b/ndk/platforms/android-9/arch-x86/lib/crtbegin_so.o
deleted file mode 100644
index cf50f1d..0000000
--- a/ndk/platforms/android-9/arch-x86/lib/crtbegin_so.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-9/arch-x86/lib/crtbegin_static.o b/ndk/platforms/android-9/arch-x86/lib/crtbegin_static.o
deleted file mode 100644
index 17704f5..0000000
--- a/ndk/platforms/android-9/arch-x86/lib/crtbegin_static.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-9/arch-x86/lib/crtend_android.o b/ndk/platforms/android-9/arch-x86/lib/crtend_android.o
deleted file mode 100644
index 87716a0..0000000
--- a/ndk/platforms/android-9/arch-x86/lib/crtend_android.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-9/arch-x86/lib/crtend_so.o b/ndk/platforms/android-9/arch-x86/lib/crtend_so.o
deleted file mode 100644
index 4c4460f..0000000
--- a/ndk/platforms/android-9/arch-x86/lib/crtend_so.o
+++ /dev/null
Binary files differ
diff --git a/ndk/platforms/android-9/arch-x86/src/__dso_handle.S b/ndk/platforms/android-9/arch-x86/src/__dso_handle.S
new file mode 100644
index 0000000..3e80128
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/__dso_handle.S
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+# The __dso_handle global variable is used by static
+# C++ constructors and destructors in the binary.
+# See http://www.codesourcery.com/public/cxx-abi/abi.html#dso-dtor
+#
+        .section .bss
+        .align 4
+
+#ifndef CRT_LEGACY_WORKAROUND
+	.hidden __dso_handle
+#endif
+
+        .globl __dso_handle
+__dso_handle:
+        .long 0
diff --git a/ndk/platforms/android-9/arch-x86/src/__dso_handle_so.S b/ndk/platforms/android-9/arch-x86/src/__dso_handle_so.S
new file mode 100644
index 0000000..77a5d7f
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/__dso_handle_so.S
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+# The __dso_handle global variable is used by static
+# C++ constructors and destructors in the binary.
+# See http://www.codesourcery.com/public/cxx-abi/abi.html#dso-dtor
+#
+	.data
+        .align 4
+	.hidden __dso_handle
+        .globl __dso_handle
+__dso_handle:
+        .long __dso_handle
diff --git a/ndk/platforms/android-9/arch-x86/include/sys/atomics.h b/ndk/platforms/android-9/arch-x86/src/__stack_chk_fail_local.S
similarity index 62%
copy from ndk/platforms/android-9/arch-x86/include/sys/atomics.h
copy to ndk/platforms/android-9/arch-x86/src/__stack_chk_fail_local.S
index 7aed3ae..59fe86e 100644
--- a/ndk/platforms/android-9/arch-x86/include/sys/atomics.h
+++ b/ndk/platforms/android-9/arch-x86/src/__stack_chk_fail_local.S
@@ -25,41 +25,24 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _SYS_ATOMICS_H
-#define _SYS_ATOMICS_H
+/*
+ * Contributed by: Intel Corporation
+ */
 
-#include <sys/cdefs.h>
-#include <sys/time.h>
+	.text
+	.p2align 4,,15
+	.globl	__stack_chk_fail_local
+	.hidden	__stack_chk_fail_local
+	.type	__stack_chk_fail_local, @function
 
-__BEGIN_DECLS
+__stack_chk_fail_local:
+#ifdef __PIC__
+	pushl	%ebx
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	call	__stack_chk_fail@PLT
+#else /* PIC */
+	jmp   __stack_chk_fail
+#endif /* not PIC */
 
-static inline __attribute__((always_inline)) int
-__atomic_cmpxchg(int old, int _new, volatile int *ptr)
-{
-  return !__sync_bool_compare_and_swap (ptr, old, _new);
-}
-
-static inline __attribute__((always_inline)) int
-__atomic_swap(int _new, volatile int *ptr)
-{
-  return __sync_lock_test_and_set(ptr, _new);
-}
-
-static inline __attribute__((always_inline)) int
-__atomic_dec(volatile int *ptr)
-{
-  return __sync_fetch_and_sub (ptr, 1);
-}
-
-static inline __attribute__((always_inline)) int
-__atomic_inc(volatile int *ptr)
-{
-  return __sync_fetch_and_add (ptr, 1);
-}
-
-int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
-int __futex_wake(volatile void *ftx, int count);
-
-__END_DECLS
-
-#endif /* _SYS_ATOMICS_H */
+	.size	__stack_chk_fail_local, .-__stack_chk_fail_local
diff --git a/ndk/platforms/android-9/arch-x86/src/atexit.S b/ndk/platforms/android-9/arch-x86/src/atexit.S
new file mode 100644
index 0000000..b28f40b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/atexit.S
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+	.text
+	.p2align 4,,15
+	.globl	atexit
+	.hidden	atexit
+	.type	atexit, @function
+atexit:
+	pushl	%ebp
+	movl	%esp, %ebp
+	pushl	%ebx
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	subl	$20, %esp
+	movl	$0, 4(%esp)
+	movl	__dso_handle@GOTOFF(%ebx), %eax
+	movl	%eax, 8(%esp)
+	movl	8(%ebp), %eax
+	movl	%eax, (%esp)
+	call	__cxa_atexit@PLT
+	addl	$20, %esp
+	popl	%ebx
+	popl	%ebp
+	ret
+	.size	atexit, .-atexit
+
+	.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
+	.globl	__x86.get_pc_thunk.bx
+	.hidden	__x86.get_pc_thunk.bx
+	.type	__x86.get_pc_thunk.bx, @function
+__x86.get_pc_thunk.bx:
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	nop
+	movl	(%esp), %ebx
+	ret
diff --git a/ndk/platforms/android-9/arch-x86/src/crtbegin_dynamic.S b/ndk/platforms/android-9/arch-x86/src/crtbegin_dynamic.S
new file mode 100644
index 0000000..177244b
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/crtbegin_dynamic.S
@@ -0,0 +1,139 @@
+# bionic/arch-x86/bionic/crtbegin_dynamic.S
+#
+# Copyright 2006, The Android Open Source Project
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in the
+#       documentation and/or other materials provided with the distribution.
+#     * Neither the name of Google Inc. nor the names of its contributors may
+#       be used to endorse or promote products derived from this software
+#       without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR 
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 
+# EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+	.text
+	.align 4
+	.type _start, @function
+	.globl _start
+
+# this is the small startup code that is first run when
+# any executable that is dynamically-linked with Bionic
+# runs.
+#
+# it's purpose is to call __libc_init with appropriate
+# arguments, which are:
+#
+#    - the address of the raw data block setup by the Linux
+#      kernel ELF loader
+#
+#    - address of an "onexit" function, not used on any
+#      platform supported by Bionic
+#
+#    - address of the "main" function of the program. We
+#      can't hard-code it in the adr pseudo instruction
+#      so we use a tiny trampoline that will get relocated
+#      by the dynamic linker before this code runs
+#
+#    - address of the constructor list
+#
+_start:	
+        mov     %esp, %eax
+        # before push arguments, align the stack to a 16 byte boundary
+        andl    $~15, %esp
+        mov     $1f, %edx
+        pushl   %edx
+        mov     $0f, %edx
+        pushl   %edx
+        mov     $0, %edx
+        pushl   %edx
+        pushl   %eax
+        call     __libc_init
+
+0:
+        jmp   main
+
+1:  .long   __PREINIT_ARRAY__
+    .long   __INIT_ARRAY__
+    .long   __FINI_ARRAY__
+
+	.section .preinit_array, "aw"
+	.globl __PREINIT_ARRAY__
+__PREINIT_ARRAY__:
+	.long -1
+
+	.section .init_array, "aw"
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+	.long	frame_dummy
+
+	.section .fini_array, "aw"
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+	.long	__do_global_dtors_aux
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__EH_FRAME_BEGIN__, @object
+__EH_FRAME_BEGIN__:
+	.text
+	.p2align 4,,15
+	.type	__do_global_dtors_aux, @function
+__do_global_dtors_aux:
+	pushl	%ebp
+	movl	%esp, %ebp
+	subl	$24, %esp
+	cmpb	$0, completed.4454
+	jne	.L4
+	movl	$__deregister_frame_info_bases, %eax
+	testl	%eax, %eax
+	je	.L3
+	movl	$__EH_FRAME_BEGIN__, (%esp)
+	call	__deregister_frame_info_bases
+.L3:
+	movb	$1, completed.4454
+.L4:
+	leave
+	ret
+	.text
+	.p2align 4,,15
+	.type	frame_dummy, @function
+frame_dummy:
+	pushl	%ebp
+	movl	$__register_frame_info_bases, %eax
+	movl	%esp, %ebp
+	subl	$24, %esp
+	testl	%eax, %eax
+	je	.L7
+	movl	%ebx, 12(%esp)
+	movl	$0, 8(%esp)
+	movl	$object.4466, 4(%esp)
+	movl	$__EH_FRAME_BEGIN__, (%esp)
+	call	__register_frame_info_bases
+.L7:
+	leave
+	ret
+	.local	completed.4454
+	.comm	completed.4454,1,1
+	.local	object.4466
+	.comm	object.4466,24,4
+	.weak	__register_frame_info_bases
+	.weak	__deregister_frame_info_bases
+
+#include "__dso_handle.S"
+#include "atexit.S"
+#include "__stack_chk_fail_local.S"
diff --git a/ndk/platforms/android-9/arch-x86/src/crtbegin_so.S b/ndk/platforms/android-9/arch-x86/src/crtbegin_so.S
new file mode 100644
index 0000000..99662fe
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/crtbegin_so.S
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+.section .init_array, "aw"
+.align 4
+.type __INIT_ARRAY__, @object
+.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+    .long -1
+    .long frame_dummy
+
+.section .fini_array, "aw"
+.align 4
+.type __FINI_ARRAY__, @object
+.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+    .long -1
+    .long __do_global_dtors_aux
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__EH_FRAME_BEGIN__, @object
+__EH_FRAME_BEGIN__:
+	.text
+	.p2align 4,,15
+	.type	__do_global_dtors_aux, @function
+__do_global_dtors_aux:
+	pushl	%ebp
+	movl	%esp, %ebp
+	pushl	%ebx
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	subl	$20, %esp
+	cmpb	$0, completed.4454@GOTOFF(%ebx)
+	jne	.L5
+	movl	__dso_handle@GOTOFF(%ebx), %eax
+	movl	%eax, (%esp)
+	call	__cxa_finalize@PLT
+	movl	__deregister_frame_info_bases@GOT(%ebx), %eax
+	testl	%eax, %eax
+	je	.L4
+	leal	__EH_FRAME_BEGIN__@GOTOFF(%ebx), %eax
+	movl	%eax, (%esp)
+	call	__deregister_frame_info_bases@PLT
+.L4:
+	movb	$1, completed.4454@GOTOFF(%ebx)
+.L5:
+	addl	$20, %esp
+	popl	%ebx
+	popl	%ebp
+	ret
+	.text
+	.p2align 4,,15
+	.type	frame_dummy, @function
+frame_dummy:
+	pushl	%ebp
+	movl	%esp, %ebp
+	pushl	%ebx
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	subl	$20, %esp
+	movl	__register_frame_info_bases@GOT(%ebx), %eax
+	testl	%eax, %eax
+	je	.L8
+	leal	object.4469@GOTOFF(%ebx), %eax
+	movl	%eax, 4(%esp)
+	leal	__EH_FRAME_BEGIN__@GOTOFF(%ebx), %eax
+	movl	%ebx, 12(%esp)
+	movl	$0, 8(%esp)
+	movl	%eax, (%esp)
+	call	__register_frame_info_bases@PLT
+.L8:
+	addl	$20, %esp
+	popl	%ebx
+	popl	%ebp
+	ret
+	.local	completed.4454
+	.comm	completed.4454,1,1
+	.local	object.4469
+	.comm	object.4469,24,4
+	.weak	__register_frame_info_bases
+	.weak	__deregister_frame_info_bases
+
+#include "__dso_handle_so.S"
+#include "atexit.S"
+#include "__stack_chk_fail_local.S"
diff --git a/ndk/platforms/android-9/arch-x86/src/crtbegin_static.S b/ndk/platforms/android-9/arch-x86/src/crtbegin_static.S
new file mode 100644
index 0000000..4f95b1e
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/crtbegin_static.S
@@ -0,0 +1,139 @@
+# bionic/arch-x86/bionic/crtbegin_static.S
+#
+# Copyright 2006, The Android Open Source Project
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in the
+#       documentation and/or other materials provided with the distribution.
+#     * Neither the name of Google Inc. nor the names of its contributors may
+#       be used to endorse or promote products derived from this software
+#       without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR 
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 
+# EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+	.text
+	.align 4
+	.type _start, @function
+	.globl _start
+
+# this is the small startup code that is first run when
+# any executable that is statically-linked with Bionic
+# runs.
+#
+# it's purpose is to call __libc_init with appropriate
+# arguments, which are:
+#
+#    - the address of the raw data block setup by the Linux
+#      kernel ELF loader
+#
+#    - address of an "onexit" function, not used on any
+#      platform supported by Bionic
+#
+#    - address of the "main" function of the program. We
+#      can't hard-code it in the adr pseudo instruction
+#      so we use a tiny trampoline that will get relocated
+#      by the dynamic linker before this code runs
+#
+#    - address of the constructor list
+#
+_start:	
+        mov     %esp, %eax
+        # before push arguments, align the stack to a 16 byte boundary
+        andl    $~15, %esp
+        mov     $1f, %edx
+        pushl   %edx
+        mov     $0f, %edx
+        pushl   %edx
+        mov     $0, %edx
+        pushl   %edx
+        pushl   %eax
+        call    __libc_init
+
+0:  jmp   main
+
+1:  .long   __PREINIT_ARRAY__
+    .long   __INIT_ARRAY__
+    .long   __FINI_ARRAY__
+
+	.section .preinit_array, "aw"
+	.globl __PREINIT_ARRAY__
+__PREINIT_ARRAY__:
+	.long -1
+
+	.section .init_array, "aw"
+	.globl __INIT_ARRAY__
+__INIT_ARRAY__:
+	.long -1
+	.long	frame_dummy
+
+	.section .fini_array, "aw"
+	.globl __FINI_ARRAY__
+__FINI_ARRAY__:
+	.long -1
+	.long	__do_global_dtors_aux
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__EH_FRAME_BEGIN__, @object
+__EH_FRAME_BEGIN__:
+	.text
+	.p2align 4,,15
+	.type	__do_global_dtors_aux, @function
+__do_global_dtors_aux:
+	pushl	%ebp
+	movl	%esp, %ebp
+	subl	$24, %esp
+	cmpb	$0, completed.4454
+	jne	.L4
+	movl	$__deregister_frame_info_bases, %eax
+	testl	%eax, %eax
+	je	.L3
+	movl	$__EH_FRAME_BEGIN__, (%esp)
+	call	__deregister_frame_info_bases
+.L3:
+	movb	$1, completed.4454
+.L4:
+	leave
+	ret
+	.text
+	.p2align 4,,15
+	.type	frame_dummy, @function
+frame_dummy:
+	pushl	%ebp
+	movl	$__register_frame_info_bases, %eax
+	movl	%esp, %ebp
+	subl	$24, %esp
+	testl	%eax, %eax
+	je	.L7
+	movl	%ebx, 12(%esp)
+	movl	$0, 8(%esp)
+	movl	$object.4466, 4(%esp)
+	movl	$__EH_FRAME_BEGIN__, (%esp)
+	call	__register_frame_info_bases
+.L7:
+	leave
+	ret
+	.local	completed.4454
+	.comm	completed.4454,1,1
+	.local	object.4466
+	.comm	object.4466,24,4
+	.weak	__register_frame_info_bases
+	.weak	__deregister_frame_info_bases
+
+#include "__dso_handle.S"
+#include "__stack_chk_fail_local.S"
+/* NOTE: atexit() is  not be provided by crtbegin_static.S, but by libc.a */
+
diff --git a/ndk/platforms/android-9/arch-x86/src/crtend.S b/ndk/platforms/android-9/arch-x86/src/crtend.S
new file mode 100644
index 0000000..68447e7
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/crtend.S
@@ -0,0 +1,15 @@
+	.section .preinit_array, "aw"
+	.long 0
+
+	.section .init_array, "aw"
+	.long 0
+
+	.section .fini_array, "aw"
+	.long 0
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__FRAME_END__, @object
+	.size	__FRAME_END__, 4
+__FRAME_END__:
+	.zero	4
diff --git a/ndk/platforms/android-9/arch-x86/src/crtend_so.S b/ndk/platforms/android-9/arch-x86/src/crtend_so.S
new file mode 100644
index 0000000..63e58b9
--- /dev/null
+++ b/ndk/platforms/android-9/arch-x86/src/crtend_so.S
@@ -0,0 +1,12 @@
+.section .init_array, "aw"
+    .long 0
+
+.section .fini_array, "aw"
+    .long 0
+
+	.section	.eh_frame,"a",@progbits
+	.align 4
+	.type	__FRAME_END__, @object
+	.size	__FRAME_END__, 4
+__FRAME_END__:
+	.zero	4
diff --git a/ndk/platforms/android-9/include/android/asset_manager.h b/ndk/platforms/android-9/include/android/asset_manager.h
index 4fa0ef3..57dd7cb 100644
--- a/ndk/platforms/android-9/include/android/asset_manager.h
+++ b/ndk/platforms/android-9/include/android/asset_manager.h
@@ -18,6 +18,8 @@
 #ifndef ANDROID_ASSET_MANAGER_H
 #define ANDROID_ASSET_MANAGER_H
 
+#include <sys/types.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/ndk/platforms/android-9/include/android/native_activity.h b/ndk/platforms/android-9/include/android/native_activity.h
index d89bc8b..52997bf 100644
--- a/ndk/platforms/android-9/include/android/native_activity.h
+++ b/ndk/platforms/android-9/include/android/native_activity.h
@@ -60,7 +60,14 @@
     JNIEnv* env;
 
     /**
-     * The NativeActivity Java class.
+     * The NativeActivity object handle.
+     *
+     * IMPORTANT NOTE: This member is mis-named. It should really be named
+     * 'activity' instead of 'clazz', since it's a reference to the
+     * NativeActivity instance created by the system for you.
+     *
+     * We unfortunately cannot change this without breaking NDK
+     * source-compatibility.
      */
     jobject clazz;
 
diff --git a/ndk/platforms/android-9/include/android/rect.h b/ndk/platforms/android-9/include/android/rect.h
index 3e81f53..bcd42a9 100644
--- a/ndk/platforms/android-9/include/android/rect.h
+++ b/ndk/platforms/android-9/include/android/rect.h
@@ -18,11 +18,16 @@
 #ifndef ANDROID_RECT_H
 #define ANDROID_RECT_H
 
+#include <stdint.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 typedef struct ARect {
+#ifdef __cplusplus
+    typedef int32_t value_type;
+#endif
     int32_t left;
     int32_t top;
     int32_t right;
diff --git a/ndk/platforms/android-9/include/pthread.h b/ndk/platforms/android-9/include/pthread.h
index 5e87043..4baf82f 100644
--- a/ndk/platforms/android-9/include/pthread.h
+++ b/ndk/platforms/android-9/include/pthread.h
@@ -103,7 +103,7 @@
 /*
  * Prototypes
  */
-#if __cplusplus
+#ifdef __cplusplus
 extern "C" {
 #endif
 
@@ -302,7 +302,7 @@
         __pthread_cleanup_pop( &__cleanup, (execute)); \
     } while (0);
 
-#if __cplusplus
+#ifdef __cplusplus
 } /* extern "C" */
 #endif
 
@@ -311,4 +311,4 @@
 #define LONG_LONG_MAX __LONG_LONG_MAX__
 #define LONG_LONG_MIN (-__LONG_LONG_MAX__ - 1)
 
-#endif // _PTHREAD_H_
+#endif /* _PTHREAD_H_ */
diff --git a/ndk/platforms/android-9/arch-x86/include/sys/atomics.h b/ndk/platforms/android-9/include/sys/eventfd.h
similarity index 62%
copy from ndk/platforms/android-9/arch-x86/include/sys/atomics.h
copy to ndk/platforms/android-9/include/sys/eventfd.h
index 7aed3ae..19244a5 100644
--- a/ndk/platforms/android-9/arch-x86/include/sys/atomics.h
+++ b/ndk/platforms/android-9/include/sys/eventfd.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 The Android Open Source Project
+ * Copyright (C) 2008 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,41 +25,26 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _SYS_ATOMICS_H
-#define _SYS_ATOMICS_H
+#ifndef _SYS_EVENTFD_H
+#define _SYS_EVENTFD_H
 
 #include <sys/cdefs.h>
-#include <sys/time.h>
+#include <fcntl.h>
 
 __BEGIN_DECLS
 
-static inline __attribute__((always_inline)) int
-__atomic_cmpxchg(int old, int _new, volatile int *ptr)
-{
-  return !__sync_bool_compare_and_swap (ptr, old, _new);
-}
+#define  EFD_CLOEXEC   O_CLOEXEC
+#define  EFD_NONBLOCK  O_NONBLOCK
 
-static inline __attribute__((always_inline)) int
-__atomic_swap(int _new, volatile int *ptr)
-{
-  return __sync_lock_test_and_set(ptr, _new);
-}
+/* type of event counter */
+typedef uint64_t  eventfd_t;
 
-static inline __attribute__((always_inline)) int
-__atomic_dec(volatile int *ptr)
-{
-  return __sync_fetch_and_sub (ptr, 1);
-}
+extern int eventfd(unsigned int initval, int flags);
 
-static inline __attribute__((always_inline)) int
-__atomic_inc(volatile int *ptr)
-{
-  return __sync_fetch_and_add (ptr, 1);
-}
-
-int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
-int __futex_wake(volatile void *ftx, int count);
+/* Compatibility with GLibc */
+extern int eventfd_read(int fd, eventfd_t *counter);
+extern int eventfd_write(int fd, const eventfd_t counter);
 
 __END_DECLS
 
-#endif /* _SYS_ATOMICS_H */
+#endif /* _SYS_EVENTFD_H */
diff --git a/ndk/platforms/android-9/include/unistd.h b/ndk/platforms/android-9/include/unistd.h
index 21154ad..f92ec10 100644
--- a/ndk/platforms/android-9/include/unistd.h
+++ b/ndk/platforms/android-9/include/unistd.h
@@ -70,8 +70,9 @@
 extern int execle(const char *, const char *, ...);
 extern int capget(cap_user_header_t hdrp, cap_user_data_t datap);
 extern int capset(cap_user_header_t hdrp, const cap_user_data_t datap);
-extern int prctl(int  option,  unsigned long arg2, unsigned long arg3,
-                 unsigned long arg4, unsigned long arg5);
+
+/* IMPORTANT: See comment under <sys/prctl.h> about this declaration */
+extern int prctl(int  option, ...);
 
 extern int nice(int);
 
@@ -128,7 +129,7 @@
 
 extern int close(int);
 extern off_t lseek(int, off_t, int);
-extern loff_t lseek64(int, loff_t, int);
+extern off64_t lseek64(int, off64_t, int);
 
 extern ssize_t read(int, void *, size_t);
 extern ssize_t write(int, const void *, size_t);
diff --git a/ndk/platforms/android-9/include/wchar.h b/ndk/platforms/android-9/include/wchar.h
index 9b744a5..86d6d73 100644
--- a/ndk/platforms/android-9/include/wchar.h
+++ b/ndk/platforms/android-9/include/wchar.h
@@ -28,6 +28,7 @@
 #ifndef _WCHAR_H_
 #define _WCHAR_H_
 
+#include <limits.h>
 #include <sys/cdefs.h>
 #include <stdio.h>
 
diff --git a/ndk/platforms/android-9/samples/native-activity/AndroidManifest.xml b/ndk/platforms/android-9/samples/native-activity/AndroidManifest.xml
index 1fd3620..ee83d12 100644
--- a/ndk/platforms/android-9/samples/native-activity/AndroidManifest.xml
+++ b/ndk/platforms/android-9/samples/native-activity/AndroidManifest.xml
@@ -6,7 +6,7 @@
         android:versionName="1.0">
 
     <!-- This is the platform API where NativeActivity was introduced. -->
-    <uses-sdk android:minSdkVersion="8" />
+    <uses-sdk android:minSdkVersion="9" />
 
     <!-- This .apk has no Java code itself, so set hasCode to false. -->
     <application android:label="@string/app_name" android:hasCode="false">
diff --git a/ndk/platforms/android-9/samples/native-activity/default.properties b/ndk/platforms/android-9/samples/native-activity/default.properties
index 9d135cb..9a2c9f6 100644
--- a/ndk/platforms/android-9/samples/native-activity/default.properties
+++ b/ndk/platforms/android-9/samples/native-activity/default.properties
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-7
+target=android-9
diff --git a/ndk/platforms/android-9/samples/native-plasma/AndroidManifest.xml b/ndk/platforms/android-9/samples/native-plasma/AndroidManifest.xml
index 28408b9..43acf0d 100644
--- a/ndk/platforms/android-9/samples/native-plasma/AndroidManifest.xml
+++ b/ndk/platforms/android-9/samples/native-plasma/AndroidManifest.xml
@@ -3,7 +3,7 @@
       package="com.example.native_plasma"
       android:versionCode="1"
       android:versionName="1.0">
-    <uses-sdk android:minSdkVersion="8" />
+    <uses-sdk android:minSdkVersion="9" />
     <application android:label="@string/app_name"
                  android:hasCode="false" android:debuggable="true">
         <activity android:name="android.app.NativeActivity"
diff --git a/ndk/platforms/android-9/samples/native-plasma/default.properties b/ndk/platforms/android-9/samples/native-plasma/default.properties
index 9d135cb..9a2c9f6 100644
--- a/ndk/platforms/android-9/samples/native-plasma/default.properties
+++ b/ndk/platforms/android-9/samples/native-plasma/default.properties
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-7
+target=android-9
diff --git a/ndk/platforms/android-9/samples/native-plasma/src/Dummy.java b/ndk/platforms/android-9/samples/native-plasma/src/Dummy.java
deleted file mode 100644
index 596215a..0000000
--- a/ndk/platforms/android-9/samples/native-plasma/src/Dummy.java
+++ /dev/null
@@ -1,4 +0,0 @@
-// Temporary until the NDK build system can deal with there being no Java source.
-class Dummy {
-
-}
diff --git a/ndk/samples/hello-jni/default.properties b/ndk/samples/hello-jni/default.properties
index 0b9250e..4513a1e 100644
--- a/ndk/samples/hello-jni/default.properties
+++ b/ndk/samples/hello-jni/default.properties
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-8
+target=android-3
diff --git a/ndk/samples/hello-neon/AndroidManifest.xml b/ndk/samples/hello-neon/AndroidManifest.xml
index 2d362d6..ff06e09 100644
--- a/ndk/samples/hello-neon/AndroidManifest.xml
+++ b/ndk/samples/hello-neon/AndroidManifest.xml
@@ -3,6 +3,7 @@
       package="com.example.neon"
       android:versionCode="1"
       android:versionName="1.0">
+    <uses-sdk android:minSdkVersion="4" />
     <application android:label="@string/app_name">
         <activity android:name=".HelloNeon"
                   android:label="@string/app_name">
diff --git a/ndk/samples/hello-neon/default.properties b/ndk/samples/hello-neon/default.properties
index 4513a1e..9d79b12 100644
--- a/ndk/samples/hello-neon/default.properties
+++ b/ndk/samples/hello-neon/default.properties
@@ -8,4 +8,4 @@
 # project structure.
 
 # Project target.
-target=android-3
+target=android-4
diff --git a/ndk/sources/android/native_app_glue/android_native_app_glue.c b/ndk/sources/android/native_app_glue/android_native_app_glue.c
index 3069f17..82fc030 100644
--- a/ndk/sources/android/native_app_glue/android_native_app_glue.c
+++ b/ndk/sources/android/native_app_glue/android_native_app_glue.c
@@ -26,6 +26,14 @@
 #include <android/log.h>
 
 #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__))
+#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "threaded_app", __VA_ARGS__))
+
+/* For debug builds, always enable the debug traces in this library */
+#ifndef NDEBUG
+#  define LOGV(...)  ((void)__android_log_print(ANDROID_LOG_VERBOSE, "threaded_app", __VA_ARGS__))
+#else
+#  define LOGV(...)  ((void)0)
+#endif
 
 static void free_saved_state(struct android_app* android_app) {
     pthread_mutex_lock(&android_app->mutex);
@@ -47,7 +55,7 @@
         }
         return cmd;
     } else {
-        LOGI("No data on command pipe!");
+        LOGE("No data on command pipe!");
     }
     return -1;
 }
@@ -57,7 +65,7 @@
     AConfiguration_getLanguage(android_app->config, lang);
     AConfiguration_getCountry(android_app->config, country);
 
-    LOGI("Config: mcc=%d mnc=%d lang=%c%c cnt=%c%c orien=%d touch=%d dens=%d "
+    LOGV("Config: mcc=%d mnc=%d lang=%c%c cnt=%c%c orien=%d touch=%d dens=%d "
             "keys=%d nav=%d keysHid=%d navHid=%d sdk=%d size=%d long=%d "
             "modetype=%d modenight=%d",
             AConfiguration_getMcc(android_app->config),
@@ -80,14 +88,14 @@
 void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd) {
     switch (cmd) {
         case APP_CMD_INPUT_CHANGED:
-            LOGI("APP_CMD_INPUT_CHANGED\n");
+            LOGV("APP_CMD_INPUT_CHANGED\n");
             pthread_mutex_lock(&android_app->mutex);
             if (android_app->inputQueue != NULL) {
                 AInputQueue_detachLooper(android_app->inputQueue);
             }
             android_app->inputQueue = android_app->pendingInputQueue;
             if (android_app->inputQueue != NULL) {
-                LOGI("Attaching input queue to looper");
+                LOGV("Attaching input queue to looper");
                 AInputQueue_attachLooper(android_app->inputQueue,
                         android_app->looper, LOOPER_ID_INPUT, NULL,
                         &android_app->inputPollSource);
@@ -97,7 +105,7 @@
             break;
 
         case APP_CMD_INIT_WINDOW:
-            LOGI("APP_CMD_INIT_WINDOW\n");
+            LOGV("APP_CMD_INIT_WINDOW\n");
             pthread_mutex_lock(&android_app->mutex);
             android_app->window = android_app->pendingWindow;
             pthread_cond_broadcast(&android_app->cond);
@@ -105,7 +113,7 @@
             break;
 
         case APP_CMD_TERM_WINDOW:
-            LOGI("APP_CMD_TERM_WINDOW\n");
+            LOGV("APP_CMD_TERM_WINDOW\n");
             pthread_cond_broadcast(&android_app->cond);
             break;
 
@@ -113,7 +121,7 @@
         case APP_CMD_START:
         case APP_CMD_PAUSE:
         case APP_CMD_STOP:
-            LOGI("activityState=%d\n", cmd);
+            LOGV("activityState=%d\n", cmd);
             pthread_mutex_lock(&android_app->mutex);
             android_app->activityState = cmd;
             pthread_cond_broadcast(&android_app->cond);
@@ -121,14 +129,14 @@
             break;
 
         case APP_CMD_CONFIG_CHANGED:
-            LOGI("APP_CMD_CONFIG_CHANGED\n");
+            LOGV("APP_CMD_CONFIG_CHANGED\n");
             AConfiguration_fromAssetManager(android_app->config,
                     android_app->activity->assetManager);
             print_cur_config(android_app);
             break;
 
         case APP_CMD_DESTROY:
-            LOGI("APP_CMD_DESTROY\n");
+            LOGV("APP_CMD_DESTROY\n");
             android_app->destroyRequested = 1;
             break;
     }
@@ -137,7 +145,7 @@
 void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) {
     switch (cmd) {
         case APP_CMD_TERM_WINDOW:
-            LOGI("APP_CMD_TERM_WINDOW\n");
+            LOGV("APP_CMD_TERM_WINDOW\n");
             pthread_mutex_lock(&android_app->mutex);
             android_app->window = NULL;
             pthread_cond_broadcast(&android_app->cond);
@@ -145,7 +153,7 @@
             break;
 
         case APP_CMD_SAVE_STATE:
-            LOGI("APP_CMD_SAVE_STATE\n");
+            LOGV("APP_CMD_SAVE_STATE\n");
             pthread_mutex_lock(&android_app->mutex);
             android_app->stateSaved = 1;
             pthread_cond_broadcast(&android_app->cond);
@@ -163,7 +171,7 @@
 }
 
 static void android_app_destroy(struct android_app* android_app) {
-    LOGI("android_app_destroy!");
+    LOGV("android_app_destroy!");
     free_saved_state(android_app);
     pthread_mutex_lock(&android_app->mutex);
     if (android_app->inputQueue != NULL) {
@@ -179,7 +187,7 @@
 static void process_input(struct android_app* app, struct android_poll_source* source) {
     AInputEvent* event = NULL;
     if (AInputQueue_getEvent(app->inputQueue, &event) >= 0) {
-        LOGI("New input event: type=%d\n", AInputEvent_getType(event));
+        LOGV("New input event: type=%d\n", AInputEvent_getType(event));
         if (AInputQueue_preDispatchEvent(app->inputQueue, event)) {
             return;
         }
@@ -187,7 +195,7 @@
         if (app->onInputEvent != NULL) handled = app->onInputEvent(app, event);
         AInputQueue_finishEvent(app->inputQueue, event, handled);
     } else {
-        LOGI("Failure reading next input event: %s\n", strerror(errno));
+        LOGE("Failure reading next input event: %s\n", strerror(errno));
     }
 }
 
@@ -250,7 +258,8 @@
 
     int msgpipe[2];
     if (pipe(msgpipe)) {
-        LOGI("could not create pipe: %s", strerror(errno));
+        LOGE("could not create pipe: %s", strerror(errno));
+        return NULL;
     }
     android_app->msgread = msgpipe[0];
     android_app->msgwrite = msgpipe[1];
@@ -272,7 +281,7 @@
 
 static void android_app_write_cmd(struct android_app* android_app, int8_t cmd) {
     if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) {
-        LOGI("Failure writing android_app cmd: %s\n", strerror(errno));
+        LOGE("Failure writing android_app cmd: %s\n", strerror(errno));
     }
 }
 
@@ -326,17 +335,17 @@
 }
 
 static void onDestroy(ANativeActivity* activity) {
-    LOGI("Destroy: %p\n", activity);
+    LOGV("Destroy: %p\n", activity);
     android_app_free((struct android_app*)activity->instance);
 }
 
 static void onStart(ANativeActivity* activity) {
-    LOGI("Start: %p\n", activity);
+    LOGV("Start: %p\n", activity);
     android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_START);
 }
 
 static void onResume(ANativeActivity* activity) {
-    LOGI("Resume: %p\n", activity);
+    LOGV("Resume: %p\n", activity);
     android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_RESUME);
 }
 
@@ -344,7 +353,7 @@
     struct android_app* android_app = (struct android_app*)activity->instance;
     void* savedState = NULL;
 
-    LOGI("SaveInstanceState: %p\n", activity);
+    LOGV("SaveInstanceState: %p\n", activity);
     pthread_mutex_lock(&android_app->mutex);
     android_app->stateSaved = 0;
     android_app_write_cmd(android_app, APP_CMD_SAVE_STATE);
@@ -365,56 +374,56 @@
 }
 
 static void onPause(ANativeActivity* activity) {
-    LOGI("Pause: %p\n", activity);
+    LOGV("Pause: %p\n", activity);
     android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_PAUSE);
 }
 
 static void onStop(ANativeActivity* activity) {
-    LOGI("Stop: %p\n", activity);
+    LOGV("Stop: %p\n", activity);
     android_app_set_activity_state((struct android_app*)activity->instance, APP_CMD_STOP);
 }
 
 static void onConfigurationChanged(ANativeActivity* activity) {
     struct android_app* android_app = (struct android_app*)activity->instance;
-    LOGI("ConfigurationChanged: %p\n", activity);
+    LOGV("ConfigurationChanged: %p\n", activity);
     android_app_write_cmd(android_app, APP_CMD_CONFIG_CHANGED);
 }
 
 static void onLowMemory(ANativeActivity* activity) {
     struct android_app* android_app = (struct android_app*)activity->instance;
-    LOGI("LowMemory: %p\n", activity);
+    LOGV("LowMemory: %p\n", activity);
     android_app_write_cmd(android_app, APP_CMD_LOW_MEMORY);
 }
 
 static void onWindowFocusChanged(ANativeActivity* activity, int focused) {
-    LOGI("WindowFocusChanged: %p -- %d\n", activity, focused);
+    LOGV("WindowFocusChanged: %p -- %d\n", activity, focused);
     android_app_write_cmd((struct android_app*)activity->instance,
             focused ? APP_CMD_GAINED_FOCUS : APP_CMD_LOST_FOCUS);
 }
 
 static void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window) {
-    LOGI("NativeWindowCreated: %p -- %p\n", activity, window);
+    LOGV("NativeWindowCreated: %p -- %p\n", activity, window);
     android_app_set_window((struct android_app*)activity->instance, window);
 }
 
 static void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window) {
-    LOGI("NativeWindowDestroyed: %p -- %p\n", activity, window);
+    LOGV("NativeWindowDestroyed: %p -- %p\n", activity, window);
     android_app_set_window((struct android_app*)activity->instance, NULL);
 }
 
 static void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue) {
-    LOGI("InputQueueCreated: %p -- %p\n", activity, queue);
+    LOGV("InputQueueCreated: %p -- %p\n", activity, queue);
     android_app_set_input((struct android_app*)activity->instance, queue);
 }
 
 static void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue) {
-    LOGI("InputQueueDestroyed: %p -- %p\n", activity, queue);
+    LOGV("InputQueueDestroyed: %p -- %p\n", activity, queue);
     android_app_set_input((struct android_app*)activity->instance, NULL);
 }
 
 void ANativeActivity_onCreate(ANativeActivity* activity,
         void* savedState, size_t savedStateSize) {
-    LOGI("Creating: %p\n", activity);
+    LOGV("Creating: %p\n", activity);
     activity->callbacks->onDestroy = onDestroy;
     activity->callbacks->onStart = onStart;
     activity->callbacks->onResume = onResume;
diff --git a/samples/ActionBarCompat/AndroidManifest.xml b/samples/ActionBarCompat/AndroidManifest.xml
index 1a48274..a78339b 100644
--- a/samples/ActionBarCompat/AndroidManifest.xml
+++ b/samples/ActionBarCompat/AndroidManifest.xml
@@ -20,6 +20,8 @@
     android:versionName="1.0">
 
     <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="14" />
+    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
+    <supports-screens android:largeScreens="true"/>
 
     <application android:label="@string/app_name"
         android:icon="@drawable/ic_launcher"
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index 4e63dde..bcb0fcb 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -615,24 +615,28 @@
             </intent-filter>
         </activity>
 
-<!-- BEGIN_INCLUDE(no_task_affinity) -->
         <activity android:name=".app.IncomingMessage"
-                android:label="App/Notification/IncomingMessage"
-                android:taskAffinity="">
+                android:label="App/Notification/IncomingMessage">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.SAMPLE_CODE" />
             </intent-filter>
         </activity>
-<!-- END_INCLUDE(no_task_affinity) -->
 
-        <activity android:name=".app.IncomingMessageView" android:label="App/Notification/IncomingMessageView">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.EMBED" />
-            </intent-filter>
+        <activity android:name=".app.IncomingMessageView"
+                android:label="App/Notification/IncomingMessageView">
         </activity>
 
+<!-- BEGIN_INCLUDE(interstitial_affinity) -->
+        <activity android:name=".app.IncomingMessageInterstitial"
+                android:label="You have messages"
+                android:theme="@style/ThemeHoloDialog"
+                android:launchMode="singleTask"
+                android:taskAffinity=""
+                android:excludeFromRecents="true">
+        </activity>
+<!-- END_INCLUDE(interstitial_affinity) -->
+
         <!-- This is used to display a notification selected by the user
              from StatusBarNotifications.  Note the configuration here so
              that the activity layers on top of whatever the user is doing,
diff --git a/samples/ApiDemos/res/layout/incoming_message.xml b/samples/ApiDemos/res/layout/incoming_message.xml
index 3c0d92a..21b0752 100644
--- a/samples/ApiDemos/res/layout/incoming_message.xml
+++ b/samples/ApiDemos/res/layout/incoming_message.xml
@@ -17,12 +17,34 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:padding="8dp">
 
-    <Button
-        android:id="@+id/notify"
+    <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="@string/incoming_message_notify_text" />
+        android:layout_gravity="center"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="Display a notification that will switch to the app in a new activity stack." />
+
+    <Button
+        android:id="@+id/notify_app"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Show App Notification" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:paddingTop="16dp"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="Display a notification that will go to a dedicated interstitial activity." />
+
+    <Button
+        android:id="@+id/notify_interstitial"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Show Interstitial Notification" />
 
 </LinearLayout>
diff --git a/samples/ApiDemos/res/layout/incoming_message_interstitial.xml b/samples/ApiDemos/res/layout/incoming_message_interstitial.xml
new file mode 100644
index 0000000..6a79325
--- /dev/null
+++ b/samples/ApiDemos/res/layout/incoming_message_interstitial.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="8dp">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:paddingBottom="4dp"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="This would be where you would see a summary of the information related to the notification.  Instead, we'll just give you a button." />
+
+    <Button
+        android:id="@+id/notify_app"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Switch To App" />
+
+</LinearLayout>
diff --git a/samples/ApiDemos/res/layout/incoming_message_view.xml b/samples/ApiDemos/res/layout/incoming_message_view.xml
index b2daf4e..a40807c 100644
--- a/samples/ApiDemos/res/layout/incoming_message_view.xml
+++ b/samples/ApiDemos/res/layout/incoming_message_view.xml
@@ -23,6 +23,15 @@
     android:paddingTop="4dip"
     >
 
+    <TextView
+        android:layout_gravity="center_vertical"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingBottom="12dip"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/incoming_message_view_message_text"
+        />
+
         <LinearLayout
             android:orientation="horizontal"
             android:layout_width="match_parent"
@@ -35,23 +44,35 @@
                     android:src="@drawable/sample_thumb_2"
                     />
 
-                <TextView
-                    android:id="@+id/message"
-                    android:layout_gravity="center_vertical"
-                    android:layout_width="wrap_content"
+                <LinearLayout
+                    android:orientation="vertical"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:layout_gravity="center_vertical"
                     android:paddingLeft="6dip"
-                    android:text="@string/incoming_message_view_message_text"
-                    />
+                    >
+                    <TextView
+                        android:id="@+id/from"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textAppearance="?android:attr/textAppearanceSmall"
+                        />
+                    <TextView
+                        android:id="@+id/message"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:textAppearance="?android:attr/textAppearanceMedium"
+                        />
+                </LinearLayout>
 
         </LinearLayout>
 
         <TextView
-            android:id="@+id/message"
             android:layout_gravity="center_vertical"
 			android:layout_width="wrap_content"
 			android:layout_height="wrap_content"
             android:paddingTop="12dip"
+            android:textAppearance="?android:attr/textAppearanceMedium"
             android:text="@string/imcoming_message_view_message2_text"
             />
 
diff --git a/samples/ApiDemos/res/layout/linear_layout_5.xml b/samples/ApiDemos/res/layout/linear_layout_5.xml
index b5d45c0..a0ff63b 100644
--- a/samples/ApiDemos/res/layout/linear_layout_5.xml
+++ b/samples/ApiDemos/res/layout/linear_layout_5.xml
@@ -35,16 +35,10 @@
 
     <!--
         Followed by the EditText field...
-
-        Also give it a standard background (the "android:"
-        part in @android:drawable/editbox_background
-        means it is system resource rather than
-        an application resource.
     -->
     <EditText
         android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:background="@android:drawable/editbox_background"/>
+        android:layout_height="wrap_content"/>
 
     <!--
         Use a horizontal layout to hold the two buttons.
diff --git a/samples/ApiDemos/res/layout/link.xml b/samples/ApiDemos/res/layout/link.xml
index d4eaf0c..6c034dd 100644
--- a/samples/ApiDemos/res/layout/link.xml
+++ b/samples/ApiDemos/res/layout/link.xml
@@ -14,43 +14,55 @@
      limitations under the License.
 -->
 
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              android:orientation="vertical"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content">
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
 
-  <!-- Four TextView widgets, each one displaying text containing links. -->
+    <LinearLayout android:orientation="vertical"
+                  android:layout_width="match_parent"
+                  android:layout_height="wrap_content"
+                  android:showDividers="middle"
+                  android:divider="?android:attr/listDivider">
 
-  <!-- text1 automatically linkifies things like URLs and phone numbers. -->
-  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-            android:id="@+id/text1"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:autoLink="all"
-            android:text="@string/link_text_auto"
-            />
+      <!-- Four TextView widgets, each one displaying text containing links. -->
 
-  <!-- text2 uses a string resource containing explicit <a> tags to
-       specify links. -->
-  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-            android:id="@+id/text2"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:text="@string/link_text_manual"
-            />
+      <!-- text1 automatically linkifies things like URLs and phone numbers. -->
+      <TextView android:id="@+id/text1"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingBottom="8dp"
+                android:autoLink="all"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:text="@string/link_text_auto"
+                />
 
-  <!-- text3 builds the text in the Java code using HTML. -->
-  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-            android:id="@+id/text3"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            />
+      <!-- text2 uses a string resource containing explicit <a> tags to
+           specify links. -->
+      <TextView android:id="@+id/text2"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingTop="8dp"
+                android:paddingBottom="8dp"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:text="@string/link_text_manual"
+                />
 
-  <!-- text4 builds the text in the Java code without using HTML. -->
-  <TextView xmlns:android="http://schemas.android.com/apk/res/android"
-            android:id="@+id/text4"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            />
+      <!-- text3 builds the text in the Java code using HTML. -->
+      <TextView android:id="@+id/text3"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingTop="8dp"
+                android:paddingBottom="8dp"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                />
 
-</LinearLayout>
+      <!-- text4 builds the text in the Java code without using HTML. -->
+      <TextView android:id="@+id/text4"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:paddingTop="8dp"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                />
+
+    </LinearLayout>
+</ScrollView>
diff --git a/samples/ApiDemos/res/layout/relative_layout_2.xml b/samples/ApiDemos/res/layout/relative_layout_2.xml
index 083953a..87a5377 100644
--- a/samples/ApiDemos/res/layout/relative_layout_2.xml
+++ b/samples/ApiDemos/res/layout/relative_layout_2.xml
@@ -33,16 +33,11 @@
 
     <!--
         Put the EditText field under the TextView
-        Also give it a standard background (the "android:"
-        part in @android:drawable/editbox_background
-        means it is system resource rather than
-        an application resource.
     -->
     <EditText
         android:id="@+id/entry"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@android:drawable/editbox_background"
         android:layout_below="@id/label"/>
 
     <!--
diff --git a/samples/ApiDemos/res/values-v11/styles.xml b/samples/ApiDemos/res/values-v11/styles.xml
index 04c6f3f..3b4fead 100644
--- a/samples/ApiDemos/res/values-v11/styles.xml
+++ b/samples/ApiDemos/res/values-v11/styles.xml
@@ -19,6 +19,10 @@
     <style name="ThemeHolo" parent="android:Theme.Holo">
     </style>
 
+    <!-- For API level 11 or later, the Holo theme is available and we prefer that. -->
+    <style name="ThemeHoloDialog" parent="android:Theme.Holo.Dialog">
+    </style>
+
     <!-- For API level 11 or later, we can use the magical DialogWhenLarge theme. -->
     <style name="ThemeDialogWhenLarge" parent="android:style/Theme.Holo.DialogWhenLarge">
     </style>
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 2913844..c637655 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -1019,14 +1019,21 @@
     <string name="linear_layout_8_b">B</string>
     <string name="linear_layout_8_c">C</string>
     <string name="linear_layout_9_button">Button</string>
-    <string name="link_text_auto"><b>text1:</b> This is some text.  In
+    <string name="link_text_auto"><b>text1: Various kinds
+      of data that will be auto-linked.</b>  In
       this text are some things that are actionable.  For instance,
       you can click on http://www.google.com and it will launch the
-      web browser.  You can click on google.com too.  And, if you
-      click on (415) 555-1212 it should dial the phone.
+      web browser.  You can click on google.com too.  If you
+      click on (415) 555-1212 it should dial the phone.  Or just write
+      foobar@example.com for an e-mail link.  If you have a URI like
+      http://www.example.com/lala/foobar@example.com you should get the
+      full link not the e-mail address.  Or you can put a location
+      like 1600 Amphitheatre Parkway, Mountain View, CA 94043.  To summarize:
+      https://www.google.com, or 650-253-0000, somebody@example.com,
+      or 9606 North MoPac Expressway, Suite 400, Austin, TX 78759.
     </string>
-    <string name="link_text_manual"><b>text2:</b> This is some other
-      text, with a <a href="http://www.google.com">link</a> specified
+    <string name="link_text_manual"><b>text2: Explicit links using &lt;a&gt; markup.</b>
+      This has markup for a <a href="http://www.google.com">link</a> specified
       via an &lt;a&gt; tag.  Use a \"tel:\" URL
       to <a href="tel:4155551212">dial a phone number</a>.
     </string>
@@ -1195,11 +1202,9 @@
 
     <string name="google_login_username_text"></string>
 
-    <string name="incoming_message_notify_text">Show Notification</string>
-
     <string name="incoming_message_info_message_text">this is the text of a previous message.\nkthx. meet u for dinner. cul8r</string>
 
-    <string name="incoming_message_view_message_text">this is the text of a previous message.\nkthx. meet u for dinner. cul8r</string>
+    <string name="incoming_message_view_message_text">This is the text of the posted notification.</string>
     <string name="imcoming_message_view_message2_text">Did you notice that the status bar icon disappeared?</string>
     <string name="imcoming_message_ticker_text">New text message: <xliff:g id="text">%0$s</xliff:g></string>
 
diff --git a/samples/ApiDemos/res/values/styles.xml b/samples/ApiDemos/res/values/styles.xml
index 10dcf35..49a1c25 100644
--- a/samples/ApiDemos/res/values/styles.xml
+++ b/samples/ApiDemos/res/values/styles.xml
@@ -30,6 +30,13 @@
     <style name="ThemeHolo" parent="android:Theme">
     </style>
 
+    <!-- This is a theme that will adjust itself depending on the API version.
+         The default definition is the safe one, using a theme that has always
+         been defined.  Look at values-11/styles.xml for a variation that is
+         selected when the holographic theme is available. -->
+    <style name="ThemeHoloDialog" parent="android:Theme.Dialog">
+    </style>
+
     <!-- Base application theme is the default theme. -->
     <style name="Theme" parent="android:Theme">
     </style>
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarTabs.java b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarTabs.java
index 11c1bc2..df6752c 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/ActionBarTabs.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/ActionBarTabs.java
@@ -52,7 +52,9 @@
 
     public void onRemoveTab(View v) {
         final ActionBar bar = getActionBar();
-        bar.removeTabAt(bar.getTabCount() - 1);
+        if (bar.getTabCount() > 0) {
+            bar.removeTabAt(bar.getTabCount() - 1);
+        }
     }
 
     public void onToggleTabs(View v) {
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
index 41d2ea3..63a254f 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java
@@ -16,22 +16,24 @@
 
 package com.example.android.apis.app;
 
+import java.util.Random;
+
 import com.example.android.apis.R;
 
 import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
 import android.os.Bundle;
-import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
-import android.widget.TextView;
 
+/**
+ * UI for posting an example notification.
+ */
 public class IncomingMessage extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -39,36 +41,82 @@
 
         setContentView(R.layout.incoming_message);
 
-        Button button = (Button) findViewById(R.id.notify);
+        Button button = (Button) findViewById(R.id.notify_app);
         button.setOnClickListener(new Button.OnClickListener() {
                 public void onClick(View v) {
-                    showNotification();
+                    showAppNotification();
+                }
+            });
+
+        button = (Button) findViewById(R.id.notify_interstitial);
+        button.setOnClickListener(new Button.OnClickListener() {
+                public void onClick(View v) {
+                    showInterstitialNotification();
                 }
             });
     }
 
-    private View inflateView(int resource) {
-        LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        return vi.inflate(resource, null);
+//BEGIN_INCLUDE(app_notification)
+//BEGIN_INCLUDE(intent_array)
+    /**
+     * This method creates an array of Intent objects representing the
+     * activity stack for the incoming message details state that the
+     * application should be in when launching it from a notification.
+     */
+    static Intent[] makeMessageIntentStack(Context context, CharSequence from,
+            CharSequence msg) {
+        // A typical convention for notifications is to launch the user deeply
+        // into an application representing the data in the notification; to
+        // accomplish this, we can build an array of intents to insert the back
+        // stack stack history above the item being displayed.
+        Intent[] intents = new Intent[4];
+
+        // First: root activity of ApiDemos.
+        // This is a convenient way to make the proper Intent to launch and
+        // reset an application's task.
+        intents[0] = Intent.makeRestartActivityTask(new ComponentName(context,
+                com.example.android.apis.ApiDemos.class));
+
+        // "App"
+        intents[1] = new Intent(context, com.example.android.apis.ApiDemos.class);
+        intents[1].putExtra("com.example.android.apis.Path", "App");
+        // "App/Notification"
+        intents[2] = new Intent(context, com.example.android.apis.ApiDemos.class);
+        intents[2].putExtra("com.example.android.apis.Path", "App/Notification");
+
+        // Now the activity to display to the user.  Also fill in the data it
+        // should display.
+        intents[3] = new Intent(context, IncomingMessageView.class);
+        intents[3].putExtra(IncomingMessageView.KEY_FROM, from);
+        intents[3].putExtra(IncomingMessageView.KEY_MESSAGE, msg);
+
+        return intents;
     }
+//END_INCLUDE(intent_array)
 
     /**
      * The notification is the icon and associated expanded entry in the
      * status bar.
      */
-    protected void showNotification() {
+    void showAppNotification() {
         // look up the notification manager service
         NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
 
         // The details of our fake message
         CharSequence from = "Joe";
-        CharSequence message = "kthx. meet u for dinner. cul8r";
+        CharSequence message;
+        switch ((new Random().nextInt()) % 3) {
+            case 0: message = "r u hungry?  i am starved"; break;
+            case 1: message = "im nearby u"; break;
+            default: message = "kthx. meet u for dinner. cul8r"; break;
+        }
 
-        // The PendingIntent to launch our activity if the user selects this notification
-//BEGIN_INCLUDE(pending_intent)
-        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
-                new Intent(this, IncomingMessageView.class), 0);
-//END_INCLUDE(pending_intent)
+        // The PendingIntent to launch our activity if the user selects this
+        // notification.  Note the use of FLAG_CANCEL_CURRENT so that, if there
+        // is already an active matching pending intent, cancel it and replace
+        // it with the new array of Intents.
+        PendingIntent contentIntent = PendingIntent.getActivities(this, 0,
+                makeMessageIntentStack(this, from, message), PendingIntent.FLAG_CANCEL_CURRENT);
 
         // The ticker text, this uses a formatted string so our message could be localized
         String tickerText = getString(R.string.imcoming_message_ticker_text, message);
@@ -80,20 +128,10 @@
         // Set the info for the views that show in the notification panel.
         notif.setLatestEventInfo(this, from, message, contentIntent);
 
-        /*
-        // On tablets, the ticker shows the sender, the first line of the message,
-        // the photo of the person and the app icon.  For our sample, we just show
-        // the same icon twice.  If there is no sender, just pass an array of 1 Bitmap.
-        notif.tickerTitle = from;
-        notif.tickerSubtitle = message;
-        notif.tickerIcons = new Bitmap[2];
-        notif.tickerIcons[0] = getIconBitmap();;
-        notif.tickerIcons[1] = getIconBitmap();;
-        */
-
-        // after a 0ms delay, vibrate for 250ms, pause for 100 ms and
-        // then vibrate for 500ms.
-        notif.vibrate = new long[] { 0, 250, 100, 500};
+        // We'll have this notification do the default sound, vibration, and led.
+        // Note that if you want any of these behaviors, you should always have
+        // a preference for the user to turn them off.
+        notif.defaults = Notification.DEFAULT_ALL;
 
         // Note that we use R.layout.incoming_message_panel as the ID for
         // the notification.  It could be any integer you want, but we use
@@ -102,10 +140,58 @@
         // application.
         nm.notify(R.string.imcoming_message_ticker_text, notif);
     }
+//END_INCLUDE(app_notification)
 
-    private Bitmap getIconBitmap() {
-        BitmapFactory f = new BitmapFactory();
-        return f.decodeResource(getResources(), R.drawable.app_sample_code);
+//BEGIN_INCLUDE(interstitial_notification)
+    /**
+     * The notification is the icon and associated expanded entry in the
+     * status bar.
+     */
+    void showInterstitialNotification() {
+        // look up the notification manager service
+        NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
+
+        // The details of our fake message
+        CharSequence from = "Dianne";
+        CharSequence message;
+        switch ((new Random().nextInt()) % 3) {
+            case 0: message = "i am ready for some dinner"; break;
+            case 1: message = "how about thai down the block?"; break;
+            default: message = "meet u soon. dont b late!"; break;
+        }
+
+        // The PendingIntent to launch our activity if the user selects this
+        // notification.  Note the use of FLAG_CANCEL_CURRENT so that, if there
+        // is already an active matching pending intent, cancel it and replace
+        // it with the new Intent.
+        Intent intent = new Intent(this, IncomingMessageInterstitial.class);
+        intent.putExtra(IncomingMessageView.KEY_FROM, from);
+        intent.putExtra(IncomingMessageView.KEY_MESSAGE, message);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
+                intent, PendingIntent.FLAG_CANCEL_CURRENT);
+
+        // The ticker text, this uses a formatted string so our message could be localized
+        String tickerText = getString(R.string.imcoming_message_ticker_text, message);
+
+        // construct the Notification object.
+        Notification notif = new Notification(R.drawable.stat_sample, tickerText,
+                System.currentTimeMillis());
+
+        // Set the info for the views that show in the notification panel.
+        notif.setLatestEventInfo(this, from, message, contentIntent);
+
+        // We'll have this notification do the default sound, vibration, and led.
+        // Note that if you want any of these behaviors, you should always have
+        // a preference for the user to turn them off.
+        notif.defaults = Notification.DEFAULT_ALL;
+
+        // Note that we use R.layout.incoming_message_panel as the ID for
+        // the notification.  It could be any integer you want, but we use
+        // the convention of using a resource id for a string related to
+        // the notification.  It will always be a unique number within your
+        // application.
+        nm.notify(R.string.imcoming_message_ticker_text, notif);
     }
+//END_INCLUDE(interstitial_notification)
 }
-
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageInterstitial.java b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageInterstitial.java
new file mode 100644
index 0000000..f9bbd7b
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageInterstitial.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.apis.app;
+
+import com.example.android.apis.R;
+
+import android.app.Activity;
+import android.app.NotificationManager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.Button;
+
+/**
+ * This is an activity that provides an interstitial UI for the notification
+ * that is posted by {@link IncomingMessage}.  It allows the user to switch
+ * to the app in its appropriate state if they want.
+ */
+public class IncomingMessageInterstitial extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setContentView(R.layout.incoming_message_interstitial);
+
+        Button button = (Button) findViewById(R.id.notify_app);
+        button.setOnClickListener(new Button.OnClickListener() {
+                public void onClick(View v) {
+                    switchToApp();
+                }
+            });
+    }
+
+//BEGIN_INCLUDE(app_launch)
+    /**
+     * Perform a switch to the app.  A new activity stack is started, replacing
+     * whatever is currently running, and this activity is finished.
+     */
+    void switchToApp() {
+        // We will launch the app showing what the user picked.  In this simple
+        // example, it is just what the notification gave us.
+        CharSequence from = getIntent().getCharSequenceExtra(IncomingMessageView.KEY_FROM);
+        CharSequence msg = getIntent().getCharSequenceExtra(IncomingMessageView.KEY_MESSAGE);
+        // Build the new activity stack, launch it, and finish this UI.
+        Intent[] stack = IncomingMessage.makeMessageIntentStack(this, from, msg);
+        startActivities(stack);
+        finish();
+    }
+//END_INCLUDE(app_launch)
+}
diff --git a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java
index 13ea3da..144184d 100644
--- a/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java
+++ b/samples/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java
@@ -21,6 +21,7 @@
 import android.app.Activity;
 import android.app.NotificationManager;
 import android.os.Bundle;
+import android.widget.TextView;
 
 /**
  * This activity is run as the click activity for {@link IncomingMessage}.
@@ -28,11 +29,26 @@
  * has been "read."
  */
 public class IncomingMessageView extends Activity {
+    /**
+     * Extra that can be supplied to Intent: who the message is from.
+     */
+    static final public String KEY_FROM = "from";
+    /**
+     * Extra that can be supplied to Intent: the message that was sent.
+     */
+    static final public String KEY_MESSAGE = "message";
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.incoming_message_view);
 
+        // Fill in the message content.
+        ((TextView)findViewById(R.id.from)).setText(
+                getIntent().getCharSequenceExtra(KEY_FROM));
+        ((TextView)findViewById(R.id.message)).setText(
+                getIntent().getCharSequenceExtra(KEY_MESSAGE));
+
         // look up the notification manager service
         NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
 
diff --git a/samples/ApiDemos/src/com/example/android/apis/text/Link.java b/samples/ApiDemos/src/com/example/android/apis/text/Link.java
index b569d19..cc3ed5b 100644
--- a/samples/ApiDemos/src/com/example/android/apis/text/Link.java
+++ b/samples/ApiDemos/src/com/example/android/apis/text/Link.java
@@ -59,7 +59,7 @@
         TextView t3 = (TextView) findViewById(R.id.text3);
         t3.setText(
             Html.fromHtml(
-                "<b>text3:</b>  Text with a " +
+                "<b>text3: Constructed from HTML programmatically.</b>  Text with a " +
                 "<a href=\"http://www.google.com\">link</a> " +
                 "created in the Java source code using HTML."));
         t3.setMovementMethod(LinkMovementMethod.getInstance());
@@ -70,11 +70,11 @@
         // hardcoded value.
 
         SpannableString ss = new SpannableString(
-            "text4: Click here to dial the phone.");
+            "text4: Manually created spans. Click here to dial the phone.");
 
-        ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 6,
+        ss.setSpan(new StyleSpan(Typeface.BOLD), 0, 30,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
-        ss.setSpan(new URLSpan("tel:4155551212"), 13, 17,
+        ss.setSpan(new URLSpan("tel:4155551212"), 31+6, 31+10,
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 
         TextView t4 = (TextView) findViewById(R.id.text4);
diff --git a/samples/AppNavigation/Android.mk b/samples/AppNavigation/Android.mk
new file mode 100644
index 0000000..758201e
--- /dev/null
+++ b/samples/AppNavigation/Android.mk
@@ -0,0 +1,19 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := samples tests
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := AppNavigation
+
+LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
+
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_PACKAGE)
+
+LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+
+# Use the following include to make our test apk.
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/samples/AppNavigation/AndroidManifest.xml b/samples/AppNavigation/AndroidManifest.xml
new file mode 100644
index 0000000..135016e
--- /dev/null
+++ b/samples/AppNavigation/AndroidManifest.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<manifest android:versionCode="1"
+        android:versionName="1"
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.example.android.appnavigation">
+
+    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
+
+    <application android:label="@string/app_name">
+        <activity android:name=".app.AppNavHomeActivity"
+                android:label="@string/app_nav_home_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.SimpleUpActivity"
+                  android:label="@string/simple_up_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.PeerActivity"
+                  android:label="@string/peer_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.ViewFromOtherTaskActivity"
+                  android:label="@string/view_from_other_task_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.OutsideTaskActivity"
+                  android:label="@string/outside_task_label"
+                  android:theme="@style/Theme.Light"
+                  android:taskAffinity="com.example.android.appnavigation.outsidetask">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name=".app.ContentViewActivity"
+                  android:label="@string/content_view_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.intent.action.VIEW" />
+                <data android:mimeType="application/x-example" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.ContentCategoryActivity" />
+        </activity>
+
+        <activity android:name=".app.ContentCategoryActivity"
+                  android:label="@string/content_category_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.NotificationsActivity"
+                  android:label="@string/notifications_label">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+            <meta-data android:name="android.support.PARENT_ACTIVITY"
+                       android:value=".app.AppNavHomeActivity" />
+        </activity>
+
+        <activity android:name=".app.InterstitialMessageActivity"
+                  android:label="@string/interstitial_label"
+                  android:theme="@style/Theme.Dialog"
+                  android:launchMode="singleTask"
+                  android:excludeFromRecents="true"
+                  android:taskAffinity="">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/samples/AppNavigation/res/layout/content_category.xml b/samples/AppNavigation/res/layout/content_category.xml
new file mode 100644
index 0000000..2727260
--- /dev/null
+++ b/samples/AppNavigation/res/layout/content_category.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/intermediate_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_content_view"
+            android:onClick="onViewContent" />
+</LinearLayout>
diff --git a/samples/AppNavigation/res/layout/content_view.xml b/samples/AppNavigation/res/layout/content_view.xml
new file mode 100644
index 0000000..eabd2eb
--- /dev/null
+++ b/samples/AppNavigation/res/layout/content_view.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/content_view_description" />
+    <TextView android:id="@+id/status_text"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:layout_marginTop="8dp"
+              android:text="@string/default_status_text" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/AppNavigation/res/layout/interstitial_message.xml b/samples/AppNavigation/res/layout/interstitial_message.xml
new file mode 100644
index 0000000..d957ecd
--- /dev/null
+++ b/samples/AppNavigation/res/layout/interstitial_message.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:orientation="vertical"
+              style="@style/InterstitialDialogLayout">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/interstitial_description"
+              android:layout_marginTop="16dp"
+              android:layout_marginBottom="16dp"
+              android:layout_marginLeft="16dp"
+              android:layout_marginRight="16dp"/>
+    <LinearLayout android:layout_width="match_parent"
+                  android:layout_height="wrap_content"
+                  style="@style/ButtonBar">
+        <Button android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:text="@string/launch_content_view"
+                android:onClick="onViewContent"
+                style="@style/ButtonBarButton"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/samples/AppNavigation/res/layout/notifications.xml b/samples/AppNavigation/res/layout/notifications.xml
new file mode 100644
index 0000000..10112f3
--- /dev/null
+++ b/samples/AppNavigation/res/layout/notifications.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/notifications_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/post_direct_notification"
+            android:onClick="onPostDirect" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/post_interstitial_notification"
+            android:onClick="onPostInterstitial" />
+</LinearLayout>
diff --git a/samples/AppNavigation/res/layout/outside_task.xml b/samples/AppNavigation/res/layout/outside_task.xml
new file mode 100644
index 0000000..00c78aa
--- /dev/null
+++ b/samples/AppNavigation/res/layout/outside_task.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/outside_task_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_content_view"
+            android:onClick="onViewContent" />
+</LinearLayout>
diff --git a/samples/AppNavigation/res/layout/peer.xml b/samples/AppNavigation/res/layout/peer.xml
new file mode 100644
index 0000000..ee706b3
--- /dev/null
+++ b/samples/AppNavigation/res/layout/peer.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/peer_description" />
+    <TextView android:id="@+id/peer_counter"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:layout_marginTop="8dp"
+              android:text="@string/peer_count" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_peer"
+            android:onClick="onLaunchPeer" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/AppNavigation/res/layout/simple_up.xml b/samples/AppNavigation/res/layout/simple_up.xml
new file mode 100644
index 0000000..2897d84
--- /dev/null
+++ b/samples/AppNavigation/res/layout/simple_up.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+          android:layout_width="match_parent"
+          android:layout_height="match_parent"
+          android:text="@string/simple_up_description"
+          android:padding="16dp" />
diff --git a/samples/AppNavigation/res/layout/view_from_other_task.xml b/samples/AppNavigation/res/layout/view_from_other_task.xml
new file mode 100644
index 0000000..941d74c
--- /dev/null
+++ b/samples/AppNavigation/res/layout/view_from_other_task.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:padding="16dp"
+              android:orientation="vertical">
+    <TextView android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:text="@string/view_from_other_task_description" />
+    <Button android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="8dp"
+            android:text="@string/launch_other_task"
+            android:onClick="onLaunchOtherTask" />
+</LinearLayout>
\ No newline at end of file
diff --git a/samples/AppNavigation/res/values-v11/styles.xml b/samples/AppNavigation/res/values-v11/styles.xml
new file mode 100644
index 0000000..e61e9d4
--- /dev/null
+++ b/samples/AppNavigation/res/values-v11/styles.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <style name="InterstitialDialogLayout">
+        <item name="android:divider">?android:attr/dividerHorizontal</item>
+        <item name="android:showDividers">middle</item>
+    </style>
+
+    <style name="ButtonBar" parent="@android:style/Holo.ButtonBar.AlertDialog" />
+    <style name="ButtonBarButton" parent="@android:style/Widget.Holo.Button.Borderless" />
+
+</resources>
diff --git a/samples/AppNavigation/res/values-v11/themes.xml b/samples/AppNavigation/res/values-v11/themes.xml
new file mode 100644
index 0000000..b9f7fdb
--- /dev/null
+++ b/samples/AppNavigation/res/values-v11/themes.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <style name="Theme.Light" parent="@android:style/Theme.Holo.Light" />
+    <style name="Theme.Dialog" parent="@android:style/Theme.Holo.Dialog" />
+</resources>
diff --git a/samples/AppNavigation/res/values-v14/themes.xml b/samples/AppNavigation/res/values-v14/themes.xml
new file mode 100644
index 0000000..79fabda
--- /dev/null
+++ b/samples/AppNavigation/res/values-v14/themes.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <style name="Theme.Light" parent="@android:style/Theme.DeviceDefault.Light" />
+</resources>
diff --git a/samples/AppNavigation/res/values/ids.xml b/samples/AppNavigation/res/values/ids.xml
new file mode 100644
index 0000000..c143cf7
--- /dev/null
+++ b/samples/AppNavigation/res/values/ids.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <item type="id" name="direct_notification" />
+    <item type="id" name="interstitial_notification" />
+</resources>
diff --git a/samples/AppNavigation/res/values/strings.xml b/samples/AppNavigation/res/values/strings.xml
new file mode 100644
index 0000000..66ac469
--- /dev/null
+++ b/samples/AppNavigation/res/values/strings.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="app_name">App Navigation Sample</string>
+    <string name="app_nav_home_label">App Navigation</string>
+
+    <string name="simple_up_label">Simple Up Navigation</string>
+    <string name="simple_up_description">This demo shows the simple case of up navigation that does not ever need to cross across different tasks. Press the up button on the action bar to return to the demo list. For simple drill-down navigation, the application up and system back buttons will navigate to the same location, leaving the task\'s back stack in the same state.</string>
+
+    <string name="peer_label">Peer Activities</string>
+    <string name="peer_description">This is an activity that shows content with many navigation peers. Think of a content browser that offers links to related content items. Pressing back from this activity will return to the previously viewed content item if you reached this point through a related link. If you reached it from the app nav example home activity, back will return there. Navigating up from this activity will always return to the app nav example home activity and clean up the back stack along the way.</string>
+    <string name="launch_peer">Link to another peer activity</string>
+    <string name="peer_count">Peer count: </string>
+
+    <string name="view_from_other_task_label">View from other task</string>
+    <string name="view_from_other_task_description">This combined demo shows how to handle up navigation when another task has launched your app\'s activity on its own task stack. Navigating up in this scenario should synthesize a task stack representing the most common or direct navigation path to the parent activity. The code example shows how to handle this using helper code from the support library. Press the button below to launch a separate task and begin the demo.</string>
+    <string name="launch_other_task">Launch new task</string>
+
+    <string name="outside_task_label">Outside Task</string>
+    <string name="outside_task_description">This activity has been launched in a new task. You can confirm this by pressing the Recents button now and switching back to the app navigation example task. This activity will view content with the fake mimetype \"application/x-example\" which will be received by another code example activity to continue the demo. Press the View button below.</string>
+
+    <string name="content_view_label">Content Viewer</string>
+    <string name="content_view_description">This activity can receive ACTION_VIEW intents with the mimetype \"application/x-example\", sent by the outside task component of this demo. If you launched the activity this way then it will be on the viewing activity\'s task stack. Press the back button to finish this activity and return to the activity that wanted to view the content. Press the up button in the action bar to jump back into the main demo task with a synthesized back stack. This matches the pattern for content viewers such as a photo gallery or video player.</string>
+    <string name="default_status_text">Navigated here from category</string>
+
+    <string name="content_category_label">Content Category</string>
+    <string name="intermediate_description">This activity is a parent for the example content viewer activity. Navigating up from the content viewer will lead here. Navigating up from here will lead back to the app navigation home activity. Note that if you reached this activity by navigating up from the example content viewer activity, you are back on the main app navigation example task. Press the button below to navigate to the content viewer activity.</string>
+    <string name="launch_content_view">Launch content view activity</string>
+
+    <string name="notifications_label">Notifications</string>
+    <string name="notifications_description">There are two classes of notifications: notifications that deep-link into an app directly, (e.g. an incoming SMS) and notifications that present an interstitial/summary of multiple collapsed notifications before linking into the app itself. (e.g. Calendar event notifications.) The buttons below will create notifications of each type.</string>
+    <string name="post_direct_notification">Post direct notification</string>
+    <string name="post_interstitial_notification">Post interstitial notification</string>
+
+    <string name="interstitial_label">Interstitial</string>
+    <string name="interstitial_description">This is an interstitial activity running in response to a notification. It presents a summary of info in a lightweight manner that does not exist as a task in Recents. Tap the button below to jump to the primary content.</string>
+
+</resources>
diff --git a/samples/AppNavigation/res/values/styles.xml b/samples/AppNavigation/res/values/styles.xml
new file mode 100644
index 0000000..d869170
--- /dev/null
+++ b/samples/AppNavigation/res/values/styles.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <style name="InterstitialDialogLayout" />
+
+    <style name="ButtonBar" parent="@android:style/ButtonBar" />
+    <style name="ButtonBarButton" parent="@android:style/Widget.Button" />
+
+</resources>
diff --git a/samples/AppNavigation/res/values/themes.xml b/samples/AppNavigation/res/values/themes.xml
new file mode 100644
index 0000000..beebacf
--- /dev/null
+++ b/samples/AppNavigation/res/values/themes.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <style name="Theme.Light" parent="@android:style/Theme.Light" />
+    <style name="Theme.Dialog" parent="@android:style/Theme.Dialog" />
+</resources>
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ActionBarCompat.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ActionBarCompat.java
new file mode 100644
index 0000000..0822336
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ActionBarCompat.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import android.app.Activity;
+import android.os.Build;
+
+/**
+ * Very limited shim for enabling the action bar's up button on devices that support it.
+ */
+public class ActionBarCompat {
+    /**
+     * This class will only ever be loaded if the version check succeeds,
+     * keeping the verifier from rejecting the use of framework classes that
+     * don't exist on older platform versions.
+     */
+    static class ActionBarCompatImpl {
+        static void setDisplayHomeAsUpEnabled(Activity activity, boolean enable) {
+            activity.getActionBar().setDisplayHomeAsUpEnabled(enable);
+        }
+    }
+
+    public static void setDisplayHomeAsUpEnabled(Activity activity, boolean enable) {
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+            ActionBarCompatImpl.setDisplayHomeAsUpEnabled(activity, enable);
+        }
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/AppNavHomeActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/AppNavHomeActivity.java
new file mode 100644
index 0000000..469ab4e
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/AppNavHomeActivity.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import android.app.ListActivity;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Home activity for app navigation code samples.
+ */
+public class AppNavHomeActivity extends ListActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        setListAdapter(new SampleAdapter(querySampleActivities()));
+    }
+
+    @Override
+    protected void onListItemClick(ListView lv, View v, int pos, long id) {
+        SampleInfo info = (SampleInfo) getListAdapter().getItem(pos);
+        startActivity(info.intent);
+    }
+
+    protected List<SampleInfo> querySampleActivities() {
+        Intent intent = new Intent(Intent.ACTION_MAIN, null);
+        intent.setPackage(getPackageName());
+        intent.addCategory(Intent.CATEGORY_SAMPLE_CODE);
+
+        PackageManager pm = getPackageManager();
+        List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0);
+
+        ArrayList<SampleInfo> samples = new ArrayList<SampleInfo>();
+
+        final int count = infos.size();
+        for (int i = 0; i < count; i++) {
+            final ResolveInfo info = infos.get(i);
+            final CharSequence labelSeq = info.loadLabel(pm);
+            String label = labelSeq != null ? labelSeq.toString() : info.activityInfo.name;
+
+            Intent target = new Intent();
+            target.setClassName(info.activityInfo.applicationInfo.packageName,
+                    info.activityInfo.name);
+            SampleInfo sample = new SampleInfo(label, target);
+            samples.add(sample);
+        }
+
+        return samples;
+    }
+
+    static class SampleInfo {
+        String name;
+        Intent intent;
+
+        SampleInfo(String name, Intent intent) {
+            this.name = name;
+            this.intent = intent;
+        }
+    }
+
+    class SampleAdapter extends BaseAdapter {
+        private List<SampleInfo> mItems;
+
+        public SampleAdapter(List<SampleInfo> items) {
+            mItems = items;
+        }
+
+        @Override
+        public int getCount() {
+            return mItems.size();
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return mItems.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = getLayoutInflater().inflate(android.R.layout.simple_list_item_1,
+                        parent, false);
+                convertView.setTag(convertView.findViewById(android.R.id.text1));
+            }
+            TextView tv = (TextView) convertView.getTag();
+            tv.setText(mItems.get(position).name);
+            return convertView;
+        }
+
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java
new file mode 100644
index 0000000..534f391
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentCategoryActivity.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+import android.view.View;
+
+public class ContentCategoryActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.content_category);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void onViewContent(View v) {
+        Intent target = new Intent(this, ContentViewActivity.class);
+        startActivity(target);
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java
new file mode 100644
index 0000000..5283230
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ContentViewActivity.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.support.v4.app.ShareCompat;
+import android.support.v4.app.TaskStackBuilder;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class ContentViewActivity extends Activity {
+    public static final String EXTRA_TEXT = "com.example.android.appnavigation.EXTRA_TEXT";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.content_view);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+
+        Intent intent = getIntent();
+        if (Intent.ACTION_VIEW.equals(intent.getAction())) {
+            TextView tv = (TextView) findViewById(R.id.status_text);
+            tv.setText("Viewing content from ACTION_VIEW");
+        } else if (intent.hasExtra(EXTRA_TEXT)) {
+            TextView tv = (TextView) findViewById(R.id.status_text);
+            tv.setText(intent.getStringExtra(EXTRA_TEXT));
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            Intent upIntent = NavUtils.getParentActivityIntent(this);
+            if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
+                TaskStackBuilder.from(this)
+                        .addParentStack(this)
+                        .startActivities();
+                finish();
+            } else {
+                NavUtils.navigateUpTo(this, upIntent);
+            }
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java
new file mode 100644
index 0000000..1d0154d
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/InterstitialMessageActivity.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.TaskStackBuilder;
+import android.view.View;
+
+public class InterstitialMessageActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.interstitial_message);
+    }
+
+    public void onViewContent(View v) {
+        TaskStackBuilder.from(this)
+                .addParentStack(ContentViewActivity.class)
+                .addNextIntent(new Intent(this, ContentViewActivity.class)
+                        .putExtra(ContentViewActivity.EXTRA_TEXT, "From Interstitial Notification"))
+                .startActivities();
+        finish();
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java
new file mode 100644
index 0000000..f14dbc6
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/NotificationsActivity.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.Activity;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.support.v4.app.NotificationCompat;
+import android.support.v4.app.TaskStackBuilder;
+import android.view.MenuItem;
+import android.view.View;
+
+public class NotificationsActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.notifications);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void onPostDirect(View v) {
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+                .setTicker("Direct Notification")
+                .setSmallIcon(android.R.drawable.stat_notify_chat)
+                .setContentTitle("Direct Notification")
+                .setContentText("This will open the content viewer")
+                .setAutoCancel(true)
+                .setContentIntent(TaskStackBuilder.from(this)
+                        .addParentStack(ContentViewActivity.class)
+                        .addNextIntent(new Intent(this, ContentViewActivity.class)
+                                .putExtra(ContentViewActivity.EXTRA_TEXT, "From Notification"))
+                        .getPendingIntent(0, 0));
+        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        nm.notify("direct_tag", R.id.direct_notification, builder.getNotification());
+    }
+
+    public void onPostInterstitial(View v) {
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
+                .setTicker("Interstitial Notification")
+                .setSmallIcon(android.R.drawable.stat_notify_chat)
+                .setContentTitle("Interstitial Notification")
+                .setContentText("This will show a detail page")
+                .setAutoCancel(true)
+                .setContentIntent(PendingIntent.getActivity(this, 0,
+                        new Intent(this, InterstitialMessageActivity.class)
+                                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+                                        Intent.FLAG_ACTIVITY_CLEAR_TASK), 0));
+        NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+        nm.notify("interstitial_tag", R.id.interstitial_notification, builder.getNotification());
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/OutsideTaskActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/OutsideTaskActivity.java
new file mode 100644
index 0000000..4022fa6
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/OutsideTaskActivity.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+
+public class OutsideTaskActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.outside_task);
+    }
+
+    public void onViewContent(View v) {
+        Intent intent = new Intent(Intent.ACTION_VIEW)
+                .setType("application/x-example")
+                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+        startActivity(intent);
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java
new file mode 100644
index 0000000..45083fd
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/PeerActivity.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.TextView;
+
+public class PeerActivity extends Activity {
+    private static final String EXTRA_PEER_COUNT =
+            "com.example.android.appnavigation.EXTRA_PEER_COUNT";
+
+    private int mPeerCount;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.peer);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+
+        mPeerCount = getIntent().getIntExtra(EXTRA_PEER_COUNT, 0) + 1;
+        TextView tv = (TextView) findViewById(R.id.peer_counter);
+        tv.setText(getResources().getText(R.string.peer_count).toString() + mPeerCount);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    public void onLaunchPeer(View v) {
+        Intent target = new Intent(this, PeerActivity.class);
+        target.putExtra(EXTRA_PEER_COUNT, mPeerCount);
+        startActivity(target);
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java
new file mode 100644
index 0000000..4141951
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/SimpleUpActivity.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+
+public class SimpleUpActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.simple_up);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java b/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java
new file mode 100644
index 0000000..06e1699
--- /dev/null
+++ b/samples/AppNavigation/src/com/example/android/appnavigation/app/ViewFromOtherTaskActivity.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.appnavigation.app;
+
+import com.example.android.appnavigation.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.NavUtils;
+import android.view.MenuItem;
+import android.view.View;
+
+public class ViewFromOtherTaskActivity extends Activity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.view_from_other_task);
+
+        ActionBarCompat.setDisplayHomeAsUpEnabled(this, true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            NavUtils.navigateUpFromSameTask(this);
+            return true;
+        }
+        return false;
+    }
+
+    public void onLaunchOtherTask(View v) {
+        Intent target = new Intent(this, OutsideTaskActivity.class)
+                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
+                        Intent.FLAG_ACTIVITY_TASK_ON_HOME);
+        startActivity(target);
+    }
+}
diff --git a/samples/BackupRestore/AndroidManifest.xml b/samples/BackupRestore/AndroidManifest.xml
index af86634..bccd4f7 100644
--- a/samples/BackupRestore/AndroidManifest.xml
+++ b/samples/BackupRestore/AndroidManifest.xml
@@ -26,6 +26,7 @@
 
     <!-- The backup/restore mechanism was introduced in API version 8 -->
     <uses-sdk android:minSdkVersion="8"/>
+    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
 
     <application android:label="Backup/Restore"
         android:backupAgent="ExampleAgent">
diff --git a/samples/BluetoothHDP/_index.html b/samples/BluetoothHDP/_index.html
index 3871bf3..3fb3bab 100755
--- a/samples/BluetoothHDP/_index.html
+++ b/samples/BluetoothHDP/_index.html
@@ -1,4 +1,11 @@
-<p>A sample application that demonstrates how to communicate with a Bluetooth Health Device Profile (HDP) device.  This feature is available on Android 4.0 (API level 14) or above platforms.</p>
+<p>A sample application that demonstrates how to communicate with a Bluetooth Health Device Profile (HDP) device.  This feature is available on Android 4.0 (API level 14) or above platforms. The Android Bluetooth Health API lets you create
+applications that use Bluetooth to communicate with health devices that support
+Bluetooth, such as heart-rate monitors, blood meters, thermometers, scales, and
+so on. For a list of supported devices and their corresponding device data
+specialization codes, refer to <strong>Bluetooth Assigned Numbers</strong> at <a
+href="http://www.bluetooth.org">www.bluetooth.org</a>. Note that these values
+are also referenced in the ISO/IEEE 11073-20601 [7] specification as
+MDC_DEV_SPEC_PROFILE_* in the Nomenclature Codes Annex.</p>
 
 <p>The application manages connection with Bluetooth HDP-enabled devices.  Possible device type include blood pressure monitor, glucose meter, thermometer, etc.  Upon connection, the application retrieves raw data sent from the device.  Note that in order to interpret the data, a parser that conforms to the IEEE 11073-xxxxx specifications would be required.</p>
 
diff --git a/samples/BrowserPlugin/jni/RenderingThread.h b/samples/BrowserPlugin/jni/RenderingThread.h
index cb4fb96..6136019 100644
--- a/samples/BrowserPlugin/jni/RenderingThread.h
+++ b/samples/BrowserPlugin/jni/RenderingThread.h
@@ -26,6 +26,7 @@
 #include "SkCanvas.h"
 #include "SkBitmap.h"
 
+#include <utils/threads.h>
 #include <EGL/egl.h>
 #include <GLES2/gl2.h>
 
diff --git a/samples/CrossCompatibility/AndroidManifest.xml b/samples/CrossCompatibility/AndroidManifest.xml
index 1097a4d..43eb4ff 100644
--- a/samples/CrossCompatibility/AndroidManifest.xml
+++ b/samples/CrossCompatibility/AndroidManifest.xml
@@ -3,6 +3,11 @@
       package="com.example.android.touchexample"
       android:versionCode="1"
       android:versionName="1.0">
+
+    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
+    <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
+    <supports-screens android:largeScreens="true"/>
+
     <application android:icon="@drawable/icon" android:label="@string/app_name">
         <activity android:name=".TouchExampleActivity"
                   android:label="@string/app_name">
@@ -13,5 +18,5 @@
         </activity>
 
     </application>
-    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" />
+
 </manifest>
diff --git a/samples/CrossCompatibility/src/com/example/android/touchexample/TouchExample b/samples/CrossCompatibility/src/com/example/android/touchexample/TouchExample
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/samples/CrossCompatibility/src/com/example/android/touchexample/TouchExample
diff --git a/samples/CubeLiveWallpaper/_index.html b/samples/CubeLiveWallpaper/_index.html
index a429215..ce512f8 100644
--- a/samples/CubeLiveWallpaper/_index.html
+++ b/samples/CubeLiveWallpaper/_index.html
@@ -56,19 +56,19 @@
 supported only on Android 2.1 (API level 7) and higher versions of the platform.
 To ensure that your application can only be installed on devices that support
 live wallpapers, remember to add the following to the application's manifest
-before publishing to Android Market:</p>
+before publishing to Google Play:</p>
 
 <ul>
 <li><code>&lt;uses-sdk android:minSdkVersion="7" /&gt;</code>, which indicates 
-to Android Market and the platform that your application requires Android 2.1 or 
+to Google Play and the platform that your application requires Android 2.1 or 
 higher. For more information, see the <a href="../../../guide/appendix/api-levels.html">API Levels</a>
 and the documentation for the 
 <a href="../../../guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
 element.</li>
 <li><code>&lt;uses-feature android:name="android.software.live_wallpaper" /&gt;</code>, 
-which tells Android Market that your application includes a live wallpaper.
-Android Market uses this feature as a filter, when presenting users lists of
-available applications. When you declaring this feature, Android Market
+which tells Google Play that your application includes a live wallpaper.
+Google Play uses this feature as a filter, when presenting users lists of
+available applications. When you declaring this feature, Google Play
 displays your application only to users whose devices support live wallpapers,
 while hiding it from other devices on which it would not be able to run. For
 more information, see the documentation for the
diff --git a/samples/NFCDemo/_index.html b/samples/NFCDemo/_index.html
index d1c53f1..07978f2 100644
--- a/samples/NFCDemo/_index.html
+++ b/samples/NFCDemo/_index.html
@@ -83,13 +83,13 @@
   among devices running Android 2.3 (API level 9) or higher, not all devices will offer NFC
   support. To ensure that your application can only be installed on devices that are capable
   of supporting NFC, remember to add the following to the application's manifest before
-  publishing to Android Market:
+  publishing to Google Play:
 </p>
 <ul>
   <li>
     <code>&lt;uses-sdk android:minSdkVersion="9" /&gt;
     </code>,
-    which indicates to Android Market and the platform that your application requires
+    which indicates to Google Play and the platform that your application requires
     Android 2.3 or higher. For more information, see
     <a href="../../../guide/appendix/api-levels.html">API Levels
     </a>
@@ -100,17 +100,17 @@
     </a> element.
   </li>
 </ul>
-<p>To control how Android Market filters your application
+<p>To control how Google Play filters your application
   from devices that do not support NFC, remember to add the following to the application's manifest
   <ul>
     <li>
       <code>&lt;uses-feature android:name="android.hardware.nfc" /&gt;
       </code>,
-      which tells Android Market that your application uses the NFC API. The declaration
+      which tells Google Play that your application uses the NFC API. The declaration
       should include an
       <code>android:required
       </code> attribute that indicates whether you want
-      Android Market to filter the application from devices that do not offer NFC support. Other
+      Google Play to filter the application from devices that do not offer NFC support. Other
       <code>&lt;uses-feature&gt;
       </code> declarations may also be needed, depending on your
       implementation. For more information, see the documentation for the
diff --git a/samples/SampleSyncAdapter/AndroidManifest.xml b/samples/SampleSyncAdapter/AndroidManifest.xml
index 285abfb..48f6fad 100644
--- a/samples/SampleSyncAdapter/AndroidManifest.xml
+++ b/samples/SampleSyncAdapter/AndroidManifest.xml
@@ -45,8 +45,12 @@
         android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission
         android:name="android.permission.WRITE_SYNC_SETTINGS" />
+    <uses-permission
+        android:name="android.permission.READ_SOCIAL_STREAM" />
+    <uses-permission
+        android:name="android.permission.WRITE_SOCIAL_STREAM" />
 
-    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="14"/>
+    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />
 
     <application
         android:icon="@drawable/icon"
diff --git a/samples/SampleSyncAdapter/res/raw/img1.jpg b/samples/SampleSyncAdapter/res/raw/img1.jpg
new file mode 100644
index 0000000..24a492c
--- /dev/null
+++ b/samples/SampleSyncAdapter/res/raw/img1.jpg
Binary files differ
diff --git a/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/BatchOperation.java b/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/BatchOperation.java
index 3a9c879..f70547b 100644
--- a/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/BatchOperation.java
+++ b/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/BatchOperation.java
@@ -26,6 +26,7 @@
 import android.util.Log;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * This class handles execution of batch mOperations on Contacts provider.
@@ -52,24 +53,27 @@
         mOperations.add(cpo);
     }
 
-    public Uri execute() {
-        Uri result = null;
+    public List<Uri> execute() {
+        List<Uri> resultUris = new ArrayList<Uri>();
 
         if (mOperations.size() == 0) {
-            return result;
+            return resultUris;
         }
         // Apply the mOperations to the content provider
         try {
             ContentProviderResult[] results = mResolver.applyBatch(ContactsContract.AUTHORITY,
                     mOperations);
-            if ((results != null) && (results.length > 0))
-                result = results[0].uri;
+            if ((results != null) && (results.length > 0)){
+                for (int i = 0; i < results.length; i++){
+                    resultUris.add(results[i].uri);
+                }
+            }
         } catch (final OperationApplicationException e1) {
             Log.e(TAG, "storing contact data failed", e1);
         } catch (final RemoteException e2) {
             Log.e(TAG, "storing contact data failed", e2);
         }
         mOperations.clear();
-        return result;
+        return resultUris;
     }
 }
diff --git a/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.java b/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.java
index 6b2dfb1..5b09eb1 100644
--- a/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.java
+++ b/samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.java
@@ -24,7 +24,10 @@
 import android.content.ContentUris;
 import android.content.ContentValues;
 import android.content.Context;
+import android.content.res.AssetFileDescriptor;
 import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
 import android.net.Uri;
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds.Email;
@@ -38,8 +41,14 @@
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.Settings;
 import android.provider.ContactsContract.StatusUpdates;
+import android.provider.ContactsContract.StreamItemPhotos;
+import android.provider.ContactsContract.StreamItems;
 import android.util.Log;
 
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -235,6 +244,43 @@
     }
 
     /**
+     * Demonstrate how to add stream items and stream item photos to a raw
+     * contact. This just adds items for all of the contacts for this sync
+     * adapter with some locally created text and an image. You should check
+     * for stream items on the server that you are syncing with and use the
+     * text and photo data from there instead.
+     *
+     * @param context The context of Authenticator Activity
+     * @param rawContacts The list of users we want to update
+     */
+    public static void addStreamItems(Context context, List<RawContact> rawContacts,
+             String accountName, String accountType) {
+        final ContentResolver resolver = context.getContentResolver();
+        final BatchOperation batchOperation = new BatchOperation(context, resolver);
+        String text = "This is a test stream item!";
+        String message = "via SampleSyncAdapter";
+        for (RawContact rawContact : rawContacts) {
+           addContactStreamItem(context, lookupRawContact(resolver,
+                   rawContact.getServerContactId()), accountName, accountType,
+                   text, message, batchOperation );
+        }
+        List<Uri> streamItemUris = batchOperation.execute();
+
+        // Stream item photos are added after the stream items that they are
+        // associated with, using the stream item's ID as a reference.
+
+        for (Uri uri : streamItemUris){
+          // All you need is the ID of the stream item, which is the last index
+          // path segment returned by getPathSegments().
+          long streamItemId = Long.parseLong(uri.getPathSegments().get(
+                  uri.getPathSegments().size()-1));
+          addStreamItemPhoto(context, resolver, streamItemId, accountName,
+                  accountType, batchOperation);
+        }
+        batchOperation.execute();
+    }
+
+    /**
      * After we've finished up a sync operation, we want to clean up the sync-state
      * so that we're ready for the next time.  This involves clearing out the 'dirty'
      * flag on the synced contacts - but we also have to finish the DELETE operation
@@ -518,7 +564,7 @@
      * But it's a useful demo to see how it's done.
      *
      * @param context the Authenticator Activity context
-     * @param rawContact the contact who's status we should update
+     * @param rawContact the contact whose status we should update
      * @param batchOperation allow us to batch together multiple operations
      */
     private static void updateContactStatus(Context context, RawContact rawContact,
@@ -550,6 +596,59 @@
     }
 
     /**
+     * Adds a stream item to a raw contact. The stream item is usually obtained
+     * from the server you are syncing with, but we create it here locally as an
+     * example.
+     *
+     * @param context the Authenticator Activity context
+     * @param rawContactId the raw contact ID that the stream item is associated with
+     * @param accountName the account name of the sync adapter
+     * @param accountType the account type of the sync adapter
+     * @param text the text of the stream item
+     * @param comments the comments for the stream item, such as where the stream item came from
+     * @param batchOperation allow us to batch together multiple operations
+     */
+    private static void addContactStreamItem(Context context, long rawContactId,
+        String accountName, String accountType, String text, String comments,
+        BatchOperation batchOperation) {
+
+        final ContentValues values = new ContentValues();
+        final ContentResolver resolver = context.getContentResolver();
+        if (rawContactId > 0){
+            values.put(StreamItems.RAW_CONTACT_ID, rawContactId);
+            values.put(StreamItems.TEXT, text);
+            values.put(StreamItems.TIMESTAMP, System.currentTimeMillis());
+            values.put(StreamItems.COMMENTS, comments);
+            values.put(StreamItems.ACCOUNT_NAME, accountName);
+            values.put(StreamItems.ACCOUNT_TYPE, accountType);
+
+            batchOperation.add(ContactOperations.newInsertCpo(
+                    StreamItems.CONTENT_URI, false, true).withValues(values).build());
+        }
+    }
+
+    private static void addStreamItemPhoto(Context context, ContentResolver
+        resolver, long streamItemId, String accountName, String accountType,
+        BatchOperation batchOperation){
+
+        ByteArrayOutputStream stream = new ByteArrayOutputStream();
+        Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),
+                R.raw.img1);
+        bitmap.compress(Bitmap.CompressFormat.JPEG, 30, stream);
+        byte[] photoData = stream.toByteArray();
+
+        final ContentValues values = new ContentValues();
+        values.put(StreamItemPhotos.STREAM_ITEM_ID, streamItemId);
+        values.put(StreamItemPhotos.SORT_INDEX, 1);
+        values.put(StreamItemPhotos.PHOTO, photoData);
+        values.put(StreamItems.ACCOUNT_NAME, accountName);
+        values.put(StreamItems.ACCOUNT_TYPE, accountType);
+
+        batchOperation.add(ContactOperations.newInsertCpo(
+                StreamItems.CONTENT_PHOTO_URI, false, true).withValues(values).build());
+    }
+
+    /**
      * Clear the local system 'dirty' flag for a contact.
      *
      * @param context the Authenticator Activity context
diff --git a/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncAdapter.java b/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncAdapter.java
index 0f570cd..8aa0784 100644
--- a/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncAdapter.java
+++ b/samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncAdapter.java
@@ -32,6 +32,7 @@
 import android.content.ContentProviderClient;
 import android.content.Context;
 import android.content.SyncResult;
+import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
@@ -115,8 +116,21 @@
             // 2-way contact sync providers - it's more likely that one-way
             // sync providers (IM clients, social networking apps, etc) would
             // use this feature.
+
             ContactManager.updateStatusMessages(mContext, updatedContacts);
 
+            // This is a demo of how you can add stream items for contacts on
+            // the client. This probably won't apply to
+            // 2-way contact sync providers - it's more likely that one-way
+            // sync providers (IM clients, social networking apps, etc) would
+            // use this feature. This is only supported in ICS MR1 or above.
+
+            if (Build.VERSION.SDK_INT >=
+                    Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
+                ContactManager.addStreamItems(mContext, updatedContacts,
+                    account.name, account.type);
+            }
+
             // Save off the new sync marker. On our next sync, we only want to receive
             // contacts that have changed since this sync...
             setServerSyncMarker(account, newSyncState);
@@ -168,3 +182,4 @@
         mAccountManager.setUserData(account, SYNC_MARKER_KEY, Long.toString(marker));
     }
 }
+
diff --git a/samples/SearchableDictionary/AndroidManifest.xml b/samples/SearchableDictionary/AndroidManifest.xml
index 5d835ee..d8fed69 100644
--- a/samples/SearchableDictionary/AndroidManifest.xml
+++ b/samples/SearchableDictionary/AndroidManifest.xml
@@ -21,7 +21,7 @@
         android:versionCode="2"
         android:versionName="2.0">
 
-    <uses-sdk android:minSdkVersion="11" />
+    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
 
     <application android:label="@string/app_name"
                  android:icon="@drawable/ic_dictionary">
diff --git a/samples/SearchableDictionary/res/menu/options_menu.xml b/samples/SearchableDictionary/res/menu/options_menu.xml
index c35c7d4..06f9958 100644
--- a/samples/SearchableDictionary/res/menu/options_menu.xml
+++ b/samples/SearchableDictionary/res/menu/options_menu.xml
@@ -21,6 +21,6 @@
     <item android:id="@+id/search"
           android:title="@string/menu_search"
           android:icon="@drawable/ic_menu_search"
-          android:showAsAction="ifRoom"
+          android:showAsAction="collapseActionView|ifRoom"
           android:actionViewClass="android.widget.SearchView" />
 </menu>
diff --git a/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.java b/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.java
index a83ebce..a65953b 100644
--- a/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.java
+++ b/samples/SearchableDictionary/src/com/example/android/searchabledict/SearchableDictionary.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -59,7 +60,7 @@
     @Override
     protected void onNewIntent(Intent intent) {
         // Because this activity has set launchMode="singleTop", the system calls this method
-        // to deliver the intent if this actvity is currently the foreground activity when
+        // to deliver the intent if this activity is currently the foreground activity when
         // invoked again (when the user executes a search from this activity, we don't create
         // a new instance of this activity, so the system delivers the search intent here)
         handleIntent(intent);
@@ -71,7 +72,6 @@
             Intent wordIntent = new Intent(this, WordActivity.class);
             wordIntent.setData(intent.getData());
             startActivity(wordIntent);
-            finish();
         } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
             // handles a search query
             String query = intent.getStringExtra(SearchManager.QUERY);
@@ -113,6 +113,8 @@
 
             // Define the on-click listener for the list items
             mListView.setOnItemClickListener(new OnItemClickListener() {
+
+                @Override
                 public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                     // Build the Intent used to open WordActivity with a specific word Uri
                     Intent wordIntent = new Intent(getApplicationContext(), WordActivity.class);
@@ -130,10 +132,12 @@
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.options_menu, menu);
 
-        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
-        SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
-        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
-        searchView.setIconifiedByDefault(false);
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
+            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
+            SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
+            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
+            searchView.setIconifiedByDefault(false);
+        }
 
         return true;
     }
diff --git a/samples/SearchableDictionary/src/com/example/android/searchabledict/WordActivity.java b/samples/SearchableDictionary/src/com/example/android/searchabledict/WordActivity.java
index d56a145..d78e494 100644
--- a/samples/SearchableDictionary/src/com/example/android/searchabledict/WordActivity.java
+++ b/samples/SearchableDictionary/src/com/example/android/searchabledict/WordActivity.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -34,14 +35,15 @@
  * Displays a word and its definition.
  */
 public class WordActivity extends Activity {
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.word);
 
-        ActionBar actionBar = getActionBar();
-        actionBar.setDisplayHomeAsUpEnabled(true);
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
+            ActionBar actionBar = getActionBar();
+            actionBar.setDisplayHomeAsUpEnabled(true);
+        }
 
         Uri uri = getIntent().getData();
         Cursor cursor = managedQuery(uri, null, null, null, null);
@@ -67,10 +69,12 @@
         MenuInflater inflater = getMenuInflater();
         inflater.inflate(R.menu.options_menu, menu);
 
-        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
-        SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
-        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
-        searchView.setIconifiedByDefault(false);
+        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
+            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
+            SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
+            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
+            searchView.setIconifiedByDefault(false);
+        }
         
         return true;
     }
diff --git a/samples/SipDemo/_index.html b/samples/SipDemo/_index.html
index 0af4a8c..ab187a0 100644
--- a/samples/SipDemo/_index.html
+++ b/samples/SipDemo/_index.html
@@ -26,20 +26,20 @@
 the platform. Also, among devices running Android 2.3 (API level 9) or higher,
 not all devices will offer SIP support. To ensure that your application can only
 be installed on devices that are capable of supporting SIP, remember to add the
-following to the application's manifest before publishing to Android Market:</p>
+following to the application's manifest before publishing to Google Play:</p>
 <ul> <li><code>&lt;uses-sdk android:minSdkVersion="9" /&gt;</code>, which
-  indicates to Android Market and the platform that your application requires
+  indicates to Google Play and the platform that your application requires
   Android 2.3 or higher. For more information, see <a
     href="../../../guide/appendix/api-levels.html">API Levels</a> and the
   documentation for the <a
     href="../../../guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-  element.</li> </ul> <p>To control how Android Market filters your application
+  element.</li> </ul> <p>To control how Google Play filters your application
 from devices that do not support SIP, remember to add the following to the
 application's manifest <ul> <li><code>&lt;uses-feature
-    android:name="android.hardware.sip.voip" /&gt;</code>, which tells Android
-  Market that your application uses the SIP API. The declaration should include
+    android:name="android.hardware.sip.voip" /&gt;</code>, which tells Google
+  Play that your application uses the SIP API. The declaration should include
   an <code>android:required</code> attribute that indicates whether you want
-  Android Market to filter the application from devices that do not offer SIP
+  Google Play to filter the application from devices that do not offer SIP
   support. Other <code>&lt;uses-feature&gt;</code> declarations may also be
   needed, depending on your implementation. For more information, see the
   documentation for the <a
diff --git a/samples/Snake/AndroidManifest.xml b/samples/Snake/AndroidManifest.xml
index 36a9939..757a2d6 100644
--- a/samples/Snake/AndroidManifest.xml
+++ b/samples/Snake/AndroidManifest.xml
@@ -14,22 +14,31 @@
      limitations under the License.
 -->
 
-<!-- Declare the contents of this Android application.  The namespace
-     attribute brings in the Android platform namespace, and the package
-     supplies a unique name for the application.  When writing your
-     own application, the package name must be changed from "com.example.*"
-     to come from a domain that you own or have control over. -->
+<!-- Declare the contents of this Android application. The namespace attribute 
+  brings in the Android platform namespace, and the package supplies a unique 
+  name for the application. When writing your own application, the package 
+  name must be changed from "com.example.*" to come from a domain that you 
+  own or have control over. -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.snake">
-    <application android:label="Snake on a Phone">
-      <activity android:name="Snake"
-        android:theme="@android:style/Theme.NoTitleBar"
-        android:screenOrientation="portrait"
-        android:configChanges="keyboardHidden|orientation">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest> 
+  package="com.example.android.snake">
+
+  <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="15" />
+  <!-- Declares that the app supports devices w/o touch, such as a Google TV device -->
+  <uses-feature android:name="android.hardware.touchscreen"
+    android:required="false" />
+
+  <supports-screens android:largeScreens="true" />
+
+  <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">
+    <activity android:name="Snake" android:configChanges="keyboardHidden|orientation"
+      android:screenOrientation="nosensor" android:theme="@android:style/Theme.NoTitleBar">
+      <intent-filter>
+        <action android:name="android.intent.action.MAIN" />
+
+        <category android:name="android.intent.category.LAUNCHER" />
+      </intent-filter>
+    </activity>
+  </application>
+
+</manifest>
diff --git a/samples/Snake/res/drawable-hdpi/ic_launcher.png b/samples/Snake/res/drawable-hdpi/ic_launcher.png
new file mode 100755
index 0000000..b500381
--- /dev/null
+++ b/samples/Snake/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/samples/Snake/res/drawable-ldpi/ic_launcher.png b/samples/Snake/res/drawable-ldpi/ic_launcher.png
new file mode 100755
index 0000000..f0efb98
--- /dev/null
+++ b/samples/Snake/res/drawable-ldpi/ic_launcher.png
Binary files differ
diff --git a/samples/Snake/res/drawable-mdpi/dpad_down.xml b/samples/Snake/res/drawable-mdpi/dpad_down.xml
new file mode 100755
index 0000000..1b635a2
--- /dev/null
+++ b/samples/Snake/res/drawable-mdpi/dpad_down.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<rotate xmlns:android="http://schemas.android.com/apk/res/android"
+        android:fromDegrees="180"
+        android:toDegrees="180"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:drawable="@drawable/dpad_up"/>
diff --git a/samples/Snake/res/drawable-mdpi/dpad_left.xml b/samples/Snake/res/drawable-mdpi/dpad_left.xml
new file mode 100755
index 0000000..b9f9648
--- /dev/null
+++ b/samples/Snake/res/drawable-mdpi/dpad_left.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<rotate xmlns:android="http://schemas.android.com/apk/res/android"
+        android:fromDegrees="-90"
+        android:toDegrees="-90"
+        android:pivotX="50%"
+        android:pivotY="50%"
+        android:drawable="@drawable/dpad_up"/>
diff --git a/samples/Snake/res/drawable-mdpi/dpad_right.xml b/samples/Snake/res/drawable-mdpi/dpad_right.xml
new file mode 100755
index 0000000..15b35d6
--- /dev/null
+++ b/samples/Snake/res/drawable-mdpi/dpad_right.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<rotate xmlns:android="http://schemas.android.com/apk/res/android"
+   android:fromDegrees="90"
+   android:toDegrees="90"
+   android:pivotX="50%"
+   android:pivotY="50%"
+   android:drawable="@drawable/dpad_up"/>
diff --git a/samples/Snake/res/drawable-mdpi/dpad_up.png b/samples/Snake/res/drawable-mdpi/dpad_up.png
new file mode 100755
index 0000000..01d6511
--- /dev/null
+++ b/samples/Snake/res/drawable-mdpi/dpad_up.png
Binary files differ
diff --git a/samples/Snake/res/drawable/greenstar.png b/samples/Snake/res/drawable-mdpi/greenstar.png
old mode 100644
new mode 100755
similarity index 100%
rename from samples/Snake/res/drawable/greenstar.png
rename to samples/Snake/res/drawable-mdpi/greenstar.png
Binary files differ
diff --git a/samples/Snake/res/drawable-mdpi/ic_launcher.png b/samples/Snake/res/drawable-mdpi/ic_launcher.png
new file mode 100755
index 0000000..31d5bbd
--- /dev/null
+++ b/samples/Snake/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/samples/Snake/res/drawable/redstar.png b/samples/Snake/res/drawable-mdpi/redstar.png
old mode 100644
new mode 100755
similarity index 100%
rename from samples/Snake/res/drawable/redstar.png
rename to samples/Snake/res/drawable-mdpi/redstar.png
Binary files differ
diff --git a/samples/Snake/res/drawable/yellowstar.png b/samples/Snake/res/drawable-mdpi/yellowstar.png
old mode 100644
new mode 100755
similarity index 100%
rename from samples/Snake/res/drawable/yellowstar.png
rename to samples/Snake/res/drawable-mdpi/yellowstar.png
Binary files differ
diff --git a/samples/Snake/res/drawable-xhdpi/ic_launcher.png b/samples/Snake/res/drawable-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..46cfcbf
--- /dev/null
+++ b/samples/Snake/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/samples/Snake/res/layout/snake_layout.xml b/samples/Snake/res/layout/snake_layout.xml
old mode 100644
new mode 100755
index ef8abe3..fc35fb6
--- a/samples/Snake/res/layout/snake_layout.xml
+++ b/samples/Snake/res/layout/snake_layout.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -14,30 +14,70 @@
      limitations under the License.
 -->
 
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-	android:layout_width="match_parent"
-	android:layout_height="match_parent">
-	
-	<com.example.android.snake.SnakeView
-	 android:id="@+id/snake"
-		android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                tileSize="24"
-                />
-	
-	<RelativeLayout
-		android:layout_width="match_parent"
-		android:layout_height="match_parent" >
-		
-		<TextView
-		 android:id="@+id/text"
-			android:text="@string/snake_layout_text_text"
-			android:visibility="visible"
-			android:layout_width="wrap_content"
-			android:layout_height="wrap_content"
-			android:layout_centerInParent="true"
-			android:gravity="center_horizontal"
-			android:textColor="#ff8888ff"
-			android:textSize="24sp"/>
-	</RelativeLayout>
-</FrameLayout>
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res/com.example.android.snake">
+
+  <com.example.android.snake.BackgroundView
+    android:id="@+id/background"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    app:colorSegmentOne="@color/muted_red"
+    app:colorSegmentTwo="@color/muted_yellow"
+    app:colorSegmentThree="@color/muted_blue"
+    app:colorSegmentFour="@color/muted_green"
+     />
+
+  <com.example.android.snake.SnakeView
+    android:id="@+id/snake"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    app:tileSize="24dp" />
+
+  <TextView android:id="@+id/text"
+  android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_gravity="center"
+    android:gravity="center"
+    android:textColor="@color/text_violet"
+    android:textSize="24sp"
+    android:visibility="visible" />
+
+  <RelativeLayout android:id="@+id/arrowContainer"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:visibility="gone">
+
+    <ImageView android:id="@+id/imageUp"
+    android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentTop="true"
+      android:layout_centerHorizontal="true"
+      android:padding="20dp"
+      android:src="@drawable/dpad_up" />
+
+    <ImageView android:id="@+id/imageLeft"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentLeft="true"
+      android:layout_centerVertical="true"
+      android:padding="20dp"
+      android:src="@drawable/dpad_left" />
+
+    <ImageView android:id="@+id/imageRight"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentRight="true"
+      android:layout_centerVertical="true"
+      android:padding="20dp"
+      android:src="@drawable/dpad_right" />
+
+    <ImageView android:id="@+id/imageDown"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_alignParentBottom="true"
+      android:layout_centerHorizontal="true"
+      android:padding="20dp"
+      android:src="@drawable/dpad_down" />
+  </RelativeLayout>
+
+</merge>
diff --git a/samples/Snake/res/values-nonav/strings.xml b/samples/Snake/res/values-nonav/strings.xml
new file mode 100755
index 0000000..5b63b12
--- /dev/null
+++ b/samples/Snake/res/values-nonav/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+  <string name="app_name">Snake</string>
+  <string name="mode_ready">Snake\nTouch Screen To Play</string>
+  <string name="mode_pause">Paused\nTouch Screen To Resume</string>
+  <string name="mode_lose">Game Over\nScore: %1$d \nTouch Screen To Play</string>
+</resources>
diff --git a/samples/Snake/res/values/attrs.xml b/samples/Snake/res/values/attrs.xml
old mode 100644
new mode 100755
index c846864..6f1d1b4
--- a/samples/Snake/res/values/attrs.xml
+++ b/samples/Snake/res/values/attrs.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,8 +15,16 @@
 -->
 
 <resources>
-  <declare-styleable name="TileView">
-    <attr name="tileSize" format="integer" />
-  </declare-styleable>
-</resources>
 
+  <declare-styleable name="TileView">
+    <attr name="tileSize" format="dimension" />
+  </declare-styleable>
+  <declare-styleable name="BackgroundView">
+  <!-- Defining properties to use four different colors in 4 segments of BackgroundView -->
+    <attr name="colorSegmentOne" format="color" />
+    <attr name="colorSegmentTwo" format="color" />
+    <attr name="colorSegmentThree" format="color" />
+    <attr name="colorSegmentFour" format="color" />
+  </declare-styleable>
+
+</resources>
diff --git a/samples/Snake/res/values/colors.xml b/samples/Snake/res/values/colors.xml
new file mode 100755
index 0000000..e5d90bf
--- /dev/null
+++ b/samples/Snake/res/values/colors.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <color name="muted_red">#ff400010</color>
+  <color name="muted_yellow">#ff404000</color>
+  <color name="muted_blue">#ff100050</color>
+  <color name="muted_green">#ff004000</color>
+  <color name="text_violet">#ff8888ff</color>
+  </resources>
diff --git a/samples/Snake/res/values/strings.xml b/samples/Snake/res/values/strings.xml
old mode 100644
new mode 100755
index 3c4a89d..f95ef4c
--- a/samples/Snake/res/values/strings.xml
+++ b/samples/Snake/res/values/strings.xml
@@ -4,9 +4,9 @@
      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at
-  
+
           http://www.apache.org/licenses/LICENSE-2.0
-  
+
      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,10 +15,8 @@
 -->
 
 <resources>
+  <string name="app_name">Snake</string>
   <string name="mode_ready">Snake\nPress Up To Play</string>
   <string name="mode_pause">Paused\nPress Up To Resume</string>
-  <string name="mode_lose_prefix">Game Over\nScore: </string>
-  <string name="mode_lose_suffix">\nPress Up To Play</string>
-
-    <string name="snake_layout_text_text"></string>
+  <string name="mode_lose">Game Over\nScore: %1$d \nPress Up To Play</string>
 </resources>
diff --git a/samples/Snake/src/com/example/android/snake/BackgroundView.java b/samples/Snake/src/com/example/android/snake/BackgroundView.java
new file mode 100755
index 0000000..bda571e
--- /dev/null
+++ b/samples/Snake/src/com/example/android/snake/BackgroundView.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.snake;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.View;
+
+import java.util.Arrays;
+
+/**
+ * Background View: Draw 4 full-screen RGBY triangles
+ */
+public class BackgroundView extends View {
+
+    private int[] mColors = new int[4];
+
+    private final short[] mIndices =
+            { 0, 1, 2, 0, 3, 4, 0, 1, 4 // Corner points for triangles (with offset = 2)
+    };
+
+    private float[] mVertexPoints = null;
+
+    public BackgroundView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        setFocusable(true);
+
+        // retrieve colors for 4 segments from styleable properties
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.BackgroundView);
+        mColors[0] = a.getColor(R.styleable.BackgroundView_colorSegmentOne, Color.RED);
+        mColors[1] = a.getColor(R.styleable.BackgroundView_colorSegmentTwo, Color.YELLOW);
+        mColors[2] = a.getColor(R.styleable.BackgroundView_colorSegmentThree, Color.BLUE);
+        mColors[3] = a.getColor(R.styleable.BackgroundView_colorSegmentFour, Color.GREEN);
+
+        a.recycle();
+    }
+
+    @Override
+    protected void onDraw(Canvas canvas) {
+        assert(mVertexPoints != null);
+
+        // Colors for each vertex
+        int[] mFillColors = new int[mVertexPoints.length];
+
+        for (int triangle = 0; triangle < mColors.length; triangle++) {
+            // Set color for all vertex points to current triangle color
+            Arrays.fill(mFillColors, mColors[triangle]);
+
+            // Draw one triangle
+            canvas.drawVertices(Canvas.VertexMode.TRIANGLES, mVertexPoints.length, mVertexPoints,
+                    0, null, 0, // No Textures
+                    mFillColors, 0, mIndices,
+                    triangle * 2, 3, // Use 3 vertices via Index Array with offset 2
+                    new Paint());
+        }
+    }
+
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        super.onSizeChanged(w, h, oldw, oldh);
+
+     // Construct our center and four corners
+        mVertexPoints = new float[] {
+                w / 2, h / 2,
+                0, 0,
+                w, 0,
+                w, h,
+                0, h
+        };
+    }
+
+}
diff --git a/samples/Snake/src/com/example/android/snake/Snake.java b/samples/Snake/src/com/example/android/snake/Snake.java
old mode 100644
new mode 100755
index 6306693..ddf0c3c
--- a/samples/Snake/src/com/example/android/snake/Snake.java
+++ b/samples/Snake/src/com/example/android/snake/Snake.java
@@ -18,27 +18,38 @@
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.view.Window;
+import android.view.KeyEvent;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnTouchListener;
 import android.widget.TextView;
 
 /**
  * Snake: a simple game that everyone can enjoy.
  * 
- * This is an implementation of the classic Game "Snake", in which you control a
- * serpent roaming around the garden looking for apples. Be careful, though,
- * because when you catch one, not only will you become longer, but you'll move
- * faster. Running into yourself or the walls will end the game.
+ * This is an implementation of the classic Game "Snake", in which you control a serpent roaming
+ * around the garden looking for apples. Be careful, though, because when you catch one, not only
+ * will you become longer, but you'll move faster. Running into yourself or the walls will end the
+ * game.
  * 
  */
 public class Snake extends Activity {
 
-    private SnakeView mSnakeView;
-    
+    /**
+     * Constants for desired direction of moving the snake
+     */
+    public static int MOVE_LEFT = 0;
+    public static int MOVE_UP = 1;
+    public static int MOVE_DOWN = 2;
+    public static int MOVE_RIGHT = 3;
+
     private static String ICICLE_KEY = "snake-view";
 
+    private SnakeView mSnakeView;
+
     /**
-     * Called when Activity is first created. Turns off the title bar, sets up
-     * the content views, and fires up the SnakeView.
+     * Called when Activity is first created. Turns off the title bar, sets up the content views,
+     * and fires up the SnakeView.
      * 
      */
     @Override
@@ -48,7 +59,8 @@
         setContentView(R.layout.snake_layout);
 
         mSnakeView = (SnakeView) findViewById(R.id.snake);
-        mSnakeView.setTextView((TextView) findViewById(R.id.text));
+        mSnakeView.setDependentViews((TextView) findViewById(R.id.text),
+                findViewById(R.id.arrowContainer), findViewById(R.id.background));
 
         if (savedInstanceState == null) {
             // We were just launched -- set up a new game
@@ -62,6 +74,31 @@
                 mSnakeView.setMode(SnakeView.PAUSE);
             }
         }
+        mSnakeView.setOnTouchListener(new OnTouchListener() {
+
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                if (mSnakeView.getGameState() == SnakeView.RUNNING) {
+                    // Normalize x,y between 0 and 1
+                    float x = event.getX() / v.getWidth();
+                    float y = event.getY() / v.getHeight();
+
+                    // Direction will be [0,1,2,3] depending on quadrant
+                    int direction = 0;
+                    direction = (x > y) ? 1 : 0;
+                    direction |= (x > 1 - y) ? 2 : 0;
+
+                    // Direction is same as the quadrant which was clicked
+                    mSnakeView.moveSnake(direction);
+
+                } else {
+                    // If the game is not running then on touching any part of the screen
+                    // we start the game by sending MOVE_UP signal to SnakeView
+                    mSnakeView.moveSnake(MOVE_UP);
+                }
+                return false;
+            }
+        });
     }
 
     @Override
@@ -73,8 +110,34 @@
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
-        //Store the game state
+        // Store the game state
         outState.putBundle(ICICLE_KEY, mSnakeView.saveState());
     }
 
+    /**
+     * Handles key events in the game. Update the direction our snake is traveling based on the
+     * DPAD.
+     *
+     */
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent msg) {
+
+        switch (keyCode) {
+            case KeyEvent.KEYCODE_DPAD_UP:
+                mSnakeView.moveSnake(MOVE_UP);
+                break;
+            case KeyEvent.KEYCODE_DPAD_RIGHT:
+                mSnakeView.moveSnake(MOVE_RIGHT);
+                break;
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+                mSnakeView.moveSnake(MOVE_DOWN);
+                break;
+            case KeyEvent.KEYCODE_DPAD_LEFT:
+                mSnakeView.moveSnake(MOVE_LEFT);
+                break;
+        }
+
+        return super.onKeyDown(keyCode, msg);
+    }
+
 }
diff --git a/samples/Snake/src/com/example/android/snake/SnakeView.java b/samples/Snake/src/com/example/android/snake/SnakeView.java
old mode 100644
new mode 100755
index 8dd0232..a8e654f
--- a/samples/Snake/src/com/example/android/snake/SnakeView.java
+++ b/samples/Snake/src/com/example/android/snake/SnakeView.java
@@ -16,33 +16,29 @@
 
 package com.example.android.snake;
 
-import java.util.ArrayList;
-import java.util.Random;
-
 import android.content.Context;
 import android.content.res.Resources;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.util.AttributeSet;
-import android.os.Bundle;
 import android.util.Log;
-import android.view.KeyEvent;
 import android.view.View;
 import android.widget.TextView;
 
+import java.util.ArrayList;
+import java.util.Random;
+
 /**
  * SnakeView: implementation of a simple game of Snake
- * 
- * 
  */
 public class SnakeView extends TileView {
 
     private static final String TAG = "SnakeView";
 
     /**
-     * Current mode of application: READY to run, RUNNING, or you have already
-     * lost. static final ints are used instead of an enum for performance
-     * reasons.
+     * Current mode of application: READY to run, RUNNING, or you have already lost. static final
+     * ints are used instead of an enum for performance reasons.
      */
     private int mMode = READY;
     public static final int PAUSE = 0;
@@ -68,26 +64,36 @@
     private static final int GREEN_STAR = 3;
 
     /**
-     * mScore: used to track the number of apples captured mMoveDelay: number of
-     * milliseconds between snake movements. This will decrease as apples are
-     * captured.
+     * mScore: Used to track the number of apples captured mMoveDelay: number of milliseconds
+     * between snake movements. This will decrease as apples are captured.
      */
     private long mScore = 0;
     private long mMoveDelay = 600;
     /**
-     * mLastMove: tracks the absolute time when the snake last moved, and is used
-     * to determine if a move should be made based on mMoveDelay.
+     * mLastMove: Tracks the absolute time when the snake last moved, and is used to determine if a
+     * move should be made based on mMoveDelay.
      */
     private long mLastMove;
-    
+
     /**
-     * mStatusText: text shows to the user in some run states
+     * mStatusText: Text shows to the user in some run states
      */
     private TextView mStatusText;
 
     /**
-     * mSnakeTrail: a list of Coordinates that make up the snake's body
-     * mAppleList: the secret location of the juicy apples the snake craves.
+     * mArrowsView: View which shows 4 arrows to signify 4 directions in which the snake can move
+     */
+    private View mArrowsView;
+
+    /**
+     * mBackgroundView: Background View which shows 4 different colored triangles pressing which
+     * moves the snake
+     */
+    private View mBackgroundView;
+
+    /**
+     * mSnakeTrail: A list of Coordinates that make up the snake's body mAppleList: The secret
+     * location of the juicy apples the snake craves.
      */
     private ArrayList<Coordinate> mSnakeTrail = new ArrayList<Coordinate>();
     private ArrayList<Coordinate> mAppleList = new ArrayList<Coordinate>();
@@ -98,10 +104,11 @@
     private static final Random RNG = new Random();
 
     /**
-     * Create a simple handler that we can use to cause animation to happen.  We
-     * set ourselves as a target and we can use the sleep()
-     * function to cause an update/invalidate to occur at a later date.
+     * Create a simple handler that we can use to cause animation to happen. We set ourselves as a
+     * target and we can use the sleep() function to cause an update/invalidate to occur at a later
+     * date.
      */
+
     private RefreshHandler mRedrawHandler = new RefreshHandler();
 
     class RefreshHandler extends Handler {
@@ -113,12 +120,11 @@
         }
 
         public void sleep(long delayMillis) {
-        	this.removeMessages(0);
+            this.removeMessages(0);
             sendMessageDelayed(obtainMessage(0), delayMillis);
         }
     };
 
-
     /**
      * Constructs a SnakeView based on inflation from XML
      * 
@@ -127,26 +133,26 @@
      */
     public SnakeView(Context context, AttributeSet attrs) {
         super(context, attrs);
-        initSnakeView();
-   }
-
-    public SnakeView(Context context, AttributeSet attrs, int defStyle) {
-    	super(context, attrs, defStyle);
-    	initSnakeView();
+        initSnakeView(context);
     }
 
-    private void initSnakeView() {
+    public SnakeView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
+        initSnakeView(context);
+    }
+
+    private void initSnakeView(Context context) {
+
         setFocusable(true);
 
         Resources r = this.getContext().getResources();
-        
+
         resetTiles(4);
         loadTile(RED_STAR, r.getDrawable(R.drawable.redstar));
         loadTile(YELLOW_STAR, r.getDrawable(R.drawable.yellowstar));
         loadTile(GREEN_STAR, r.getDrawable(R.drawable.greenstar));
-    	
+
     }
-    
 
     private void initNewGame() {
         mSnakeTrail.clear();
@@ -155,7 +161,6 @@
         // For now we're just going to load up a short default eastbound snake
         // that's just turned north
 
-        
         mSnakeTrail.add(new Coordinate(7, 7));
         mSnakeTrail.add(new Coordinate(6, 7));
         mSnakeTrail.add(new Coordinate(5, 7));
@@ -172,30 +177,29 @@
         mScore = 0;
     }
 
-
     /**
-     * Given a ArrayList of coordinates, we need to flatten them into an array of
-     * ints before we can stuff them into a map for flattening and storage.
+     * Given a ArrayList of coordinates, we need to flatten them into an array of ints before we can
+     * stuff them into a map for flattening and storage.
      * 
      * @param cvec : a ArrayList of Coordinate objects
-     * @return : a simple array containing the x/y values of the coordinates
-     * as [x1,y1,x2,y2,x3,y3...]
+     * @return : a simple array containing the x/y values of the coordinates as
+     *         [x1,y1,x2,y2,x3,y3...]
      */
     private int[] coordArrayListToArray(ArrayList<Coordinate> cvec) {
-        int count = cvec.size();
-        int[] rawArray = new int[count * 2];
-        for (int index = 0; index < count; index++) {
-            Coordinate c = cvec.get(index);
-            rawArray[2 * index] = c.x;
-            rawArray[2 * index + 1] = c.y;
+        int[] rawArray = new int[cvec.size() * 2];
+
+        int i = 0;
+        for (Coordinate c : cvec) {
+            rawArray[i++] = c.x;
+            rawArray[i++] = c.y;
         }
+
         return rawArray;
     }
 
     /**
-     * Save game state so that the user does not lose anything
-     * if the game process is killed while we are in the 
-     * background.
+     * Save game state so that the user does not lose anything if the game process is killed while
+     * we are in the background.
      * 
      * @return a Bundle with this view's state
      */
@@ -213,8 +217,8 @@
     }
 
     /**
-     * Given a flattened array of ordinate pairs, we reconstitute them into a
-     * ArrayList of Coordinate objects
+     * Given a flattened array of ordinate pairs, we reconstitute them into a ArrayList of
+     * Coordinate objects
      * 
      * @param rawArray : [x1,y1,x2,y2,...]
      * @return a ArrayList of Coordinates
@@ -246,83 +250,79 @@
         mSnakeTrail = coordArrayToArrayList(icicle.getIntArray("mSnakeTrail"));
     }
 
-    /*
-     * handles key events in the game. Update the direction our snake is traveling
-     * based on the DPAD. Ignore events that would cause the snake to immediately
-     * turn back on itself.
-     * 
-     * (non-Javadoc)
-     * 
-     * @see android.view.View#onKeyDown(int, android.os.KeyEvent)
+    /**
+     * Handles snake movement triggers from Snake Activity and moves the snake accordingly. Ignore
+     * events that would cause the snake to immediately turn back on itself.
+     *
+     * @param direction The desired direction of movement
      */
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent msg) {
+    public void moveSnake(int direction) {
 
-        if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
+        if (direction == Snake.MOVE_UP) {
             if (mMode == READY | mMode == LOSE) {
                 /*
                  * At the beginning of the game, or the end of a previous one,
-                 * we should start a new game.
+                 * we should start a new game if UP key is clicked.
                  */
                 initNewGame();
                 setMode(RUNNING);
                 update();
-                return (true);
+                return;
             }
 
             if (mMode == PAUSE) {
                 /*
-                 * If the game is merely paused, we should just continue where
-                 * we left off.
+                 * If the game is merely paused, we should just continue where we left off.
                  */
                 setMode(RUNNING);
                 update();
-                return (true);
+                return;
             }
 
             if (mDirection != SOUTH) {
                 mNextDirection = NORTH;
             }
-            return (true);
+            return;
         }
 
-        if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
+        if (direction == Snake.MOVE_DOWN) {
             if (mDirection != NORTH) {
                 mNextDirection = SOUTH;
             }
-            return (true);
+            return;
         }
 
-        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
+        if (direction == Snake.MOVE_LEFT) {
             if (mDirection != EAST) {
                 mNextDirection = WEST;
             }
-            return (true);
+            return;
         }
 
-        if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
+        if (direction == Snake.MOVE_RIGHT) {
             if (mDirection != WEST) {
                 mNextDirection = EAST;
             }
-            return (true);
+            return;
         }
 
-        return super.onKeyDown(keyCode, msg);
     }
 
     /**
-     * Sets the TextView that will be used to give information (such as "Game
-     * Over" to the user.
+     * Sets the Dependent views that will be used to give information (such as "Game Over" to the
+     * user and also to handle touch events for making movements
      * 
      * @param newView
      */
-    public void setTextView(TextView newView) {
-        mStatusText = newView;
+    public void setDependentViews(TextView msgView, View arrowView, View backgroundView) {
+        mStatusText = msgView;
+        mArrowsView = arrowView;
+        mBackgroundView = backgroundView;
     }
 
     /**
-     * Updates the current mode of the application (RUNNING or PAUSED or the like)
-     * as well as sets the visibility of textview for notification
+     * Updates the current mode of the application (RUNNING or PAUSED or the like) as well as sets
+     * the visibility of textview for notification
      * 
      * @param newMode
      */
@@ -330,23 +330,33 @@
         int oldMode = mMode;
         mMode = newMode;
 
-        if (newMode == RUNNING & oldMode != RUNNING) {
+        if (newMode == RUNNING && oldMode != RUNNING) {
+            // hide the game instructions
             mStatusText.setVisibility(View.INVISIBLE);
             update();
+            // make the background and arrows visible as soon the snake starts moving
+            mArrowsView.setVisibility(View.VISIBLE);
+            mBackgroundView.setVisibility(View.VISIBLE);
             return;
         }
 
         Resources res = getContext().getResources();
         CharSequence str = "";
         if (newMode == PAUSE) {
+            mArrowsView.setVisibility(View.GONE);
+            mBackgroundView.setVisibility(View.GONE);
             str = res.getText(R.string.mode_pause);
         }
         if (newMode == READY) {
+            mArrowsView.setVisibility(View.GONE);
+            mBackgroundView.setVisibility(View.GONE);
+
             str = res.getText(R.string.mode_ready);
         }
         if (newMode == LOSE) {
-            str = res.getString(R.string.mode_lose_prefix) + mScore
-                  + res.getString(R.string.mode_lose_suffix);
+            mArrowsView.setVisibility(View.GONE);
+            mBackgroundView.setVisibility(View.GONE);
+            str = res.getString(R.string.mode_lose, mScore);
         }
 
         mStatusText.setText(str);
@@ -354,11 +364,16 @@
     }
 
     /**
-     * Selects a random location within the garden that is not currently covered
-     * by the snake. Currently _could_ go into an infinite loop if the snake
-     * currently fills the garden, but we'll leave discovery of this prize to a
-     * truly excellent snake-player.
-     * 
+     * @return the Game state as Running, Ready, Paused, Lose
+     */
+    public int getGameState() {
+        return mMode;
+    }
+
+    /**
+     * Selects a random location within the garden that is not currently covered by the snake.
+     * Currently _could_ go into an infinite loop if the snake currently fills the garden, but we'll
+     * leave discovery of this prize to a truly excellent snake-player.
      */
     private void addRandomApple() {
         Coordinate newCoord = null;
@@ -388,10 +403,9 @@
         mAppleList.add(newCoord);
     }
 
-
     /**
-     * Handles the basic update loop, checking to see if we are in the running
-     * state, determining if a move should be made, updating the snake's location.
+     * Handles the basic update loop, checking to see if we are in the running state, determining if
+     * a move should be made, updating the snake's location.
      */
     public void update() {
         if (mMode == RUNNING) {
@@ -411,7 +425,6 @@
 
     /**
      * Draws some walls.
-     * 
      */
     private void updateWalls() {
         for (int x = 0; x < mXTileCount; x++) {
@@ -426,7 +439,6 @@
 
     /**
      * Draws some apples.
-     * 
      */
     private void updateApples() {
         for (Coordinate c : mAppleList) {
@@ -435,38 +447,36 @@
     }
 
     /**
-     * Figure out which way the snake is going, see if he's run into anything (the
-     * walls, himself, or an apple). If he's not going to die, we then add to the
-     * front and subtract from the rear in order to simulate motion. If we want to
-     * grow him, we don't subtract from the rear.
-     * 
+     * Figure out which way the snake is going, see if he's run into anything (the walls, himself,
+     * or an apple). If he's not going to die, we then add to the front and subtract from the rear
+     * in order to simulate motion. If we want to grow him, we don't subtract from the rear.
      */
     private void updateSnake() {
         boolean growSnake = false;
 
-        // grab the snake by the head
+        // Grab the snake by the head
         Coordinate head = mSnakeTrail.get(0);
         Coordinate newHead = new Coordinate(1, 1);
 
         mDirection = mNextDirection;
 
         switch (mDirection) {
-        case EAST: {
-            newHead = new Coordinate(head.x + 1, head.y);
-            break;
-        }
-        case WEST: {
-            newHead = new Coordinate(head.x - 1, head.y);
-            break;
-        }
-        case NORTH: {
-            newHead = new Coordinate(head.x, head.y - 1);
-            break;
-        }
-        case SOUTH: {
-            newHead = new Coordinate(head.x, head.y + 1);
-            break;
-        }
+            case EAST: {
+                newHead = new Coordinate(head.x + 1, head.y);
+                break;
+            }
+            case WEST: {
+                newHead = new Coordinate(head.x - 1, head.y);
+                break;
+            }
+            case NORTH: {
+                newHead = new Coordinate(head.x, head.y - 1);
+                break;
+            }
+            case SOUTH: {
+                newHead = new Coordinate(head.x, head.y + 1);
+                break;
+            }
         }
 
         // Collision detection
@@ -495,7 +505,7 @@
             if (c.equals(newHead)) {
                 mAppleList.remove(c);
                 addRandomApple();
-                
+
                 mScore++;
                 mMoveDelay *= 0.9;
 
@@ -523,10 +533,8 @@
     }
 
     /**
-     * Simple class containing two integer values and a comparison function.
-     * There's probably something I should use instead, but this was quick and
-     * easy to build.
-     * 
+     * Simple class containing two integer values and a comparison function. There's probably
+     * something I should use instead, but this was quick and easy to build.
      */
     private class Coordinate {
         public int x;
@@ -549,5 +557,5 @@
             return "Coordinate: [" + x + "," + y + "]";
         }
     }
-    
+
 }
diff --git a/samples/Snake/src/com/example/android/snake/TileView.java b/samples/Snake/src/com/example/android/snake/TileView.java
old mode 100644
new mode 100755
index a912c53..a25e922
--- a/samples/Snake/src/com/example/android/snake/TileView.java
+++ b/samples/Snake/src/com/example/android/snake/TileView.java
@@ -25,18 +25,16 @@
 import android.util.AttributeSet;
 import android.view.View;
 
-
 /**
- * TileView: a View-variant designed for handling arrays of "icons" or other
- * drawables.
+ * TileView: a View-variant designed for handling arrays of "icons" or other drawables.
  * 
  */
 public class TileView extends View {
 
     /**
-     * Parameters controlling the size of the tiles and their range within view.
-     * Width/Height are in pixels, and Drawables will be scaled to fit to these
-     * dimensions. X/Y Tile Counts are the number of tiles that will be drawn.
+     * Parameters controlling the size of the tiles and their range within view. Width/Height are in
+     * pixels, and Drawables will be scaled to fit to these dimensions. X/Y Tile Counts are the
+     * number of tiles that will be drawn.
      */
 
     protected static int mTileSize;
@@ -47,81 +45,37 @@
     private static int mXOffset;
     private static int mYOffset;
 
-
-    /**
-     * A hash that maps integer handles specified by the subclasser to the
-     * drawable that will be used for that reference
-     */
-    private Bitmap[] mTileArray; 
-
-    /**
-     * A two-dimensional array of integers in which the number represents the
-     * index of the tile that should be drawn at that locations
-     */
-    private int[][] mTileGrid;
-
     private final Paint mPaint = new Paint();
 
-    public TileView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
+    /**
+     * A hash that maps integer handles specified by the subclasser to the drawable that will be
+     * used for that reference
+     */
+    private Bitmap[] mTileArray;
 
-        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TileView);
-
-        mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);
-        
-        a.recycle();
-    }
+    /**
+     * A two-dimensional array of integers in which the number represents the index of the tile that
+     * should be drawn at that locations
+     */
+    private int[][] mTileGrid;
 
     public TileView(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TileView);
+        mTileSize = a.getDimensionPixelSize(R.styleable.TileView_tileSize, 12);
 
-        mTileSize = a.getInt(R.styleable.TileView_tileSize, 12);
-        
         a.recycle();
     }
 
-    
-    
-    /**
-     * Rests the internal array of Bitmaps used for drawing tiles, and
-     * sets the maximum index of tiles to be inserted
-     * 
-     * @param tilecount
-     */
-    
-    public void resetTiles(int tilecount) {
-    	mTileArray = new Bitmap[tilecount];
-    }
+    public TileView(Context context, AttributeSet attrs, int defStyle) {
+        super(context, attrs, defStyle);
 
+        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TileView);
+        mTileSize = a.getDimensionPixelSize(R.styleable.TileView_tileSize, 12);
 
-    @Override
-    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
-        mXTileCount = (int) Math.floor(w / mTileSize);
-        mYTileCount = (int) Math.floor(h / mTileSize);
+        a.recycle();
 
-        mXOffset = ((w - (mTileSize * mXTileCount)) / 2);
-        mYOffset = ((h - (mTileSize * mYTileCount)) / 2);
-
-        mTileGrid = new int[mXTileCount][mYTileCount];
-        clearTiles();
-    }
-
-    /**
-     * Function to set the specified Drawable as the tile for a particular
-     * integer key.
-     * 
-     * @param key
-     * @param tile
-     */
-    public void loadTile(int key, Drawable tile) {
-        Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(bitmap);
-        tile.setBounds(0, 0, mTileSize, mTileSize);
-        tile.draw(canvas);
-        
-        mTileArray[key] = bitmap;
     }
 
     /**
@@ -137,9 +91,48 @@
     }
 
     /**
-     * Used to indicate that a particular tile (set with loadTile and referenced
-     * by an integer) should be drawn at the given x/y coordinates during the
-     * next invalidate/draw cycle.
+     * Function to set the specified Drawable as the tile for a particular integer key.
+     *
+     * @param key
+     * @param tile
+     */
+    public void loadTile(int key, Drawable tile) {
+        Bitmap bitmap = Bitmap.createBitmap(mTileSize, mTileSize, Bitmap.Config.ARGB_8888);
+        Canvas canvas = new Canvas(bitmap);
+        tile.setBounds(0, 0, mTileSize, mTileSize);
+        tile.draw(canvas);
+
+        mTileArray[key] = bitmap;
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        for (int x = 0; x < mXTileCount; x += 1) {
+            for (int y = 0; y < mYTileCount; y += 1) {
+                if (mTileGrid[x][y] > 0) {
+                    canvas.drawBitmap(mTileArray[mTileGrid[x][y]], mXOffset + x * mTileSize,
+                            mYOffset + y * mTileSize, mPaint);
+                }
+            }
+        }
+
+    }
+
+    /**
+     * Rests the internal array of Bitmaps used for drawing tiles, and sets the maximum index of
+     * tiles to be inserted
+     *
+     * @param tilecount
+     */
+
+    public void resetTiles(int tilecount) {
+        mTileArray = new Bitmap[tilecount];
+    }
+
+    /**
+     * Used to indicate that a particular tile (set with loadTile and referenced by an integer)
+     * should be drawn at the given x/y coordinates during the next invalidate/draw cycle.
      * 
      * @param tileindex
      * @param x
@@ -149,21 +142,16 @@
         mTileGrid[x][y] = tileindex;
     }
 
-
     @Override
-    public void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-        for (int x = 0; x < mXTileCount; x += 1) {
-            for (int y = 0; y < mYTileCount; y += 1) {
-                if (mTileGrid[x][y] > 0) {
-                    canvas.drawBitmap(mTileArray[mTileGrid[x][y]], 
-                    		mXOffset + x * mTileSize,
-                    		mYOffset + y * mTileSize,
-                    		mPaint);
-                }
-            }
-        }
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        mXTileCount = (int) Math.floor(w / mTileSize);
+        mYTileCount = (int) Math.floor(h / mTileSize);
 
+        mXOffset = ((w - (mTileSize * mXTileCount)) / 2);
+        mYOffset = ((h - (mTileSize * mYTileCount)) / 2);
+
+        mTileGrid = new int[mXTileCount][mYTileCount];
+        clearTiles();
     }
 
 }
diff --git a/samples/Support4Demos/res/layout/fragment_stack.xml b/samples/Support4Demos/res/layout/fragment_stack.xml
index 1d12496..0f0951f 100644
--- a/samples/Support4Demos/res/layout/fragment_stack.xml
+++ b/samples/Support4Demos/res/layout/fragment_stack.xml
@@ -28,11 +28,19 @@
             android:layout_weight="1">
     </FrameLayout>
 
-    <Button android:id="@+id/new_fragment"
+    <LinearLayout
         android:layout_width="wrap_content" android:layout_height="wrap_content"
-        android:layout_weight="0" 
-        android:text="@string/new_fragment">
-        <requestFocus />
-    </Button>
+        android:layout_weight="0" android:orientation="horizontal">
+        <Button android:id="@+id/home"
+            android:layout_width="wrap_content" android:layout_height="wrap_content"
+            android:text="@string/home">
+            <requestFocus />
+        </Button>
+        <Button android:id="@+id/new_fragment"
+            android:layout_width="wrap_content" android:layout_height="wrap_content"
+            android:text="@string/new_fragment">
+            <requestFocus />
+        </Button>
+    </LinearLayout>
 
 </LinearLayout>
diff --git a/samples/Support4Demos/res/values/strings.xml b/samples/Support4Demos/res/values/strings.xml
index 8f70fd3..f8f4a4f 100644
--- a/samples/Support4Demos/res/values/strings.xml
+++ b/samples/Support4Demos/res/values/strings.xml
@@ -77,6 +77,7 @@
     <string name="fragment_receive_result_support">Fragment/Receive Result</string>
 
     <string name="fragment_stack_support">Fragment/Stack</string>
+    <string name="home">Go home</string>
     <string name="new_fragment">New fragment</string>
 
     <string name="fragment_tabs">Fragment/Tabs</string>
diff --git a/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentStackSupport.java b/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentStackSupport.java
index c4d05fa..337f2c1 100644
--- a/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentStackSupport.java
+++ b/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentStackSupport.java
@@ -20,6 +20,7 @@
 
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentActivity;
+import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 
 import android.os.Bundle;
@@ -45,6 +46,17 @@
                 addFragmentToStack();
             }
         });
+        button = (Button)findViewById(R.id.home);
+        button.setOnClickListener(new OnClickListener() {
+            public void onClick(View v) {
+                // If there is a back stack, pop it all.
+                FragmentManager fm = getSupportFragmentManager();
+                if (fm.getBackStackEntryCount() > 0) {
+                    fm.popBackStack(fm.getBackStackEntryAt(0).getId(),
+                            FragmentManager.POP_BACK_STACK_INCLUSIVE);
+                }
+            }
+        });
 
         if (savedInstanceState == null) {
             // Do first time initialization -- add initial fragment.
diff --git a/samples/WeatherListWidget/_index.html b/samples/WeatherListWidget/_index.html
index 730f27c..93464a1 100644
--- a/samples/WeatherListWidget/_index.html
+++ b/samples/WeatherListWidget/_index.html
@@ -29,11 +29,11 @@
 
 <p>If you are writing collection-based widgets, remember that the feature is
 supported only on Android 3.0 (API level 11) and higher versions of the platform.
-Remember to add the following to the application's manifest publishing to Android Market:</p>
+Remember to add the following to the application's manifest publishing to Google Play:</p>
 
 <ul>
 <li><code>&lt;uses-sdk android:minSdkVersion="11" /&gt;</code>, which indicates
-to Android Market and the platform that your application requires Android 3.0 or
+to Google Play and the platform that your application requires Android 3.0 or
 higher. For more information, see the <a href="../../../guide/appendix/api-levels.html">API Levels</a>
 and the documentation for the
 <a href="../../../guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
diff --git a/samples/WiFiDirectDemo/AndroidManifest.xml b/samples/WiFiDirectDemo/AndroidManifest.xml
index 993716f..d25fdc0 100644
--- a/samples/WiFiDirectDemo/AndroidManifest.xml
+++ b/samples/WiFiDirectDemo/AndroidManifest.xml
@@ -11,7 +11,7 @@
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 
-    <!-- Market filtering --> 
+    <!-- Google Play filtering --> 
     <uses-feature android:name="android.hardware.wifi.direct" android:required="true"/>
 
     <application
diff --git a/samples/WiFiDirectDemo/_index.html b/samples/WiFiDirectDemo/_index.html
index 07fb190..45b831d 100644
--- a/samples/WiFiDirectDemo/_index.html
+++ b/samples/WiFiDirectDemo/_index.html
@@ -23,20 +23,20 @@
 feature is supported only on Android 4.0 (API level 14) and higher versions of
 the platform. To ensure that your application can only
 be installed on devices that are capable of supporting Wi-Fi Direct mode, remember to add the
-following to the application's manifest before publishing to Android Market:</p>
+following to the application's manifest before publishing to Google Play:</p>
 <ul> <li><code>&lt;uses-sdk android:minSdkVersion="14" /&gt;</code>, which
-  indicates to Android Market and the platform that your application requires
+  indicates to Google Play and the platform that your application requires
   Android 4.0 or higher. For more information, see <a
     href="../../../guide/appendix/api-levels.html">API Levels</a> and the
   documentation for the <a
     href="../../../guide/topics/manifest/uses-sdk-element.html"><code>&lt;uses-sdk&gt;</code></a>
-  element.</li> </ul> <p>To control how Android Market filters your application
+  element.</li> </ul> <p>To control how Google Play filters your application
 from devices that do not support Wi-Fi Direct mode, remember to add the following to the
 application's manifest <ul> <li><code>&lt;uses-feature
-    android:name="android.hardware.wifi.direct" /&gt;</code>, which tells Android
-  Market that your application uses the Wi-Fi Direct API. The declaration should include
+    android:name="android.hardware.wifi.direct" /&gt;</code>, which tells Google
+  Play that your application uses the Wi-Fi Direct API. The declaration should include
   an <code>android:required</code> attribute that indicates whether you want
-  Android Market to filter the application from devices that do not offer Wi-Fi Direct support. Other <code>&lt;uses-feature&gt;</code> declarations may also be
+  Google Play to filter the application from devices that do not offer Wi-Fi Direct support. Other <code>&lt;uses-feature&gt;</code> declarations may also be
   needed, depending on your implementation. For more information, see the
   documentation for the <a
     href="../../../guide/topics/manifest/uses-feature-element.html"><code>&lt;uses-feature&gt;</code></a>
diff --git a/samples/samples_source.prop_template b/samples/samples_source.prop_template
new file mode 100644
index 0000000..d3cdfd5
--- /dev/null
+++ b/samples/samples_source.prop_template
@@ -0,0 +1,4 @@
+Pkg.UserSrc=false
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
diff --git a/samples/source.properties b/samples/source.properties
deleted file mode 100644
index d0b390b..0000000
--- a/samples/source.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-Pkg.UserSrc=false
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
diff --git a/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml b/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml
new file mode 100644
index 0000000..9a4dc8c
--- /dev/null
+++ b/samples/training/multiscreen/newsreader/res/values-large-land/layouts.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- BEGIN_INCLUDE(all) -->
+<resources>
+    <item name="main_layout" type="layout">@layout/twopanes</item>
+    <bool name="has_two_panes">true</bool>
+</resources>
+<!-- END_INCLUDE(all) -->
diff --git a/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml b/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml
new file mode 100644
index 0000000..39c4645
--- /dev/null
+++ b/samples/training/multiscreen/newsreader/res/values-large-port/layouts.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- BEGIN_INCLUDE(all) -->
+<resources>
+    <item name="main_layout" type="layout">@layout/twopanes_narrow</item>
+    <bool name="has_two_panes">true</bool>
+</resources>
+<!-- END_INCLUDE(all) -->
diff --git a/scripts/app_engine_server/memcache_zipserve.py b/scripts/app_engine_server/memcache_zipserve.py
index c620596..75d1b97 100644
--- a/scripts/app_engine_server/memcache_zipserve.py
+++ b/scripts/app_engine_server/memcache_zipserve.py
@@ -31,7 +31,10 @@
 import email.Utils
 import logging
 import mimetypes
+import re
+import sys
 import time
+import yaml
 import zipfile
 
 from google.appengine.api import memcache
@@ -94,9 +97,21 @@
   PUBLIC = True                     # public cache setting
   CACHE_PREFIX = 'cache://'         # memcache key prefix for actual URLs
   NEG_CACHE_PREFIX = 'noncache://'  # memcache key prefix for non-existant URL
+  REDIRECT_PREFIX = 'redirect://'   # memcache key prefix for redirect data
+  REDIRECT_FILE = 'redirects.yaml'  # Name of file that contains redirect table
+  REDIRECT_SRC = 'src'              # Name of the 'source' attribute for a
+                                    #   redirect table entry
+  REDIRECT_DST = 'dst'              # Name of the 'destination' attribute for
+                                    #   a redirect table entry
+  REDIRECT_TYPE = 'type'            # Name of the 'type' attribute for a
+                                    #   redirect table entry
+  REDIRECT_TYPE_PERM = 'permanent'  # Redirect 'type' string indicating a 301
+                                    #   redirect should be served
+  REDIRECT_TYPE_TEMP = 'temporary'  # Redirect 'type'string indicate a 302
+                                    #   Redirect should be served
   intlString = 'intl/'
   validLangs = ['en', 'de', 'es', 'fr','it','ja','zh-CN','zh-TW']
-  
+
   def TrueGet(self, reqUri):
     """The top-level entry point to serving requests.
 
@@ -118,7 +133,7 @@
     isStripped = False
 
     # Try to retrieve the user's lang pref from the cookie. If there is no
-    # lang pref cookie in the request, add set-cookie to the response with the 
+    # lang pref cookie in the request, add set-cookie to the response with the
     # default value of 'en'.
     try:
       langName = self.request.cookies['android_developer_pref_lang']
@@ -127,64 +142,201 @@
       #logging.info('==========================EXCEPTION: NO LANG COOKIE FOUND, USING [%s]', langName)
     logging.info('==========================REQ INIT name [%s] langName [%s] resetLangCookie [%s]', reqUri, langName, resetLangCookie)
 
+    # Do some prep for handling intl requests. Parse the url and validate
+    # the intl/lang substring, extract the url lang code (urlLangName) and the
+    # the uri that follows the intl/lang substring(contentUri)
+    sections = reqUri.split("/", 2)
+    isIntl = len(sections) > 2 and (sections[0] == "intl")
+    if isIntl:
+      isValidIntl = sections[1] in self.validLangs
+      urlLangName = sections[1]
+      contentUri = sections[2]
+      logging.info('  Content URI is [%s]...', contentUri)
+      if isValidIntl:
+        if (langName != urlLangName) or (langName == 'en'):
+          # if the lang code in the request is different from that in
+          # the cookie, or if the target lang is en, strip the
+          # intl/nn substring. It will later be redirected to
+          # the user's preferred language url.
+          # logging.info('  Handling a MISMATCHED intl request')
+          reqUri = contentUri
+          isStripped = True
+          isValidIntl = False
+          isIntl = False
+          #logging.info('INTL PREP resetting langName to urlLangName [%s]', langName)
+        #else:
+        #  logging.info('INTL PREP no need to reset langName')
+    else:
+      contentUri = reqUri
+
+    # Apply manual redirects from redirects.yaml. This occurs before any
+    # other mutations are performed, to avoid odd redirect behavior
+    # (For example, a user may want to redirect a directory without having
+    # /index.html appended.)
+    did_redirect = self.ProcessManualRedirects(contentUri, langName, isIntl)
+    if did_redirect:
+      return
+
     # Preprocess the req url. If it references a directory or the domain itself,
     # append '/index.html' to the url and 302 redirect. Otherwise, continue
     # processing the request below.
-    name = self.PreprocessUrl(reqUri, langName)
-    if name:
-      # Do some prep for handling intl requests. Parse the url and validate
-      # the intl/lang substring, extract the url lang code (urlLangName) and the
-      # the uri that follows the intl/lang substring(contentUri)
-      sections = name.split("/", 2)
-      contentUri = 0
-      isIntl = len(sections) > 1 and (sections[0] == "intl")
-      if isIntl:
-        isValidIntl = sections[1] in self.validLangs
-        if isValidIntl:
-          urlLangName = sections[1]
-          contentUri = sections[2]
-          logging.info('  Content URI is [%s]...', contentUri)
-          if (urlLangName != langName) or (langName == 'en'):
-            # if the lang code in the request is different from that in 
-            # the cookie, or if the target lang is en, strip the 
-            # intl/nn substring. It will later be redirected to
-            # the user's preferred language url. 
-            # logging.info('  Handling a MISMATCHED intl request')
-            name = contentUri
-            isStripped = True
-            isValidIntl = False
-            isIntl = False
+    did_redirect = self.PreprocessUrl(reqUri, langName)
+    if did_redirect:
+      return
 
-      # Send for processing
-      if self.isCleanUrl(name, langName, isValidIntl, isStripped):
-        # handle a 'clean' request.
-        # Try to form a response using the actual request url.
-        # logging.info('  Request being handled as clean: [%s]', name)
-        if not self.CreateResponse(name, langName, isValidIntl, resetLangCookie):
-          # If CreateResponse returns False, there was no such document
-          # in the intl/lang tree. Before going to 404, see if there is an
-          # English-language version of the doc in the default
-          # default tree and return it, else go to 404.
-          self.CreateResponse(contentUri, langName, False, resetLangCookie)
+    # Send for processing
+    if self.isCleanUrl(reqUri, langName, isValidIntl, isStripped):
+      # handle a 'clean' request.
+      # Try to form a response using the actual request url.
+      # logging.info('  Request being handled as clean: [%s]', name)
+      if not self.CreateResponse(reqUri, langName, isValidIntl, resetLangCookie):
+        # If CreateResponse returns False, there was no such document
+        # in the intl/lang tree. Before going to 404, see if there is an
+        # English-language version of the doc in the default
+        # default tree and return it, else go to 404.
+        self.CreateResponse(contentUri, langName, False, resetLangCookie)
 
-      elif isIntl:
-        # handle the case where we need to pass through an invalid intl req 
-        # for processing (so as to get 404 as appropriate). This is needed
-        # because intl urls are passed through clean and retried in English,
-        # if necessary.
-        # logging.info('  Handling an invalid intl request...')
-        self.CreateResponse(name, langName, isValidIntl, resetLangCookie)
+    elif isIntl:
+      # handle the case where we need to pass through an invalid intl req
+      # for processing (so as to get 404 as appropriate). This is needed
+      # because intl urls are passed through clean and retried in English,
+      # if necessary.
+      # logging.info('  Handling an invalid intl request...')
+      self.CreateResponse(reqUri, langName, isValidIntl, resetLangCookie)
 
-      else:
-        # handle the case where we have a non-clean url (usually a non-intl
-        # url) that we need to interpret in the context of any lang pref
-        # that is set. Prepend an intl/lang string to the request url and
-        # send it as a 302 redirect. After the redirect, the subsequent
-        # request will be handled as a clean url.
-        self.RedirToIntl(name, self.intlString, langName)
+    else:
+      # handle the case where we have a non-clean url (usually a non-intl
+      # url) that we need to interpret in the context of any lang pref
+      # that is set. Prepend an intl/lang string to the request url and
+      # send it as a 302 redirect. After the redirect, the subsequent
+      # request will be handled as a clean url.
+      self.RedirToIntl(reqUri, self.intlString, langName)
+
+  def ProcessManualRedirects(self, contentUri, langName, isIntl):
+    """Compute any manual redirects for a request and execute them.
+
+    This allows content authors to manually define a set of regex rules which,
+    when matched, will cause an HTTP redirect to be performed.
+
+    Redirect rules are typically stored in a file named redirects.yaml. See the
+    comments in that file for more information about formatting.
+
+    Redirect computations are stored in memcache for performance.
+
+    Note that international URIs are handled automatically, and are assumed to
+    mirror redirects for non-intl requests.
+
+    Args:
+      contentUri: The relative URI (without leading slash) that was requested.
+        This should NOT contain an intl-prefix, if otherwise present.
+      langName: The requested language.
+      isIntl: True if contentUri originally contained an intl prefix.
+
+    Results:
+      boolean: True if a redirect has been set, False otherwise.
+    """
+    # Redirect data is stored in memcache for performance
+    memcache_key = self.REDIRECT_PREFIX + contentUri
+    redirect_data = memcache.get(memcache_key)
+    if redirect_data is None:
+      logging.info('Redirect cache miss. Computing new redirect data.\n'
+                   'Memcache Key: ' + memcache_key)
+      redirect_data = self.ComputeManualRedirectUrl(contentUri)
+      memcache.set(memcache_key, redirect_data)
+    contentUri = redirect_data[0]
+    redirectType = redirect_data[1]
+
+    # If this is an international URL, prepend intl path to minimize
+    # number of redirects
+    if isIntl:
+      contentUri = '/%s%s%s' % (self.intlString, langName, contentUri)
+
+    if redirectType is None:
+      # No redirect necessary
+      return False
+    elif redirectType == self.REDIRECT_TYPE_PERM:
+      logging.info('Sending permanent redirect: ' + contentUri);
+      self.redirect(contentUri, permanent=True)
+      return True
+    elif redirectType == self.REDIRECT_TYPE_TEMP:
+      logging.info('Sending temporary redirect: ' + contentUri);
+      self.redirect(contentUri, permanent=False)
+      return True
+    else:
+      # Invalid redirect type
+      logging.error('Invalid redirect type: %s', redirectType)
+      raise ('Invalid redirect type: %s', redirectType)
+
+  def ComputeManualRedirectUrl(self, uri):
+    """Read redirects file and evaluate redirect rules for a given URI.
+
+    Args:
+      uri: The relative URI (without leading slash) for which redirect data
+        should be computed. No special handling of intl URIs is pefromed
+        at this level.
+
+    Returns:
+      tuple: The computed redirect data. This tuple has two parts:
+        redirect_uri: The new URI that should be used. (If no redirect rule is
+          found, the original input to 'uri' will be returned.
+        redirect_type: Either 'permanent' for an HTTP 301 redirect, 'temporary'
+          for an HTTP 302 redirect, or None if no redirect should be performed.
+    """
+    # Redircts are defined in a file named redirects.yaml.
+    try:
+      f = open(self.REDIRECT_FILE)
+      data = yaml.load(f)
+      f.close()
+    except IOError, e:
+      logging.warning('Error opening redirect file (' + self.REDIRECT_FILE +
+                      '): ' + e.strerror)
+      return (uri, None)
+
+    # The incoming path is missing a leading slash. However, many parts of the
+    # redirect system require leading slashes to distinguish between relative
+    # and absolute redirects. So, to compensate for this, we'll add a leading
+    # slash here as well.
+    uri = '/' + uri
+
+    # Check to make sure we actually got an iterable list out of the YAML file
+    if data is None:
+      logging.warning('Redirect file (' + self.REDIRECT_FILE + ') not valid '
+                      'YAML.')
+    elif 'redirects' not in data:
+      logging.warning('Redirect file (' + self.REDIRECT_FILE + ') not '
+                      'properly formatted -- no \'redirects:\' header.')
+    elif hasattr(data['redirects'], '__iter__'):
+      # Iterate through redirect data, try to find a redirect that matches.
+      for redirect in data['redirects']:
+          # Note: re.search adds an implied '^' to the beginning of the regex
+          # This means that the regex must match from the beginning of the
+          # string.
+          try:
+            if re.match(redirect[self.REDIRECT_SRC], uri):
+              # Match found. Apply redirect rule.
+              redirect_uri = re.sub('^' + redirect[self.REDIRECT_SRC],
+                  redirect[self.REDIRECT_DST], uri)
+              logging.info('Redirect rule matched.\n'
+                             'Rule: %s\n'
+                             'Src: %s\n'
+                             'Dst: %s',
+                           redirect[self.REDIRECT_SRC], uri, redirect_uri)
+              if self.REDIRECT_TYPE in redirect:
+                redirect_type = redirect[self.REDIRECT_TYPE]
+              else:
+                # Default redirect type, if unspecified
+                redirect_type = self.REDIRECT_TYPE_PERM
+              return (redirect_uri, redirect_type)
+          except:
+            e = sys.exc_info()[1]
+            raise ('Error while processing redirect rule.\n'
+                     'Rule: %s\n'
+                     'Error: %s' % (redirect[self.REDIRECT_SRC], e))
+    # No redirect found, return URL unchanged
+    return (uri, None)
 
   def isCleanUrl(self, name, langName, isValidIntl, isStripped):
-    """Determine whether to pass an incoming url straight to processing. 
+    """Determine whether to pass an incoming url straight to processing.
 
        Args:
          name: The incoming URL
@@ -208,9 +360,10 @@
       name: The incoming URL
 
     Returns:
-      False if the request was redirected to '/index.html', or
-      The processed URL, otherwise
+      True if the request was redirected to '/index.html'.
+      Otherewise False.
     """
+
     # determine if this is a request for a directory
     final_path_segment = name
     final_slash_offset = name.rfind('/')
@@ -224,16 +377,16 @@
       uri = ''.join(['/', name, 'index.html'])
       # logging.info('--->PREPROCESSING REDIRECT [%s] to [%s] with langName [%s]', name, uri, langName)
       self.redirect(uri, False)
-      return False
+      return True
     else:
-      return name
+      return False
 
   def RedirToIntl(self, name, intlString, langName):
     """Redirect an incoming request to the appropriate intl uri.
 
        For non-en langName, builds the intl/lang string from a
-       base (en) string and redirects (302) the request to look for 
-       a version of the file in langName. For en langName, simply 
+       base (en) string and redirects (302) the request to look for
+       a version of the file in langName. For en langName, simply
        redirects a stripped uri string (intl/nn removed).
 
     Args:
@@ -247,25 +400,25 @@
     else:
       builtIntlLangUri = name
     uri = ''.join(['/', builtIntlLangUri])
-    logging.info('-->>REDIRECTING %s to  %s', name, uri)
+    logging.info('-->REDIRECTING %s to  %s', name, uri)
     self.redirect(uri, False)
     return uri
 
   def CreateResponse(self, name, langName, isValidIntl, resetLangCookie):
     """Process the url and form a response, if appropriate.
 
-       Attempts to retrieve the requested file (name) from cache, 
-       negative cache, or store (zip) and form the response. 
-       For intl requests that are not found (in the localized tree), 
+       Attempts to retrieve the requested file (name) from cache,
+       negative cache, or store (zip) and form the response.
+       For intl requests that are not found (in the localized tree),
        returns False rather than forming a response, so that
-       the request can be retried with the base url (this is the 
-       fallthrough to default language). 
+       the request can be retried with the base url (this is the
+       fallthrough to default language).
 
        For requests that are found, forms the headers and
        adds the content to the response entity. If the request was
-       for an intl (localized) url, also resets the language cookie 
-       to the language specified in the url if needed, to ensure that 
-       the client language and response data remain harmonious. 
+       for an intl (localized) url, also resets the language cookie
+       to the language specified in the url if needed, to ensure that
+       the client language and response data remain harmonious.
 
     Args:
       name: The incoming, preprocessed URL
@@ -281,7 +434,7 @@
       False: No response was created.
     """
     # see if we have the page in the memcache
-    logging.info('PROCESSING %s langName [%s] isValidIntl [%s] resetLang [%s]', 
+    logging.info('PROCESSING %s langName [%s] isValidIntl [%s] resetLang [%s]',
       name, langName, isValidIntl, resetLangCookie)
     resp_data = self.GetFromCache(name)
     if resp_data is None:
@@ -314,12 +467,12 @@
       logging.info('  Resetting android_developer_pref_lang cookie to [%s]',
       langName)
       expireDate = time.mktime(localtime()) + 60 * 60 * 24 * 365 * 10
-      self.response.headers.add_header('Set-Cookie', 
-      'android_developer_pref_lang=%s; path=/; expires=%s' % 
+      self.response.headers.add_header('Set-Cookie',
+      'android_developer_pref_lang=%s; path=/; expires=%s' %
       (langName, strftime("%a, %d %b %Y %H:%M:%S", localtime(expireDate))))
     mustRevalidate = False
     if ('.html' in name):
-      # revalidate html files -- workaround for cache inconsistencies for 
+      # revalidate html files -- workaround for cache inconsistencies for
       # negotiated responses
       mustRevalidate = True
       #logging.info('  Adding [Vary: Cookie] to response...')
@@ -337,6 +490,22 @@
       self.response.headers['Content-Type'] = 'application/octet-stream'
       self.SetCachingHeaders(mustRevalidate)
       self.response.out.write(resp_data)
+    elif name.endswith('.svg'):
+      self.response.headers['Content-Type'] = 'image/svg+xml'
+      self.SetCachingHeaders(mustRevalidate)
+      self.response.out.write(resp_data)
+    elif name.endswith('.mp4'):
+      self.response.headers['Content-Type'] = 'video/mp4'
+      self.SetCachingHeaders(mustRevalidate)
+      self.response.out.write(resp_data)
+    elif name.endswith('.webm'):
+      self.response.headers['Content-Type'] = 'video/webm'
+      self.SetCachingHeaders(mustRevalidate)
+      self.response.out.write(resp_data)
+    elif name.endswith('.ogv'):
+      self.response.headers['Content-Type'] = 'video/ogg'
+      self.SetCachingHeaders(mustRevalidate)
+      self.response.out.write(resp_data)
     return True
 
   def GetFromStore(self, file_path):
@@ -375,7 +544,7 @@
           x = False
         if resp_data is not None:
           logging.info('%s read from %s', file_path, archive_name)
-          
+
       try:
         archive_name = file_itr.next()[0]
       except (StopIteration), err:
@@ -443,7 +612,7 @@
 
     We say that file1 is lexigraphically before file2 if the last non-matching
     path segment of file1 is alphabetically before file2.
-    
+
     Args:
       file1: the first file path
       file2: the second file path
diff --git a/scripts/app_engine_server/redirects.yaml b/scripts/app_engine_server/redirects.yaml
new file mode 100644
index 0000000..4d70d3d
--- /dev/null
+++ b/scripts/app_engine_server/redirects.yaml
@@ -0,0 +1,55 @@
+# Redirect file.
+# This file contains the list of rewrite rules that are applied when serving
+# pages.
+#
+# Each redirect has four parts:
+#
+# - src: The path to redirect. This is a regex rule prefixed with an implied
+#   '^'. Unless you're doing something advanced, your path should start with
+#   '/' character.
+#
+# - dst: The path to redirect to. If the path begins with a slash,
+#   it is considered a relative redirect. Otherwise, it is an absolute
+#   redirct (and should probably begin with http: or http://). You may use
+#   capturing groups to preserve part of the source path. To referece a
+#   capturing group, use \N, where N is the (1-based) index of desired group.
+#
+# - type: Either 'permanent' or 'temporary', depending on whether you want an
+#   HTTP 301 or HTTP 302 redirect, respectiviely. See RFC 2616 for the
+#   difference between these:
+#
+#       http://tools.ietf.org/html/rfc2616
+#
+#   If you don't specify a type, 'permanent' will be used by default. Note that
+#   this is different from the Apache convention (which uses 'temporary' by
+#   default.)
+#
+# - comment: Currently ignored by the computer, but useful for humans.
+#
+# Example:
+#
+# redirects:
+# - src: /foo
+#   dst: /bar
+#   # Redirect /foo to /bar. This will also redirect foo/ and
+#   # foo/test.html. Note that the redirect type is optional. This will be
+#   # treated as a permanent redirect.
+#
+# - src: /(.+droid(/.*)?)$
+#   dst: /droids/\1
+#   type: permanent
+#   # Redirect /android to /droids/android and /bugdroid to
+#   # /droids/bugdroid. However, it will not redirect /droid or
+#   # /bugdroids.
+#
+# - src: /google
+#   dst: http://www.google.com
+#   type: temporary
+#   # This is an example of a redirect to an absolute URI.
+#
+
+redirects:
+- src: /%2B/?$
+  dst: https://plus.google.com/b/108967384991768947849/
+  type: permanent
+  comment: Redirect /+ and /+/ to Google+
diff --git a/scripts/divide_and_compress_constants.py b/scripts/divide_and_compress_constants.py
index 15162b7..89a607d 100644
--- a/scripts/divide_and_compress_constants.py
+++ b/scripts/divide_and_compress_constants.py
@@ -36,23 +36,24 @@
 # limitations under the License.
 #
 
-import wsgiref.handlers\n'
-from google.appengine.ext import zipserve\n'
-from google.appengine.ext import webapp\n'
-import memcache_zipserve\n\n\n'
+import wsgiref.handlers
+from google.appengine.ext import zipserve
+from google.appengine.ext import webapp
+import memcache_zipserve
+
 class MainHandler(webapp.RequestHandler):
 
   def get(self):
     self.response.out.write('Hello world!')
 
 def main():
-  application = webapp.WSGIApplication(['/(.*)',
-    memcache_zipserve.create_handler(["""
+  handler = memcache_zipserve.create_handler(["""
 
-file_endpiece = """])),
-],
-debug=False)
+file_endpiece = """
+    ])
+  application = webapp.WSGIApplication([('/(.*)', handler)], debug=False)
   wsgiref.handlers.CGIHandler().run(application)
 
-if __name__ == __main__:
-  main()"""
+if __name__ == '__main__':
+    main()
+"""
\ No newline at end of file
diff --git a/sdk/api-versions.xml b/sdk/api-versions.xml
new file mode 100644
index 0000000..e52fb1a
--- /dev/null
+++ b/sdk/api-versions.xml
@@ -0,0 +1,47118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<api version="1">
+	<class name="android/Manifest" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/Manifest$permission" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACCESS_CHECKIN_PROPERTIES" />
+		<field name="ACCESS_COARSE_LOCATION" />
+		<field name="ACCESS_FINE_LOCATION" />
+		<field name="ACCESS_LOCATION_EXTRA_COMMANDS" />
+		<field name="ACCESS_MOCK_LOCATION" />
+		<field name="ACCESS_NETWORK_STATE" />
+		<field name="ACCESS_SURFACE_FLINGER" />
+		<field name="ACCESS_WIFI_STATE" />
+		<field name="ACCOUNT_MANAGER" since="5" />
+		<field name="ADD_SYSTEM_SERVICE" />
+		<field name="ADD_VOICEMAIL" since="14" />
+		<field name="AUTHENTICATE_ACCOUNTS" since="5" />
+		<field name="BATTERY_STATS" />
+		<field name="BIND_APPWIDGET" since="3" />
+		<field name="BIND_DEVICE_ADMIN" since="8" />
+		<field name="BIND_INPUT_METHOD" since="3" />
+		<field name="BIND_REMOTEVIEWS" since="11" />
+		<field name="BIND_TEXT_SERVICE" since="14" />
+		<field name="BIND_VPN_SERVICE" since="14" />
+		<field name="BIND_WALLPAPER" since="8" />
+		<field name="BLUETOOTH" />
+		<field name="BLUETOOTH_ADMIN" />
+		<field name="BRICK" />
+		<field name="BROADCAST_PACKAGE_REMOVED" />
+		<field name="BROADCAST_SMS" since="2" />
+		<field name="BROADCAST_STICKY" />
+		<field name="BROADCAST_WAP_PUSH" since="2" />
+		<field name="CALL_PHONE" />
+		<field name="CALL_PRIVILEGED" />
+		<field name="CAMERA" />
+		<field name="CHANGE_COMPONENT_ENABLED_STATE" />
+		<field name="CHANGE_CONFIGURATION" />
+		<field name="CHANGE_NETWORK_STATE" />
+		<field name="CHANGE_WIFI_MULTICAST_STATE" since="4" />
+		<field name="CHANGE_WIFI_STATE" />
+		<field name="CLEAR_APP_CACHE" />
+		<field name="CLEAR_APP_USER_DATA" />
+		<field name="CONTROL_LOCATION_UPDATES" />
+		<field name="DELETE_CACHE_FILES" />
+		<field name="DELETE_PACKAGES" />
+		<field name="DEVICE_POWER" />
+		<field name="DIAGNOSTIC" />
+		<field name="DISABLE_KEYGUARD" />
+		<field name="DUMP" />
+		<field name="EXPAND_STATUS_BAR" />
+		<field name="FACTORY_TEST" />
+		<field name="FLASHLIGHT" />
+		<field name="FORCE_BACK" />
+		<field name="FOTA_UPDATE" />
+		<field name="GET_ACCOUNTS" />
+		<field name="GET_PACKAGE_SIZE" />
+		<field name="GET_TASKS" />
+		<field name="GLOBAL_SEARCH" since="4" />
+		<field name="HARDWARE_TEST" />
+		<field name="INJECT_EVENTS" />
+		<field name="INSTALL_LOCATION_PROVIDER" since="4" />
+		<field name="INSTALL_PACKAGES" />
+		<field name="INTERNAL_SYSTEM_WINDOW" />
+		<field name="INTERNET" />
+		<field name="KILL_BACKGROUND_PROCESSES" since="8" />
+		<field name="MANAGE_ACCOUNTS" since="5" />
+		<field name="MANAGE_APP_TOKENS" />
+		<field name="MASTER_CLEAR" />
+		<field name="MODIFY_AUDIO_SETTINGS" />
+		<field name="MODIFY_PHONE_STATE" />
+		<field name="MOUNT_FORMAT_FILESYSTEMS" since="3" />
+		<field name="MOUNT_UNMOUNT_FILESYSTEMS" />
+		<field name="NFC" since="9" />
+		<field name="PERSISTENT_ACTIVITY" />
+		<field name="PROCESS_OUTGOING_CALLS" />
+		<field name="READ_CALENDAR" />
+		<field name="READ_CONTACTS" />
+		<field name="READ_FRAME_BUFFER" />
+		<field name="READ_HISTORY_BOOKMARKS" since="4" />
+		<field name="READ_INPUT_STATE" />
+		<field name="READ_LOGS" />
+		<field name="READ_OWNER_DATA" />
+		<field name="READ_PHONE_STATE" />
+		<field name="READ_PROFILE" since="14" />
+		<field name="READ_SMS" />
+		<field name="READ_SOCIAL_STREAM" since="15" />
+		<field name="READ_SYNC_SETTINGS" />
+		<field name="READ_SYNC_STATS" />
+		<field name="REBOOT" />
+		<field name="RECEIVE_BOOT_COMPLETED" />
+		<field name="RECEIVE_MMS" />
+		<field name="RECEIVE_SMS" />
+		<field name="RECEIVE_WAP_PUSH" />
+		<field name="RECORD_AUDIO" />
+		<field name="REORDER_TASKS" />
+		<field name="RESTART_PACKAGES" />
+		<field name="SEND_SMS" />
+		<field name="SET_ACTIVITY_WATCHER" />
+		<field name="SET_ALARM" since="9" />
+		<field name="SET_ALWAYS_FINISH" />
+		<field name="SET_ANIMATION_SCALE" />
+		<field name="SET_DEBUG_APP" />
+		<field name="SET_ORIENTATION" />
+		<field name="SET_POINTER_SPEED" since="13" />
+		<field name="SET_PREFERRED_APPLICATIONS" />
+		<field name="SET_PROCESS_FOREGROUND" />
+		<field name="SET_PROCESS_LIMIT" />
+		<field name="SET_TIME" since="8" />
+		<field name="SET_TIME_ZONE" />
+		<field name="SET_WALLPAPER" />
+		<field name="SET_WALLPAPER_HINTS" />
+		<field name="SIGNAL_PERSISTENT_PROCESSES" />
+		<field name="STATUS_BAR" />
+		<field name="SUBSCRIBED_FEEDS_READ" />
+		<field name="SUBSCRIBED_FEEDS_WRITE" />
+		<field name="SYSTEM_ALERT_WINDOW" />
+		<field name="UPDATE_DEVICE_STATS" since="3" />
+		<field name="USE_CREDENTIALS" since="5" />
+		<field name="USE_SIP" since="9" />
+		<field name="VIBRATE" />
+		<field name="WAKE_LOCK" />
+		<field name="WRITE_APN_SETTINGS" />
+		<field name="WRITE_CALENDAR" />
+		<field name="WRITE_CONTACTS" />
+		<field name="WRITE_EXTERNAL_STORAGE" since="4" />
+		<field name="WRITE_GSERVICES" />
+		<field name="WRITE_HISTORY_BOOKMARKS" since="4" />
+		<field name="WRITE_OWNER_DATA" />
+		<field name="WRITE_PROFILE" since="14" />
+		<field name="WRITE_SECURE_SETTINGS" since="3" />
+		<field name="WRITE_SETTINGS" />
+		<field name="WRITE_SMS" />
+		<field name="WRITE_SOCIAL_STREAM" since="15" />
+		<field name="WRITE_SYNC_SETTINGS" />
+	</class>
+	<class name="android/Manifest$permission_group" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACCOUNTS" />
+		<field name="COST_MONEY" />
+		<field name="DEVELOPMENT_TOOLS" />
+		<field name="HARDWARE_CONTROLS" />
+		<field name="LOCATION" />
+		<field name="MESSAGES" />
+		<field name="NETWORK" />
+		<field name="PERSONAL_INFO" />
+		<field name="PHONE_CALLS" />
+		<field name="STORAGE" since="4" />
+		<field name="SYSTEM_TOOLS" />
+	</class>
+	<class name="android/R" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/R$anim" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="accelerate_decelerate_interpolator" />
+		<field name="accelerate_interpolator" />
+		<field name="anticipate_interpolator" since="4" />
+		<field name="anticipate_overshoot_interpolator" since="4" />
+		<field name="bounce_interpolator" since="4" />
+		<field name="cycle_interpolator" since="8" />
+		<field name="decelerate_interpolator" />
+		<field name="fade_in" />
+		<field name="fade_out" />
+		<field name="linear_interpolator" since="4" />
+		<field name="overshoot_interpolator" since="4" />
+		<field name="slide_in_left" />
+		<field name="slide_out_right" />
+	</class>
+	<class name="android/R$animator" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="fade_in" />
+		<field name="fade_out" />
+	</class>
+	<class name="android/R$array" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="emailAddressTypes" />
+		<field name="imProtocols" />
+		<field name="organizationTypes" />
+		<field name="phoneTypes" />
+		<field name="postalAddressTypes" />
+	</class>
+	<class name="android/R$attr" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="absListViewStyle" />
+		<field name="accessibilityEventTypes" since="14" />
+		<field name="accessibilityFeedbackType" since="14" />
+		<field name="accessibilityFlags" since="14" />
+		<field name="accountPreferences" since="5" />
+		<field name="accountType" since="5" />
+		<field name="action" />
+		<field name="actionBarDivider" since="14" />
+		<field name="actionBarItemBackground" since="14" />
+		<field name="actionBarSize" since="11" />
+		<field name="actionBarSplitStyle" since="14" />
+		<field name="actionBarStyle" since="11" />
+		<field name="actionBarTabBarStyle" since="11" />
+		<field name="actionBarTabStyle" since="11" />
+		<field name="actionBarTabTextStyle" since="11" />
+		<field name="actionBarWidgetTheme" since="14" />
+		<field name="actionButtonStyle" since="11" />
+		<field name="actionDropDownStyle" since="11" />
+		<field name="actionLayout" since="11" />
+		<field name="actionMenuTextAppearance" since="11" />
+		<field name="actionMenuTextColor" since="11" />
+		<field name="actionModeBackground" since="11" />
+		<field name="actionModeCloseButtonStyle" since="11" />
+		<field name="actionModeCloseDrawable" since="11" />
+		<field name="actionModeCopyDrawable" since="11" />
+		<field name="actionModeCutDrawable" since="11" />
+		<field name="actionModePasteDrawable" since="11" />
+		<field name="actionModeSelectAllDrawable" since="14" />
+		<field name="actionModeSplitBackground" since="14" />
+		<field name="actionModeStyle" since="14" />
+		<field name="actionOverflowButtonStyle" since="11" />
+		<field name="actionProviderClass" since="14" />
+		<field name="actionViewClass" since="11" />
+		<field name="activatedBackgroundIndicator" since="11" />
+		<field name="activityCloseEnterAnimation" />
+		<field name="activityCloseExitAnimation" />
+		<field name="activityOpenEnterAnimation" />
+		<field name="activityOpenExitAnimation" />
+		<field name="addStatesFromChildren" />
+		<field name="adjustViewBounds" />
+		<field name="alertDialogIcon" since="11" />
+		<field name="alertDialogStyle" />
+		<field name="alertDialogTheme" since="11" />
+		<field name="alignmentMode" since="14" />
+		<field name="allContactsName" since="11" />
+		<field name="allowBackup" since="4" />
+		<field name="allowClearUserData" />
+		<field name="allowParallelSyncs" since="11" />
+		<field name="allowSingleTap" since="3" />
+		<field name="allowTaskReparenting" />
+		<field name="alpha" since="11" />
+		<field name="alphabeticShortcut" />
+		<field name="alwaysDrawnWithCache" />
+		<field name="alwaysRetainTaskState" />
+		<field name="angle" />
+		<field name="animateFirstView" since="11" />
+		<field name="animateLayoutChanges" since="11" />
+		<field name="animateOnClick" since="3" />
+		<field name="animation" />
+		<field name="animationCache" />
+		<field name="animationDuration" />
+		<field name="animationOrder" />
+		<field name="animationResolution" since="11" />
+		<field name="antialias" />
+		<field name="anyDensity" since="4" />
+		<field name="apiKey" />
+		<field name="author" since="7" />
+		<field name="authorities" />
+		<field name="autoAdvanceViewId" since="11" />
+		<field name="autoCompleteTextViewStyle" />
+		<field name="autoLink" />
+		<field name="autoStart" since="7" />
+		<field name="autoText" />
+		<field name="autoUrlDetect" since="4" />
+		<field name="background" />
+		<field name="backgroundDimAmount" />
+		<field name="backgroundDimEnabled" since="3" />
+		<field name="backgroundSplit" since="14" />
+		<field name="backgroundStacked" since="14" />
+		<field name="backupAgent" since="4" />
+		<field name="baseline" since="11" />
+		<field name="baselineAlignBottom" />
+		<field name="baselineAligned" />
+		<field name="baselineAlignedChildIndex" />
+		<field name="borderlessButtonStyle" since="11" />
+		<field name="bottom" />
+		<field name="bottomBright" />
+		<field name="bottomDark" />
+		<field name="bottomLeftRadius" />
+		<field name="bottomMedium" />
+		<field name="bottomOffset" since="3" />
+		<field name="bottomRightRadius" />
+		<field name="breadCrumbShortTitle" since="11" />
+		<field name="breadCrumbTitle" since="11" />
+		<field name="bufferType" />
+		<field name="button" />
+		<field name="buttonBarButtonStyle" since="11" />
+		<field name="buttonBarStyle" since="11" />
+		<field name="buttonStyle" />
+		<field name="buttonStyleInset" />
+		<field name="buttonStyleSmall" />
+		<field name="buttonStyleToggle" />
+		<field name="cacheColorHint" />
+		<field name="calendarViewShown" since="11" />
+		<field name="calendarViewStyle" since="11" />
+		<field name="canRetrieveWindowContent" since="14" />
+		<field name="candidatesTextStyleSpans" since="3" />
+		<field name="capitalize" />
+		<field name="centerBright" />
+		<field name="centerColor" />
+		<field name="centerDark" />
+		<field name="centerMedium" />
+		<field name="centerX" />
+		<field name="centerY" />
+		<field name="checkBoxPreferenceStyle" />
+		<field name="checkMark" />
+		<field name="checkable" />
+		<field name="checkableBehavior" />
+		<field name="checkboxStyle" />
+		<field name="checked" />
+		<field name="checkedButton" />
+		<field name="childDivider" />
+		<field name="childIndicator" />
+		<field name="childIndicatorLeft" />
+		<field name="childIndicatorRight" />
+		<field name="choiceMode" />
+		<field name="clearTaskOnLaunch" />
+		<field name="clickable" />
+		<field name="clipChildren" />
+		<field name="clipOrientation" />
+		<field name="clipToPadding" />
+		<field name="codes" since="3" />
+		<field name="collapseColumns" />
+		<field name="color" />
+		<field name="colorActivatedHighlight" since="14" />
+		<field name="colorBackground" />
+		<field name="colorBackgroundCacheHint" since="5" />
+		<field name="colorFocusedHighlight" since="14" />
+		<field name="colorForeground" />
+		<field name="colorForegroundInverse" />
+		<field name="colorLongPressedHighlight" since="14" />
+		<field name="colorMultiSelectHighlight" since="14" />
+		<field name="colorPressedHighlight" since="14" />
+		<field name="columnCount" since="14" />
+		<field name="columnDelay" />
+		<field name="columnOrderPreserved" since="14" />
+		<field name="columnWidth" />
+		<field name="compatibleWidthLimitDp" since="13" />
+		<field name="completionHint" />
+		<field name="completionHintView" />
+		<field name="completionThreshold" />
+		<field name="configChanges" />
+		<field name="configure" since="3" />
+		<field name="constantSize" />
+		<field name="content" since="3" />
+		<field name="contentAuthority" since="5" />
+		<field name="contentDescription" since="4" />
+		<field name="cropToPadding" />
+		<field name="cursorVisible" />
+		<field name="customNavigationLayout" since="11" />
+		<field name="customTokens" since="11" />
+		<field name="cycles" />
+		<field name="dashGap" />
+		<field name="dashWidth" />
+		<field name="data" />
+		<field name="datePickerStyle" since="11" />
+		<field name="dateTextAppearance" since="11" />
+		<field name="debuggable" />
+		<field name="defaultValue" />
+		<field name="delay" />
+		<field name="dependency" />
+		<field name="descendantFocusability" />
+		<field name="description" />
+		<field name="detachWallpaper" since="5" />
+		<field name="detailColumn" since="5" />
+		<field name="detailSocialSummary" since="5" />
+		<field name="detailsElementBackground" since="11" />
+		<field name="dial" />
+		<field name="dialogIcon" />
+		<field name="dialogLayout" />
+		<field name="dialogMessage" />
+		<field name="dialogPreferenceStyle" />
+		<field name="dialogTheme" since="11" />
+		<field name="dialogTitle" />
+		<field name="digits" />
+		<field name="direction" />
+		<field name="directionDescriptions" since="14" />
+		<field name="directionPriority" />
+		<field name="disableDependentsState" />
+		<field name="disabledAlpha" />
+		<field name="displayOptions" since="11" />
+		<field name="dither" />
+		<field name="divider" />
+		<field name="dividerHeight" />
+		<field name="dividerHorizontal" since="11" />
+		<field name="dividerPadding" since="11" />
+		<field name="dividerVertical" since="11" />
+		<field name="drawSelectorOnTop" />
+		<field name="drawable" />
+		<field name="drawableBottom" />
+		<field name="drawableEnd" since="14" />
+		<field name="drawableLeft" />
+		<field name="drawablePadding" />
+		<field name="drawableRight" />
+		<field name="drawableStart" since="14" />
+		<field name="drawableTop" />
+		<field name="drawingCacheQuality" />
+		<field name="dropDownAnchor" since="3" />
+		<field name="dropDownHeight" since="4" />
+		<field name="dropDownHintAppearance" />
+		<field name="dropDownHorizontalOffset" since="5" />
+		<field name="dropDownItemStyle" />
+		<field name="dropDownListViewStyle" />
+		<field name="dropDownSelector" />
+		<field name="dropDownSpinnerStyle" since="11" />
+		<field name="dropDownVerticalOffset" since="5" />
+		<field name="dropDownWidth" since="3" />
+		<field name="duplicateParentState" />
+		<field name="duration" />
+		<field name="editTextBackground" since="11" />
+		<field name="editTextColor" since="11" />
+		<field name="editTextPreferenceStyle" />
+		<field name="editTextStyle" />
+		<field name="editable" />
+		<field name="editorExtras" since="3" />
+		<field name="ellipsize" />
+		<field name="ems" />
+		<field name="enabled" />
+		<field name="endColor" />
+		<field name="endYear" />
+		<field name="enterFadeDuration" since="11" />
+		<field name="entries" />
+		<field name="entryValues" />
+		<field name="eventsInterceptionEnabled" since="4" />
+		<field name="excludeFromRecents" />
+		<field name="exitFadeDuration" since="11" />
+		<field name="expandableListPreferredChildIndicatorLeft" />
+		<field name="expandableListPreferredChildIndicatorRight" />
+		<field name="expandableListPreferredChildPaddingLeft" />
+		<field name="expandableListPreferredItemIndicatorLeft" />
+		<field name="expandableListPreferredItemIndicatorRight" />
+		<field name="expandableListPreferredItemPaddingLeft" />
+		<field name="expandableListViewStyle" />
+		<field name="expandableListViewWhiteStyle" since="8" />
+		<field name="exported" />
+		<field name="extraTension" since="4" />
+		<field name="factor" />
+		<field name="fadeDuration" since="4" />
+		<field name="fadeEnabled" since="4" />
+		<field name="fadeOffset" since="4" />
+		<field name="fadeScrollbars" since="5" />
+		<field name="fadingEdge" />
+		<field name="fadingEdgeLength" />
+		<field name="fastScrollAlwaysVisible" since="11" />
+		<field name="fastScrollEnabled" since="3" />
+		<field name="fastScrollOverlayPosition" since="11" />
+		<field name="fastScrollPreviewBackgroundLeft" since="11" />
+		<field name="fastScrollPreviewBackgroundRight" since="11" />
+		<field name="fastScrollTextColor" since="11" />
+		<field name="fastScrollThumbDrawable" since="11" />
+		<field name="fastScrollTrackDrawable" since="11" />
+		<field name="fillAfter" />
+		<field name="fillBefore" />
+		<field name="fillEnabled" since="3" />
+		<field name="fillViewport" />
+		<field name="filter" />
+		<field name="filterTouchesWhenObscured" since="9" />
+		<field name="finishOnCloseSystemDialogs" since="5" />
+		<field name="finishOnTaskLaunch" />
+		<field name="firstDayOfWeek" since="11" />
+		<field name="fitsSystemWindows" />
+		<field name="flipInterval" />
+		<field name="focusable" />
+		<field name="focusableInTouchMode" />
+		<field name="focusedMonthDateColor" since="11" />
+		<field name="footerDividersEnabled" since="3" />
+		<field name="foreground" />
+		<field name="foregroundGravity" />
+		<field name="format" />
+		<field name="fragment" since="11" />
+		<field name="fragmentCloseEnterAnimation" since="11" />
+		<field name="fragmentCloseExitAnimation" since="11" />
+		<field name="fragmentFadeEnterAnimation" since="11" />
+		<field name="fragmentFadeExitAnimation" since="11" />
+		<field name="fragmentOpenEnterAnimation" since="11" />
+		<field name="fragmentOpenExitAnimation" since="11" />
+		<field name="freezesText" />
+		<field name="fromAlpha" />
+		<field name="fromDegrees" />
+		<field name="fromXDelta" />
+		<field name="fromXScale" />
+		<field name="fromYDelta" />
+		<field name="fromYScale" />
+		<field name="fullBright" />
+		<field name="fullDark" />
+		<field name="functionalTest" />
+		<field name="galleryItemBackground" />
+		<field name="galleryStyle" />
+		<field name="gestureColor" since="4" />
+		<field name="gestureStrokeAngleThreshold" since="4" />
+		<field name="gestureStrokeLengthThreshold" since="4" />
+		<field name="gestureStrokeSquarenessThreshold" since="4" />
+		<field name="gestureStrokeType" since="4" />
+		<field name="gestureStrokeWidth" since="4" />
+		<field name="glEsVersion" since="4" />
+		<field name="gradientRadius" />
+		<field name="grantUriPermissions" />
+		<field name="gravity" />
+		<field name="gridViewStyle" />
+		<field name="groupIndicator" />
+		<field name="hand_hour" />
+		<field name="hand_minute" />
+		<field name="handle" since="3" />
+		<field name="handleProfiling" />
+		<field name="hapticFeedbackEnabled" since="3" />
+		<field name="hardwareAccelerated" since="11" />
+		<field name="hasCode" />
+		<field name="headerBackground" />
+		<field name="headerDividersEnabled" since="3" />
+		<field name="height" />
+		<field name="hint" />
+		<field name="homeAsUpIndicator" since="11" />
+		<field name="homeLayout" since="11" />
+		<field name="horizontalDivider" />
+		<field name="horizontalGap" since="3" />
+		<field name="horizontalScrollViewStyle" since="11" />
+		<field name="horizontalSpacing" />
+		<field name="host" />
+		<field name="icon" />
+		<field name="iconPreview" since="3" />
+		<field name="iconifiedByDefault" since="11" />
+		<field name="id" />
+		<field name="ignoreGravity" />
+		<field name="imageButtonStyle" />
+		<field name="imageWellStyle" />
+		<field name="imeActionId" since="3" />
+		<field name="imeActionLabel" since="3" />
+		<field name="imeExtractEnterAnimation" since="3" />
+		<field name="imeExtractExitAnimation" since="3" />
+		<field name="imeFullscreenBackground" since="3" />
+		<field name="imeOptions" since="3" />
+		<field name="imeSubtypeExtraValue" since="11" />
+		<field name="imeSubtypeLocale" since="11" />
+		<field name="imeSubtypeMode" since="11" />
+		<field name="immersive" since="11" />
+		<field name="inAnimation" />
+		<field name="includeFontPadding" />
+		<field name="includeInGlobalSearch" since="4" />
+		<field name="indeterminate" />
+		<field name="indeterminateBehavior" />
+		<field name="indeterminateDrawable" />
+		<field name="indeterminateDuration" />
+		<field name="indeterminateOnly" />
+		<field name="indeterminateProgressStyle" since="11" />
+		<field name="indicatorLeft" />
+		<field name="indicatorRight" />
+		<field name="inflatedId" />
+		<field name="initOrder" />
+		<field name="initialLayout" since="3" />
+		<field name="innerRadius" since="3" />
+		<field name="innerRadiusRatio" />
+		<field name="inputMethod" />
+		<field name="inputType" since="3" />
+		<field name="insetBottom" />
+		<field name="insetLeft" />
+		<field name="insetRight" />
+		<field name="insetTop" />
+		<field name="installLocation" since="8" />
+		<field name="interpolator" />
+		<field name="isAlwaysSyncable" since="11" />
+		<field name="isAuxiliary" since="14" />
+		<field name="isDefault" since="3" />
+		<field name="isIndicator" />
+		<field name="isModifier" since="3" />
+		<field name="isRepeatable" since="3" />
+		<field name="isScrollContainer" since="3" />
+		<field name="isSticky" since="3" />
+		<field name="itemBackground" />
+		<field name="itemIconDisabledAlpha" />
+		<field name="itemPadding" since="11" />
+		<field name="itemTextAppearance" />
+		<field name="keepScreenOn" />
+		<field name="key" />
+		<field name="keyBackground" since="3" />
+		<field name="keyEdgeFlags" since="3" />
+		<field name="keyHeight" since="3" />
+		<field name="keyIcon" since="3" />
+		<field name="keyLabel" since="3" />
+		<field name="keyOutputText" since="3" />
+		<field name="keyPreviewHeight" since="3" />
+		<field name="keyPreviewLayout" since="3" />
+		<field name="keyPreviewOffset" since="3" />
+		<field name="keyTextColor" since="3" />
+		<field name="keyTextSize" since="3" />
+		<field name="keyWidth" since="3" />
+		<field name="keyboardMode" since="3" />
+		<field name="keycode" />
+		<field name="killAfterRestore" since="5" />
+		<field name="label" />
+		<field name="labelTextSize" since="3" />
+		<field name="largeHeap" since="11" />
+		<field name="largeScreens" since="4" />
+		<field name="largestWidthLimitDp" since="13" />
+		<field name="launchMode" />
+		<field name="layerType" since="11" />
+		<field name="layout" />
+		<field name="layoutAnimation" />
+		<field name="layout_above" />
+		<field name="layout_alignBaseline" />
+		<field name="layout_alignBottom" />
+		<field name="layout_alignLeft" />
+		<field name="layout_alignParentBottom" />
+		<field name="layout_alignParentLeft" />
+		<field name="layout_alignParentRight" />
+		<field name="layout_alignParentTop" />
+		<field name="layout_alignRight" />
+		<field name="layout_alignTop" />
+		<field name="layout_alignWithParentIfMissing" />
+		<field name="layout_below" />
+		<field name="layout_centerHorizontal" />
+		<field name="layout_centerInParent" />
+		<field name="layout_centerVertical" />
+		<field name="layout_column" />
+		<field name="layout_columnSpan" since="14" />
+		<field name="layout_gravity" />
+		<field name="layout_height" />
+		<field name="layout_margin" />
+		<field name="layout_marginBottom" />
+		<field name="layout_marginLeft" />
+		<field name="layout_marginRight" />
+		<field name="layout_marginTop" />
+		<field name="layout_row" since="14" />
+		<field name="layout_rowSpan" since="14" />
+		<field name="layout_scale" />
+		<field name="layout_span" />
+		<field name="layout_toLeftOf" />
+		<field name="layout_toRightOf" />
+		<field name="layout_weight" />
+		<field name="layout_width" />
+		<field name="layout_x" />
+		<field name="layout_y" />
+		<field name="left" />
+		<field name="lineSpacingExtra" />
+		<field name="lineSpacingMultiplier" />
+		<field name="lines" />
+		<field name="linksClickable" />
+		<field name="listChoiceBackgroundIndicator" since="11" />
+		<field name="listChoiceIndicatorMultiple" />
+		<field name="listChoiceIndicatorSingle" />
+		<field name="listDivider" />
+		<field name="listDividerAlertDialog" since="11" />
+		<field name="listPopupWindowStyle" since="11" />
+		<field name="listPreferredItemHeight" />
+		<field name="listPreferredItemHeightLarge" since="14" />
+		<field name="listPreferredItemHeightSmall" since="14" />
+		<field name="listPreferredItemPaddingLeft" since="14" />
+		<field name="listPreferredItemPaddingRight" since="14" />
+		<field name="listSelector" />
+		<field name="listSeparatorTextViewStyle" />
+		<field name="listViewStyle" />
+		<field name="listViewWhiteStyle" />
+		<field name="logo" since="11" />
+		<field name="longClickable" />
+		<field name="loopViews" since="11" />
+		<field name="manageSpaceActivity" />
+		<field name="mapViewStyle" />
+		<field name="marqueeRepeatLimit" since="2" />
+		<field name="max" />
+		<field name="maxDate" since="11" />
+		<field name="maxEms" />
+		<field name="maxHeight" />
+		<field name="maxItemsPerRow" />
+		<field name="maxLength" />
+		<field name="maxLevel" />
+		<field name="maxLines" />
+		<field name="maxRows" />
+		<field name="maxSdkVersion" since="4" />
+		<field name="maxWidth" />
+		<field name="measureAllChildren" />
+		<field name="measureWithLargestChild" since="11" />
+		<field name="menuCategory" />
+		<field name="mimeType" />
+		<field name="minDate" since="11" />
+		<field name="minEms" />
+		<field name="minHeight" />
+		<field name="minLevel" />
+		<field name="minLines" />
+		<field name="minResizeHeight" since="14" />
+		<field name="minResizeWidth" since="14" />
+		<field name="minSdkVersion" />
+		<field name="minWidth" />
+		<field name="mode" />
+		<field name="moreIcon" />
+		<field name="multiprocess" />
+		<field name="name" />
+		<field name="navigationMode" since="11" />
+		<field name="negativeButtonText" />
+		<field name="nextFocusDown" />
+		<field name="nextFocusForward" since="11" />
+		<field name="nextFocusLeft" />
+		<field name="nextFocusRight" />
+		<field name="nextFocusUp" />
+		<field name="noHistory" since="3" />
+		<field name="normalScreens" since="4" />
+		<field name="notificationTimeout" since="14" />
+		<field name="numColumns" />
+		<field name="numStars" />
+		<field name="numeric" />
+		<field name="numericShortcut" />
+		<field name="onClick" since="4" />
+		<field name="oneshot" />
+		<field name="opacity" since="11" />
+		<field name="order" />
+		<field name="orderInCategory" />
+		<field name="ordering" since="11" />
+		<field name="orderingFromXml" />
+		<field name="orientation" />
+		<field name="outAnimation" />
+		<field name="overScrollFooter" since="9" />
+		<field name="overScrollHeader" since="9" />
+		<field name="overScrollMode" since="9" />
+		<field name="overridesImplicitlyEnabledSubtype" since="14" />
+		<field name="packageNames" since="14" />
+		<field name="padding" />
+		<field name="paddingBottom" />
+		<field name="paddingLeft" />
+		<field name="paddingRight" />
+		<field name="paddingTop" />
+		<field name="panelBackground" />
+		<field name="panelColorBackground" />
+		<field name="panelColorForeground" />
+		<field name="panelFullBackground" />
+		<field name="panelTextAppearance" />
+		<field name="password" />
+		<field name="path" />
+		<field name="pathPattern" />
+		<field name="pathPrefix" />
+		<field name="permission" />
+		<field name="permissionGroup" />
+		<field name="persistent" />
+		<field name="persistentDrawingCache" />
+		<field name="phoneNumber" />
+		<field name="pivotX" />
+		<field name="pivotY" />
+		<field name="popupAnimationStyle" since="9" />
+		<field name="popupBackground" />
+		<field name="popupCharacters" since="3" />
+		<field name="popupKeyboard" since="3" />
+		<field name="popupLayout" since="3" />
+		<field name="popupMenuStyle" since="11" />
+		<field name="popupWindowStyle" />
+		<field name="port" />
+		<field name="positiveButtonText" />
+		<field name="preferenceCategoryStyle" />
+		<field name="preferenceInformationStyle" />
+		<field name="preferenceLayoutChild" />
+		<field name="preferenceScreenStyle" />
+		<field name="preferenceStyle" />
+		<field name="previewImage" since="11" />
+		<field name="priority" />
+		<field name="privateImeOptions" since="3" />
+		<field name="process" />
+		<field name="progress" />
+		<field name="progressBarPadding" since="11" />
+		<field name="progressBarStyle" />
+		<field name="progressBarStyleHorizontal" />
+		<field name="progressBarStyleInverse" since="4" />
+		<field name="progressBarStyleLarge" />
+		<field name="progressBarStyleLargeInverse" since="4" />
+		<field name="progressBarStyleSmall" />
+		<field name="progressBarStyleSmallInverse" since="4" />
+		<field name="progressBarStyleSmallTitle" />
+		<field name="progressDrawable" />
+		<field name="prompt" />
+		<field name="propertyName" since="11" />
+		<field name="protectionLevel" />
+		<field name="publicKey" since="14" />
+		<field name="queryActionMsg" />
+		<field name="queryAfterZeroResults" since="4" />
+		<field name="queryHint" since="11" />
+		<field name="quickContactBadgeStyleSmallWindowLarge" since="6" />
+		<field name="quickContactBadgeStyleSmallWindowMedium" since="6" />
+		<field name="quickContactBadgeStyleSmallWindowSmall" since="6" />
+		<field name="quickContactBadgeStyleWindowLarge" since="6" />
+		<field name="quickContactBadgeStyleWindowMedium" since="6" />
+		<field name="quickContactBadgeStyleWindowSmall" since="6" />
+		<field name="radioButtonStyle" />
+		<field name="radius" />
+		<field name="rating" />
+		<field name="ratingBarStyle" />
+		<field name="ratingBarStyleIndicator" />
+		<field name="ratingBarStyleSmall" />
+		<field name="readPermission" />
+		<field name="repeatCount" />
+		<field name="repeatMode" />
+		<field name="reqFiveWayNav" since="3" />
+		<field name="reqHardKeyboard" since="3" />
+		<field name="reqKeyboardType" since="3" />
+		<field name="reqNavigation" since="3" />
+		<field name="reqTouchScreen" since="3" />
+		<field name="required" since="5" />
+		<field name="requiresFadingEdge" since="14" />
+		<field name="requiresSmallestWidthDp" since="13" />
+		<field name="resizeMode" since="12" />
+		<field name="resizeable" since="4" />
+		<field name="resource" />
+		<field name="restoreAnyVersion" since="8" />
+		<field name="restoreNeedsApplication" since="5" />
+		<field name="right" />
+		<field name="ringtonePreferenceStyle" />
+		<field name="ringtoneType" />
+		<field name="rotation" since="11" />
+		<field name="rotationX" since="11" />
+		<field name="rotationY" since="11" />
+		<field name="rowCount" since="14" />
+		<field name="rowDelay" />
+		<field name="rowEdgeFlags" since="3" />
+		<field name="rowHeight" />
+		<field name="rowOrderPreserved" since="14" />
+		<field name="saveEnabled" />
+		<field name="scaleGravity" />
+		<field name="scaleHeight" />
+		<field name="scaleType" />
+		<field name="scaleWidth" />
+		<field name="scaleX" since="11" />
+		<field name="scaleY" since="11" />
+		<field name="scheme" />
+		<field name="screenDensity" since="9" />
+		<field name="screenOrientation" />
+		<field name="screenSize" since="9" />
+		<field name="scrollHorizontally" />
+		<field name="scrollViewStyle" />
+		<field name="scrollX" />
+		<field name="scrollY" />
+		<field name="scrollbarAlwaysDrawHorizontalTrack" />
+		<field name="scrollbarAlwaysDrawVerticalTrack" />
+		<field name="scrollbarDefaultDelayBeforeFade" since="5" />
+		<field name="scrollbarFadeDuration" since="5" />
+		<field name="scrollbarSize" />
+		<field name="scrollbarStyle" />
+		<field name="scrollbarThumbHorizontal" />
+		<field name="scrollbarThumbVertical" />
+		<field name="scrollbarTrackHorizontal" />
+		<field name="scrollbarTrackVertical" />
+		<field name="scrollbars" />
+		<field name="scrollingCache" />
+		<field name="searchButtonText" />
+		<field name="searchMode" />
+		<field name="searchSettingsDescription" since="4" />
+		<field name="searchSuggestAuthority" />
+		<field name="searchSuggestIntentAction" />
+		<field name="searchSuggestIntentData" />
+		<field name="searchSuggestPath" />
+		<field name="searchSuggestSelection" />
+		<field name="searchSuggestThreshold" since="4" />
+		<field name="secondaryProgress" />
+		<field name="seekBarStyle" />
+		<field name="segmentedButtonStyle" since="11" />
+		<field name="selectAllOnFocus" />
+		<field name="selectable" />
+		<field name="selectableItemBackground" since="11" />
+		<field name="selectedDateVerticalBar" since="11" />
+		<field name="selectedWeekBackgroundColor" since="11" />
+		<field name="settingsActivity" since="3" />
+		<field name="shadowColor" />
+		<field name="shadowDx" />
+		<field name="shadowDy" />
+		<field name="shadowRadius" />
+		<field name="shape" />
+		<field name="shareInterpolator" />
+		<field name="sharedUserId" />
+		<field name="sharedUserLabel" since="3" />
+		<field name="shouldDisableView" />
+		<field name="showAsAction" since="11" />
+		<field name="showDefault" />
+		<field name="showDividers" since="11" />
+		<field name="showSilent" />
+		<field name="showWeekNumber" since="11" />
+		<field name="shownWeekCount" since="11" />
+		<field name="shrinkColumns" />
+		<field name="singleLine" />
+		<field name="smallIcon" since="5" />
+		<field name="smallScreens" since="4" />
+		<field name="smoothScrollbar" since="3" />
+		<field name="soundEffectsEnabled" />
+		<field name="spacing" />
+		<field name="spinnerDropDownItemStyle" />
+		<field name="spinnerItemStyle" />
+		<field name="spinnerMode" since="11" />
+		<field name="spinnerStyle" />
+		<field name="spinnersShown" since="11" />
+		<field name="splitMotionEvents" since="11" />
+		<field name="src" />
+		<field name="stackFromBottom" />
+		<field name="starStyle" />
+		<field name="startColor" />
+		<field name="startOffset" />
+		<field name="startYear" />
+		<field name="stateNotNeeded" />
+		<field name="state_above_anchor" />
+		<field name="state_accelerated" since="11" />
+		<field name="state_activated" since="11" />
+		<field name="state_active" />
+		<field name="state_checkable" />
+		<field name="state_checked" />
+		<field name="state_drag_can_accept" since="14" />
+		<field name="state_drag_hovered" since="14" />
+		<field name="state_empty" />
+		<field name="state_enabled" />
+		<field name="state_expanded" />
+		<field name="state_first" />
+		<field name="state_focused" />
+		<field name="state_hovered" since="14" />
+		<field name="state_last" />
+		<field name="state_long_pressable" since="3" />
+		<field name="state_middle" />
+		<field name="state_multiline" since="11" />
+		<field name="state_pressed" />
+		<field name="state_selected" />
+		<field name="state_single" />
+		<field name="state_window_focused" />
+		<field name="staticWallpaperPreview" since="11" />
+		<field name="stepSize" />
+		<field name="stopWithTask" since="14" />
+		<field name="streamType" />
+		<field name="stretchColumns" />
+		<field name="stretchMode" />
+		<field name="subtitle" since="11" />
+		<field name="subtitleTextStyle" since="11" />
+		<field name="subtypeExtraValue" since="14" />
+		<field name="subtypeLocale" since="14" />
+		<field name="suggestActionMsg" />
+		<field name="suggestActionMsgColumn" />
+		<field name="summary" />
+		<field name="summaryColumn" since="5" />
+		<field name="summaryOff" />
+		<field name="summaryOn" />
+		<field name="supportsUploading" since="5" />
+		<field name="switchMinWidth" since="14" />
+		<field name="switchPadding" since="14" />
+		<field name="switchPreferenceStyle" since="14" />
+		<field name="switchTextAppearance" since="14" />
+		<field name="switchTextOff" since="14" />
+		<field name="switchTextOn" since="14" />
+		<field name="syncable" />
+		<field name="tabStripEnabled" since="8" />
+		<field name="tabStripLeft" since="8" />
+		<field name="tabStripRight" since="8" />
+		<field name="tabWidgetStyle" />
+		<field name="tag" />
+		<field name="targetActivity" />
+		<field name="targetClass" />
+		<field name="targetDescriptions" since="14" />
+		<field name="targetPackage" />
+		<field name="targetSdkVersion" since="4" />
+		<field name="taskAffinity" />
+		<field name="taskCloseEnterAnimation" />
+		<field name="taskCloseExitAnimation" />
+		<field name="taskOpenEnterAnimation" />
+		<field name="taskOpenExitAnimation" />
+		<field name="taskToBackEnterAnimation" />
+		<field name="taskToBackExitAnimation" />
+		<field name="taskToFrontEnterAnimation" />
+		<field name="taskToFrontExitAnimation" />
+		<field name="tension" since="4" />
+		<field name="testOnly" since="4" />
+		<field name="text" />
+		<field name="textAllCaps" since="14" />
+		<field name="textAppearance" />
+		<field name="textAppearanceButton" />
+		<field name="textAppearanceInverse" />
+		<field name="textAppearanceLarge" />
+		<field name="textAppearanceLargeInverse" />
+		<field name="textAppearanceLargePopupMenu" since="11" />
+		<field name="textAppearanceListItem" since="14" />
+		<field name="textAppearanceListItemSmall" since="14" />
+		<field name="textAppearanceMedium" />
+		<field name="textAppearanceMediumInverse" />
+		<field name="textAppearanceSearchResultSubtitle" since="5" />
+		<field name="textAppearanceSearchResultTitle" since="5" />
+		<field name="textAppearanceSmall" />
+		<field name="textAppearanceSmallInverse" />
+		<field name="textAppearanceSmallPopupMenu" since="11" />
+		<field name="textCheckMark" />
+		<field name="textCheckMarkInverse" />
+		<field name="textColor" />
+		<field name="textColorAlertDialogListItem" since="11" />
+		<field name="textColorHighlight" />
+		<field name="textColorHighlightInverse" since="11" />
+		<field name="textColorHint" />
+		<field name="textColorHintInverse" />
+		<field name="textColorLink" />
+		<field name="textColorLinkInverse" since="11" />
+		<field name="textColorPrimary" />
+		<field name="textColorPrimaryDisableOnly" />
+		<field name="textColorPrimaryInverse" />
+		<field name="textColorPrimaryInverseDisableOnly" since="4" />
+		<field name="textColorPrimaryInverseNoDisable" />
+		<field name="textColorPrimaryNoDisable" />
+		<field name="textColorSecondary" />
+		<field name="textColorSecondaryInverse" />
+		<field name="textColorSecondaryInverseNoDisable" />
+		<field name="textColorSecondaryNoDisable" />
+		<field name="textColorTertiary" />
+		<field name="textColorTertiaryInverse" />
+		<field name="textCursorDrawable" since="12" />
+		<field name="textEditNoPasteWindowLayout" since="11" />
+		<field name="textEditPasteWindowLayout" since="11" />
+		<field name="textEditSideNoPasteWindowLayout" since="11" />
+		<field name="textEditSidePasteWindowLayout" since="11" />
+		<field name="textEditSuggestionItemLayout" since="14" />
+		<field name="textFilterEnabled" />
+		<field name="textIsSelectable" since="11" />
+		<field name="textOff" />
+		<field name="textOn" />
+		<field name="textScaleX" />
+		<field name="textSelectHandle" since="9" />
+		<field name="textSelectHandleLeft" since="9" />
+		<field name="textSelectHandleRight" since="9" />
+		<field name="textSelectHandleWindowStyle" since="9" />
+		<field name="textSize" />
+		<field name="textStyle" />
+		<field name="textSuggestionsWindowStyle" since="14" />
+		<field name="textViewStyle" />
+		<field name="theme" />
+		<field name="thickness" since="3" />
+		<field name="thicknessRatio" />
+		<field name="thumb" />
+		<field name="thumbOffset" />
+		<field name="thumbTextPadding" since="14" />
+		<field name="thumbnail" since="5" />
+		<field name="tileMode" />
+		<field name="tint" />
+		<field name="title" />
+		<field name="titleCondensed" />
+		<field name="titleTextStyle" since="11" />
+		<field name="toAlpha" />
+		<field name="toDegrees" />
+		<field name="toXDelta" />
+		<field name="toXScale" />
+		<field name="toYDelta" />
+		<field name="toYScale" />
+		<field name="top" />
+		<field name="topBright" />
+		<field name="topDark" />
+		<field name="topLeftRadius" />
+		<field name="topOffset" since="3" />
+		<field name="topRightRadius" />
+		<field name="track" since="14" />
+		<field name="transcriptMode" />
+		<field name="transformPivotX" since="11" />
+		<field name="transformPivotY" since="11" />
+		<field name="translationX" since="11" />
+		<field name="translationY" since="11" />
+		<field name="type" />
+		<field name="typeface" />
+		<field name="uiOptions" since="14" />
+		<field name="uncertainGestureColor" since="4" />
+		<field name="unfocusedMonthDateColor" since="11" />
+		<field name="unselectedAlpha" />
+		<field name="updatePeriodMillis" since="3" />
+		<field name="useDefaultMargins" since="14" />
+		<field name="useIntrinsicSizeAsMinimum" since="11" />
+		<field name="useLevel" />
+		<field name="userVisible" since="5" />
+		<field name="value" />
+		<field name="valueFrom" since="11" />
+		<field name="valueTo" since="11" />
+		<field name="valueType" since="11" />
+		<field name="variablePadding" />
+		<field name="versionCode" />
+		<field name="versionName" />
+		<field name="verticalCorrection" since="3" />
+		<field name="verticalDivider" />
+		<field name="verticalGap" since="3" />
+		<field name="verticalScrollbarPosition" since="11" />
+		<field name="verticalSpacing" />
+		<field name="visibility" />
+		<field name="visible" />
+		<field name="vmSafeMode" since="8" />
+		<field name="voiceLanguage" since="3" />
+		<field name="voiceLanguageModel" since="3" />
+		<field name="voiceMaxResults" since="3" />
+		<field name="voicePromptText" since="3" />
+		<field name="voiceSearchMode" since="3" />
+		<field name="wallpaperCloseEnterAnimation" since="5" />
+		<field name="wallpaperCloseExitAnimation" since="5" />
+		<field name="wallpaperIntraCloseEnterAnimation" since="5" />
+		<field name="wallpaperIntraCloseExitAnimation" since="5" />
+		<field name="wallpaperIntraOpenEnterAnimation" since="5" />
+		<field name="wallpaperIntraOpenExitAnimation" since="5" />
+		<field name="wallpaperOpenEnterAnimation" since="5" />
+		<field name="wallpaperOpenExitAnimation" since="5" />
+		<field name="webTextViewStyle" since="8" />
+		<field name="webViewStyle" />
+		<field name="weekDayTextAppearance" since="11" />
+		<field name="weekNumberColor" since="11" />
+		<field name="weekSeparatorLineColor" since="11" />
+		<field name="weightSum" />
+		<field name="widgetLayout" />
+		<field name="width" />
+		<field name="windowActionBar" since="11" />
+		<field name="windowActionBarOverlay" since="11" />
+		<field name="windowActionModeOverlay" since="11" />
+		<field name="windowAnimationStyle" />
+		<field name="windowBackground" />
+		<field name="windowCloseOnTouchOutside" since="11" />
+		<field name="windowContentOverlay" />
+		<field name="windowDisablePreview" since="3" />
+		<field name="windowEnableSplitTouch" since="11" />
+		<field name="windowEnterAnimation" />
+		<field name="windowExitAnimation" />
+		<field name="windowFrame" />
+		<field name="windowFullscreen" />
+		<field name="windowHideAnimation" />
+		<field name="windowIsFloating" />
+		<field name="windowIsTranslucent" />
+		<field name="windowMinWidthMajor" since="11" />
+		<field name="windowMinWidthMinor" since="11" />
+		<field name="windowNoDisplay" since="3" />
+		<field name="windowNoTitle" />
+		<field name="windowShowAnimation" />
+		<field name="windowShowWallpaper" since="5" />
+		<field name="windowSoftInputMode" since="3" />
+		<field name="windowTitleBackgroundStyle" />
+		<field name="windowTitleSize" />
+		<field name="windowTitleStyle" />
+		<field name="writePermission" />
+		<field name="x" />
+		<field name="xlargeScreens" since="9" />
+		<field name="y" />
+		<field name="yesNoPreferenceStyle" />
+		<field name="zAdjustment" />
+	</class>
+	<class name="android/R$bool" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/R$color" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="background_dark" />
+		<field name="background_light" />
+		<field name="black" />
+		<field name="darker_gray" />
+		<field name="holo_blue_bright" since="14" />
+		<field name="holo_blue_dark" since="14" />
+		<field name="holo_blue_light" since="14" />
+		<field name="holo_green_dark" since="14" />
+		<field name="holo_green_light" since="14" />
+		<field name="holo_orange_dark" since="14" />
+		<field name="holo_orange_light" since="14" />
+		<field name="holo_purple" since="14" />
+		<field name="holo_red_dark" since="14" />
+		<field name="holo_red_light" since="14" />
+		<field name="primary_text_dark" />
+		<field name="primary_text_dark_nodisable" />
+		<field name="primary_text_light" />
+		<field name="primary_text_light_nodisable" />
+		<field name="secondary_text_dark" />
+		<field name="secondary_text_dark_nodisable" />
+		<field name="secondary_text_light" />
+		<field name="secondary_text_light_nodisable" />
+		<field name="tab_indicator_text" />
+		<field name="tertiary_text_dark" />
+		<field name="tertiary_text_light" />
+		<field name="transparent" />
+		<field name="white" />
+		<field name="widget_edittext_dark" />
+	</class>
+	<class name="android/R$dimen" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="app_icon_size" />
+		<field name="dialog_min_width_major" since="11" />
+		<field name="dialog_min_width_minor" since="11" />
+		<field name="notification_large_icon_height" since="11" />
+		<field name="notification_large_icon_width" since="11" />
+		<field name="thumbnail_height" />
+		<field name="thumbnail_width" />
+	</class>
+	<class name="android/R$drawable" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="alert_dark_frame" />
+		<field name="alert_light_frame" />
+		<field name="arrow_down_float" />
+		<field name="arrow_up_float" />
+		<field name="bottom_bar" />
+		<field name="btn_default" />
+		<field name="btn_default_small" />
+		<field name="btn_dialog" />
+		<field name="btn_dropdown" />
+		<field name="btn_minus" />
+		<field name="btn_plus" />
+		<field name="btn_radio" />
+		<field name="btn_star" />
+		<field name="btn_star_big_off" />
+		<field name="btn_star_big_on" />
+		<field name="button_onoff_indicator_off" />
+		<field name="button_onoff_indicator_on" />
+		<field name="checkbox_off_background" />
+		<field name="checkbox_on_background" />
+		<field name="dark_header" since="3" />
+		<field name="dialog_frame" />
+		<field name="dialog_holo_dark_frame" since="11" />
+		<field name="dialog_holo_light_frame" since="11" />
+		<field name="divider_horizontal_bright" />
+		<field name="divider_horizontal_dark" />
+		<field name="divider_horizontal_dim_dark" />
+		<field name="divider_horizontal_textfield" />
+		<field name="edit_text" />
+		<field name="editbox_background" />
+		<field name="editbox_background_normal" />
+		<field name="editbox_dropdown_dark_frame" />
+		<field name="editbox_dropdown_light_frame" />
+		<field name="gallery_thumb" />
+		<field name="ic_btn_speak_now" since="3" />
+		<field name="ic_delete" />
+		<field name="ic_dialog_alert" />
+		<field name="ic_dialog_dialer" />
+		<field name="ic_dialog_email" />
+		<field name="ic_dialog_info" />
+		<field name="ic_dialog_map" />
+		<field name="ic_input_add" />
+		<field name="ic_input_delete" />
+		<field name="ic_input_get" />
+		<field name="ic_lock_idle_alarm" />
+		<field name="ic_lock_idle_charging" />
+		<field name="ic_lock_idle_lock" />
+		<field name="ic_lock_idle_low_battery" />
+		<field name="ic_lock_lock" />
+		<field name="ic_lock_power_off" />
+		<field name="ic_lock_silent_mode" />
+		<field name="ic_lock_silent_mode_off" />
+		<field name="ic_media_ff" />
+		<field name="ic_media_next" />
+		<field name="ic_media_pause" />
+		<field name="ic_media_play" />
+		<field name="ic_media_previous" />
+		<field name="ic_media_rew" />
+		<field name="ic_menu_add" />
+		<field name="ic_menu_agenda" />
+		<field name="ic_menu_always_landscape_portrait" />
+		<field name="ic_menu_call" />
+		<field name="ic_menu_camera" />
+		<field name="ic_menu_close_clear_cancel" />
+		<field name="ic_menu_compass" />
+		<field name="ic_menu_crop" />
+		<field name="ic_menu_day" />
+		<field name="ic_menu_delete" />
+		<field name="ic_menu_directions" />
+		<field name="ic_menu_edit" />
+		<field name="ic_menu_gallery" />
+		<field name="ic_menu_help" />
+		<field name="ic_menu_info_details" />
+		<field name="ic_menu_manage" />
+		<field name="ic_menu_mapmode" />
+		<field name="ic_menu_month" />
+		<field name="ic_menu_more" />
+		<field name="ic_menu_my_calendar" />
+		<field name="ic_menu_mylocation" />
+		<field name="ic_menu_myplaces" />
+		<field name="ic_menu_preferences" />
+		<field name="ic_menu_recent_history" />
+		<field name="ic_menu_report_image" />
+		<field name="ic_menu_revert" />
+		<field name="ic_menu_rotate" />
+		<field name="ic_menu_save" />
+		<field name="ic_menu_search" />
+		<field name="ic_menu_send" />
+		<field name="ic_menu_set_as" />
+		<field name="ic_menu_share" />
+		<field name="ic_menu_slideshow" />
+		<field name="ic_menu_sort_alphabetically" />
+		<field name="ic_menu_sort_by_size" />
+		<field name="ic_menu_today" />
+		<field name="ic_menu_upload" />
+		<field name="ic_menu_upload_you_tube" />
+		<field name="ic_menu_view" />
+		<field name="ic_menu_week" />
+		<field name="ic_menu_zoom" />
+		<field name="ic_notification_clear_all" />
+		<field name="ic_notification_overlay" />
+		<field name="ic_partial_secure" />
+		<field name="ic_popup_disk_full" />
+		<field name="ic_popup_reminder" />
+		<field name="ic_popup_sync" />
+		<field name="ic_search_category_default" />
+		<field name="ic_secure" />
+		<field name="list_selector_background" />
+		<field name="menu_frame" />
+		<field name="menu_full_frame" />
+		<field name="menuitem_background" />
+		<field name="picture_frame" />
+		<field name="presence_audio_away" since="9" />
+		<field name="presence_audio_busy" since="9" />
+		<field name="presence_audio_online" since="9" />
+		<field name="presence_away" />
+		<field name="presence_busy" />
+		<field name="presence_invisible" />
+		<field name="presence_offline" />
+		<field name="presence_online" />
+		<field name="presence_video_away" since="9" />
+		<field name="presence_video_busy" since="9" />
+		<field name="presence_video_online" since="9" />
+		<field name="progress_horizontal" />
+		<field name="progress_indeterminate_horizontal" />
+		<field name="radiobutton_off_background" />
+		<field name="radiobutton_on_background" />
+		<field name="screen_background_dark" />
+		<field name="screen_background_dark_transparent" since="5" />
+		<field name="screen_background_light" />
+		<field name="screen_background_light_transparent" since="5" />
+		<field name="spinner_background" />
+		<field name="spinner_dropdown_background" />
+		<field name="star_big_off" />
+		<field name="star_big_on" />
+		<field name="star_off" />
+		<field name="star_on" />
+		<field name="stat_notify_call_mute" />
+		<field name="stat_notify_chat" />
+		<field name="stat_notify_error" />
+		<field name="stat_notify_missed_call" />
+		<field name="stat_notify_more" />
+		<field name="stat_notify_sdcard" />
+		<field name="stat_notify_sdcard_prepare" since="5" />
+		<field name="stat_notify_sdcard_usb" />
+		<field name="stat_notify_sync" />
+		<field name="stat_notify_sync_noanim" />
+		<field name="stat_notify_voicemail" />
+		<field name="stat_sys_data_bluetooth" />
+		<field name="stat_sys_download" />
+		<field name="stat_sys_download_done" />
+		<field name="stat_sys_headset" />
+		<field name="stat_sys_phone_call" />
+		<field name="stat_sys_phone_call_forward" />
+		<field name="stat_sys_phone_call_on_hold" />
+		<field name="stat_sys_speakerphone" />
+		<field name="stat_sys_upload" />
+		<field name="stat_sys_upload_done" />
+		<field name="stat_sys_vp_phone_call" since="4" />
+		<field name="stat_sys_vp_phone_call_on_hold" since="4" />
+		<field name="stat_sys_warning" />
+		<field name="status_bar_item_app_background" />
+		<field name="status_bar_item_background" />
+		<field name="sym_action_call" />
+		<field name="sym_action_chat" />
+		<field name="sym_action_email" />
+		<field name="sym_call_incoming" />
+		<field name="sym_call_missed" />
+		<field name="sym_call_outgoing" />
+		<field name="sym_contact_card" />
+		<field name="sym_def_app_icon" />
+		<field name="title_bar" />
+		<field name="title_bar_tall" since="3" />
+		<field name="toast_frame" />
+		<field name="zoom_plate" />
+	</class>
+	<class name="android/R$fraction" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/R$id" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="addToDictionary" since="3" />
+		<field name="background" />
+		<field name="button1" />
+		<field name="button2" />
+		<field name="button3" />
+		<field name="candidatesArea" since="3" />
+		<field name="checkbox" />
+		<field name="closeButton" since="3" />
+		<field name="content" />
+		<field name="copy" since="3" />
+		<field name="copyUrl" since="3" />
+		<field name="custom" since="8" />
+		<field name="cut" since="3" />
+		<field name="edit" />
+		<field name="empty" />
+		<field name="extractArea" since="3" />
+		<field name="hint" />
+		<field name="home" since="11" />
+		<field name="icon" />
+		<field name="icon1" />
+		<field name="icon2" />
+		<field name="input" />
+		<field name="inputArea" since="3" />
+		<field name="inputExtractEditText" since="3" />
+		<field name="keyboardView" since="3" />
+		<field name="list" />
+		<field name="message" />
+		<field name="paste" since="3" />
+		<field name="primary" />
+		<field name="progress" />
+		<field name="secondaryProgress" />
+		<field name="selectAll" since="3" />
+		<field name="selectTextMode" since="11" />
+		<field name="selectedIcon" />
+		<field name="startSelectingText" since="3" />
+		<field name="stopSelectingText" since="3" />
+		<field name="summary" />
+		<field name="switchInputMethod" since="3" />
+		<field name="tabcontent" />
+		<field name="tabhost" />
+		<field name="tabs" />
+		<field name="text1" />
+		<field name="text2" />
+		<field name="title" />
+		<field name="toggle" />
+		<field name="widget_frame" />
+	</class>
+	<class name="android/R$integer" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="config_longAnimTime" />
+		<field name="config_mediumAnimTime" />
+		<field name="config_shortAnimTime" />
+		<field name="status_bar_notification_info_maxnum" since="14" />
+	</class>
+	<class name="android/R$interpolator" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="accelerate_cubic" />
+		<field name="accelerate_decelerate" />
+		<field name="accelerate_quad" />
+		<field name="accelerate_quint" />
+		<field name="anticipate" />
+		<field name="anticipate_overshoot" />
+		<field name="bounce" />
+		<field name="cycle" />
+		<field name="decelerate_cubic" />
+		<field name="decelerate_quad" />
+		<field name="decelerate_quint" />
+		<field name="linear" />
+		<field name="overshoot" />
+	</class>
+	<class name="android/R$layout" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="activity_list_item" />
+		<field name="browser_link_context_header" />
+		<field name="expandable_list_content" />
+		<field name="list_content" since="11" />
+		<field name="preference_category" />
+		<field name="select_dialog_item" />
+		<field name="select_dialog_multichoice" />
+		<field name="select_dialog_singlechoice" />
+		<field name="simple_dropdown_item_1line" />
+		<field name="simple_expandable_list_item_1" />
+		<field name="simple_expandable_list_item_2" />
+		<field name="simple_gallery_item" />
+		<field name="simple_list_item_1" />
+		<field name="simple_list_item_2" />
+		<field name="simple_list_item_activated_1" since="11" />
+		<field name="simple_list_item_activated_2" since="11" />
+		<field name="simple_list_item_checked" />
+		<field name="simple_list_item_multiple_choice" />
+		<field name="simple_list_item_single_choice" />
+		<field name="simple_selectable_list_item" since="11" />
+		<field name="simple_spinner_dropdown_item" />
+		<field name="simple_spinner_item" />
+		<field name="test_list_item" />
+		<field name="two_line_list_item" />
+	</class>
+	<class name="android/R$menu" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/R$mipmap" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="sym_def_app_icon" />
+	</class>
+	<class name="android/R$plurals" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/R$raw" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/R$string" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="VideoView_error_button" />
+		<field name="VideoView_error_text_invalid_progressive_playback" since="3" />
+		<field name="VideoView_error_text_unknown" />
+		<field name="VideoView_error_title" />
+		<field name="cancel" />
+		<field name="copy" />
+		<field name="copyUrl" />
+		<field name="cut" />
+		<field name="defaultMsisdnAlphaTag" />
+		<field name="defaultVoiceMailAlphaTag" />
+		<field name="dialog_alert_title" since="3" />
+		<field name="emptyPhoneNumber" />
+		<field name="httpErrorBadUrl" />
+		<field name="httpErrorUnsupportedScheme" />
+		<field name="no" />
+		<field name="ok" />
+		<field name="paste" />
+		<field name="search_go" />
+		<field name="selectAll" />
+		<field name="selectTextMode" since="11" />
+		<field name="status_bar_notification_info_overflow" since="14" />
+		<field name="unknownName" />
+		<field name="untitled" />
+		<field name="yes" />
+	</class>
+	<class name="android/R$style" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="Animation" />
+		<field name="Animation_Activity" />
+		<field name="Animation_Dialog" />
+		<field name="Animation_InputMethod" since="5" />
+		<field name="Animation_Toast" />
+		<field name="Animation_Translucent" />
+		<field name="DeviceDefault_ButtonBar" since="14" />
+		<field name="DeviceDefault_ButtonBar_AlertDialog" since="14" />
+		<field name="DeviceDefault_Light_ButtonBar" since="14" />
+		<field name="DeviceDefault_Light_ButtonBar_AlertDialog" since="14" />
+		<field name="DeviceDefault_Light_SegmentedButton" since="14" />
+		<field name="DeviceDefault_SegmentedButton" since="14" />
+		<field name="Holo_ButtonBar" since="11" />
+		<field name="Holo_ButtonBar_AlertDialog" since="11" />
+		<field name="Holo_Light_ButtonBar" since="11" />
+		<field name="Holo_Light_ButtonBar_AlertDialog" since="11" />
+		<field name="Holo_Light_SegmentedButton" since="11" />
+		<field name="Holo_SegmentedButton" since="11" />
+		<field name="MediaButton" />
+		<field name="MediaButton_Ffwd" />
+		<field name="MediaButton_Next" />
+		<field name="MediaButton_Pause" />
+		<field name="MediaButton_Play" />
+		<field name="MediaButton_Previous" />
+		<field name="MediaButton_Rew" />
+		<field name="TextAppearance" />
+		<field name="TextAppearance_DeviceDefault" since="14" />
+		<field name="TextAppearance_DeviceDefault_DialogWindowTitle" since="14" />
+		<field name="TextAppearance_DeviceDefault_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Large" since="14" />
+		<field name="TextAppearance_DeviceDefault_Large_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Medium" since="14" />
+		<field name="TextAppearance_DeviceDefault_Medium_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_SearchResult_Subtitle" since="14" />
+		<field name="TextAppearance_DeviceDefault_SearchResult_Title" since="14" />
+		<field name="TextAppearance_DeviceDefault_Small" since="14" />
+		<field name="TextAppearance_DeviceDefault_Small_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Menu" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Subtitle_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Title" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionBar_Title_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Subtitle_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Title" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_ActionMode_Title_Inverse" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_Button" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_DropDownHint" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_DropDownItem" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_EditText" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_IconMenu_Item" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_PopupMenu" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_PopupMenu_Large" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_PopupMenu_Small" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_TabWidget" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_TextView" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_TextView_PopupMenu" since="14" />
+		<field name="TextAppearance_DeviceDefault_Widget_TextView_SpinnerItem" since="14" />
+		<field name="TextAppearance_DeviceDefault_WindowTitle" since="14" />
+		<field name="TextAppearance_DialogWindowTitle" />
+		<field name="TextAppearance_Holo" since="13" />
+		<field name="TextAppearance_Holo_DialogWindowTitle" since="13" />
+		<field name="TextAppearance_Holo_Inverse" since="13" />
+		<field name="TextAppearance_Holo_Large" since="13" />
+		<field name="TextAppearance_Holo_Large_Inverse" since="13" />
+		<field name="TextAppearance_Holo_Medium" since="13" />
+		<field name="TextAppearance_Holo_Medium_Inverse" since="13" />
+		<field name="TextAppearance_Holo_SearchResult_Subtitle" since="13" />
+		<field name="TextAppearance_Holo_SearchResult_Title" since="13" />
+		<field name="TextAppearance_Holo_Small" since="13" />
+		<field name="TextAppearance_Holo_Small_Inverse" since="13" />
+		<field name="TextAppearance_Holo_Widget" since="13" />
+		<field name="TextAppearance_Holo_Widget_ActionBar_Menu" since="14" />
+		<field name="TextAppearance_Holo_Widget_ActionBar_Subtitle" since="13" />
+		<field name="TextAppearance_Holo_Widget_ActionBar_Subtitle_Inverse" since="14" />
+		<field name="TextAppearance_Holo_Widget_ActionBar_Title" since="13" />
+		<field name="TextAppearance_Holo_Widget_ActionBar_Title_Inverse" since="14" />
+		<field name="TextAppearance_Holo_Widget_ActionMode_Subtitle" since="13" />
+		<field name="TextAppearance_Holo_Widget_ActionMode_Subtitle_Inverse" since="14" />
+		<field name="TextAppearance_Holo_Widget_ActionMode_Title" since="13" />
+		<field name="TextAppearance_Holo_Widget_ActionMode_Title_Inverse" since="14" />
+		<field name="TextAppearance_Holo_Widget_Button" since="13" />
+		<field name="TextAppearance_Holo_Widget_DropDownHint" since="13" />
+		<field name="TextAppearance_Holo_Widget_DropDownItem" since="13" />
+		<field name="TextAppearance_Holo_Widget_EditText" since="13" />
+		<field name="TextAppearance_Holo_Widget_IconMenu_Item" since="13" />
+		<field name="TextAppearance_Holo_Widget_PopupMenu" since="13" />
+		<field name="TextAppearance_Holo_Widget_PopupMenu_Large" since="13" />
+		<field name="TextAppearance_Holo_Widget_PopupMenu_Small" since="13" />
+		<field name="TextAppearance_Holo_Widget_TabWidget" since="13" />
+		<field name="TextAppearance_Holo_Widget_TextView" since="13" />
+		<field name="TextAppearance_Holo_Widget_TextView_PopupMenu" since="13" />
+		<field name="TextAppearance_Holo_Widget_TextView_SpinnerItem" since="13" />
+		<field name="TextAppearance_Holo_WindowTitle" since="13" />
+		<field name="TextAppearance_Inverse" />
+		<field name="TextAppearance_Large" />
+		<field name="TextAppearance_Large_Inverse" />
+		<field name="TextAppearance_Medium" />
+		<field name="TextAppearance_Medium_Inverse" />
+		<field name="TextAppearance_Small" />
+		<field name="TextAppearance_Small_Inverse" />
+		<field name="TextAppearance_StatusBar_EventContent" since="9" />
+		<field name="TextAppearance_StatusBar_EventContent_Title" since="9" />
+		<field name="TextAppearance_StatusBar_Icon" since="9" />
+		<field name="TextAppearance_StatusBar_Title" since="9" />
+		<field name="TextAppearance_SuggestionHighlight" since="14" />
+		<field name="TextAppearance_Theme" />
+		<field name="TextAppearance_Theme_Dialog" />
+		<field name="TextAppearance_Widget" />
+		<field name="TextAppearance_Widget_Button" />
+		<field name="TextAppearance_Widget_DropDownHint" />
+		<field name="TextAppearance_Widget_DropDownItem" />
+		<field name="TextAppearance_Widget_EditText" />
+		<field name="TextAppearance_Widget_IconMenu_Item" />
+		<field name="TextAppearance_Widget_PopupMenu_Large" since="11" />
+		<field name="TextAppearance_Widget_PopupMenu_Small" since="11" />
+		<field name="TextAppearance_Widget_TabWidget" />
+		<field name="TextAppearance_Widget_TextView" />
+		<field name="TextAppearance_Widget_TextView_PopupMenu" />
+		<field name="TextAppearance_Widget_TextView_SpinnerItem" />
+		<field name="TextAppearance_WindowTitle" />
+		<field name="Theme" />
+		<field name="Theme_Black" />
+		<field name="Theme_Black_NoTitleBar" />
+		<field name="Theme_Black_NoTitleBar_Fullscreen" />
+		<field name="Theme_DeviceDefault" since="14" />
+		<field name="Theme_DeviceDefault_Dialog" since="14" />
+		<field name="Theme_DeviceDefault_DialogWhenLarge" since="14" />
+		<field name="Theme_DeviceDefault_DialogWhenLarge_NoActionBar" since="14" />
+		<field name="Theme_DeviceDefault_Dialog_MinWidth" since="14" />
+		<field name="Theme_DeviceDefault_Dialog_NoActionBar" since="14" />
+		<field name="Theme_DeviceDefault_Dialog_NoActionBar_MinWidth" since="14" />
+		<field name="Theme_DeviceDefault_InputMethod" since="14" />
+		<field name="Theme_DeviceDefault_Light" since="14" />
+		<field name="Theme_DeviceDefault_Light_DarkActionBar" since="14" />
+		<field name="Theme_DeviceDefault_Light_Dialog" since="14" />
+		<field name="Theme_DeviceDefault_Light_DialogWhenLarge" since="14" />
+		<field name="Theme_DeviceDefault_Light_DialogWhenLarge_NoActionBar" since="14" />
+		<field name="Theme_DeviceDefault_Light_Dialog_MinWidth" since="14" />
+		<field name="Theme_DeviceDefault_Light_Dialog_NoActionBar" since="14" />
+		<field name="Theme_DeviceDefault_Light_Dialog_NoActionBar_MinWidth" since="14" />
+		<field name="Theme_DeviceDefault_Light_NoActionBar" since="14" />
+		<field name="Theme_DeviceDefault_Light_NoActionBar_Fullscreen" since="14" />
+		<field name="Theme_DeviceDefault_Light_Panel" since="14" />
+		<field name="Theme_DeviceDefault_NoActionBar" since="14" />
+		<field name="Theme_DeviceDefault_NoActionBar_Fullscreen" since="14" />
+		<field name="Theme_DeviceDefault_Panel" since="14" />
+		<field name="Theme_DeviceDefault_Wallpaper" since="14" />
+		<field name="Theme_DeviceDefault_Wallpaper_NoTitleBar" since="14" />
+		<field name="Theme_Dialog" />
+		<field name="Theme_Holo" since="11" />
+		<field name="Theme_Holo_Dialog" since="11" />
+		<field name="Theme_Holo_DialogWhenLarge" since="11" />
+		<field name="Theme_Holo_DialogWhenLarge_NoActionBar" since="11" />
+		<field name="Theme_Holo_Dialog_MinWidth" since="11" />
+		<field name="Theme_Holo_Dialog_NoActionBar" since="11" />
+		<field name="Theme_Holo_Dialog_NoActionBar_MinWidth" since="11" />
+		<field name="Theme_Holo_InputMethod" since="11" />
+		<field name="Theme_Holo_Light" since="11" />
+		<field name="Theme_Holo_Light_DarkActionBar" since="14" />
+		<field name="Theme_Holo_Light_Dialog" since="11" />
+		<field name="Theme_Holo_Light_DialogWhenLarge" since="11" />
+		<field name="Theme_Holo_Light_DialogWhenLarge_NoActionBar" since="11" />
+		<field name="Theme_Holo_Light_Dialog_MinWidth" since="11" />
+		<field name="Theme_Holo_Light_Dialog_NoActionBar" since="11" />
+		<field name="Theme_Holo_Light_Dialog_NoActionBar_MinWidth" since="11" />
+		<field name="Theme_Holo_Light_NoActionBar" since="13" />
+		<field name="Theme_Holo_Light_NoActionBar_Fullscreen" since="13" />
+		<field name="Theme_Holo_Light_Panel" since="11" />
+		<field name="Theme_Holo_NoActionBar" since="11" />
+		<field name="Theme_Holo_NoActionBar_Fullscreen" since="11" />
+		<field name="Theme_Holo_Panel" since="11" />
+		<field name="Theme_Holo_Wallpaper" since="11" />
+		<field name="Theme_Holo_Wallpaper_NoTitleBar" since="11" />
+		<field name="Theme_InputMethod" since="3" />
+		<field name="Theme_Light" />
+		<field name="Theme_Light_NoTitleBar" />
+		<field name="Theme_Light_NoTitleBar_Fullscreen" />
+		<field name="Theme_Light_Panel" since="3" />
+		<field name="Theme_Light_WallpaperSettings" since="5" />
+		<field name="Theme_NoDisplay" since="3" />
+		<field name="Theme_NoTitleBar" />
+		<field name="Theme_NoTitleBar_Fullscreen" />
+		<field name="Theme_NoTitleBar_OverlayActionModes" since="11" />
+		<field name="Theme_Panel" since="3" />
+		<field name="Theme_Translucent" />
+		<field name="Theme_Translucent_NoTitleBar" />
+		<field name="Theme_Translucent_NoTitleBar_Fullscreen" />
+		<field name="Theme_Wallpaper" since="5" />
+		<field name="Theme_WallpaperSettings" since="5" />
+		<field name="Theme_Wallpaper_NoTitleBar" since="5" />
+		<field name="Theme_Wallpaper_NoTitleBar_Fullscreen" since="5" />
+		<field name="Theme_WithActionBar" since="11" />
+		<field name="Widget" />
+		<field name="Widget_AbsListView" />
+		<field name="Widget_ActionBar" since="11" />
+		<field name="Widget_ActionBar_TabBar" since="13" />
+		<field name="Widget_ActionBar_TabText" since="13" />
+		<field name="Widget_ActionBar_TabView" since="13" />
+		<field name="Widget_ActionButton" since="11" />
+		<field name="Widget_ActionButton_CloseMode" since="11" />
+		<field name="Widget_ActionButton_Overflow" since="11" />
+		<field name="Widget_AutoCompleteTextView" />
+		<field name="Widget_Button" />
+		<field name="Widget_Button_Inset" />
+		<field name="Widget_Button_Small" />
+		<field name="Widget_Button_Toggle" />
+		<field name="Widget_CalendarView" since="11" />
+		<field name="Widget_CompoundButton" />
+		<field name="Widget_CompoundButton_CheckBox" />
+		<field name="Widget_CompoundButton_RadioButton" />
+		<field name="Widget_CompoundButton_Star" />
+		<field name="Widget_DatePicker" since="11" />
+		<field name="Widget_DeviceDefault" since="14" />
+		<field name="Widget_DeviceDefault_ActionBar" since="14" />
+		<field name="Widget_DeviceDefault_ActionBar_Solid" since="14" />
+		<field name="Widget_DeviceDefault_ActionBar_TabBar" since="14" />
+		<field name="Widget_DeviceDefault_ActionBar_TabText" since="14" />
+		<field name="Widget_DeviceDefault_ActionBar_TabView" since="14" />
+		<field name="Widget_DeviceDefault_ActionButton" since="14" />
+		<field name="Widget_DeviceDefault_ActionButton_CloseMode" since="14" />
+		<field name="Widget_DeviceDefault_ActionButton_Overflow" since="14" />
+		<field name="Widget_DeviceDefault_ActionButton_TextButton" since="14" />
+		<field name="Widget_DeviceDefault_ActionMode" since="14" />
+		<field name="Widget_DeviceDefault_AutoCompleteTextView" since="14" />
+		<field name="Widget_DeviceDefault_Button" since="14" />
+		<field name="Widget_DeviceDefault_Button_Borderless" since="14" />
+		<field name="Widget_DeviceDefault_Button_Borderless_Small" since="14" />
+		<field name="Widget_DeviceDefault_Button_Inset" since="14" />
+		<field name="Widget_DeviceDefault_Button_Small" since="14" />
+		<field name="Widget_DeviceDefault_Button_Toggle" since="14" />
+		<field name="Widget_DeviceDefault_CalendarView" since="14" />
+		<field name="Widget_DeviceDefault_CompoundButton_CheckBox" since="14" />
+		<field name="Widget_DeviceDefault_CompoundButton_RadioButton" since="14" />
+		<field name="Widget_DeviceDefault_CompoundButton_Star" since="14" />
+		<field name="Widget_DeviceDefault_DatePicker" since="14" />
+		<field name="Widget_DeviceDefault_DropDownItem" since="14" />
+		<field name="Widget_DeviceDefault_DropDownItem_Spinner" since="14" />
+		<field name="Widget_DeviceDefault_EditText" since="14" />
+		<field name="Widget_DeviceDefault_ExpandableListView" since="14" />
+		<field name="Widget_DeviceDefault_GridView" since="14" />
+		<field name="Widget_DeviceDefault_HorizontalScrollView" since="14" />
+		<field name="Widget_DeviceDefault_ImageButton" since="14" />
+		<field name="Widget_DeviceDefault_Light" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_Solid" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_Solid_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_TabBar" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_TabBar_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_TabText" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_TabText_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_TabView" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionBar_TabView_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionButton" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionButton_CloseMode" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionButton_Overflow" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionMode" since="14" />
+		<field name="Widget_DeviceDefault_Light_ActionMode_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_AutoCompleteTextView" since="14" />
+		<field name="Widget_DeviceDefault_Light_Button" since="14" />
+		<field name="Widget_DeviceDefault_Light_Button_Borderless_Small" since="14" />
+		<field name="Widget_DeviceDefault_Light_Button_Inset" since="14" />
+		<field name="Widget_DeviceDefault_Light_Button_Small" since="14" />
+		<field name="Widget_DeviceDefault_Light_Button_Toggle" since="14" />
+		<field name="Widget_DeviceDefault_Light_CalendarView" since="14" />
+		<field name="Widget_DeviceDefault_Light_CompoundButton_CheckBox" since="14" />
+		<field name="Widget_DeviceDefault_Light_CompoundButton_RadioButton" since="14" />
+		<field name="Widget_DeviceDefault_Light_CompoundButton_Star" since="14" />
+		<field name="Widget_DeviceDefault_Light_DropDownItem" since="14" />
+		<field name="Widget_DeviceDefault_Light_DropDownItem_Spinner" since="14" />
+		<field name="Widget_DeviceDefault_Light_EditText" since="14" />
+		<field name="Widget_DeviceDefault_Light_ExpandableListView" since="14" />
+		<field name="Widget_DeviceDefault_Light_GridView" since="14" />
+		<field name="Widget_DeviceDefault_Light_HorizontalScrollView" since="14" />
+		<field name="Widget_DeviceDefault_Light_ImageButton" since="14" />
+		<field name="Widget_DeviceDefault_Light_ListPopupWindow" since="14" />
+		<field name="Widget_DeviceDefault_Light_ListView" since="14" />
+		<field name="Widget_DeviceDefault_Light_ListView_DropDown" since="14" />
+		<field name="Widget_DeviceDefault_Light_PopupMenu" since="14" />
+		<field name="Widget_DeviceDefault_Light_PopupWindow" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Horizontal" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Large" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Large_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Small" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Small_Inverse" since="14" />
+		<field name="Widget_DeviceDefault_Light_ProgressBar_Small_Title" since="14" />
+		<field name="Widget_DeviceDefault_Light_RatingBar" since="14" />
+		<field name="Widget_DeviceDefault_Light_RatingBar_Indicator" since="14" />
+		<field name="Widget_DeviceDefault_Light_RatingBar_Small" since="14" />
+		<field name="Widget_DeviceDefault_Light_ScrollView" since="14" />
+		<field name="Widget_DeviceDefault_Light_SeekBar" since="14" />
+		<field name="Widget_DeviceDefault_Light_Spinner" since="14" />
+		<field name="Widget_DeviceDefault_Light_Tab" since="14" />
+		<field name="Widget_DeviceDefault_Light_TabWidget" since="14" />
+		<field name="Widget_DeviceDefault_Light_TextView" since="14" />
+		<field name="Widget_DeviceDefault_Light_TextView_SpinnerItem" since="14" />
+		<field name="Widget_DeviceDefault_Light_WebTextView" since="14" />
+		<field name="Widget_DeviceDefault_Light_WebView" since="14" />
+		<field name="Widget_DeviceDefault_ListPopupWindow" since="14" />
+		<field name="Widget_DeviceDefault_ListView" since="14" />
+		<field name="Widget_DeviceDefault_ListView_DropDown" since="14" />
+		<field name="Widget_DeviceDefault_PopupMenu" since="14" />
+		<field name="Widget_DeviceDefault_PopupWindow" since="14" />
+		<field name="Widget_DeviceDefault_ProgressBar" since="14" />
+		<field name="Widget_DeviceDefault_ProgressBar_Horizontal" since="14" />
+		<field name="Widget_DeviceDefault_ProgressBar_Large" since="14" />
+		<field name="Widget_DeviceDefault_ProgressBar_Small" since="14" />
+		<field name="Widget_DeviceDefault_ProgressBar_Small_Title" since="14" />
+		<field name="Widget_DeviceDefault_RatingBar" since="14" />
+		<field name="Widget_DeviceDefault_RatingBar_Indicator" since="14" />
+		<field name="Widget_DeviceDefault_RatingBar_Small" since="14" />
+		<field name="Widget_DeviceDefault_ScrollView" since="14" />
+		<field name="Widget_DeviceDefault_SeekBar" since="14" />
+		<field name="Widget_DeviceDefault_Spinner" since="14" />
+		<field name="Widget_DeviceDefault_Tab" since="14" />
+		<field name="Widget_DeviceDefault_TabWidget" since="14" />
+		<field name="Widget_DeviceDefault_TextView" since="14" />
+		<field name="Widget_DeviceDefault_TextView_SpinnerItem" since="14" />
+		<field name="Widget_DeviceDefault_WebTextView" since="14" />
+		<field name="Widget_DeviceDefault_WebView" since="14" />
+		<field name="Widget_DropDownItem" />
+		<field name="Widget_DropDownItem_Spinner" />
+		<field name="Widget_EditText" />
+		<field name="Widget_ExpandableListView" />
+		<field name="Widget_FragmentBreadCrumbs" since="11" />
+		<field name="Widget_Gallery" />
+		<field name="Widget_GridView" />
+		<field name="Widget_Holo" since="11" />
+		<field name="Widget_Holo_ActionBar" since="11" />
+		<field name="Widget_Holo_ActionBar_Solid" since="14" />
+		<field name="Widget_Holo_ActionBar_TabBar" since="13" />
+		<field name="Widget_Holo_ActionBar_TabText" since="13" />
+		<field name="Widget_Holo_ActionBar_TabView" since="13" />
+		<field name="Widget_Holo_ActionButton" since="11" />
+		<field name="Widget_Holo_ActionButton_CloseMode" since="11" />
+		<field name="Widget_Holo_ActionButton_Overflow" since="11" />
+		<field name="Widget_Holo_ActionButton_TextButton" since="11" />
+		<field name="Widget_Holo_ActionMode" since="11" />
+		<field name="Widget_Holo_AutoCompleteTextView" since="11" />
+		<field name="Widget_Holo_Button" since="11" />
+		<field name="Widget_Holo_Button_Borderless" since="11" />
+		<field name="Widget_Holo_Button_Borderless_Small" since="14" />
+		<field name="Widget_Holo_Button_Inset" since="11" />
+		<field name="Widget_Holo_Button_Small" since="11" />
+		<field name="Widget_Holo_Button_Toggle" since="11" />
+		<field name="Widget_Holo_CalendarView" since="11" />
+		<field name="Widget_Holo_CompoundButton_CheckBox" since="11" />
+		<field name="Widget_Holo_CompoundButton_RadioButton" since="11" />
+		<field name="Widget_Holo_CompoundButton_Star" since="11" />
+		<field name="Widget_Holo_DatePicker" since="11" />
+		<field name="Widget_Holo_DropDownItem" since="11" />
+		<field name="Widget_Holo_DropDownItem_Spinner" since="11" />
+		<field name="Widget_Holo_EditText" since="11" />
+		<field name="Widget_Holo_ExpandableListView" since="11" />
+		<field name="Widget_Holo_GridView" since="11" />
+		<field name="Widget_Holo_HorizontalScrollView" since="11" />
+		<field name="Widget_Holo_ImageButton" since="11" />
+		<field name="Widget_Holo_Light" since="11" />
+		<field name="Widget_Holo_Light_ActionBar" since="11" />
+		<field name="Widget_Holo_Light_ActionBar_Solid" since="14" />
+		<field name="Widget_Holo_Light_ActionBar_Solid_Inverse" since="14" />
+		<field name="Widget_Holo_Light_ActionBar_TabBar" since="13" />
+		<field name="Widget_Holo_Light_ActionBar_TabBar_Inverse" since="14" />
+		<field name="Widget_Holo_Light_ActionBar_TabText" since="13" />
+		<field name="Widget_Holo_Light_ActionBar_TabText_Inverse" since="14" />
+		<field name="Widget_Holo_Light_ActionBar_TabView" since="13" />
+		<field name="Widget_Holo_Light_ActionBar_TabView_Inverse" since="14" />
+		<field name="Widget_Holo_Light_ActionButton" since="11" />
+		<field name="Widget_Holo_Light_ActionButton_CloseMode" since="11" />
+		<field name="Widget_Holo_Light_ActionButton_Overflow" since="11" />
+		<field name="Widget_Holo_Light_ActionMode" since="11" />
+		<field name="Widget_Holo_Light_ActionMode_Inverse" since="14" />
+		<field name="Widget_Holo_Light_AutoCompleteTextView" since="11" />
+		<field name="Widget_Holo_Light_Button" since="11" />
+		<field name="Widget_Holo_Light_Button_Borderless_Small" since="14" />
+		<field name="Widget_Holo_Light_Button_Inset" since="11" />
+		<field name="Widget_Holo_Light_Button_Small" since="11" />
+		<field name="Widget_Holo_Light_Button_Toggle" since="11" />
+		<field name="Widget_Holo_Light_CalendarView" since="11" />
+		<field name="Widget_Holo_Light_CompoundButton_CheckBox" since="11" />
+		<field name="Widget_Holo_Light_CompoundButton_RadioButton" since="11" />
+		<field name="Widget_Holo_Light_CompoundButton_Star" since="11" />
+		<field name="Widget_Holo_Light_DropDownItem" since="11" />
+		<field name="Widget_Holo_Light_DropDownItem_Spinner" since="11" />
+		<field name="Widget_Holo_Light_EditText" since="11" />
+		<field name="Widget_Holo_Light_ExpandableListView" since="11" />
+		<field name="Widget_Holo_Light_GridView" since="11" />
+		<field name="Widget_Holo_Light_HorizontalScrollView" since="11" />
+		<field name="Widget_Holo_Light_ImageButton" since="11" />
+		<field name="Widget_Holo_Light_ListPopupWindow" since="11" />
+		<field name="Widget_Holo_Light_ListView" since="11" />
+		<field name="Widget_Holo_Light_ListView_DropDown" since="11" />
+		<field name="Widget_Holo_Light_PopupMenu" since="11" />
+		<field name="Widget_Holo_Light_PopupWindow" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Horizontal" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Inverse" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Large" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Large_Inverse" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Small" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Small_Inverse" since="11" />
+		<field name="Widget_Holo_Light_ProgressBar_Small_Title" since="11" />
+		<field name="Widget_Holo_Light_RatingBar" since="11" />
+		<field name="Widget_Holo_Light_RatingBar_Indicator" since="11" />
+		<field name="Widget_Holo_Light_RatingBar_Small" since="11" />
+		<field name="Widget_Holo_Light_ScrollView" since="11" />
+		<field name="Widget_Holo_Light_SeekBar" since="11" />
+		<field name="Widget_Holo_Light_Spinner" since="11" />
+		<field name="Widget_Holo_Light_Tab" since="11" />
+		<field name="Widget_Holo_Light_TabWidget" since="11" />
+		<field name="Widget_Holo_Light_TextView" since="11" />
+		<field name="Widget_Holo_Light_TextView_SpinnerItem" since="11" />
+		<field name="Widget_Holo_Light_WebTextView" since="11" />
+		<field name="Widget_Holo_Light_WebView" since="11" />
+		<field name="Widget_Holo_ListPopupWindow" since="11" />
+		<field name="Widget_Holo_ListView" since="11" />
+		<field name="Widget_Holo_ListView_DropDown" since="11" />
+		<field name="Widget_Holo_PopupMenu" since="11" />
+		<field name="Widget_Holo_PopupWindow" since="11" />
+		<field name="Widget_Holo_ProgressBar" since="11" />
+		<field name="Widget_Holo_ProgressBar_Horizontal" since="11" />
+		<field name="Widget_Holo_ProgressBar_Large" since="11" />
+		<field name="Widget_Holo_ProgressBar_Small" since="11" />
+		<field name="Widget_Holo_ProgressBar_Small_Title" since="11" />
+		<field name="Widget_Holo_RatingBar" since="11" />
+		<field name="Widget_Holo_RatingBar_Indicator" since="11" />
+		<field name="Widget_Holo_RatingBar_Small" since="11" />
+		<field name="Widget_Holo_ScrollView" since="11" />
+		<field name="Widget_Holo_SeekBar" since="11" />
+		<field name="Widget_Holo_Spinner" since="11" />
+		<field name="Widget_Holo_Tab" since="11" />
+		<field name="Widget_Holo_TabWidget" since="11" />
+		<field name="Widget_Holo_TextView" since="11" />
+		<field name="Widget_Holo_TextView_SpinnerItem" since="11" />
+		<field name="Widget_Holo_WebTextView" since="11" />
+		<field name="Widget_Holo_WebView" since="11" />
+		<field name="Widget_ImageButton" />
+		<field name="Widget_ImageWell" />
+		<field name="Widget_KeyboardView" since="3" />
+		<field name="Widget_ListPopupWindow" since="11" />
+		<field name="Widget_ListView" />
+		<field name="Widget_ListView_DropDown" />
+		<field name="Widget_ListView_Menu" />
+		<field name="Widget_ListView_White" />
+		<field name="Widget_PopupMenu" since="11" />
+		<field name="Widget_PopupWindow" />
+		<field name="Widget_ProgressBar" />
+		<field name="Widget_ProgressBar_Horizontal" />
+		<field name="Widget_ProgressBar_Inverse" since="4" />
+		<field name="Widget_ProgressBar_Large" />
+		<field name="Widget_ProgressBar_Large_Inverse" since="4" />
+		<field name="Widget_ProgressBar_Small" />
+		<field name="Widget_ProgressBar_Small_Inverse" since="4" />
+		<field name="Widget_RatingBar" />
+		<field name="Widget_ScrollView" />
+		<field name="Widget_SeekBar" />
+		<field name="Widget_Spinner" />
+		<field name="Widget_Spinner_DropDown" since="11" />
+		<field name="Widget_TabWidget" />
+		<field name="Widget_TextView" />
+		<field name="Widget_TextView_PopupMenu" />
+		<field name="Widget_TextView_SpinnerItem" />
+		<field name="Widget_WebView" />
+	</class>
+	<class name="android/R$xml" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/accessibilityservice/AccessibilityService" since="4">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onInterrupt()V" />
+		<method name="onServiceConnected()V" />
+		<method name="setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V" />
+		<field name="SERVICE_INTERFACE" />
+		<field name="SERVICE_META_DATA" since="14" />
+	</class>
+	<class name="android/accessibilityservice/AccessibilityServiceInfo" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="feedbackTypeToString(I)Ljava/lang/String;" since="14" />
+		<method name="flagToString(I)Ljava/lang/String;" since="14" />
+		<method name="getCanRetrieveWindowContent()Z" since="14" />
+		<method name="getDescription()Ljava/lang/String;" since="14" />
+		<method name="getId()Ljava/lang/String;" since="14" />
+		<method name="getResolveInfo()Landroid/content/pm/ResolveInfo;" since="14" />
+		<method name="getSettingsActivityName()Ljava/lang/String;" since="14" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="DEFAULT" />
+		<field name="FEEDBACK_ALL_MASK" since="14" />
+		<field name="FEEDBACK_AUDIBLE" />
+		<field name="FEEDBACK_GENERIC" />
+		<field name="FEEDBACK_HAPTIC" />
+		<field name="FEEDBACK_SPOKEN" />
+		<field name="FEEDBACK_VISUAL" />
+		<field name="eventTypes" />
+		<field name="feedbackType" />
+		<field name="flags" />
+		<field name="notificationTimeout" />
+		<field name="packageNames" />
+	</class>
+	<class name="android/accounts/AbstractAccountAuthenticator" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="addAccount(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="confirmCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="editProperties(Landroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;)Landroid/os/Bundle;" />
+		<method name="getAccountRemovalAllowed(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;)Landroid/os/Bundle;" />
+		<method name="getAuthToken(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="getAuthTokenLabel(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getIBinder()Landroid/os/IBinder;" />
+		<method name="hasFeatures(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)Landroid/os/Bundle;" />
+		<method name="updateCredentials(Landroid/accounts/AccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" />
+	</class>
+	<class name="android/accounts/Account" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="name" />
+		<field name="type" />
+	</class>
+	<class name="android/accounts/AccountAuthenticatorActivity" since="5">
+		<extends name="android/app/Activity" />
+		<method name="&lt;init>()V" />
+		<method name="setAccountAuthenticatorResult(Landroid/os/Bundle;)V" />
+	</class>
+	<class name="android/accounts/AccountAuthenticatorResponse" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="describeContents()I" />
+		<method name="onError(ILjava/lang/String;)V" />
+		<method name="onRequestContinued()V" />
+		<method name="onResult(Landroid/os/Bundle;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/accounts/AccountManager" since="5">
+		<extends name="java/lang/Object" />
+		<method name="addAccount(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z)V" />
+		<method name="blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String;" />
+		<method name="clearPassword(Landroid/accounts/Account;)V" />
+		<method name="confirmCredentials(Landroid/accounts/Account;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="editProperties(Ljava/lang/String;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="get(Landroid/content/Context;)Landroid/accounts/AccountManager;" />
+		<method name="getAccounts()[Landroid/accounts/Account;" />
+		<method name="getAccountsByType(Ljava/lang/String;)[Landroid/accounts/Account;" />
+		<method name="getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="14" />
+		<method name="getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="getAuthTokenByFeatures(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/app/Activity;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="getAuthenticatorTypes()[Landroid/accounts/AuthenticatorDescription;" />
+		<method name="getPassword(Landroid/accounts/Account;)Ljava/lang/String;" />
+		<method name="getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" since="8" />
+		<method name="invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="newChooseAccountIntent(Landroid/accounts/Account;Ljava/util/ArrayList;[Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;" since="14" />
+		<method name="peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="removeAccount(Landroid/accounts/Account;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<method name="removeOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;)V" />
+		<method name="setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setPassword(Landroid/accounts/Account;Ljava/lang/String;)V" />
+		<method name="setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="updateCredentials(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;" />
+		<field name="ACTION_AUTHENTICATOR_INTENT" />
+		<field name="AUTHENTICATOR_ATTRIBUTES_NAME" />
+		<field name="AUTHENTICATOR_META_DATA_NAME" />
+		<field name="ERROR_CODE_BAD_ARGUMENTS" />
+		<field name="ERROR_CODE_BAD_REQUEST" />
+		<field name="ERROR_CODE_CANCELED" />
+		<field name="ERROR_CODE_INVALID_RESPONSE" />
+		<field name="ERROR_CODE_NETWORK_ERROR" />
+		<field name="ERROR_CODE_REMOTE_EXCEPTION" />
+		<field name="ERROR_CODE_UNSUPPORTED_OPERATION" />
+		<field name="KEY_ACCOUNTS" />
+		<field name="KEY_ACCOUNT_AUTHENTICATOR_RESPONSE" />
+		<field name="KEY_ACCOUNT_MANAGER_RESPONSE" />
+		<field name="KEY_ACCOUNT_NAME" />
+		<field name="KEY_ACCOUNT_TYPE" />
+		<field name="KEY_ANDROID_PACKAGE_NAME" since="14" />
+		<field name="KEY_AUTHENTICATOR_TYPES" />
+		<field name="KEY_AUTHTOKEN" />
+		<field name="KEY_AUTH_FAILED_MESSAGE" />
+		<field name="KEY_AUTH_TOKEN_LABEL" />
+		<field name="KEY_BOOLEAN_RESULT" />
+		<field name="KEY_CALLER_PID" since="11" />
+		<field name="KEY_CALLER_UID" since="11" />
+		<field name="KEY_ERROR_CODE" />
+		<field name="KEY_ERROR_MESSAGE" />
+		<field name="KEY_INTENT" />
+		<field name="KEY_PASSWORD" />
+		<field name="KEY_USERDATA" />
+		<field name="LOGIN_ACCOUNTS_CHANGED_ACTION" />
+	</class>
+	<class name="android/accounts/AccountManagerCallback" since="5">
+		<method name="run(Landroid/accounts/AccountManagerFuture;)V" />
+	</class>
+	<class name="android/accounts/AccountManagerFuture" since="5">
+		<method name="cancel(Z)Z" />
+		<method name="getResult()LV;" />
+		<method name="getResult(JLjava/util/concurrent/TimeUnit;)LV;" />
+		<method name="isCancelled()Z" />
+		<method name="isDone()Z" />
+	</class>
+	<class name="android/accounts/AccountsException" since="5">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/accounts/AuthenticatorDescription" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;IIII)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;IIIIZ)V" since="11" />
+		<method name="describeContents()I" />
+		<method name="newKey(Ljava/lang/String;)Landroid/accounts/AuthenticatorDescription;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="accountPreferencesId" />
+		<field name="customTokens" since="11" />
+		<field name="iconId" />
+		<field name="labelId" />
+		<field name="packageName" />
+		<field name="smallIconId" />
+		<field name="type" />
+	</class>
+	<class name="android/accounts/AuthenticatorException" since="5">
+		<extends name="android/accounts/AccountsException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/accounts/NetworkErrorException" since="5">
+		<extends name="android/accounts/AccountsException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/accounts/OnAccountsUpdateListener" since="5">
+		<method name="onAccountsUpdated([Landroid/accounts/Account;)V" />
+	</class>
+	<class name="android/accounts/OperationCanceledException" since="5">
+		<extends name="android/accounts/AccountsException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/animation/Animator" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="addListener(Landroid/animation/Animator$AnimatorListener;)V" />
+		<method name="cancel()V" />
+		<method name="clone()Landroid/animation/Animator;" />
+		<method name="end()V" />
+		<method name="getDuration()J" />
+		<method name="getListeners()Ljava/util/ArrayList;" />
+		<method name="getStartDelay()J" />
+		<method name="isRunning()Z" />
+		<method name="isStarted()Z" since="14" />
+		<method name="removeAllListeners()V" />
+		<method name="removeListener(Landroid/animation/Animator$AnimatorListener;)V" />
+		<method name="setDuration(J)Landroid/animation/Animator;" />
+		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
+		<method name="setStartDelay(J)V" />
+		<method name="setTarget(Ljava/lang/Object;)V" />
+		<method name="setupEndValues()V" />
+		<method name="setupStartValues()V" />
+		<method name="start()V" />
+	</class>
+	<class name="android/animation/Animator$AnimatorListener" since="11">
+		<method name="onAnimationCancel(Landroid/animation/Animator;)V" />
+		<method name="onAnimationEnd(Landroid/animation/Animator;)V" />
+		<method name="onAnimationRepeat(Landroid/animation/Animator;)V" />
+		<method name="onAnimationStart(Landroid/animation/Animator;)V" />
+	</class>
+	<class name="android/animation/AnimatorInflater" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;" />
+	</class>
+	<class name="android/animation/AnimatorListenerAdapter" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/animation/Animator$AnimatorListener" />
+		<method name="&lt;init>()V" />
+		<method name="onAnimationCancel(Landroid/animation/Animator;)V" />
+		<method name="onAnimationEnd(Landroid/animation/Animator;)V" />
+		<method name="onAnimationRepeat(Landroid/animation/Animator;)V" />
+		<method name="onAnimationStart(Landroid/animation/Animator;)V" />
+	</class>
+	<class name="android/animation/AnimatorSet" since="11">
+		<extends name="android/animation/Animator" />
+		<method name="&lt;init>()V" />
+		<method name="getChildAnimations()Ljava/util/ArrayList;" />
+		<method name="getDuration()J" />
+		<method name="getStartDelay()J" />
+		<method name="isRunning()Z" />
+		<method name="play(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
+		<method name="playSequentially(Ljava/util/List;)V" />
+		<method name="playSequentially([Landroid/animation/Animator;)V" />
+		<method name="playTogether(Ljava/util/Collection;)V" />
+		<method name="playTogether([Landroid/animation/Animator;)V" />
+		<method name="setDuration(J)Landroid/animation/AnimatorSet;" />
+		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
+		<method name="setStartDelay(J)V" />
+	</class>
+	<class name="android/animation/AnimatorSet$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="after(J)Landroid/animation/AnimatorSet$Builder;" />
+		<method name="after(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
+		<method name="before(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
+		<method name="with(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;" />
+	</class>
+	<class name="android/animation/ArgbEvaluator" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/animation/TypeEvaluator" />
+		<method name="&lt;init>()V" />
+		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
+	</class>
+	<class name="android/animation/FloatEvaluator" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/animation/TypeEvaluator" />
+		<method name="&lt;init>()V" />
+		<method name="evaluate(FLjava/lang/Number;Ljava/lang/Number;)Ljava/lang/Float;" since="14" />
+		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
+	</class>
+	<class name="android/animation/IntEvaluator" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/animation/TypeEvaluator" />
+		<method name="&lt;init>()V" />
+		<method name="evaluate(FLjava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;" since="14" />
+		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
+	</class>
+	<class name="android/animation/Keyframe" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Landroid/animation/Keyframe;" />
+		<method name="getFraction()F" />
+		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" />
+		<method name="getType()Ljava/lang/Class;" />
+		<method name="getValue()Ljava/lang/Object;" />
+		<method name="hasValue()Z" />
+		<method name="ofFloat(F)Landroid/animation/Keyframe;" />
+		<method name="ofFloat(FF)Landroid/animation/Keyframe;" />
+		<method name="ofInt(F)Landroid/animation/Keyframe;" />
+		<method name="ofInt(FI)Landroid/animation/Keyframe;" />
+		<method name="ofObject(F)Landroid/animation/Keyframe;" />
+		<method name="ofObject(FLjava/lang/Object;)Landroid/animation/Keyframe;" />
+		<method name="setFraction(F)V" />
+		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
+		<method name="setValue(Ljava/lang/Object;)V" />
+	</class>
+	<class name="android/animation/LayoutTransition" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
+		<method name="addTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V" />
+		<method name="getAnimator(I)Landroid/animation/Animator;" />
+		<method name="getDuration(I)J" />
+		<method name="getInterpolator(I)Landroid/animation/TimeInterpolator;" />
+		<method name="getStagger(I)J" />
+		<method name="getStartDelay(I)J" />
+		<method name="getTransitionListeners()Ljava/util/List;" />
+		<method name="hideChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
+		<method name="isChangingLayout()Z" />
+		<method name="isRunning()Z" />
+		<method name="removeChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
+		<method name="removeTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V" />
+		<method name="setAnimateParentHierarchy(Z)V" since="14" />
+		<method name="setAnimator(ILandroid/animation/Animator;)V" />
+		<method name="setDuration(IJ)V" />
+		<method name="setDuration(J)V" />
+		<method name="setInterpolator(ILandroid/animation/TimeInterpolator;)V" />
+		<method name="setStagger(IJ)V" />
+		<method name="setStartDelay(IJ)V" />
+		<method name="showChild(Landroid/view/ViewGroup;Landroid/view/View;)V" />
+		<field name="APPEARING" />
+		<field name="CHANGE_APPEARING" />
+		<field name="CHANGE_DISAPPEARING" />
+		<field name="DISAPPEARING" />
+	</class>
+	<class name="android/animation/LayoutTransition$TransitionListener" since="11">
+		<method name="endTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V" />
+		<method name="startTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V" />
+	</class>
+	<class name="android/animation/ObjectAnimator" since="11">
+		<extends name="android/animation/ValueAnimator" />
+		<method name="&lt;init>()V" />
+		<method name="getPropertyName()Ljava/lang/String;" />
+		<method name="getTarget()Ljava/lang/Object;" />
+		<method name="ofFloat(LT;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;" since="14" />
+		<method name="ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;" />
+		<method name="ofInt(LT;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;" since="14" />
+		<method name="ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;" />
+		<method name="ofObject(LT;Landroid/util/Property;Landroid/animation/TypeEvaluator;[LV;)Landroid/animation/ObjectAnimator;" since="14" />
+		<method name="ofObject(Ljava/lang/Object;Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ObjectAnimator;" />
+		<method name="ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator;" />
+		<method name="setProperty(Landroid/util/Property;)V" since="14" />
+		<method name="setPropertyName(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/animation/PropertyValuesHolder" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Landroid/animation/PropertyValuesHolder;" />
+		<method name="getPropertyName()Ljava/lang/String;" />
+		<method name="ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder;" since="14" />
+		<method name="ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder;" />
+		<method name="ofInt(Landroid/util/Property;[I)Landroid/animation/PropertyValuesHolder;" since="14" />
+		<method name="ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;" />
+		<method name="ofKeyframe(Landroid/util/Property;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" since="14" />
+		<method name="ofKeyframe(Ljava/lang/String;[Landroid/animation/Keyframe;)Landroid/animation/PropertyValuesHolder;" />
+		<method name="ofObject(Landroid/util/Property;Landroid/animation/TypeEvaluator;[LV;)Landroid/animation/PropertyValuesHolder;" since="14" />
+		<method name="ofObject(Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;" />
+		<method name="setEvaluator(Landroid/animation/TypeEvaluator;)V" />
+		<method name="setFloatValues([F)V" />
+		<method name="setIntValues([I)V" />
+		<method name="setKeyframes([Landroid/animation/Keyframe;)V" />
+		<method name="setObjectValues([Ljava/lang/Object;)V" />
+		<method name="setProperty(Landroid/util/Property;)V" since="14" />
+		<method name="setPropertyName(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/animation/TimeInterpolator" since="11">
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/animation/TypeEvaluator" since="11">
+		<method name="evaluate(FLT;LT;)LT;" since="14" />
+		<method name="evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
+	</class>
+	<class name="android/animation/ValueAnimator" since="11">
+		<extends name="android/animation/Animator" />
+		<method name="&lt;init>()V" />
+		<method name="addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V" />
+		<method name="getAnimatedFraction()F" since="12" />
+		<method name="getAnimatedValue()Ljava/lang/Object;" />
+		<method name="getAnimatedValue(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getCurrentPlayTime()J" />
+		<method name="getDuration()J" />
+		<method name="getFrameDelay()J" />
+		<method name="getInterpolator()Landroid/animation/TimeInterpolator;" />
+		<method name="getRepeatCount()I" />
+		<method name="getRepeatMode()I" />
+		<method name="getStartDelay()J" />
+		<method name="getValues()[Landroid/animation/PropertyValuesHolder;" />
+		<method name="isRunning()Z" />
+		<method name="ofFloat([F)Landroid/animation/ValueAnimator;" />
+		<method name="ofInt([I)Landroid/animation/ValueAnimator;" />
+		<method name="ofObject(Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ValueAnimator;" />
+		<method name="ofPropertyValuesHolder([Landroid/animation/PropertyValuesHolder;)Landroid/animation/ValueAnimator;" />
+		<method name="removeAllUpdateListeners()V" />
+		<method name="removeUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V" />
+		<method name="reverse()V" />
+		<method name="setCurrentPlayTime(J)V" />
+		<method name="setDuration(J)Landroid/animation/ValueAnimator;" />
+		<method name="setEvaluator(Landroid/animation/TypeEvaluator;)V" />
+		<method name="setFloatValues([F)V" />
+		<method name="setFrameDelay(J)V" />
+		<method name="setIntValues([I)V" />
+		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)V" />
+		<method name="setObjectValues([Ljava/lang/Object;)V" />
+		<method name="setRepeatCount(I)V" />
+		<method name="setRepeatMode(I)V" />
+		<method name="setStartDelay(J)V" />
+		<method name="setValues([Landroid/animation/PropertyValuesHolder;)V" />
+		<field name="INFINITE" />
+		<field name="RESTART" />
+		<field name="REVERSE" />
+	</class>
+	<class name="android/animation/ValueAnimator$AnimatorUpdateListener" since="11">
+		<method name="onAnimationUpdate(Landroid/animation/ValueAnimator;)V" />
+	</class>
+	<class name="android/app/ActionBar" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V" />
+		<method name="addTab(Landroid/app/ActionBar$Tab;)V" />
+		<method name="addTab(Landroid/app/ActionBar$Tab;I)V" />
+		<method name="addTab(Landroid/app/ActionBar$Tab;IZ)V" />
+		<method name="addTab(Landroid/app/ActionBar$Tab;Z)V" />
+		<method name="getCustomView()Landroid/view/View;" />
+		<method name="getDisplayOptions()I" />
+		<method name="getHeight()I" />
+		<method name="getNavigationItemCount()I" />
+		<method name="getNavigationMode()I" />
+		<method name="getSelectedNavigationIndex()I" />
+		<method name="getSelectedTab()Landroid/app/ActionBar$Tab;" />
+		<method name="getSubtitle()Ljava/lang/CharSequence;" />
+		<method name="getTabAt(I)Landroid/app/ActionBar$Tab;" />
+		<method name="getTabCount()I" />
+		<method name="getThemedContext()Landroid/content/Context;" since="14" />
+		<method name="getTitle()Ljava/lang/CharSequence;" />
+		<method name="hide()V" />
+		<method name="isShowing()Z" />
+		<method name="newTab()Landroid/app/ActionBar$Tab;" />
+		<method name="removeAllTabs()V" />
+		<method name="removeOnMenuVisibilityListener(Landroid/app/ActionBar$OnMenuVisibilityListener;)V" />
+		<method name="removeTab(Landroid/app/ActionBar$Tab;)V" />
+		<method name="removeTabAt(I)V" />
+		<method name="selectTab(Landroid/app/ActionBar$Tab;)V" />
+		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setCustomView(I)V" />
+		<method name="setCustomView(Landroid/view/View;)V" />
+		<method name="setCustomView(Landroid/view/View;Landroid/app/ActionBar$LayoutParams;)V" />
+		<method name="setDisplayHomeAsUpEnabled(Z)V" />
+		<method name="setDisplayOptions(I)V" />
+		<method name="setDisplayOptions(II)V" />
+		<method name="setDisplayShowCustomEnabled(Z)V" />
+		<method name="setDisplayShowHomeEnabled(Z)V" />
+		<method name="setDisplayShowTitleEnabled(Z)V" />
+		<method name="setDisplayUseLogoEnabled(Z)V" />
+		<method name="setHomeButtonEnabled(Z)V" since="14" />
+		<method name="setIcon(I)V" since="14" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)V" since="14" />
+		<method name="setListNavigationCallbacks(Landroid/widget/SpinnerAdapter;Landroid/app/ActionBar$OnNavigationListener;)V" />
+		<method name="setLogo(I)V" since="14" />
+		<method name="setLogo(Landroid/graphics/drawable/Drawable;)V" since="14" />
+		<method name="setNavigationMode(I)V" />
+		<method name="setSelectedNavigationItem(I)V" />
+		<method name="setSplitBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="14" />
+		<method name="setStackedBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="14" />
+		<method name="setSubtitle(I)V" />
+		<method name="setSubtitle(Ljava/lang/CharSequence;)V" />
+		<method name="setTitle(I)V" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+		<method name="show()V" />
+		<field name="DISPLAY_HOME_AS_UP" />
+		<field name="DISPLAY_SHOW_CUSTOM" />
+		<field name="DISPLAY_SHOW_HOME" />
+		<field name="DISPLAY_SHOW_TITLE" />
+		<field name="DISPLAY_USE_LOGO" />
+		<field name="NAVIGATION_MODE_LIST" />
+		<field name="NAVIGATION_MODE_STANDARD" />
+		<field name="NAVIGATION_MODE_TABS" />
+	</class>
+	<class name="android/app/ActionBar$LayoutParams" since="11">
+		<extends name="android/view/ViewGroup$MarginLayoutParams" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(Landroid/app/ActionBar$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<field name="gravity" />
+	</class>
+	<class name="android/app/ActionBar$OnMenuVisibilityListener" since="11">
+		<method name="onMenuVisibilityChanged(Z)V" />
+	</class>
+	<class name="android/app/ActionBar$OnNavigationListener" since="11">
+		<method name="onNavigationItemSelected(IJ)Z" />
+	</class>
+	<class name="android/app/ActionBar$Tab" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getContentDescription()Ljava/lang/CharSequence;" since="14" />
+		<method name="getCustomView()Landroid/view/View;" />
+		<method name="getIcon()Landroid/graphics/drawable/Drawable;" />
+		<method name="getPosition()I" />
+		<method name="getTag()Ljava/lang/Object;" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="select()V" />
+		<method name="setContentDescription(I)Landroid/app/ActionBar$Tab;" since="14" />
+		<method name="setContentDescription(Ljava/lang/CharSequence;)Landroid/app/ActionBar$Tab;" since="14" />
+		<method name="setCustomView(I)Landroid/app/ActionBar$Tab;" />
+		<method name="setCustomView(Landroid/view/View;)Landroid/app/ActionBar$Tab;" />
+		<method name="setIcon(I)Landroid/app/ActionBar$Tab;" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/app/ActionBar$Tab;" />
+		<method name="setTabListener(Landroid/app/ActionBar$TabListener;)Landroid/app/ActionBar$Tab;" />
+		<method name="setTag(Ljava/lang/Object;)Landroid/app/ActionBar$Tab;" />
+		<method name="setText(I)Landroid/app/ActionBar$Tab;" />
+		<method name="setText(Ljava/lang/CharSequence;)Landroid/app/ActionBar$Tab;" />
+		<field name="INVALID_POSITION" />
+	</class>
+	<class name="android/app/ActionBar$TabListener" since="11">
+		<method name="onTabReselected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V" />
+		<method name="onTabSelected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V" />
+		<method name="onTabUnselected(Landroid/app/ActionBar$Tab;Landroid/app/FragmentTransaction;)V" />
+	</class>
+	<class name="android/app/Activity" since="1">
+		<extends name="android/view/ContextThemeWrapper" />
+		<implements name="android/content/ComponentCallbacks" />
+		<implements name="android/view/KeyEvent$Callback" />
+		<implements name="android/view/LayoutInflater$Factory" />
+		<implements name="android/view/View$OnCreateContextMenuListener" />
+		<implements name="android/view/Window$Callback" />
+		<implements name="android/view/LayoutInflater$Factory2" since="11" />
+		<implements name="android/content/ComponentCallbacks2" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="closeContextMenu()V" since="3" />
+		<method name="closeOptionsMenu()V" />
+		<method name="createPendingResult(ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
+		<method name="dismissDialog(I)V" />
+		<method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11" />
+		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4" />
+		<method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="11" />
+		<method name="findViewById(I)Landroid/view/View;" />
+		<method name="finish()V" />
+		<method name="finishActivity(I)V" />
+		<method name="finishActivityFromChild(Landroid/app/Activity;I)V" />
+		<method name="finishFromChild(Landroid/app/Activity;)V" />
+		<method name="getActionBar()Landroid/app/ActionBar;" since="11" />
+		<method name="getApplication()Landroid/app/Application;" />
+		<method name="getCallingActivity()Landroid/content/ComponentName;" />
+		<method name="getCallingPackage()Ljava/lang/String;" />
+		<method name="getChangingConfigurations()I" />
+		<method name="getComponentName()Landroid/content/ComponentName;" />
+		<method name="getCurrentFocus()Landroid/view/View;" />
+		<method name="getFragmentManager()Landroid/app/FragmentManager;" since="11" />
+		<method name="getInstanceCount()J" />
+		<method name="getIntent()Landroid/content/Intent;" />
+		<method name="getLastNonConfigurationInstance()Ljava/lang/Object;" />
+		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
+		<method name="getLoaderManager()Landroid/app/LoaderManager;" since="11" />
+		<method name="getLocalClassName()Ljava/lang/String;" />
+		<method name="getMenuInflater()Landroid/view/MenuInflater;" />
+		<method name="getParent()Landroid/app/Activity;" />
+		<method name="getPreferences(I)Landroid/content/SharedPreferences;" />
+		<method name="getRequestedOrientation()I" />
+		<method name="getTaskId()I" />
+		<method name="getTitle()Ljava/lang/CharSequence;" />
+		<method name="getTitleColor()I" />
+		<method name="getVolumeControlStream()I" />
+		<method name="getWindow()Landroid/view/Window;" />
+		<method name="getWindowManager()Landroid/view/WindowManager;" />
+		<method name="hasWindowFocus()Z" since="3" />
+		<method name="invalidateOptionsMenu()V" since="11" />
+		<method name="isChangingConfigurations()Z" since="11" />
+		<method name="isChild()Z" />
+		<method name="isFinishing()Z" />
+		<method name="isTaskRoot()Z" />
+		<method name="managedQuery(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="moveTaskToBack(Z)Z" />
+		<method name="onActionModeFinished(Landroid/view/ActionMode;)V" since="11" />
+		<method name="onActionModeStarted(Landroid/view/ActionMode;)V" since="11" />
+		<method name="onActivityResult(IILandroid/content/Intent;)V" />
+		<method name="onAttachFragment(Landroid/app/Fragment;)V" since="11" />
+		<method name="onAttachedToWindow()V" since="5" />
+		<method name="onBackPressed()V" since="5" />
+		<method name="onChildTitleChanged(Landroid/app/Activity;Ljava/lang/CharSequence;)V" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="onContentChanged()V" />
+		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
+		<method name="onContextMenuClosed(Landroid/view/Menu;)V" />
+		<method name="onCreate(Landroid/os/Bundle;)V" />
+		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
+		<method name="onCreateDescription()Ljava/lang/CharSequence;" />
+		<method name="onCreateDialog(I)Landroid/app/Dialog;" />
+		<method name="onCreateDialog(ILandroid/os/Bundle;)Landroid/app/Dialog;" since="8" />
+		<method name="onCreateOptionsMenu(Landroid/view/Menu;)Z" />
+		<method name="onCreatePanelMenu(ILandroid/view/Menu;)Z" />
+		<method name="onCreatePanelView(I)Landroid/view/View;" />
+		<method name="onCreateThumbnail(Landroid/graphics/Bitmap;Landroid/graphics/Canvas;)Z" />
+		<method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" since="11" />
+		<method name="onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" />
+		<method name="onDestroy()V" />
+		<method name="onDetachedFromWindow()V" since="5" />
+		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
+		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11" />
+		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
+		<method name="onLowMemory()V" />
+		<method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z" />
+		<method name="onMenuOpened(ILandroid/view/Menu;)Z" />
+		<method name="onNewIntent(Landroid/content/Intent;)V" />
+		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
+		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
+		<method name="onPanelClosed(ILandroid/view/Menu;)V" />
+		<method name="onPause()V" />
+		<method name="onPostCreate(Landroid/os/Bundle;)V" />
+		<method name="onPostResume()V" />
+		<method name="onPrepareDialog(ILandroid/app/Dialog;)V" />
+		<method name="onPrepareDialog(ILandroid/app/Dialog;Landroid/os/Bundle;)V" since="8" />
+		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z" />
+		<method name="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z" />
+		<method name="onRestart()V" />
+		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
+		<method name="onResume()V" />
+		<method name="onRetainNonConfigurationInstance()Ljava/lang/Object;" />
+		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
+		<method name="onSearchRequested()Z" />
+		<method name="onStart()V" />
+		<method name="onStop()V" />
+		<method name="onTitleChanged(Ljava/lang/CharSequence;I)V" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onTrimMemory(I)V" since="14" />
+		<method name="onUserInteraction()V" since="3" />
+		<method name="onUserLeaveHint()V" since="3" />
+		<method name="onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V" />
+		<method name="onWindowFocusChanged(Z)V" />
+		<method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+		<method name="openContextMenu(Landroid/view/View;)V" />
+		<method name="openOptionsMenu()V" />
+		<method name="overridePendingTransition(II)V" since="5" />
+		<method name="recreate()V" since="11" />
+		<method name="registerForContextMenu(Landroid/view/View;)V" />
+		<method name="removeDialog(I)V" />
+		<method name="requestWindowFeature(I)Z" />
+		<method name="runOnUiThread(Ljava/lang/Runnable;)V" />
+		<method name="setContentView(I)V" />
+		<method name="setContentView(Landroid/view/View;)V" />
+		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="setDefaultKeyMode(I)V" />
+		<method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V" />
+		<method name="setFeatureDrawableAlpha(II)V" />
+		<method name="setFeatureDrawableResource(II)V" />
+		<method name="setFeatureDrawableUri(ILandroid/net/Uri;)V" />
+		<method name="setFinishOnTouchOutside(Z)V" since="11" />
+		<method name="setIntent(Landroid/content/Intent;)V" />
+		<method name="setPersistent(Z)V" />
+		<method name="setProgress(I)V" />
+		<method name="setProgressBarIndeterminate(Z)V" />
+		<method name="setProgressBarIndeterminateVisibility(Z)V" />
+		<method name="setProgressBarVisibility(Z)V" />
+		<method name="setRequestedOrientation(I)V" />
+		<method name="setResult(I)V" />
+		<method name="setResult(ILandroid/content/Intent;)V" />
+		<method name="setSecondaryProgress(I)V" />
+		<method name="setTitle(I)V" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+		<method name="setTitleColor(I)V" />
+		<method name="setVisible(Z)V" since="3" />
+		<method name="setVolumeControlStream(I)V" />
+		<method name="showDialog(I)V" />
+		<method name="showDialog(ILandroid/os/Bundle;)Z" since="8" />
+		<method name="startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+		<method name="startActivityForResult(Landroid/content/Intent;I)V" />
+		<method name="startActivityFromChild(Landroid/app/Activity;Landroid/content/Intent;I)V" />
+		<method name="startActivityFromFragment(Landroid/app/Fragment;Landroid/content/Intent;I)V" since="11" />
+		<method name="startActivityIfNeeded(Landroid/content/Intent;I)Z" />
+		<method name="startIntentSenderForResult(Landroid/content/IntentSender;ILandroid/content/Intent;III)V" since="5" />
+		<method name="startIntentSenderFromChild(Landroid/app/Activity;Landroid/content/IntentSender;ILandroid/content/Intent;III)V" since="5" />
+		<method name="startManagingCursor(Landroid/database/Cursor;)V" />
+		<method name="startNextMatchingActivity(Landroid/content/Intent;)Z" />
+		<method name="startSearch(Ljava/lang/String;ZLandroid/os/Bundle;Z)V" />
+		<method name="stopManagingCursor(Landroid/database/Cursor;)V" />
+		<method name="takeKeyEvents(Z)V" />
+		<method name="triggerSearch(Ljava/lang/String;Landroid/os/Bundle;)V" since="5" />
+		<method name="unregisterForContextMenu(Landroid/view/View;)V" />
+		<field name="DEFAULT_KEYS_DIALER" />
+		<field name="DEFAULT_KEYS_DISABLE" />
+		<field name="DEFAULT_KEYS_SEARCH_GLOBAL" />
+		<field name="DEFAULT_KEYS_SEARCH_LOCAL" />
+		<field name="DEFAULT_KEYS_SHORTCUT" />
+		<field name="FOCUSED_STATE_SET" />
+		<field name="RESULT_CANCELED" />
+		<field name="RESULT_FIRST_USER" />
+		<field name="RESULT_OK" />
+	</class>
+	<class name="android/app/ActivityGroup" since="1">
+		<extends name="android/app/Activity" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="getCurrentActivity()Landroid/app/Activity;" />
+		<method name="getLocalActivityManager()Landroid/app/LocalActivityManager;" />
+	</class>
+	<class name="android/app/ActivityManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;" since="3" />
+		<method name="getLargeMemoryClass()I" since="11" />
+		<method name="getLauncherLargeIconDensity()I" since="11" />
+		<method name="getLauncherLargeIconSize()I" since="11" />
+		<method name="getMemoryClass()I" since="5" />
+		<method name="getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V" />
+		<method name="getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;" since="5" />
+		<method name="getProcessesInErrorState()Ljava/util/List;" />
+		<method name="getRecentTasks(II)Ljava/util/List;" />
+		<method name="getRunningAppProcesses()Ljava/util/List;" since="3" />
+		<method name="getRunningServiceControlPanel(Landroid/content/ComponentName;)Landroid/app/PendingIntent;" since="5" />
+		<method name="getRunningServices(I)Ljava/util/List;" />
+		<method name="getRunningTasks(I)Ljava/util/List;" />
+		<method name="isRunningInTestHarness()Z" since="11" />
+		<method name="isUserAMonkey()Z" since="8" />
+		<method name="killBackgroundProcesses(Ljava/lang/String;)V" since="8" />
+		<method name="moveTaskToFront(II)V" since="11" />
+		<method name="restartPackage(Ljava/lang/String;)V" since="3" />
+		<field name="MOVE_TASK_NO_USER_ACTION" since="12" />
+		<field name="MOVE_TASK_WITH_HOME" since="11" />
+		<field name="RECENT_IGNORE_UNAVAILABLE" since="11" />
+		<field name="RECENT_WITH_EXCLUDED" />
+	</class>
+	<class name="android/app/ActivityManager$MemoryInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="availMem" />
+		<field name="lowMemory" />
+		<field name="threshold" />
+	</class>
+	<class name="android/app/ActivityManager$ProcessErrorStateInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CRASHED" />
+		<field name="CREATOR" />
+		<field name="NOT_RESPONDING" />
+		<field name="NO_ERROR" />
+		<field name="condition" />
+		<field name="crashData" />
+		<field name="longMsg" />
+		<field name="pid" />
+		<field name="processName" />
+		<field name="shortMsg" />
+		<field name="stackTrace" since="8" />
+		<field name="tag" />
+		<field name="uid" />
+	</class>
+	<class name="android/app/ActivityManager$RecentTaskInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="baseIntent" />
+		<field name="description" since="11" />
+		<field name="id" />
+		<field name="origActivity" />
+		<field name="persistentId" since="12" />
+	</class>
+	<class name="android/app/ActivityManager$RunningAppProcessInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;I[Ljava/lang/String;)V" />
+		<method name="describeContents()I" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="IMPORTANCE_BACKGROUND" />
+		<field name="IMPORTANCE_EMPTY" />
+		<field name="IMPORTANCE_FOREGROUND" />
+		<field name="IMPORTANCE_PERCEPTIBLE" since="9" />
+		<field name="IMPORTANCE_SERVICE" />
+		<field name="IMPORTANCE_VISIBLE" />
+		<field name="REASON_PROVIDER_IN_USE" since="5" />
+		<field name="REASON_SERVICE_IN_USE" since="5" />
+		<field name="REASON_UNKNOWN" since="5" />
+		<field name="importance" />
+		<field name="importanceReasonCode" since="5" />
+		<field name="importanceReasonComponent" since="5" />
+		<field name="importanceReasonPid" since="5" />
+		<field name="lru" />
+		<field name="pid" />
+		<field name="pkgList" />
+		<field name="processName" />
+		<field name="uid" since="5" />
+	</class>
+	<class name="android/app/ActivityManager$RunningServiceInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="FLAG_FOREGROUND" since="5" />
+		<field name="FLAG_PERSISTENT_PROCESS" since="5" />
+		<field name="FLAG_STARTED" since="5" />
+		<field name="FLAG_SYSTEM_PROCESS" since="5" />
+		<field name="activeSince" />
+		<field name="clientCount" />
+		<field name="clientLabel" since="5" />
+		<field name="clientPackage" since="5" />
+		<field name="crashCount" />
+		<field name="flags" since="5" />
+		<field name="foreground" />
+		<field name="lastActivityTime" />
+		<field name="pid" />
+		<field name="process" />
+		<field name="restarting" />
+		<field name="service" />
+		<field name="started" />
+		<field name="uid" since="5" />
+	</class>
+	<class name="android/app/ActivityManager$RunningTaskInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="baseActivity" />
+		<field name="description" />
+		<field name="id" />
+		<field name="numActivities" />
+		<field name="numRunning" />
+		<field name="thumbnail" />
+		<field name="topActivity" />
+	</class>
+	<class name="android/app/AlarmManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="cancel(Landroid/app/PendingIntent;)V" />
+		<method name="set(IJLandroid/app/PendingIntent;)V" />
+		<method name="setInexactRepeating(IJJLandroid/app/PendingIntent;)V" since="3" />
+		<method name="setRepeating(IJJLandroid/app/PendingIntent;)V" />
+		<method name="setTime(J)V" since="8" />
+		<method name="setTimeZone(Ljava/lang/String;)V" />
+		<field name="ELAPSED_REALTIME" />
+		<field name="ELAPSED_REALTIME_WAKEUP" />
+		<field name="INTERVAL_DAY" since="3" />
+		<field name="INTERVAL_FIFTEEN_MINUTES" since="3" />
+		<field name="INTERVAL_HALF_DAY" since="3" />
+		<field name="INTERVAL_HALF_HOUR" since="3" />
+		<field name="INTERVAL_HOUR" since="3" />
+		<field name="RTC" />
+		<field name="RTC_WAKEUP" />
+	</class>
+	<class name="android/app/AlertDialog" since="1">
+		<extends name="android/app/Dialog" />
+		<implements name="android/content/DialogInterface" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;ZLandroid/content/DialogInterface$OnCancelListener;)V" />
+		<method name="getButton(I)Landroid/widget/Button;" since="3" />
+		<method name="getListView()Landroid/widget/ListView;" since="3" />
+		<method name="setButton(ILjava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" since="3" />
+		<method name="setButton(ILjava/lang/CharSequence;Landroid/os/Message;)V" since="3" />
+		<method name="setButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" />
+		<method name="setButton(Ljava/lang/CharSequence;Landroid/os/Message;)V" />
+		<method name="setButton2(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" />
+		<method name="setButton2(Ljava/lang/CharSequence;Landroid/os/Message;)V" />
+		<method name="setButton3(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)V" />
+		<method name="setButton3(Ljava/lang/CharSequence;Landroid/os/Message;)V" />
+		<method name="setCustomTitle(Landroid/view/View;)V" />
+		<method name="setIcon(I)V" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setIconAttribute(I)V" since="11" />
+		<method name="setInverseBackgroundForced(Z)V" />
+		<method name="setMessage(Ljava/lang/CharSequence;)V" />
+		<method name="setView(Landroid/view/View;)V" />
+		<method name="setView(Landroid/view/View;IIII)V" since="3" />
+		<field name="THEME_DEVICE_DEFAULT_DARK" since="14" />
+		<field name="THEME_DEVICE_DEFAULT_LIGHT" since="14" />
+		<field name="THEME_HOLO_DARK" since="11" />
+		<field name="THEME_HOLO_LIGHT" since="11" />
+		<field name="THEME_TRADITIONAL" since="11" />
+	</class>
+	<class name="android/app/AlertDialog$Builder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" since="11" />
+		<method name="create()Landroid/app/AlertDialog;" />
+		<method name="getContext()Landroid/content/Context;" since="11" />
+		<method name="setAdapter(Landroid/widget/ListAdapter;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setCancelable(Z)Landroid/app/AlertDialog$Builder;" />
+		<method name="setCursor(Landroid/database/Cursor;Landroid/content/DialogInterface$OnClickListener;Ljava/lang/String;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setCustomTitle(Landroid/view/View;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setIcon(I)Landroid/app/AlertDialog$Builder;" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setIconAttribute(I)Landroid/app/AlertDialog$Builder;" since="11" />
+		<method name="setInverseBackgroundForced(Z)Landroid/app/AlertDialog$Builder;" />
+		<method name="setItems(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setItems([Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setMessage(I)Landroid/app/AlertDialog$Builder;" />
+		<method name="setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setMultiChoiceItems(I[ZLandroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setMultiChoiceItems(Landroid/database/Cursor;Ljava/lang/String;Ljava/lang/String;Landroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setMultiChoiceItems([Ljava/lang/CharSequence;[ZLandroid/content/DialogInterface$OnMultiChoiceClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setNegativeButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setNeutralButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setNeutralButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setOnKeyListener(Landroid/content/DialogInterface$OnKeyListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setPositiveButton(ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setSingleChoiceItems(IILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setSingleChoiceItems(Landroid/database/Cursor;ILjava/lang/String;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setSingleChoiceItems(Landroid/widget/ListAdapter;ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setSingleChoiceItems([Ljava/lang/CharSequence;ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setTitle(I)Landroid/app/AlertDialog$Builder;" />
+		<method name="setTitle(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;" />
+		<method name="setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder;" />
+		<method name="show()Landroid/app/AlertDialog;" />
+	</class>
+	<class name="android/app/AliasActivity" since="1">
+		<extends name="android/app/Activity" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/app/Application" since="1">
+		<extends name="android/content/ContextWrapper" />
+		<implements name="android/content/ComponentCallbacks" />
+		<implements name="android/content/ComponentCallbacks2" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="onCreate()V" />
+		<method name="onLowMemory()V" />
+		<method name="onTerminate()V" />
+		<method name="onTrimMemory(I)V" since="14" />
+		<method name="registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14" />
+		<method name="unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V" since="14" />
+	</class>
+	<class name="android/app/Application$ActivityLifecycleCallbacks" since="14">
+		<method name="onActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V" />
+		<method name="onActivityDestroyed(Landroid/app/Activity;)V" />
+		<method name="onActivityPaused(Landroid/app/Activity;)V" />
+		<method name="onActivityResumed(Landroid/app/Activity;)V" />
+		<method name="onActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V" />
+		<method name="onActivityStarted(Landroid/app/Activity;)V" />
+		<method name="onActivityStopped(Landroid/app/Activity;)V" />
+	</class>
+	<class name="android/app/ApplicationErrorReport" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getErrorReportReceiver(Landroid/content/Context;Ljava/lang/String;I)Landroid/content/ComponentName;" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="TYPE_ANR" />
+		<field name="TYPE_BATTERY" />
+		<field name="TYPE_CRASH" />
+		<field name="TYPE_NONE" />
+		<field name="TYPE_RUNNING_SERVICE" />
+		<field name="anrInfo" />
+		<field name="batteryInfo" />
+		<field name="crashInfo" />
+		<field name="installerPackageName" />
+		<field name="packageName" />
+		<field name="processName" />
+		<field name="runningServiceInfo" />
+		<field name="systemApp" />
+		<field name="time" />
+		<field name="type" />
+	</class>
+	<class name="android/app/ApplicationErrorReport$AnrInfo" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="activity" />
+		<field name="cause" />
+		<field name="info" />
+	</class>
+	<class name="android/app/ApplicationErrorReport$BatteryInfo" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="checkinDetails" />
+		<field name="durationMicros" />
+		<field name="usageDetails" />
+		<field name="usagePercent" />
+	</class>
+	<class name="android/app/ApplicationErrorReport$CrashInfo" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="exceptionClassName" />
+		<field name="exceptionMessage" />
+		<field name="stackTrace" />
+		<field name="throwClassName" />
+		<field name="throwFileName" />
+		<field name="throwLineNumber" />
+		<field name="throwMethodName" />
+	</class>
+	<class name="android/app/ApplicationErrorReport$RunningServiceInfo" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="durationMillis" />
+		<field name="serviceDetails" />
+	</class>
+	<class name="android/app/DatePickerDialog" since="1">
+		<extends name="android/app/AlertDialog" />
+		<implements name="android/widget/DatePicker$OnDateChangedListener" />
+		<implements name="android/content/DialogInterface$OnClickListener" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/app/DatePickerDialog$OnDateSetListener;III)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/app/DatePickerDialog$OnDateSetListener;III)V" />
+		<method name="getDatePicker()Landroid/widget/DatePicker;" since="11" />
+		<method name="onClick(Landroid/content/DialogInterface;I)V" />
+		<method name="onDateChanged(Landroid/widget/DatePicker;III)V" />
+		<method name="updateDate(III)V" />
+	</class>
+	<class name="android/app/DatePickerDialog$OnDateSetListener" since="1">
+		<method name="onDateSet(Landroid/widget/DatePicker;III)V" />
+	</class>
+	<class name="android/app/Dialog" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/content/DialogInterface" />
+		<implements name="android/view/KeyEvent$Callback" />
+		<implements name="android/view/View$OnCreateContextMenuListener" />
+		<implements name="android/view/Window$Callback" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;ZLandroid/content/DialogInterface$OnCancelListener;)V" />
+		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="cancel()V" />
+		<method name="closeOptionsMenu()V" />
+		<method name="dismiss()V" />
+		<method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11" />
+		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4" />
+		<method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="findViewById(I)Landroid/view/View;" />
+		<method name="getActionBar()Landroid/app/ActionBar;" since="11" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getCurrentFocus()Landroid/view/View;" />
+		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
+		<method name="getOwnerActivity()Landroid/app/Activity;" />
+		<method name="getVolumeControlStream()I" />
+		<method name="getWindow()Landroid/view/Window;" />
+		<method name="hide()V" />
+		<method name="invalidateOptionsMenu()V" since="11" />
+		<method name="isShowing()Z" />
+		<method name="onActionModeFinished(Landroid/view/ActionMode;)V" since="11" />
+		<method name="onActionModeStarted(Landroid/view/ActionMode;)V" since="11" />
+		<method name="onAttachedToWindow()V" since="5" />
+		<method name="onBackPressed()V" since="5" />
+		<method name="onContentChanged()V" />
+		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
+		<method name="onContextMenuClosed(Landroid/view/Menu;)V" />
+		<method name="onCreate(Landroid/os/Bundle;)V" />
+		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
+		<method name="onCreateOptionsMenu(Landroid/view/Menu;)Z" />
+		<method name="onCreatePanelMenu(ILandroid/view/Menu;)Z" />
+		<method name="onCreatePanelView(I)Landroid/view/View;" />
+		<method name="onDetachedFromWindow()V" since="5" />
+		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
+		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" since="11" />
+		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
+		<method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z" />
+		<method name="onMenuOpened(ILandroid/view/Menu;)Z" />
+		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
+		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
+		<method name="onPanelClosed(ILandroid/view/Menu;)V" />
+		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)Z" />
+		<method name="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z" />
+		<method name="onRestoreInstanceState(Landroid/os/Bundle;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Bundle;" />
+		<method name="onSearchRequested()Z" />
+		<method name="onStart()V" />
+		<method name="onStop()V" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V" />
+		<method name="onWindowFocusChanged(Z)V" />
+		<method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+		<method name="openContextMenu(Landroid/view/View;)V" />
+		<method name="openOptionsMenu()V" />
+		<method name="registerForContextMenu(Landroid/view/View;)V" />
+		<method name="requestWindowFeature(I)Z" />
+		<method name="setCancelMessage(Landroid/os/Message;)V" />
+		<method name="setCancelable(Z)V" />
+		<method name="setCanceledOnTouchOutside(Z)V" />
+		<method name="setContentView(I)V" />
+		<method name="setContentView(Landroid/view/View;)V" />
+		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="setDismissMessage(Landroid/os/Message;)V" />
+		<method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V" />
+		<method name="setFeatureDrawableAlpha(II)V" />
+		<method name="setFeatureDrawableResource(II)V" />
+		<method name="setFeatureDrawableUri(ILandroid/net/Uri;)V" />
+		<method name="setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)V" />
+		<method name="setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)V" />
+		<method name="setOnKeyListener(Landroid/content/DialogInterface$OnKeyListener;)V" />
+		<method name="setOnShowListener(Landroid/content/DialogInterface$OnShowListener;)V" since="8" />
+		<method name="setOwnerActivity(Landroid/app/Activity;)V" />
+		<method name="setTitle(I)V" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+		<method name="setVolumeControlStream(I)V" />
+		<method name="show()V" />
+		<method name="takeKeyEvents(Z)V" />
+		<method name="unregisterForContextMenu(Landroid/view/View;)V" />
+	</class>
+	<class name="android/app/DialogFragment" since="11">
+		<extends name="android/app/Fragment" />
+		<implements name="android/content/DialogInterface$OnCancelListener" />
+		<implements name="android/content/DialogInterface$OnDismissListener" />
+		<method name="&lt;init>()V" />
+		<method name="dismiss()V" />
+		<method name="dismissAllowingStateLoss()V" since="12" />
+		<method name="getDialog()Landroid/app/Dialog;" />
+		<method name="getShowsDialog()Z" />
+		<method name="getTheme()I" />
+		<method name="isCancelable()Z" />
+		<method name="onCancel(Landroid/content/DialogInterface;)V" />
+		<method name="onCreateDialog(Landroid/os/Bundle;)Landroid/app/Dialog;" />
+		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
+		<method name="setCancelable(Z)V" />
+		<method name="setShowsDialog(Z)V" />
+		<method name="setStyle(II)V" />
+		<method name="show(Landroid/app/FragmentManager;Ljava/lang/String;)V" />
+		<method name="show(Landroid/app/FragmentTransaction;Ljava/lang/String;)I" />
+		<field name="STYLE_NORMAL" />
+		<field name="STYLE_NO_FRAME" />
+		<field name="STYLE_NO_INPUT" />
+		<field name="STYLE_NO_TITLE" />
+	</class>
+	<class name="android/app/DownloadManager" since="9">
+		<extends name="java/lang/Object" />
+		<method name="addCompletedDownload(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;JZ)J" since="12" />
+		<method name="enqueue(Landroid/app/DownloadManager$Request;)J" />
+		<method name="getMaxBytesOverMobile(Landroid/content/Context;)Ljava/lang/Long;" since="11" />
+		<method name="getMimeTypeForDownloadedFile(J)Ljava/lang/String;" since="11" />
+		<method name="getRecommendedMaxBytesOverMobile(Landroid/content/Context;)Ljava/lang/Long;" since="11" />
+		<method name="getUriForDownloadedFile(J)Landroid/net/Uri;" since="11" />
+		<method name="openDownloadedFile(J)Landroid/os/ParcelFileDescriptor;" />
+		<method name="query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor;" />
+		<method name="remove([J)I" />
+		<field name="ACTION_DOWNLOAD_COMPLETE" />
+		<field name="ACTION_NOTIFICATION_CLICKED" />
+		<field name="ACTION_VIEW_DOWNLOADS" />
+		<field name="COLUMN_BYTES_DOWNLOADED_SO_FAR" />
+		<field name="COLUMN_DESCRIPTION" />
+		<field name="COLUMN_ID" />
+		<field name="COLUMN_LAST_MODIFIED_TIMESTAMP" />
+		<field name="COLUMN_LOCAL_FILENAME" since="11" />
+		<field name="COLUMN_LOCAL_URI" />
+		<field name="COLUMN_MEDIAPROVIDER_URI" />
+		<field name="COLUMN_MEDIA_TYPE" />
+		<field name="COLUMN_REASON" />
+		<field name="COLUMN_STATUS" />
+		<field name="COLUMN_TITLE" />
+		<field name="COLUMN_TOTAL_SIZE_BYTES" />
+		<field name="COLUMN_URI" />
+		<field name="ERROR_CANNOT_RESUME" />
+		<field name="ERROR_DEVICE_NOT_FOUND" />
+		<field name="ERROR_FILE_ALREADY_EXISTS" />
+		<field name="ERROR_FILE_ERROR" />
+		<field name="ERROR_HTTP_DATA_ERROR" />
+		<field name="ERROR_INSUFFICIENT_SPACE" />
+		<field name="ERROR_TOO_MANY_REDIRECTS" />
+		<field name="ERROR_UNHANDLED_HTTP_CODE" />
+		<field name="ERROR_UNKNOWN" />
+		<field name="EXTRA_DOWNLOAD_ID" />
+		<field name="EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS" since="11" />
+		<field name="INTENT_EXTRAS_SORT_BY_SIZE" since="12" />
+		<field name="PAUSED_QUEUED_FOR_WIFI" />
+		<field name="PAUSED_UNKNOWN" />
+		<field name="PAUSED_WAITING_FOR_NETWORK" />
+		<field name="PAUSED_WAITING_TO_RETRY" />
+		<field name="STATUS_FAILED" />
+		<field name="STATUS_PAUSED" />
+		<field name="STATUS_PENDING" />
+		<field name="STATUS_RUNNING" />
+		<field name="STATUS_SUCCESSFUL" />
+	</class>
+	<class name="android/app/DownloadManager$Query" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="setFilterById([J)Landroid/app/DownloadManager$Query;" />
+		<method name="setFilterByStatus(I)Landroid/app/DownloadManager$Query;" />
+	</class>
+	<class name="android/app/DownloadManager$Request" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/net/Uri;)V" />
+		<method name="addRequestHeader(Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
+		<method name="allowScanningByMediaScanner()V" since="11" />
+		<method name="setAllowedNetworkTypes(I)Landroid/app/DownloadManager$Request;" />
+		<method name="setAllowedOverRoaming(Z)Landroid/app/DownloadManager$Request;" />
+		<method name="setDescription(Ljava/lang/CharSequence;)Landroid/app/DownloadManager$Request;" />
+		<method name="setDestinationInExternalFilesDir(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
+		<method name="setDestinationInExternalPublicDir(Ljava/lang/String;Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
+		<method name="setDestinationUri(Landroid/net/Uri;)Landroid/app/DownloadManager$Request;" />
+		<method name="setMimeType(Ljava/lang/String;)Landroid/app/DownloadManager$Request;" />
+		<method name="setNotificationVisibility(I)Landroid/app/DownloadManager$Request;" since="11" />
+		<method name="setShowRunningNotification(Z)Landroid/app/DownloadManager$Request;" />
+		<method name="setTitle(Ljava/lang/CharSequence;)Landroid/app/DownloadManager$Request;" />
+		<method name="setVisibleInDownloadsUi(Z)Landroid/app/DownloadManager$Request;" />
+		<field name="NETWORK_MOBILE" />
+		<field name="NETWORK_WIFI" />
+		<field name="VISIBILITY_HIDDEN" since="11" />
+		<field name="VISIBILITY_VISIBLE" since="11" />
+		<field name="VISIBILITY_VISIBLE_NOTIFY_COMPLETED" since="11" />
+		<field name="VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION" since="12" />
+	</class>
+	<class name="android/app/ExpandableListActivity" since="1">
+		<extends name="android/app/Activity" />
+		<implements name="android/widget/ExpandableListView$OnChildClickListener" />
+		<implements name="android/widget/ExpandableListView$OnGroupCollapseListener" />
+		<implements name="android/widget/ExpandableListView$OnGroupExpandListener" />
+		<implements name="android/view/View$OnCreateContextMenuListener" />
+		<method name="&lt;init>()V" />
+		<method name="getExpandableListAdapter()Landroid/widget/ExpandableListAdapter;" />
+		<method name="getExpandableListView()Landroid/widget/ExpandableListView;" />
+		<method name="getSelectedId()J" />
+		<method name="getSelectedPosition()J" />
+		<method name="onChildClick(Landroid/widget/ExpandableListView;Landroid/view/View;IIJ)Z" />
+		<method name="onGroupCollapse(I)V" />
+		<method name="onGroupExpand(I)V" />
+		<method name="setListAdapter(Landroid/widget/ExpandableListAdapter;)V" />
+		<method name="setSelectedChild(IIZ)Z" />
+		<method name="setSelectedGroup(I)V" />
+	</class>
+	<class name="android/app/Fragment" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/content/ComponentCallbacks" />
+		<implements name="android/view/View$OnCreateContextMenuListener" />
+		<implements name="android/content/ComponentCallbacks2" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActivity()Landroid/app/Activity;" />
+		<method name="getArguments()Landroid/os/Bundle;" />
+		<method name="getFragmentManager()Landroid/app/FragmentManager;" />
+		<method name="getId()I" />
+		<method name="getLoaderManager()Landroid/app/LoaderManager;" />
+		<method name="getResources()Landroid/content/res/Resources;" />
+		<method name="getRetainInstance()Z" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="getTag()Ljava/lang/String;" />
+		<method name="getTargetFragment()Landroid/app/Fragment;" />
+		<method name="getTargetRequestCode()I" />
+		<method name="getText(I)Ljava/lang/CharSequence;" />
+		<method name="getUserVisibleHint()Z" since="15" />
+		<method name="getView()Landroid/view/View;" />
+		<method name="hashCode()I" />
+		<method name="instantiate(Landroid/content/Context;Ljava/lang/String;)Landroid/app/Fragment;" />
+		<method name="instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;" />
+		<method name="isAdded()Z" />
+		<method name="isDetached()Z" since="13" />
+		<method name="isHidden()Z" />
+		<method name="isInLayout()Z" />
+		<method name="isRemoving()Z" />
+		<method name="isResumed()Z" />
+		<method name="isVisible()Z" />
+		<method name="onActivityCreated(Landroid/os/Bundle;)V" />
+		<method name="onActivityResult(IILandroid/content/Intent;)V" />
+		<method name="onAttach(Landroid/app/Activity;)V" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="onContextItemSelected(Landroid/view/MenuItem;)Z" />
+		<method name="onCreate(Landroid/os/Bundle;)V" />
+		<method name="onCreateAnimator(IZI)Landroid/animation/Animator;" />
+		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
+		<method name="onCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)V" />
+		<method name="onCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;" />
+		<method name="onDestroy()V" />
+		<method name="onDestroyOptionsMenu()V" />
+		<method name="onDestroyView()V" />
+		<method name="onDetach()V" />
+		<method name="onHiddenChanged(Z)V" />
+		<method name="onInflate(Landroid/app/Activity;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="12" />
+		<method name="onInflate(Landroid/util/AttributeSet;Landroid/os/Bundle;)V" />
+		<method name="onLowMemory()V" />
+		<method name="onOptionsItemSelected(Landroid/view/MenuItem;)Z" />
+		<method name="onOptionsMenuClosed(Landroid/view/Menu;)V" />
+		<method name="onPause()V" />
+		<method name="onPrepareOptionsMenu(Landroid/view/Menu;)V" />
+		<method name="onResume()V" />
+		<method name="onSaveInstanceState(Landroid/os/Bundle;)V" />
+		<method name="onStart()V" />
+		<method name="onStop()V" />
+		<method name="onTrimMemory(I)V" since="14" />
+		<method name="onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V" since="13" />
+		<method name="registerForContextMenu(Landroid/view/View;)V" />
+		<method name="setArguments(Landroid/os/Bundle;)V" />
+		<method name="setHasOptionsMenu(Z)V" />
+		<method name="setInitialSavedState(Landroid/app/Fragment$SavedState;)V" since="13" />
+		<method name="setMenuVisibility(Z)V" since="14" />
+		<method name="setRetainInstance(Z)V" />
+		<method name="setTargetFragment(Landroid/app/Fragment;I)V" />
+		<method name="setUserVisibleHint(Z)V" since="15" />
+		<method name="startActivity(Landroid/content/Intent;)V" />
+		<method name="startActivityForResult(Landroid/content/Intent;I)V" />
+		<method name="unregisterForContextMenu(Landroid/view/View;)V" />
+	</class>
+	<class name="android/app/Fragment$InstantiationException" since="11">
+		<extends name="android/util/AndroidRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Exception;)V" />
+	</class>
+	<class name="android/app/Fragment$SavedState" since="13">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/app/FragmentBreadCrumbs" since="11">
+		<extends name="android/view/ViewGroup" />
+		<implements name="android/app/FragmentManager$OnBackStackChangedListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="onBackStackChanged()V" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="setActivity(Landroid/app/Activity;)V" />
+		<method name="setMaxVisible(I)V" />
+		<method name="setOnBreadCrumbClickListener(Landroid/app/FragmentBreadCrumbs$OnBreadCrumbClickListener;)V" since="12" />
+		<method name="setParentTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)V" />
+		<method name="setTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/app/FragmentBreadCrumbs$OnBreadCrumbClickListener" since="12">
+		<method name="onBreadCrumbClick(Landroid/app/FragmentManager$BackStackEntry;I)Z" />
+	</class>
+	<class name="android/app/FragmentManager" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V" />
+		<method name="beginTransaction()Landroid/app/FragmentTransaction;" />
+		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
+		<method name="enableDebugLogging(Z)V" />
+		<method name="executePendingTransactions()Z" />
+		<method name="findFragmentById(I)Landroid/app/Fragment;" />
+		<method name="findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment;" />
+		<method name="getBackStackEntryAt(I)Landroid/app/FragmentManager$BackStackEntry;" />
+		<method name="getBackStackEntryCount()I" />
+		<method name="getFragment(Landroid/os/Bundle;Ljava/lang/String;)Landroid/app/Fragment;" />
+		<method name="invalidateOptionsMenu()V" since="14" />
+		<method name="popBackStack()V" />
+		<method name="popBackStack(II)V" />
+		<method name="popBackStack(Ljava/lang/String;I)V" />
+		<method name="popBackStackImmediate()Z" />
+		<method name="popBackStackImmediate(II)Z" />
+		<method name="popBackStackImmediate(Ljava/lang/String;I)Z" />
+		<method name="putFragment(Landroid/os/Bundle;Ljava/lang/String;Landroid/app/Fragment;)V" />
+		<method name="removeOnBackStackChangedListener(Landroid/app/FragmentManager$OnBackStackChangedListener;)V" />
+		<method name="saveFragmentInstanceState(Landroid/app/Fragment;)Landroid/app/Fragment$SavedState;" since="13" />
+		<field name="POP_BACK_STACK_INCLUSIVE" />
+	</class>
+	<class name="android/app/FragmentManager$BackStackEntry" since="11">
+		<method name="getBreadCrumbShortTitle()Ljava/lang/CharSequence;" />
+		<method name="getBreadCrumbShortTitleRes()I" />
+		<method name="getBreadCrumbTitle()Ljava/lang/CharSequence;" />
+		<method name="getBreadCrumbTitleRes()I" />
+		<method name="getId()I" />
+		<method name="getName()Ljava/lang/String;" since="14" />
+	</class>
+	<class name="android/app/FragmentManager$OnBackStackChangedListener" since="11">
+		<method name="onBackStackChanged()V" />
+	</class>
+	<class name="android/app/FragmentTransaction" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="add(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
+		<method name="add(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
+		<method name="add(Landroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
+		<method name="addToBackStack(Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
+		<method name="attach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="13" />
+		<method name="commit()I" />
+		<method name="commitAllowingStateLoss()I" />
+		<method name="detach(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" since="13" />
+		<method name="disallowAddToBackStack()Landroid/app/FragmentTransaction;" />
+		<method name="hide(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
+		<method name="isAddToBackStackAllowed()Z" />
+		<method name="isEmpty()Z" />
+		<method name="remove(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
+		<method name="replace(ILandroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
+		<method name="replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;" />
+		<method name="setBreadCrumbShortTitle(I)Landroid/app/FragmentTransaction;" />
+		<method name="setBreadCrumbShortTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction;" />
+		<method name="setBreadCrumbTitle(I)Landroid/app/FragmentTransaction;" />
+		<method name="setBreadCrumbTitle(Ljava/lang/CharSequence;)Landroid/app/FragmentTransaction;" />
+		<method name="setCustomAnimations(II)Landroid/app/FragmentTransaction;" />
+		<method name="setCustomAnimations(IIII)Landroid/app/FragmentTransaction;" since="13" />
+		<method name="setTransition(I)Landroid/app/FragmentTransaction;" />
+		<method name="setTransitionStyle(I)Landroid/app/FragmentTransaction;" />
+		<method name="show(Landroid/app/Fragment;)Landroid/app/FragmentTransaction;" />
+		<field name="TRANSIT_ENTER_MASK" />
+		<field name="TRANSIT_EXIT_MASK" />
+		<field name="TRANSIT_FRAGMENT_CLOSE" />
+		<field name="TRANSIT_FRAGMENT_FADE" />
+		<field name="TRANSIT_FRAGMENT_OPEN" />
+		<field name="TRANSIT_NONE" />
+		<field name="TRANSIT_UNSET" />
+	</class>
+	<class name="android/app/Instrumentation" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addMonitor(Landroid/app/Instrumentation$ActivityMonitor;)V" />
+		<method name="addMonitor(Landroid/content/IntentFilter;Landroid/app/Instrumentation$ActivityResult;Z)Landroid/app/Instrumentation$ActivityMonitor;" />
+		<method name="addMonitor(Ljava/lang/String;Landroid/app/Instrumentation$ActivityResult;Z)Landroid/app/Instrumentation$ActivityMonitor;" />
+		<method name="callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V" />
+		<method name="callActivityOnDestroy(Landroid/app/Activity;)V" />
+		<method name="callActivityOnNewIntent(Landroid/app/Activity;Landroid/content/Intent;)V" />
+		<method name="callActivityOnPause(Landroid/app/Activity;)V" />
+		<method name="callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;)V" />
+		<method name="callActivityOnRestart(Landroid/app/Activity;)V" />
+		<method name="callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V" />
+		<method name="callActivityOnResume(Landroid/app/Activity;)V" />
+		<method name="callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V" />
+		<method name="callActivityOnStart(Landroid/app/Activity;)V" />
+		<method name="callActivityOnStop(Landroid/app/Activity;)V" />
+		<method name="callActivityOnUserLeaving(Landroid/app/Activity;)V" since="3" />
+		<method name="callApplicationOnCreate(Landroid/app/Application;)V" />
+		<method name="checkMonitorHit(Landroid/app/Instrumentation$ActivityMonitor;I)Z" />
+		<method name="endPerformanceSnapshot()V" />
+		<method name="finish(ILandroid/os/Bundle;)V" />
+		<method name="getAllocCounts()Landroid/os/Bundle;" />
+		<method name="getBinderCounts()Landroid/os/Bundle;" />
+		<method name="getComponentName()Landroid/content/ComponentName;" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getTargetContext()Landroid/content/Context;" />
+		<method name="invokeContextMenuAction(Landroid/app/Activity;II)Z" />
+		<method name="invokeMenuActionSync(Landroid/app/Activity;II)Z" />
+		<method name="isProfiling()Z" />
+		<method name="newActivity(Ljava/lang/Class;Landroid/content/Context;Landroid/os/IBinder;Landroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Ljava/lang/Object;)Landroid/app/Activity;" />
+		<method name="newActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity;" />
+		<method name="newApplication(Ljava/lang/Class;Landroid/content/Context;)Landroid/app/Application;" />
+		<method name="newApplication(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Context;)Landroid/app/Application;" />
+		<method name="onCreate(Landroid/os/Bundle;)V" />
+		<method name="onDestroy()V" />
+		<method name="onException(Ljava/lang/Object;Ljava/lang/Throwable;)Z" />
+		<method name="onStart()V" />
+		<method name="removeMonitor(Landroid/app/Instrumentation$ActivityMonitor;)V" />
+		<method name="runOnMainSync(Ljava/lang/Runnable;)V" />
+		<method name="sendCharacterSync(I)V" />
+		<method name="sendKeyDownUpSync(I)V" />
+		<method name="sendKeySync(Landroid/view/KeyEvent;)V" />
+		<method name="sendPointerSync(Landroid/view/MotionEvent;)V" />
+		<method name="sendStatus(ILandroid/os/Bundle;)V" />
+		<method name="sendStringSync(Ljava/lang/String;)V" />
+		<method name="sendTrackballEventSync(Landroid/view/MotionEvent;)V" />
+		<method name="setAutomaticPerformanceSnapshots()V" />
+		<method name="setInTouchMode(Z)V" />
+		<method name="start()V" />
+		<method name="startActivitySync(Landroid/content/Intent;)Landroid/app/Activity;" />
+		<method name="startAllocCounting()V" />
+		<method name="startPerformanceSnapshot()V" />
+		<method name="startProfiling()V" />
+		<method name="stopAllocCounting()V" />
+		<method name="stopProfiling()V" />
+		<method name="waitForIdle(Ljava/lang/Runnable;)V" />
+		<method name="waitForIdleSync()V" />
+		<method name="waitForMonitor(Landroid/app/Instrumentation$ActivityMonitor;)Landroid/app/Activity;" />
+		<method name="waitForMonitorWithTimeout(Landroid/app/Instrumentation$ActivityMonitor;J)Landroid/app/Activity;" />
+		<field name="REPORT_KEY_IDENTIFIER" />
+		<field name="REPORT_KEY_STREAMRESULT" />
+	</class>
+	<class name="android/app/Instrumentation$ActivityMonitor" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/IntentFilter;Landroid/app/Instrumentation$ActivityResult;Z)V" />
+		<method name="&lt;init>(Ljava/lang/String;Landroid/app/Instrumentation$ActivityResult;Z)V" />
+		<method name="getFilter()Landroid/content/IntentFilter;" />
+		<method name="getHits()I" />
+		<method name="getLastActivity()Landroid/app/Activity;" />
+		<method name="getResult()Landroid/app/Instrumentation$ActivityResult;" />
+		<method name="isBlocking()Z" />
+		<method name="waitForActivity()Landroid/app/Activity;" />
+		<method name="waitForActivityWithTimeout(J)Landroid/app/Activity;" />
+	</class>
+	<class name="android/app/Instrumentation$ActivityResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(ILandroid/content/Intent;)V" />
+		<method name="getResultCode()I" />
+		<method name="getResultData()Landroid/content/Intent;" />
+	</class>
+	<class name="android/app/IntentService" since="3">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onHandleIntent(Landroid/content/Intent;)V" />
+		<method name="setIntentRedelivery(Z)V" since="5" />
+	</class>
+	<class name="android/app/KeyguardManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="exitKeyguardSecurely(Landroid/app/KeyguardManager$OnKeyguardExitResult;)V" />
+		<method name="inKeyguardRestrictedInputMode()Z" />
+		<method name="newKeyguardLock(Ljava/lang/String;)Landroid/app/KeyguardManager$KeyguardLock;" />
+	</class>
+	<class name="android/app/KeyguardManager$KeyguardLock" since="1">
+		<extends name="java/lang/Object" />
+		<method name="disableKeyguard()V" />
+		<method name="reenableKeyguard()V" />
+	</class>
+	<class name="android/app/KeyguardManager$OnKeyguardExitResult" since="1">
+		<method name="onKeyguardExitResult(Z)V" />
+	</class>
+	<class name="android/app/LauncherActivity" since="1">
+		<extends name="android/app/ListActivity" />
+		<method name="&lt;init>()V" />
+		<method name="getTargetIntent()Landroid/content/Intent;" />
+		<method name="intentForPosition(I)Landroid/content/Intent;" since="3" />
+		<method name="itemForPosition(I)Landroid/app/LauncherActivity$ListItem;" since="4" />
+		<method name="makeListItems()Ljava/util/List;" since="3" />
+		<method name="onQueryPackageManager(Landroid/content/Intent;)Ljava/util/List;" since="5" />
+		<method name="onSetContentView()V" since="5" />
+	</class>
+	<class name="android/app/LauncherActivity$IconResizer" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="createIconThumbnail(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;" />
+	</class>
+	<class name="android/app/LauncherActivity$ListItem" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="className" />
+		<field name="extras" />
+		<field name="icon" />
+		<field name="label" />
+		<field name="packageName" />
+		<field name="resolveInfo" since="4" />
+	</class>
+	<class name="android/app/ListActivity" since="1">
+		<extends name="android/app/Activity" />
+		<method name="&lt;init>()V" />
+		<method name="getListAdapter()Landroid/widget/ListAdapter;" />
+		<method name="getListView()Landroid/widget/ListView;" />
+		<method name="getSelectedItemId()J" />
+		<method name="getSelectedItemPosition()I" />
+		<method name="onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V" />
+		<method name="setListAdapter(Landroid/widget/ListAdapter;)V" />
+		<method name="setSelection(I)V" />
+	</class>
+	<class name="android/app/ListFragment" since="11">
+		<extends name="android/app/Fragment" />
+		<method name="&lt;init>()V" />
+		<method name="getListAdapter()Landroid/widget/ListAdapter;" />
+		<method name="getListView()Landroid/widget/ListView;" />
+		<method name="getSelectedItemId()J" />
+		<method name="getSelectedItemPosition()I" />
+		<method name="onListItemClick(Landroid/widget/ListView;Landroid/view/View;IJ)V" />
+		<method name="setEmptyText(Ljava/lang/CharSequence;)V" />
+		<method name="setListAdapter(Landroid/widget/ListAdapter;)V" />
+		<method name="setListShown(Z)V" />
+		<method name="setListShownNoAnimation(Z)V" />
+		<method name="setSelection(I)V" />
+	</class>
+	<class name="android/app/LoaderManager" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="destroyLoader(I)V" />
+		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
+		<method name="enableDebugLogging(Z)V" />
+		<method name="getLoader(I)Landroid/content/Loader;" />
+		<method name="initLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader;" />
+		<method name="restartLoader(ILandroid/os/Bundle;Landroid/app/LoaderManager$LoaderCallbacks;)Landroid/content/Loader;" />
+	</class>
+	<class name="android/app/LoaderManager$LoaderCallbacks" since="11">
+		<method name="onCreateLoader(ILandroid/os/Bundle;)Landroid/content/Loader;" />
+		<method name="onLoadFinished(Landroid/content/Loader;LD;)V" />
+		<method name="onLoaderReset(Landroid/content/Loader;)V" />
+	</class>
+	<class name="android/app/LocalActivityManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/app/Activity;Z)V" />
+		<method name="destroyActivity(Ljava/lang/String;Z)Landroid/view/Window;" />
+		<method name="dispatchCreate(Landroid/os/Bundle;)V" />
+		<method name="dispatchDestroy(Z)V" />
+		<method name="dispatchPause(Z)V" />
+		<method name="dispatchResume()V" />
+		<method name="dispatchStop()V" />
+		<method name="getActivity(Ljava/lang/String;)Landroid/app/Activity;" />
+		<method name="getCurrentActivity()Landroid/app/Activity;" />
+		<method name="getCurrentId()Ljava/lang/String;" />
+		<method name="removeAllActivities()V" />
+		<method name="saveInstanceState()Landroid/os/Bundle;" />
+		<method name="startActivity(Ljava/lang/String;Landroid/content/Intent;)Landroid/view/Window;" />
+	</class>
+	<class name="android/app/NativeActivity" since="9">
+		<extends name="android/app/Activity" />
+		<implements name="android/view/InputQueue$Callback" />
+		<implements name="android/view/SurfaceHolder$Callback2" />
+		<implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener" />
+		<method name="&lt;init>()V" />
+		<method name="onGlobalLayout()V" />
+		<method name="onInputQueueCreated(Landroid/view/InputQueue;)V" />
+		<method name="onInputQueueDestroyed(Landroid/view/InputQueue;)V" />
+		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
+		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
+		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
+		<method name="surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" />
+		<field name="META_DATA_FUNC_NAME" />
+		<field name="META_DATA_LIB_NAME" />
+	</class>
+	<class name="android/app/Notification" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(ILjava/lang/CharSequence;J)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="clone()Landroid/app/Notification;" since="9" />
+		<method name="describeContents()I" />
+		<method name="setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="DEFAULT_ALL" />
+		<field name="DEFAULT_LIGHTS" />
+		<field name="DEFAULT_SOUND" />
+		<field name="DEFAULT_VIBRATE" />
+		<field name="FLAG_AUTO_CANCEL" />
+		<field name="FLAG_FOREGROUND_SERVICE" since="5" />
+		<field name="FLAG_HIGH_PRIORITY" since="11" />
+		<field name="FLAG_INSISTENT" />
+		<field name="FLAG_NO_CLEAR" />
+		<field name="FLAG_ONGOING_EVENT" />
+		<field name="FLAG_ONLY_ALERT_ONCE" />
+		<field name="FLAG_SHOW_LIGHTS" />
+		<field name="STREAM_DEFAULT" />
+		<field name="audioStreamType" />
+		<field name="contentIntent" />
+		<field name="contentView" />
+		<field name="defaults" />
+		<field name="deleteIntent" />
+		<field name="flags" />
+		<field name="fullScreenIntent" since="9" />
+		<field name="icon" />
+		<field name="iconLevel" />
+		<field name="largeIcon" since="11" />
+		<field name="ledARGB" />
+		<field name="ledOffMS" />
+		<field name="ledOnMS" />
+		<field name="number" />
+		<field name="sound" />
+		<field name="tickerText" />
+		<field name="tickerView" since="11" />
+		<field name="vibrate" />
+		<field name="when" />
+	</class>
+	<class name="android/app/Notification$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="getNotification()Landroid/app/Notification;" />
+		<method name="setAutoCancel(Z)Landroid/app/Notification$Builder;" />
+		<method name="setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" />
+		<method name="setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
+		<method name="setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;" />
+		<method name="setContentText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
+		<method name="setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
+		<method name="setDefaults(I)Landroid/app/Notification$Builder;" />
+		<method name="setDeleteIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;" />
+		<method name="setFullScreenIntent(Landroid/app/PendingIntent;Z)Landroid/app/Notification$Builder;" />
+		<method name="setLargeIcon(Landroid/graphics/Bitmap;)Landroid/app/Notification$Builder;" />
+		<method name="setLights(III)Landroid/app/Notification$Builder;" />
+		<method name="setNumber(I)Landroid/app/Notification$Builder;" />
+		<method name="setOngoing(Z)Landroid/app/Notification$Builder;" />
+		<method name="setOnlyAlertOnce(Z)Landroid/app/Notification$Builder;" />
+		<method name="setProgress(IIZ)Landroid/app/Notification$Builder;" since="14" />
+		<method name="setSmallIcon(I)Landroid/app/Notification$Builder;" />
+		<method name="setSmallIcon(II)Landroid/app/Notification$Builder;" />
+		<method name="setSound(Landroid/net/Uri;)Landroid/app/Notification$Builder;" />
+		<method name="setSound(Landroid/net/Uri;I)Landroid/app/Notification$Builder;" />
+		<method name="setTicker(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;" />
+		<method name="setTicker(Ljava/lang/CharSequence;Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;" />
+		<method name="setVibrate([J)Landroid/app/Notification$Builder;" />
+		<method name="setWhen(J)Landroid/app/Notification$Builder;" />
+	</class>
+	<class name="android/app/NotificationManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="cancel(I)V" />
+		<method name="cancel(Ljava/lang/String;I)V" since="5" />
+		<method name="cancelAll()V" />
+		<method name="notify(ILandroid/app/Notification;)V" />
+		<method name="notify(Ljava/lang/String;ILandroid/app/Notification;)V" since="5" />
+	</class>
+	<class name="android/app/PendingIntent" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="cancel()V" />
+		<method name="describeContents()I" />
+		<method name="getActivities(Landroid/content/Context;I[Landroid/content/Intent;I)Landroid/app/PendingIntent;" since="11" />
+		<method name="getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
+		<method name="getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
+		<method name="getIntentSender()Landroid/content/IntentSender;" since="4" />
+		<method name="getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;" />
+		<method name="getTargetPackage()Ljava/lang/String;" />
+		<method name="readPendingIntentOrNullFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent;" />
+		<method name="send()V" />
+		<method name="send(I)V" />
+		<method name="send(ILandroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V" />
+		<method name="send(Landroid/content/Context;ILandroid/content/Intent;)V" />
+		<method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V" />
+		<method name="send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V" since="14" />
+		<method name="writePendingIntentOrNullToParcel(Landroid/app/PendingIntent;Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="FLAG_CANCEL_CURRENT" />
+		<field name="FLAG_NO_CREATE" />
+		<field name="FLAG_ONE_SHOT" />
+		<field name="FLAG_UPDATE_CURRENT" since="3" />
+	</class>
+	<class name="android/app/PendingIntent$CanceledException" since="1">
+		<extends name="android/util/AndroidException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/app/PendingIntent$OnFinished" since="1">
+		<method name="onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V" />
+	</class>
+	<class name="android/app/ProgressDialog" since="1">
+		<extends name="android/app/AlertDialog" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="getMax()I" />
+		<method name="getProgress()I" />
+		<method name="getSecondaryProgress()I" />
+		<method name="incrementProgressBy(I)V" />
+		<method name="incrementSecondaryProgressBy(I)V" />
+		<method name="isIndeterminate()Z" />
+		<method name="onStart()V" />
+		<method name="setIndeterminate(Z)V" />
+		<method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setMax(I)V" />
+		<method name="setProgress(I)V" />
+		<method name="setProgressDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setProgressNumberFormat(Ljava/lang/String;)V" since="11" />
+		<method name="setProgressPercentFormat(Ljava/text/NumberFormat;)V" since="11" />
+		<method name="setProgressStyle(I)V" />
+		<method name="setSecondaryProgress(I)V" />
+		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/app/ProgressDialog;" />
+		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Z)Landroid/app/ProgressDialog;" />
+		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZ)Landroid/app/ProgressDialog;" />
+		<method name="show(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ZZLandroid/content/DialogInterface$OnCancelListener;)Landroid/app/ProgressDialog;" />
+		<field name="STYLE_HORIZONTAL" />
+		<field name="STYLE_SPINNER" />
+	</class>
+	<class name="android/app/SearchManager" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/content/DialogInterface$OnCancelListener" />
+		<implements name="android/content/DialogInterface$OnDismissListener" />
+		<method name="getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo;" since="8" />
+		<method name="getSearchablesInGlobalSearch()Ljava/util/List;" since="8" />
+		<method name="onCancel(Landroid/content/DialogInterface;)V" />
+		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
+		<method name="setOnCancelListener(Landroid/app/SearchManager$OnCancelListener;)V" />
+		<method name="setOnDismissListener(Landroid/app/SearchManager$OnDismissListener;)V" />
+		<method name="startSearch(Ljava/lang/String;ZLandroid/content/ComponentName;Landroid/os/Bundle;Z)V" />
+		<method name="stopSearch()V" />
+		<method name="triggerSearch(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/Bundle;)V" since="5" />
+		<field name="ACTION_KEY" />
+		<field name="ACTION_MSG" />
+		<field name="APP_DATA" />
+		<field name="CURSOR_EXTRA_KEY_IN_PROGRESS" since="8" />
+		<field name="EXTRA_DATA_KEY" since="4" />
+		<field name="EXTRA_NEW_SEARCH" since="12" />
+		<field name="EXTRA_SELECT_QUERY" since="8" />
+		<field name="EXTRA_WEB_SEARCH_PENDINGINTENT" since="14" />
+		<field name="FLAG_QUERY_REFINEMENT" since="11" />
+		<field name="INTENT_ACTION_GLOBAL_SEARCH" since="8" />
+		<field name="INTENT_ACTION_SEARCHABLES_CHANGED" since="4" />
+		<field name="INTENT_ACTION_SEARCH_SETTINGS" since="8" />
+		<field name="INTENT_ACTION_SEARCH_SETTINGS_CHANGED" since="4" />
+		<field name="INTENT_ACTION_WEB_SEARCH_SETTINGS" since="4" />
+		<field name="MENU_KEY" />
+		<field name="MENU_KEYCODE" />
+		<field name="QUERY" />
+		<field name="SHORTCUT_MIME_TYPE" since="4" />
+		<field name="SUGGEST_COLUMN_FLAGS" since="11" />
+		<field name="SUGGEST_COLUMN_FORMAT" />
+		<field name="SUGGEST_COLUMN_ICON_1" />
+		<field name="SUGGEST_COLUMN_ICON_2" />
+		<field name="SUGGEST_COLUMN_INTENT_ACTION" />
+		<field name="SUGGEST_COLUMN_INTENT_DATA" />
+		<field name="SUGGEST_COLUMN_INTENT_DATA_ID" />
+		<field name="SUGGEST_COLUMN_INTENT_EXTRA_DATA" since="4" />
+		<field name="SUGGEST_COLUMN_LAST_ACCESS_HINT" since="14" />
+		<field name="SUGGEST_COLUMN_QUERY" />
+		<field name="SUGGEST_COLUMN_SHORTCUT_ID" since="4" />
+		<field name="SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING" since="4" />
+		<field name="SUGGEST_COLUMN_TEXT_1" />
+		<field name="SUGGEST_COLUMN_TEXT_2" />
+		<field name="SUGGEST_COLUMN_TEXT_2_URL" since="8" />
+		<field name="SUGGEST_MIME_TYPE" />
+		<field name="SUGGEST_NEVER_MAKE_SHORTCUT" since="4" />
+		<field name="SUGGEST_PARAMETER_LIMIT" since="5" />
+		<field name="SUGGEST_URI_PATH_QUERY" />
+		<field name="SUGGEST_URI_PATH_SHORTCUT" since="4" />
+		<field name="USER_QUERY" since="4" />
+	</class>
+	<class name="android/app/SearchManager$OnCancelListener" since="1">
+		<method name="onCancel()V" />
+	</class>
+	<class name="android/app/SearchManager$OnDismissListener" since="1">
+		<method name="onDismiss()V" />
+	</class>
+	<class name="android/app/SearchableInfo" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="autoUrlDetect()Z" />
+		<method name="describeContents()I" />
+		<method name="getHintId()I" />
+		<method name="getImeOptions()I" />
+		<method name="getInputType()I" />
+		<method name="getSearchActivity()Landroid/content/ComponentName;" />
+		<method name="getSettingsDescriptionId()I" />
+		<method name="getSuggestAuthority()Ljava/lang/String;" />
+		<method name="getSuggestIntentAction()Ljava/lang/String;" />
+		<method name="getSuggestIntentData()Ljava/lang/String;" />
+		<method name="getSuggestPackage()Ljava/lang/String;" />
+		<method name="getSuggestPath()Ljava/lang/String;" />
+		<method name="getSuggestSelection()Ljava/lang/String;" />
+		<method name="getSuggestThreshold()I" />
+		<method name="getVoiceLanguageId()I" />
+		<method name="getVoiceLanguageModeId()I" />
+		<method name="getVoiceMaxResults()I" />
+		<method name="getVoicePromptTextId()I" />
+		<method name="getVoiceSearchEnabled()Z" />
+		<method name="getVoiceSearchLaunchRecognizer()Z" />
+		<method name="getVoiceSearchLaunchWebSearch()Z" />
+		<method name="queryAfterZeroResults()Z" />
+		<method name="shouldIncludeInGlobalSearch()Z" />
+		<method name="shouldRewriteQueryFromData()Z" />
+		<method name="shouldRewriteQueryFromText()Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/app/Service" since="1">
+		<extends name="android/content/ContextWrapper" />
+		<implements name="android/content/ComponentCallbacks" />
+		<implements name="android/content/ComponentCallbacks2" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
+		<method name="getApplication()Landroid/app/Application;" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="onCreate()V" />
+		<method name="onDestroy()V" />
+		<method name="onLowMemory()V" />
+		<method name="onRebind(Landroid/content/Intent;)V" />
+		<method name="onStart(Landroid/content/Intent;I)V" />
+		<method name="onStartCommand(Landroid/content/Intent;II)I" since="5" />
+		<method name="onTaskRemoved(Landroid/content/Intent;)V" since="14" />
+		<method name="onTrimMemory(I)V" since="14" />
+		<method name="onUnbind(Landroid/content/Intent;)Z" />
+		<method name="setForeground(Z)V" />
+		<method name="startForeground(ILandroid/app/Notification;)V" since="5" />
+		<method name="stopForeground(Z)V" since="5" />
+		<method name="stopSelf()V" />
+		<method name="stopSelf(I)V" />
+		<method name="stopSelfResult(I)Z" />
+		<field name="START_CONTINUATION_MASK" since="5" />
+		<field name="START_FLAG_REDELIVERY" since="5" />
+		<field name="START_FLAG_RETRY" since="5" />
+		<field name="START_NOT_STICKY" since="5" />
+		<field name="START_REDELIVER_INTENT" since="5" />
+		<field name="START_STICKY" since="5" />
+		<field name="START_STICKY_COMPATIBILITY" since="5" />
+	</class>
+	<class name="android/app/TabActivity" since="1">
+		<extends name="android/app/ActivityGroup" />
+		<method name="&lt;init>()V" />
+		<method name="getTabHost()Landroid/widget/TabHost;" />
+		<method name="getTabWidget()Landroid/widget/TabWidget;" />
+		<method name="setDefaultTab(I)V" />
+		<method name="setDefaultTab(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/app/TimePickerDialog" since="1">
+		<extends name="android/app/AlertDialog" />
+		<implements name="android/content/DialogInterface$OnClickListener" />
+		<implements name="android/widget/TimePicker$OnTimeChangedListener" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/app/TimePickerDialog$OnTimeSetListener;IIZ)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/app/TimePickerDialog$OnTimeSetListener;IIZ)V" />
+		<method name="onClick(Landroid/content/DialogInterface;I)V" />
+		<method name="onTimeChanged(Landroid/widget/TimePicker;II)V" />
+		<method name="updateTime(II)V" />
+	</class>
+	<class name="android/app/TimePickerDialog$OnTimeSetListener" since="1">
+		<method name="onTimeSet(Landroid/widget/TimePicker;II)V" />
+	</class>
+	<class name="android/app/UiModeManager" since="8">
+		<extends name="java/lang/Object" />
+		<method name="disableCarMode(I)V" />
+		<method name="enableCarMode(I)V" />
+		<method name="getCurrentModeType()I" />
+		<method name="getNightMode()I" />
+		<method name="setNightMode(I)V" />
+		<field name="ACTION_ENTER_CAR_MODE" />
+		<field name="ACTION_ENTER_DESK_MODE" />
+		<field name="ACTION_EXIT_CAR_MODE" />
+		<field name="ACTION_EXIT_DESK_MODE" />
+		<field name="DISABLE_CAR_MODE_GO_HOME" />
+		<field name="ENABLE_CAR_MODE_GO_CAR_HOME" />
+		<field name="MODE_NIGHT_AUTO" />
+		<field name="MODE_NIGHT_NO" />
+		<field name="MODE_NIGHT_YES" />
+	</class>
+	<class name="android/app/WallpaperInfo" since="7">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getComponent()Landroid/content/ComponentName;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
+		<method name="getServiceName()Ljava/lang/String;" />
+		<method name="getSettingsActivity()Ljava/lang/String;" />
+		<method name="loadAuthor(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="loadThumbnail(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/app/WallpaperManager" since="5">
+		<extends name="java/lang/Object" />
+		<method name="clear()V" />
+		<method name="clearWallpaperOffsets(Landroid/os/IBinder;)V" />
+		<method name="forgetLoadedWallpaper()V" since="14" />
+		<method name="getDesiredMinimumHeight()I" />
+		<method name="getDesiredMinimumWidth()I" />
+		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getFastDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getInstance(Landroid/content/Context;)Landroid/app/WallpaperManager;" />
+		<method name="getWallpaperInfo()Landroid/app/WallpaperInfo;" since="7" />
+		<method name="peekDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="peekFastDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)V" since="7" />
+		<method name="setBitmap(Landroid/graphics/Bitmap;)V" />
+		<method name="setResource(I)V" />
+		<method name="setStream(Ljava/io/InputStream;)V" />
+		<method name="setWallpaperOffsetSteps(FF)V" since="7" />
+		<method name="setWallpaperOffsets(Landroid/os/IBinder;FF)V" />
+		<method name="suggestDesiredDimensions(II)V" />
+		<field name="ACTION_LIVE_WALLPAPER_CHOOSER" since="7" />
+		<field name="COMMAND_DROP" since="7" />
+		<field name="COMMAND_SECONDARY_TAP" since="11" />
+		<field name="COMMAND_TAP" since="7" />
+		<field name="WALLPAPER_PREVIEW_META_DATA" since="11" />
+	</class>
+	<class name="android/app/admin/DeviceAdminInfo" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getActivityInfo()Landroid/content/pm/ActivityInfo;" />
+		<method name="getComponent()Landroid/content/ComponentName;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getReceiverName()Ljava/lang/String;" />
+		<method name="getTagForPolicy(I)Ljava/lang/String;" />
+		<method name="isVisible()Z" />
+		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="usesPolicy(I)Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="USES_ENCRYPTED_STORAGE" since="11" />
+		<field name="USES_POLICY_DISABLE_CAMERA" since="14" />
+		<field name="USES_POLICY_EXPIRE_PASSWORD" since="11" />
+		<field name="USES_POLICY_FORCE_LOCK" />
+		<field name="USES_POLICY_LIMIT_PASSWORD" />
+		<field name="USES_POLICY_RESET_PASSWORD" />
+		<field name="USES_POLICY_WATCH_LOGIN" />
+		<field name="USES_POLICY_WIPE_DATA" />
+	</class>
+	<class name="android/app/admin/DeviceAdminReceiver" since="8">
+		<extends name="android/content/BroadcastReceiver" />
+		<method name="&lt;init>()V" />
+		<method name="getManager(Landroid/content/Context;)Landroid/app/admin/DevicePolicyManager;" />
+		<method name="getWho(Landroid/content/Context;)Landroid/content/ComponentName;" />
+		<method name="onDisableRequested(Landroid/content/Context;Landroid/content/Intent;)Ljava/lang/CharSequence;" />
+		<method name="onDisabled(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="onEnabled(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="onPasswordChanged(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="onPasswordExpiring(Landroid/content/Context;Landroid/content/Intent;)V" since="11" />
+		<method name="onPasswordFailed(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="onPasswordSucceeded(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="onReceive(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<field name="ACTION_DEVICE_ADMIN_DISABLED" />
+		<field name="ACTION_DEVICE_ADMIN_DISABLE_REQUESTED" />
+		<field name="ACTION_DEVICE_ADMIN_ENABLED" />
+		<field name="ACTION_PASSWORD_CHANGED" />
+		<field name="ACTION_PASSWORD_EXPIRING" since="11" />
+		<field name="ACTION_PASSWORD_FAILED" />
+		<field name="ACTION_PASSWORD_SUCCEEDED" />
+		<field name="DEVICE_ADMIN_META_DATA" />
+		<field name="EXTRA_DISABLE_WARNING" />
+	</class>
+	<class name="android/app/admin/DevicePolicyManager" since="8">
+		<extends name="java/lang/Object" />
+		<method name="getActiveAdmins()Ljava/util/List;" />
+		<method name="getCameraDisabled(Landroid/content/ComponentName;)Z" since="14" />
+		<method name="getCurrentFailedPasswordAttempts()I" />
+		<method name="getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;)I" />
+		<method name="getMaximumTimeToLock(Landroid/content/ComponentName;)J" />
+		<method name="getPasswordExpiration(Landroid/content/ComponentName;)J" since="11" />
+		<method name="getPasswordExpirationTimeout(Landroid/content/ComponentName;)J" since="11" />
+		<method name="getPasswordHistoryLength(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordMaximumLength(I)I" />
+		<method name="getPasswordMinimumLength(Landroid/content/ComponentName;)I" />
+		<method name="getPasswordMinimumLetters(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordMinimumLowerCase(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordMinimumNonLetter(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordMinimumNumeric(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordMinimumSymbols(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordMinimumUpperCase(Landroid/content/ComponentName;)I" since="11" />
+		<method name="getPasswordQuality(Landroid/content/ComponentName;)I" />
+		<method name="getStorageEncryption(Landroid/content/ComponentName;)Z" since="11" />
+		<method name="getStorageEncryptionStatus()I" since="11" />
+		<method name="hasGrantedPolicy(Landroid/content/ComponentName;I)Z" since="11" />
+		<method name="isActivePasswordSufficient()Z" />
+		<method name="isAdminActive(Landroid/content/ComponentName;)Z" />
+		<method name="lockNow()V" />
+		<method name="removeActiveAdmin(Landroid/content/ComponentName;)V" />
+		<method name="resetPassword(Ljava/lang/String;I)Z" />
+		<method name="setCameraDisabled(Landroid/content/ComponentName;Z)V" since="14" />
+		<method name="setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;I)V" />
+		<method name="setMaximumTimeToLock(Landroid/content/ComponentName;J)V" />
+		<method name="setPasswordExpirationTimeout(Landroid/content/ComponentName;J)V" since="11" />
+		<method name="setPasswordHistoryLength(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordMinimumLength(Landroid/content/ComponentName;I)V" />
+		<method name="setPasswordMinimumLetters(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordMinimumLowerCase(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordMinimumNonLetter(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordMinimumNumeric(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordMinimumSymbols(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordMinimumUpperCase(Landroid/content/ComponentName;I)V" since="11" />
+		<method name="setPasswordQuality(Landroid/content/ComponentName;I)V" />
+		<method name="setStorageEncryption(Landroid/content/ComponentName;Z)I" since="11" />
+		<method name="wipeData(I)V" />
+		<field name="ACTION_ADD_DEVICE_ADMIN" />
+		<field name="ACTION_SET_NEW_PASSWORD" />
+		<field name="ACTION_START_ENCRYPTION" since="11" />
+		<field name="ENCRYPTION_STATUS_ACTIVATING" since="11" />
+		<field name="ENCRYPTION_STATUS_ACTIVE" since="11" />
+		<field name="ENCRYPTION_STATUS_INACTIVE" since="11" />
+		<field name="ENCRYPTION_STATUS_UNSUPPORTED" since="11" />
+		<field name="EXTRA_ADD_EXPLANATION" />
+		<field name="EXTRA_DEVICE_ADMIN" />
+		<field name="PASSWORD_QUALITY_ALPHABETIC" />
+		<field name="PASSWORD_QUALITY_ALPHANUMERIC" />
+		<field name="PASSWORD_QUALITY_BIOMETRIC_WEAK" since="14" />
+		<field name="PASSWORD_QUALITY_COMPLEX" since="11" />
+		<field name="PASSWORD_QUALITY_NUMERIC" />
+		<field name="PASSWORD_QUALITY_SOMETHING" />
+		<field name="PASSWORD_QUALITY_UNSPECIFIED" />
+		<field name="RESET_PASSWORD_REQUIRE_ENTRY" />
+		<field name="WIPE_EXTERNAL_STORAGE" since="9" />
+	</class>
+	<class name="android/app/backup/BackupAgent" since="8">
+		<extends name="android/content/ContextWrapper" />
+		<method name="&lt;init>()V" />
+		<method name="fullBackupFile(Ljava/io/File;Landroid/app/backup/FullBackupDataOutput;)V" since="14" />
+		<method name="onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
+		<method name="onCreate()V" />
+		<method name="onDestroy()V" />
+		<method name="onFullBackup(Landroid/app/backup/FullBackupDataOutput;)V" since="14" />
+		<method name="onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)V" />
+		<method name="onRestoreFile(Landroid/os/ParcelFileDescriptor;JLjava/io/File;IJJ)V" since="14" />
+		<field name="TYPE_DIRECTORY" since="14" />
+		<field name="TYPE_FILE" since="14" />
+	</class>
+	<class name="android/app/backup/BackupAgentHelper" since="8">
+		<extends name="android/app/backup/BackupAgent" />
+		<method name="&lt;init>()V" />
+		<method name="addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V" />
+		<method name="onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
+		<method name="onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)V" />
+	</class>
+	<class name="android/app/backup/BackupDataInput" since="8">
+		<extends name="java/lang/Object" />
+		<method name="getDataSize()I" />
+		<method name="getKey()Ljava/lang/String;" />
+		<method name="readEntityData([BII)I" />
+		<method name="readNextHeader()Z" />
+		<method name="skipEntityData()V" />
+	</class>
+	<class name="android/app/backup/BackupDataInputStream" since="8">
+		<extends name="java/io/InputStream" />
+		<method name="getKey()Ljava/lang/String;" />
+		<method name="read()I" />
+		<method name="size()I" />
+	</class>
+	<class name="android/app/backup/BackupDataOutput" since="8">
+		<extends name="java/lang/Object" />
+		<method name="writeEntityData([BI)I" />
+		<method name="writeEntityHeader(Ljava/lang/String;I)I" />
+	</class>
+	<class name="android/app/backup/BackupHelper" since="8">
+		<method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
+		<method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)V" />
+		<method name="writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V" />
+	</class>
+	<class name="android/app/backup/BackupManager" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="dataChanged()V" />
+		<method name="dataChanged(Ljava/lang/String;)V" />
+		<method name="requestRestore(Landroid/app/backup/RestoreObserver;)I" />
+	</class>
+	<class name="android/app/backup/FileBackupHelper" since="8">
+		<extends name="android/app/backup/FileBackupHelperBase" />
+		<implements name="android/app/backup/BackupHelper" />
+		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;)V" />
+		<method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
+		<method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)V" />
+	</class>
+	<class name="android/app/backup/FileBackupHelperBase" since="8">
+		<extends name="java/lang/Object" />
+		<method name="writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V" />
+	</class>
+	<class name="android/app/backup/FullBackupDataOutput" since="14">
+	</class>
+	<class name="android/app/backup/RestoreObserver" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="onUpdate(ILjava/lang/String;)V" />
+		<method name="restoreFinished(I)V" />
+		<method name="restoreStarting(I)V" />
+	</class>
+	<class name="android/app/backup/SharedPreferencesBackupHelper" since="8">
+		<extends name="android/app/backup/FileBackupHelperBase" />
+		<implements name="android/app/backup/BackupHelper" />
+		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;)V" />
+		<method name="performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V" />
+		<method name="restoreEntity(Landroid/app/backup/BackupDataInputStream;)V" />
+	</class>
+	<class name="android/appwidget/AppWidgetHost" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="allocateAppWidgetId()I" />
+		<method name="clearViews()V" since="11" />
+		<method name="createView(Landroid/content/Context;ILandroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetHostView;" />
+		<method name="deleteAllHosts()V" />
+		<method name="deleteAppWidgetId(I)V" />
+		<method name="deleteHost()V" />
+		<method name="onCreateView(Landroid/content/Context;ILandroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetHostView;" />
+		<method name="onProviderChanged(ILandroid/appwidget/AppWidgetProviderInfo;)V" />
+		<method name="startListening()V" />
+		<method name="stopListening()V" />
+	</class>
+	<class name="android/appwidget/AppWidgetHostView" since="3">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;II)V" />
+		<method name="getAppWidgetId()I" />
+		<method name="getAppWidgetInfo()Landroid/appwidget/AppWidgetProviderInfo;" />
+		<method name="getDefaultPaddingForWidget(Landroid/content/Context;Landroid/content/ComponentName;Landroid/graphics/Rect;)Landroid/graphics/Rect;" since="15" />
+		<method name="getDefaultView()Landroid/view/View;" />
+		<method name="getErrorView()Landroid/view/View;" />
+		<method name="prepareView(Landroid/view/View;)V" />
+		<method name="setAppWidget(ILandroid/appwidget/AppWidgetProviderInfo;)V" />
+		<method name="updateAppWidget(Landroid/widget/RemoteViews;)V" />
+	</class>
+	<class name="android/appwidget/AppWidgetManager" since="3">
+		<extends name="java/lang/Object" />
+		<method name="bindAppWidgetId(ILandroid/content/ComponentName;)V" />
+		<method name="getAppWidgetIds(Landroid/content/ComponentName;)[I" />
+		<method name="getAppWidgetInfo(I)Landroid/appwidget/AppWidgetProviderInfo;" />
+		<method name="getInstalledProviders()Ljava/util/List;" />
+		<method name="getInstance(Landroid/content/Context;)Landroid/appwidget/AppWidgetManager;" />
+		<method name="notifyAppWidgetViewDataChanged(II)V" since="11" />
+		<method name="notifyAppWidgetViewDataChanged([II)V" since="11" />
+		<method name="partiallyUpdateAppWidget(ILandroid/widget/RemoteViews;)V" since="11" />
+		<method name="partiallyUpdateAppWidget([ILandroid/widget/RemoteViews;)V" since="11" />
+		<method name="updateAppWidget(ILandroid/widget/RemoteViews;)V" />
+		<method name="updateAppWidget(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V" />
+		<method name="updateAppWidget([ILandroid/widget/RemoteViews;)V" />
+		<field name="ACTION_APPWIDGET_CONFIGURE" />
+		<field name="ACTION_APPWIDGET_DELETED" />
+		<field name="ACTION_APPWIDGET_DISABLED" />
+		<field name="ACTION_APPWIDGET_ENABLED" />
+		<field name="ACTION_APPWIDGET_PICK" />
+		<field name="ACTION_APPWIDGET_UPDATE" />
+		<field name="EXTRA_APPWIDGET_ID" />
+		<field name="EXTRA_APPWIDGET_IDS" />
+		<field name="EXTRA_CUSTOM_EXTRAS" />
+		<field name="EXTRA_CUSTOM_INFO" />
+		<field name="INVALID_APPWIDGET_ID" />
+		<field name="META_DATA_APPWIDGET_PROVIDER" />
+	</class>
+	<class name="android/appwidget/AppWidgetProvider" since="3">
+		<extends name="android/content/BroadcastReceiver" />
+		<method name="&lt;init>()V" />
+		<method name="onDeleted(Landroid/content/Context;[I)V" />
+		<method name="onDisabled(Landroid/content/Context;)V" />
+		<method name="onEnabled(Landroid/content/Context;)V" />
+		<method name="onReceive(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="onUpdate(Landroid/content/Context;Landroid/appwidget/AppWidgetManager;[I)V" />
+	</class>
+	<class name="android/appwidget/AppWidgetProviderInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="RESIZE_BOTH" since="12" />
+		<field name="RESIZE_HORIZONTAL" since="12" />
+		<field name="RESIZE_NONE" since="12" />
+		<field name="RESIZE_VERTICAL" since="12" />
+		<field name="autoAdvanceViewId" since="11" />
+		<field name="configure" />
+		<field name="icon" />
+		<field name="initialLayout" />
+		<field name="label" />
+		<field name="minHeight" />
+		<field name="minResizeHeight" since="14" />
+		<field name="minResizeWidth" since="14" />
+		<field name="minWidth" />
+		<field name="previewImage" since="11" />
+		<field name="provider" />
+		<field name="resizeMode" since="12" />
+		<field name="updatePeriodMillis" />
+	</class>
+	<class name="android/bluetooth/BluetoothA2dp" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/bluetooth/BluetoothProfile" />
+		<method name="getConnectedDevices()Ljava/util/List;" />
+		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
+		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
+		<method name="isA2dpPlaying(Landroid/bluetooth/BluetoothDevice;)Z" />
+		<field name="ACTION_CONNECTION_STATE_CHANGED" />
+		<field name="ACTION_PLAYING_STATE_CHANGED" />
+		<field name="STATE_NOT_PLAYING" />
+		<field name="STATE_PLAYING" />
+	</class>
+	<class name="android/bluetooth/BluetoothAdapter" since="5">
+		<extends name="java/lang/Object" />
+		<method name="cancelDiscovery()Z" />
+		<method name="checkBluetoothAddress(Ljava/lang/String;)Z" />
+		<method name="closeProfileProxy(ILandroid/bluetooth/BluetoothProfile;)V" since="11" />
+		<method name="disable()Z" />
+		<method name="enable()Z" />
+		<method name="getAddress()Ljava/lang/String;" />
+		<method name="getBondedDevices()Ljava/util/Set;" />
+		<method name="getDefaultAdapter()Landroid/bluetooth/BluetoothAdapter;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getProfileConnectionState(I)I" since="14" />
+		<method name="getProfileProxy(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;I)Z" since="11" />
+		<method name="getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice;" />
+		<method name="getScanMode()I" />
+		<method name="getState()I" />
+		<method name="isDiscovering()Z" />
+		<method name="isEnabled()Z" />
+		<method name="listenUsingInsecureRfcommWithServiceRecord(Ljava/lang/String;Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;" since="10" />
+		<method name="listenUsingRfcommWithServiceRecord(Ljava/lang/String;Ljava/util/UUID;)Landroid/bluetooth/BluetoothServerSocket;" />
+		<method name="setName(Ljava/lang/String;)Z" />
+		<method name="startDiscovery()Z" />
+		<field name="ACTION_CONNECTION_STATE_CHANGED" since="11" />
+		<field name="ACTION_DISCOVERY_FINISHED" />
+		<field name="ACTION_DISCOVERY_STARTED" />
+		<field name="ACTION_LOCAL_NAME_CHANGED" />
+		<field name="ACTION_REQUEST_DISCOVERABLE" />
+		<field name="ACTION_REQUEST_ENABLE" />
+		<field name="ACTION_SCAN_MODE_CHANGED" />
+		<field name="ACTION_STATE_CHANGED" />
+		<field name="ERROR" />
+		<field name="EXTRA_CONNECTION_STATE" since="11" />
+		<field name="EXTRA_DISCOVERABLE_DURATION" />
+		<field name="EXTRA_LOCAL_NAME" />
+		<field name="EXTRA_PREVIOUS_CONNECTION_STATE" since="11" />
+		<field name="EXTRA_PREVIOUS_SCAN_MODE" />
+		<field name="EXTRA_PREVIOUS_STATE" />
+		<field name="EXTRA_SCAN_MODE" />
+		<field name="EXTRA_STATE" />
+		<field name="SCAN_MODE_CONNECTABLE" />
+		<field name="SCAN_MODE_CONNECTABLE_DISCOVERABLE" />
+		<field name="SCAN_MODE_NONE" />
+		<field name="STATE_CONNECTED" since="11" />
+		<field name="STATE_CONNECTING" since="11" />
+		<field name="STATE_DISCONNECTED" since="11" />
+		<field name="STATE_DISCONNECTING" since="11" />
+		<field name="STATE_OFF" />
+		<field name="STATE_ON" />
+		<field name="STATE_TURNING_OFF" />
+		<field name="STATE_TURNING_ON" />
+	</class>
+	<class name="android/bluetooth/BluetoothAssignedNumbers" since="11">
+		<extends name="java/lang/Object" />
+		<field name="ACCEL_SEMICONDUCTOR" />
+		<field name="ALCATEL" />
+		<field name="APPLE" />
+		<field name="APT_LICENSING" />
+		<field name="ATHEROS_COMMUNICATIONS" />
+		<field name="ATMEL" />
+		<field name="AVAGO" />
+		<field name="AVM_BERLIN" />
+		<field name="BANDSPEED" />
+		<field name="BELKIN_INTERNATIONAL" />
+		<field name="BLUEGIGA" />
+		<field name="BLUETOOTH_SIG" />
+		<field name="BROADCOM" />
+		<field name="CAMBRIDGE_SILICON_RADIO" />
+		<field name="CATC" />
+		<field name="COMMIL" />
+		<field name="CONEXANT_SYSTEMS" />
+		<field name="CONTINENTAL_AUTOMOTIVE" />
+		<field name="CONWISE_TECHNOLOGY" />
+		<field name="C_TECHNOLOGIES" />
+		<field name="DIGIANSWER" />
+		<field name="ECLIPSE" />
+		<field name="EM_MICROELECTRONIC_MARIN" />
+		<field name="ERICSSON_TECHNOLOGY" />
+		<field name="FREE2MOVE" />
+		<field name="GCT_SEMICONDUCTOR" />
+		<field name="GENNUM" />
+		<field name="HARMAN_INTERNATIONAL" />
+		<field name="HITACHI" />
+		<field name="IBM" />
+		<field name="INFINEON_TECHNOLOGIES" />
+		<field name="INTEGRATED_SILICON_SOLUTION" />
+		<field name="INTEGRATED_SYSTEM_SOLUTION" />
+		<field name="INTEL" />
+		<field name="INVENTEL" />
+		<field name="IPEXTREME" />
+		<field name="J_AND_M" />
+		<field name="KC_TECHNOLOGY" />
+		<field name="LUCENT" />
+		<field name="MACRONIX" />
+		<field name="MANSELLA" />
+		<field name="MARVELL" />
+		<field name="MATSUSHITA_ELECTRIC" />
+		<field name="MEDIATEK" />
+		<field name="MEWTEL_TECHNOLOGY" />
+		<field name="MICROSOFT" />
+		<field name="MITEL_SEMICONDUCTOR" />
+		<field name="MITSUBISHI_ELECTRIC" />
+		<field name="MOBILIAN_CORPORATION" />
+		<field name="MOTOROLA" />
+		<field name="NEC" />
+		<field name="NEWLOGIC" />
+		<field name="NOKIA_MOBILE_PHONES" />
+		<field name="NORDIC_SEMICONDUCTOR" />
+		<field name="NORWOOD_SYSTEMS" />
+		<field name="OPEN_INTERFACE" />
+		<field name="PARROT" />
+		<field name="PARTHUS_TECHNOLOGIES" />
+		<field name="PHILIPS_SEMICONDUCTORS" />
+		<field name="PLANTRONICS" />
+		<field name="QUALCOMM" />
+		<field name="RALINK_TECHNOLOGY" />
+		<field name="REALTEK_SEMICONDUCTOR" />
+		<field name="RED_M" />
+		<field name="RENESAS_TECHNOLOGY" />
+		<field name="RESEARCH_IN_MOTION" />
+		<field name="RF_MICRO_DEVICES" />
+		<field name="RIVIERAWAVES" />
+		<field name="ROHDE_AND_SCHWARZ" />
+		<field name="RTX_TELECOM" />
+		<field name="SEIKO_EPSON" />
+		<field name="SIGNIA_TECHNOLOGIES" />
+		<field name="SILICON_WAVE" />
+		<field name="SIRF_TECHNOLOGY" />
+		<field name="SOCKET_MOBILE" />
+		<field name="SONY_ERICSSON" />
+		<field name="STACCATO_COMMUNICATIONS" />
+		<field name="STONESTREET_ONE" />
+		<field name="ST_MICROELECTRONICS" />
+		<field name="SYMBOL_TECHNOLOGIES" />
+		<field name="SYNOPSYS" />
+		<field name="SYSTEMS_AND_CHIPS" />
+		<field name="TENOVIS" />
+		<field name="TERAX" />
+		<field name="TEXAS_INSTRUMENTS" />
+		<field name="THREECOM" />
+		<field name="THREE_DIJOY" />
+		<field name="THREE_DSP" />
+		<field name="TOSHIBA" />
+		<field name="TRANSILICA" />
+		<field name="TTPCOM" />
+		<field name="TZERO_TECHNOLOGIES" />
+		<field name="VIZIO" />
+		<field name="WAVEPLUS_TECHNOLOGY" />
+		<field name="WICENTRIC" />
+		<field name="WIDCOMM" />
+		<field name="ZEEVO" />
+	</class>
+	<class name="android/bluetooth/BluetoothClass" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getDeviceClass()I" />
+		<method name="getMajorDeviceClass()I" />
+		<method name="hasService(I)Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/bluetooth/BluetoothClass$Device" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="AUDIO_VIDEO_CAMCORDER" />
+		<field name="AUDIO_VIDEO_CAR_AUDIO" />
+		<field name="AUDIO_VIDEO_HANDSFREE" />
+		<field name="AUDIO_VIDEO_HEADPHONES" />
+		<field name="AUDIO_VIDEO_HIFI_AUDIO" />
+		<field name="AUDIO_VIDEO_LOUDSPEAKER" />
+		<field name="AUDIO_VIDEO_MICROPHONE" />
+		<field name="AUDIO_VIDEO_PORTABLE_AUDIO" />
+		<field name="AUDIO_VIDEO_SET_TOP_BOX" />
+		<field name="AUDIO_VIDEO_UNCATEGORIZED" />
+		<field name="AUDIO_VIDEO_VCR" />
+		<field name="AUDIO_VIDEO_VIDEO_CAMERA" />
+		<field name="AUDIO_VIDEO_VIDEO_CONFERENCING" />
+		<field name="AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER" />
+		<field name="AUDIO_VIDEO_VIDEO_GAMING_TOY" />
+		<field name="AUDIO_VIDEO_VIDEO_MONITOR" />
+		<field name="AUDIO_VIDEO_WEARABLE_HEADSET" />
+		<field name="COMPUTER_DESKTOP" />
+		<field name="COMPUTER_HANDHELD_PC_PDA" />
+		<field name="COMPUTER_LAPTOP" />
+		<field name="COMPUTER_PALM_SIZE_PC_PDA" />
+		<field name="COMPUTER_SERVER" />
+		<field name="COMPUTER_UNCATEGORIZED" />
+		<field name="COMPUTER_WEARABLE" />
+		<field name="HEALTH_BLOOD_PRESSURE" />
+		<field name="HEALTH_DATA_DISPLAY" />
+		<field name="HEALTH_GLUCOSE" />
+		<field name="HEALTH_PULSE_OXIMETER" />
+		<field name="HEALTH_PULSE_RATE" />
+		<field name="HEALTH_THERMOMETER" />
+		<field name="HEALTH_UNCATEGORIZED" />
+		<field name="HEALTH_WEIGHING" />
+		<field name="PHONE_CELLULAR" />
+		<field name="PHONE_CORDLESS" />
+		<field name="PHONE_ISDN" />
+		<field name="PHONE_MODEM_OR_GATEWAY" />
+		<field name="PHONE_SMART" />
+		<field name="PHONE_UNCATEGORIZED" />
+		<field name="TOY_CONTROLLER" />
+		<field name="TOY_DOLL_ACTION_FIGURE" />
+		<field name="TOY_GAME" />
+		<field name="TOY_ROBOT" />
+		<field name="TOY_UNCATEGORIZED" />
+		<field name="TOY_VEHICLE" />
+		<field name="WEARABLE_GLASSES" />
+		<field name="WEARABLE_HELMET" />
+		<field name="WEARABLE_JACKET" />
+		<field name="WEARABLE_PAGER" />
+		<field name="WEARABLE_UNCATEGORIZED" />
+		<field name="WEARABLE_WRIST_WATCH" />
+	</class>
+	<class name="android/bluetooth/BluetoothClass$Device$Major" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="AUDIO_VIDEO" />
+		<field name="COMPUTER" />
+		<field name="HEALTH" />
+		<field name="IMAGING" />
+		<field name="MISC" />
+		<field name="NETWORKING" />
+		<field name="PERIPHERAL" />
+		<field name="PHONE" />
+		<field name="TOY" />
+		<field name="UNCATEGORIZED" />
+		<field name="WEARABLE" />
+	</class>
+	<class name="android/bluetooth/BluetoothClass$Service" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="AUDIO" />
+		<field name="CAPTURE" />
+		<field name="INFORMATION" />
+		<field name="LIMITED_DISCOVERABILITY" />
+		<field name="NETWORKING" />
+		<field name="OBJECT_TRANSFER" />
+		<field name="POSITIONING" />
+		<field name="RENDER" />
+		<field name="TELEPHONY" />
+	</class>
+	<class name="android/bluetooth/BluetoothDevice" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="createInsecureRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" since="10" />
+		<method name="createRfcommSocketToServiceRecord(Ljava/util/UUID;)Landroid/bluetooth/BluetoothSocket;" />
+		<method name="describeContents()I" />
+		<method name="fetchUuidsWithSdp()Z" since="15" />
+		<method name="getAddress()Ljava/lang/String;" />
+		<method name="getBluetoothClass()Landroid/bluetooth/BluetoothClass;" />
+		<method name="getBondState()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getUuids()[Landroid/os/ParcelUuid;" since="15" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_ACL_CONNECTED" />
+		<field name="ACTION_ACL_DISCONNECTED" />
+		<field name="ACTION_ACL_DISCONNECT_REQUESTED" />
+		<field name="ACTION_BOND_STATE_CHANGED" />
+		<field name="ACTION_CLASS_CHANGED" />
+		<field name="ACTION_FOUND" />
+		<field name="ACTION_NAME_CHANGED" />
+		<field name="ACTION_UUID" since="15" />
+		<field name="BOND_BONDED" />
+		<field name="BOND_BONDING" />
+		<field name="BOND_NONE" />
+		<field name="CREATOR" />
+		<field name="ERROR" />
+		<field name="EXTRA_BOND_STATE" />
+		<field name="EXTRA_CLASS" />
+		<field name="EXTRA_DEVICE" />
+		<field name="EXTRA_NAME" />
+		<field name="EXTRA_PREVIOUS_BOND_STATE" />
+		<field name="EXTRA_RSSI" />
+		<field name="EXTRA_UUID" since="15" />
+	</class>
+	<class name="android/bluetooth/BluetoothHeadset" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/bluetooth/BluetoothProfile" />
+		<method name="getConnectedDevices()Ljava/util/List;" />
+		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
+		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
+		<method name="isAudioConnected(Landroid/bluetooth/BluetoothDevice;)Z" />
+		<method name="startVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z" />
+		<method name="stopVoiceRecognition(Landroid/bluetooth/BluetoothDevice;)Z" />
+		<field name="ACTION_AUDIO_STATE_CHANGED" />
+		<field name="ACTION_CONNECTION_STATE_CHANGED" />
+		<field name="ACTION_VENDOR_SPECIFIC_HEADSET_EVENT" />
+		<field name="AT_CMD_TYPE_ACTION" />
+		<field name="AT_CMD_TYPE_BASIC" />
+		<field name="AT_CMD_TYPE_READ" />
+		<field name="AT_CMD_TYPE_SET" />
+		<field name="AT_CMD_TYPE_TEST" />
+		<field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS" />
+		<field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD" />
+		<field name="EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE" />
+		<field name="STATE_AUDIO_CONNECTED" />
+		<field name="STATE_AUDIO_CONNECTING" />
+		<field name="STATE_AUDIO_DISCONNECTED" />
+		<field name="VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY" />
+	</class>
+	<class name="android/bluetooth/BluetoothHealth" since="14">
+		<implements name="android/bluetooth/BluetoothProfile" />
+		<method name="connectChannelToSource(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z" />
+		<method name="disconnectChannel(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;I)Z" />
+		<method name="getConnectedDevices()Ljava/util/List;" />
+		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
+		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
+		<method name="getMainChannelFd(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothHealthAppConfiguration;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="registerSinkAppConfiguration(Ljava/lang/String;ILandroid/bluetooth/BluetoothHealthCallback;)Z" />
+		<method name="unregisterAppConfiguration(Landroid/bluetooth/BluetoothHealthAppConfiguration;)Z" />
+		<field name="APP_CONFIG_REGISTRATION_FAILURE" />
+		<field name="APP_CONFIG_REGISTRATION_SUCCESS" />
+		<field name="APP_CONFIG_UNREGISTRATION_FAILURE" />
+		<field name="APP_CONFIG_UNREGISTRATION_SUCCESS" />
+		<field name="CHANNEL_TYPE_RELIABLE" />
+		<field name="CHANNEL_TYPE_STREAMING" />
+		<field name="SINK_ROLE" />
+		<field name="SOURCE_ROLE" />
+		<field name="STATE_CHANNEL_CONNECTED" />
+		<field name="STATE_CHANNEL_CONNECTING" />
+		<field name="STATE_CHANNEL_DISCONNECTED" />
+		<field name="STATE_CHANNEL_DISCONNECTING" />
+	</class>
+	<class name="android/bluetooth/BluetoothHealthAppConfiguration" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getDataType()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getRole()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/bluetooth/BluetoothHealthCallback" since="14">
+		<method name="&lt;init>()V" />
+		<method name="onHealthAppConfigurationStatusChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;I)V" />
+		<method name="onHealthChannelStateChange(Landroid/bluetooth/BluetoothHealthAppConfiguration;Landroid/bluetooth/BluetoothDevice;IILandroid/os/ParcelFileDescriptor;I)V" />
+	</class>
+	<class name="android/bluetooth/BluetoothProfile" since="11">
+		<method name="getConnectedDevices()Ljava/util/List;" />
+		<method name="getConnectionState(Landroid/bluetooth/BluetoothDevice;)I" />
+		<method name="getDevicesMatchingConnectionStates([I)Ljava/util/List;" />
+		<field name="A2DP" />
+		<field name="EXTRA_PREVIOUS_STATE" />
+		<field name="EXTRA_STATE" />
+		<field name="HEADSET" />
+		<field name="HEALTH" since="14" />
+		<field name="STATE_CONNECTED" />
+		<field name="STATE_CONNECTING" />
+		<field name="STATE_DISCONNECTED" />
+		<field name="STATE_DISCONNECTING" />
+	</class>
+	<class name="android/bluetooth/BluetoothProfile$ServiceListener" since="11">
+		<method name="onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V" />
+		<method name="onServiceDisconnected(I)V" />
+	</class>
+	<class name="android/bluetooth/BluetoothServerSocket" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<method name="accept()Landroid/bluetooth/BluetoothSocket;" />
+		<method name="accept(I)Landroid/bluetooth/BluetoothSocket;" />
+		<method name="close()V" />
+	</class>
+	<class name="android/bluetooth/BluetoothSocket" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<method name="close()V" />
+		<method name="connect()V" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="getRemoteDevice()Landroid/bluetooth/BluetoothDevice;" />
+		<method name="isConnected()Z" since="14" />
+	</class>
+	<class name="android/content/AbstractThreadedSyncAdapter" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Z)V" />
+		<method name="&lt;init>(Landroid/content/Context;ZZ)V" since="11" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getSyncAdapterBinder()Landroid/os/IBinder;" />
+		<method name="onPerformSync(Landroid/accounts/Account;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/ContentProviderClient;Landroid/content/SyncResult;)V" />
+		<method name="onSyncCanceled()V" since="8" />
+		<method name="onSyncCanceled(Ljava/lang/Thread;)V" since="11" />
+		<field name="LOG_SYNC_DETAILS" />
+	</class>
+	<class name="android/content/ActivityNotFoundException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/AsyncQueryHandler" since="1">
+		<extends name="android/os/Handler" />
+		<method name="&lt;init>(Landroid/content/ContentResolver;)V" />
+		<method name="cancelOperation(I)V" />
+		<method name="createHandler(Landroid/os/Looper;)Landroid/os/Handler;" />
+		<method name="onDeleteComplete(ILjava/lang/Object;I)V" />
+		<method name="onInsertComplete(ILjava/lang/Object;Landroid/net/Uri;)V" />
+		<method name="onQueryComplete(ILjava/lang/Object;Landroid/database/Cursor;)V" />
+		<method name="onUpdateComplete(ILjava/lang/Object;I)V" />
+		<method name="startDelete(ILjava/lang/Object;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)V" />
+		<method name="startInsert(ILjava/lang/Object;Landroid/net/Uri;Landroid/content/ContentValues;)V" />
+		<method name="startQuery(ILjava/lang/Object;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="startUpdate(ILjava/lang/Object;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/AsyncQueryHandler$WorkerArgs" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="cookie" />
+		<field name="handler" />
+		<field name="orderBy" />
+		<field name="projection" />
+		<field name="result" />
+		<field name="selection" />
+		<field name="selectionArgs" />
+		<field name="uri" />
+		<field name="values" />
+	</class>
+	<class name="android/content/AsyncQueryHandler$WorkerHandler" since="1">
+		<extends name="android/os/Handler" />
+		<method name="&lt;init>(Landroid/os/Looper;)V" />
+	</class>
+	<class name="android/content/AsyncTaskLoader" since="11">
+		<extends name="android/content/Loader" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="cancelLoad()Z" />
+		<method name="loadInBackground()LD;" />
+		<method name="onCanceled(LD;)V" />
+		<method name="onLoadInBackground()LD;" />
+		<method name="setUpdateThrottle(J)V" />
+	</class>
+	<class name="android/content/BroadcastReceiver" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="abortBroadcast()V" />
+		<method name="clearAbortBroadcast()V" />
+		<method name="getAbortBroadcast()Z" />
+		<method name="getDebugUnregister()Z" />
+		<method name="getResultCode()I" />
+		<method name="getResultData()Ljava/lang/String;" />
+		<method name="getResultExtras(Z)Landroid/os/Bundle;" />
+		<method name="goAsync()Landroid/content/BroadcastReceiver$PendingResult;" since="11" />
+		<method name="isInitialStickyBroadcast()Z" since="5" />
+		<method name="isOrderedBroadcast()Z" since="5" />
+		<method name="onReceive(Landroid/content/Context;Landroid/content/Intent;)V" />
+		<method name="peekService(Landroid/content/Context;Landroid/content/Intent;)Landroid/os/IBinder;" since="3" />
+		<method name="setDebugUnregister(Z)V" />
+		<method name="setOrderedHint(Z)V" />
+		<method name="setResult(ILjava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="setResultCode(I)V" />
+		<method name="setResultData(Ljava/lang/String;)V" />
+		<method name="setResultExtras(Landroid/os/Bundle;)V" />
+	</class>
+	<class name="android/content/BroadcastReceiver$PendingResult" since="11">
+		<extends name="java/lang/Object" />
+		<method name="abortBroadcast()V" />
+		<method name="clearAbortBroadcast()V" />
+		<method name="finish()V" />
+		<method name="getAbortBroadcast()Z" />
+		<method name="getResultCode()I" />
+		<method name="getResultData()Ljava/lang/String;" />
+		<method name="getResultExtras(Z)Landroid/os/Bundle;" />
+		<method name="setResult(ILjava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="setResultCode(I)V" />
+		<method name="setResultData(Ljava/lang/String;)V" />
+		<method name="setResultExtras(Landroid/os/Bundle;)V" />
+	</class>
+	<class name="android/content/ClipData" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/content/ClipDescription;Landroid/content/ClipData$Item;)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;[Ljava/lang/String;Landroid/content/ClipData$Item;)V" />
+		<method name="addItem(Landroid/content/ClipData$Item;)V" />
+		<method name="describeContents()I" />
+		<method name="getDescription()Landroid/content/ClipDescription;" />
+		<method name="getItemAt(I)Landroid/content/ClipData$Item;" />
+		<method name="getItemCount()I" />
+		<method name="newIntent(Ljava/lang/CharSequence;Landroid/content/Intent;)Landroid/content/ClipData;" />
+		<method name="newPlainText(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Landroid/content/ClipData;" />
+		<method name="newRawUri(Ljava/lang/CharSequence;Landroid/net/Uri;)Landroid/content/ClipData;" />
+		<method name="newUri(Landroid/content/ContentResolver;Ljava/lang/CharSequence;Landroid/net/Uri;)Landroid/content/ClipData;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/ClipData$Item" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Intent;)V" />
+		<method name="&lt;init>(Landroid/net/Uri;)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/content/Intent;Landroid/net/Uri;)V" />
+		<method name="coerceToText(Landroid/content/Context;)Ljava/lang/CharSequence;" />
+		<method name="getIntent()Landroid/content/Intent;" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="getUri()Landroid/net/Uri;" />
+	</class>
+	<class name="android/content/ClipDescription" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/content/ClipDescription;)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;[Ljava/lang/String;)V" />
+		<method name="compareMimeTypes(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="describeContents()I" />
+		<method name="filterMimeTypes(Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="getLabel()Ljava/lang/CharSequence;" />
+		<method name="getMimeType(I)Ljava/lang/String;" />
+		<method name="getMimeTypeCount()I" />
+		<method name="hasMimeType(Ljava/lang/String;)Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="MIMETYPE_TEXT_INTENT" />
+		<field name="MIMETYPE_TEXT_PLAIN" />
+		<field name="MIMETYPE_TEXT_URILIST" />
+	</class>
+	<class name="android/content/ClipboardManager" since="11">
+		<extends name="android/text/ClipboardManager" />
+		<method name="addPrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V" />
+		<method name="getPrimaryClip()Landroid/content/ClipData;" />
+		<method name="getPrimaryClipDescription()Landroid/content/ClipDescription;" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="hasPrimaryClip()Z" />
+		<method name="hasText()Z" />
+		<method name="removePrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V" />
+		<method name="setPrimaryClip(Landroid/content/ClipData;)V" />
+		<method name="setText(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/content/ClipboardManager$OnPrimaryClipChangedListener" since="11">
+		<method name="onPrimaryClipChanged()V" />
+	</class>
+	<class name="android/content/ComponentCallbacks" since="1">
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="onLowMemory()V" />
+	</class>
+	<class name="android/content/ComponentCallbacks2" since="14">
+		<implements name="android/content/ComponentCallbacks" />
+		<method name="onTrimMemory(I)V" />
+		<field name="TRIM_MEMORY_BACKGROUND" />
+		<field name="TRIM_MEMORY_COMPLETE" />
+		<field name="TRIM_MEMORY_MODERATE" />
+		<field name="TRIM_MEMORY_UI_HIDDEN" />
+	</class>
+	<class name="android/content/ComponentName" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<implements name="java/lang/Comparable" since="4" />
+		<implements name="java/lang/Cloneable" since="8" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Landroid/content/ComponentName;" since="8" />
+		<method name="compareTo(Landroid/content/ComponentName;)I" since="4" />
+		<method name="describeContents()I" />
+		<method name="flattenToShortString()Ljava/lang/String;" />
+		<method name="flattenToString()Ljava/lang/String;" />
+		<method name="getClassName()Ljava/lang/String;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getShortClassName()Ljava/lang/String;" />
+		<method name="readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName;" />
+		<method name="toShortString()Ljava/lang/String;" />
+		<method name="unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName;" />
+		<method name="writeToParcel(Landroid/content/ComponentName;Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/ContentProvider" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/content/ComponentCallbacks" />
+		<implements name="android/content/ComponentCallbacks2" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" since="5" />
+		<method name="attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V" />
+		<method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I" />
+		<method name="call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="11" />
+		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getPathPermissions()[Landroid/content/pm/PathPermission;" since="4" />
+		<method name="getReadPermission()Ljava/lang/String;" />
+		<method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11" />
+		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
+		<method name="getWritePermission()Ljava/lang/String;" />
+		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
+		<method name="isTemporary()Z" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="onCreate()Z" />
+		<method name="onLowMemory()V" />
+		<method name="onTrimMemory(I)V" since="14" />
+		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3" />
+		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="openFileHelper(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="openPipeHelper(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;LT;Landroid/content/ContentProvider$PipeDataWriter;)Landroid/os/ParcelFileDescriptor;" since="11" />
+		<method name="openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
+		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="setPathPermissions([Landroid/content/pm/PathPermission;)V" since="4" />
+		<method name="setReadPermission(Ljava/lang/String;)V" />
+		<method name="setWritePermission(Ljava/lang/String;)V" />
+		<method name="shutdown()V" since="11" />
+		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
+	</class>
+	<class name="android/content/ContentProvider$PipeDataWriter" since="11">
+		<method name="writeDataToPipe(Landroid/os/ParcelFileDescriptor;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;LT;)V" />
+	</class>
+	<class name="android/content/ContentProviderClient" since="5">
+		<extends name="java/lang/Object" />
+		<method name="applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" />
+		<method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I" />
+		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="getLocalContentProvider()Landroid/content/ContentProvider;" />
+		<method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11" />
+		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
+		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
+		<method name="openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
+		<method name="openFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
+		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="release()Z" />
+		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
+	</class>
+	<class name="android/content/ContentProviderOperation" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="apply(Landroid/content/ContentProvider;[Landroid/content/ContentProviderResult;I)Landroid/content/ContentProviderResult;" />
+		<method name="describeContents()I" />
+		<method name="getUri()Landroid/net/Uri;" />
+		<method name="isReadOperation()Z" />
+		<method name="isWriteOperation()Z" />
+		<method name="isYieldAllowed()Z" />
+		<method name="newAssertQuery(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="newDelete(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="newInsert(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="newUpdate(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="resolveSelectionArgsBackReferences([Landroid/content/ContentProviderResult;I)[Ljava/lang/String;" />
+		<method name="resolveValueBackReferences([Landroid/content/ContentProviderResult;I)Landroid/content/ContentValues;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/ContentProviderOperation$Builder" since="5">
+		<extends name="java/lang/Object" />
+		<method name="build()Landroid/content/ContentProviderOperation;" />
+		<method name="withExpectedCount(I)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withSelection(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withSelectionBackReference(II)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withValueBackReference(Ljava/lang/String;I)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withValueBackReferences(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withValues(Landroid/content/ContentValues;)Landroid/content/ContentProviderOperation$Builder;" />
+		<method name="withYieldAllowed(Z)Landroid/content/ContentProviderOperation$Builder;" />
+	</class>
+	<class name="android/content/ContentProviderResult" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/net/Uri;)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="count" />
+		<field name="uri" />
+	</class>
+	<class name="android/content/ContentQueryMap" since="1">
+		<extends name="java/util/Observable" />
+		<method name="&lt;init>(Landroid/database/Cursor;Ljava/lang/String;ZLandroid/os/Handler;)V" />
+		<method name="close()V" />
+		<method name="getRows()Ljava/util/Map;" />
+		<method name="getValues(Ljava/lang/String;)Landroid/content/ContentValues;" />
+		<method name="requery()V" />
+		<method name="setKeepUpdated(Z)V" />
+	</class>
+	<class name="android/content/ContentResolver" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;" since="5" />
+		<method name="acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;" since="5" />
+		<method name="addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V" since="8" />
+		<method name="addStatusChangeListener(ILandroid/content/SyncStatusObserver;)Ljava/lang/Object;" since="5" />
+		<method name="applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;" since="5" />
+		<method name="bulkInsert(Landroid/net/Uri;[Landroid/content/ContentValues;)I" />
+		<method name="call(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;" since="11" />
+		<method name="cancelSync(Landroid/accounts/Account;Ljava/lang/String;)V" since="5" />
+		<method name="cancelSync(Landroid/net/Uri;)V" />
+		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="getCurrentSync()Landroid/content/SyncInfo;" since="8" />
+		<method name="getCurrentSyncs()Ljava/util/List;" since="11" />
+		<method name="getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I" since="5" />
+		<method name="getMasterSyncAutomatically()Z" since="5" />
+		<method name="getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;)Ljava/util/List;" since="8" />
+		<method name="getStreamTypes(Landroid/net/Uri;Ljava/lang/String;)[Ljava/lang/String;" since="11" />
+		<method name="getSyncAdapterTypes()[Landroid/content/SyncAdapterType;" since="5" />
+		<method name="getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5" />
+		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
+		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
+		<method name="isSyncActive(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5" />
+		<method name="isSyncPending(Landroid/accounts/Account;Ljava/lang/String;)Z" since="5" />
+		<method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V" />
+		<method name="notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;Z)V" />
+		<method name="openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" since="3" />
+		<method name="openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="openInputStream(Landroid/net/Uri;)Ljava/io/InputStream;" />
+		<method name="openOutputStream(Landroid/net/Uri;)Ljava/io/OutputStream;" />
+		<method name="openOutputStream(Landroid/net/Uri;Ljava/lang/String;)Ljava/io/OutputStream;" since="3" />
+		<method name="openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;" since="11" />
+		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V" />
+		<method name="removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="8" />
+		<method name="removeStatusChangeListener(Ljava/lang/Object;)V" since="5" />
+		<method name="requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V" since="5" />
+		<method name="setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V" since="5" />
+		<method name="setMasterSyncAutomatically(Z)V" since="5" />
+		<method name="setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V" since="5" />
+		<method name="startSync(Landroid/net/Uri;Landroid/os/Bundle;)V" />
+		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="validateSyncExtrasBundle(Landroid/os/Bundle;)V" />
+		<field name="CURSOR_DIR_BASE_TYPE" />
+		<field name="CURSOR_ITEM_BASE_TYPE" />
+		<field name="SCHEME_ANDROID_RESOURCE" />
+		<field name="SCHEME_CONTENT" />
+		<field name="SCHEME_FILE" />
+		<field name="SYNC_EXTRAS_ACCOUNT" />
+		<field name="SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS" />
+		<field name="SYNC_EXTRAS_DO_NOT_RETRY" since="8" />
+		<field name="SYNC_EXTRAS_EXPEDITED" />
+		<field name="SYNC_EXTRAS_FORCE" />
+		<field name="SYNC_EXTRAS_IGNORE_BACKOFF" since="8" />
+		<field name="SYNC_EXTRAS_IGNORE_SETTINGS" since="8" />
+		<field name="SYNC_EXTRAS_INITIALIZE" since="5" />
+		<field name="SYNC_EXTRAS_MANUAL" since="5" />
+		<field name="SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS" />
+		<field name="SYNC_EXTRAS_UPLOAD" />
+		<field name="SYNC_OBSERVER_TYPE_ACTIVE" since="8" />
+		<field name="SYNC_OBSERVER_TYPE_PENDING" since="8" />
+		<field name="SYNC_OBSERVER_TYPE_SETTINGS" since="8" />
+	</class>
+	<class name="android/content/ContentUris" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder;" />
+		<method name="parseId(Landroid/net/Uri;)J" />
+		<method name="withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;" />
+	</class>
+	<class name="android/content/ContentValues" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/content/ContentValues;)V" />
+		<method name="clear()V" />
+		<method name="containsKey(Ljava/lang/String;)Z" />
+		<method name="describeContents()I" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getAsBoolean(Ljava/lang/String;)Ljava/lang/Boolean;" />
+		<method name="getAsByte(Ljava/lang/String;)Ljava/lang/Byte;" />
+		<method name="getAsByteArray(Ljava/lang/String;)[B" />
+		<method name="getAsDouble(Ljava/lang/String;)Ljava/lang/Double;" />
+		<method name="getAsFloat(Ljava/lang/String;)Ljava/lang/Float;" />
+		<method name="getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;" />
+		<method name="getAsLong(Ljava/lang/String;)Ljava/lang/Long;" />
+		<method name="getAsShort(Ljava/lang/String;)Ljava/lang/Short;" />
+		<method name="getAsString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="keySet()Ljava/util/Set;" since="11" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Boolean;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Byte;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Double;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Float;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Integer;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Long;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Short;)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="put(Ljava/lang/String;[B)V" />
+		<method name="putAll(Landroid/content/ContentValues;)V" />
+		<method name="putNull(Ljava/lang/String;)V" />
+		<method name="remove(Ljava/lang/String;)V" />
+		<method name="size()I" />
+		<method name="valueSet()Ljava/util/Set;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="TAG" />
+	</class>
+	<class name="android/content/Context" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z" />
+		<method name="checkCallingOrSelfPermission(Ljava/lang/String;)I" />
+		<method name="checkCallingOrSelfUriPermission(Landroid/net/Uri;I)I" />
+		<method name="checkCallingPermission(Ljava/lang/String;)I" />
+		<method name="checkCallingUriPermission(Landroid/net/Uri;I)I" />
+		<method name="checkPermission(Ljava/lang/String;II)I" />
+		<method name="checkUriPermission(Landroid/net/Uri;III)I" />
+		<method name="checkUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;III)I" />
+		<method name="clearWallpaper()V" />
+		<method name="createPackageContext(Ljava/lang/String;I)Landroid/content/Context;" />
+		<method name="databaseList()[Ljava/lang/String;" />
+		<method name="deleteDatabase(Ljava/lang/String;)Z" />
+		<method name="deleteFile(Ljava/lang/String;)Z" />
+		<method name="enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="enforceCallingOrSelfUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
+		<method name="enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="enforceCallingUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
+		<method name="enforcePermission(Ljava/lang/String;IILjava/lang/String;)V" />
+		<method name="enforceUriPermission(Landroid/net/Uri;IIILjava/lang/String;)V" />
+		<method name="enforceUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V" />
+		<method name="fileList()[Ljava/lang/String;" />
+		<method name="getApplicationContext()Landroid/content/Context;" />
+		<method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;" since="4" />
+		<method name="getAssets()Landroid/content/res/AssetManager;" />
+		<method name="getCacheDir()Ljava/io/File;" />
+		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getContentResolver()Landroid/content/ContentResolver;" />
+		<method name="getDatabasePath(Ljava/lang/String;)Ljava/io/File;" />
+		<method name="getDir(Ljava/lang/String;I)Ljava/io/File;" />
+		<method name="getExternalCacheDir()Ljava/io/File;" since="8" />
+		<method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8" />
+		<method name="getFileStreamPath(Ljava/lang/String;)Ljava/io/File;" />
+		<method name="getFilesDir()Ljava/io/File;" />
+		<method name="getMainLooper()Landroid/os/Looper;" />
+		<method name="getObbDir()Ljava/io/File;" since="11" />
+		<method name="getPackageCodePath()Ljava/lang/String;" since="8" />
+		<method name="getPackageManager()Landroid/content/pm/PackageManager;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getPackageResourcePath()Ljava/lang/String;" since="8" />
+		<method name="getResources()Landroid/content/res/Resources;" />
+		<method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getText(I)Ljava/lang/CharSequence;" />
+		<method name="getTheme()Landroid/content/res/Resources$Theme;" />
+		<method name="getWallpaper()Landroid/graphics/drawable/Drawable;" />
+		<method name="getWallpaperDesiredMinimumHeight()I" />
+		<method name="getWallpaperDesiredMinimumWidth()I" />
+		<method name="grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V" />
+		<method name="isRestricted()Z" since="4" />
+		<method name="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;" />
+		<method name="obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;" />
+		<method name="obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;" />
+		<method name="obtainStyledAttributes([I)Landroid/content/res/TypedArray;" />
+		<method name="openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;" />
+		<method name="openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
+		<method name="peekWallpaper()Landroid/graphics/drawable/Drawable;" />
+		<method name="registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V" since="14" />
+		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;" />
+		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;" />
+		<method name="removeStickyBroadcast(Landroid/content/Intent;)V" />
+		<method name="revokeUriPermission(Landroid/net/Uri;I)V" />
+		<method name="sendBroadcast(Landroid/content/Intent;)V" />
+		<method name="sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
+		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
+		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="sendStickyBroadcast(Landroid/content/Intent;)V" />
+		<method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" />
+		<method name="setTheme(I)V" />
+		<method name="setWallpaper(Landroid/graphics/Bitmap;)V" />
+		<method name="setWallpaper(Ljava/io/InputStream;)V" />
+		<method name="startActivities([Landroid/content/Intent;)V" since="11" />
+		<method name="startActivity(Landroid/content/Intent;)V" />
+		<method name="startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;III)V" since="5" />
+		<method name="startService(Landroid/content/Intent;)Landroid/content/ComponentName;" />
+		<method name="stopService(Landroid/content/Intent;)Z" />
+		<method name="unbindService(Landroid/content/ServiceConnection;)V" />
+		<method name="unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V" since="14" />
+		<method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V" />
+		<field name="ACCESSIBILITY_SERVICE" since="4" />
+		<field name="ACCOUNT_SERVICE" since="5" />
+		<field name="ACTIVITY_SERVICE" />
+		<field name="ALARM_SERVICE" />
+		<field name="AUDIO_SERVICE" />
+		<field name="BIND_ABOVE_CLIENT" since="14" />
+		<field name="BIND_ADJUST_WITH_ACTIVITY" since="14" />
+		<field name="BIND_ALLOW_OOM_MANAGEMENT" since="14" />
+		<field name="BIND_AUTO_CREATE" />
+		<field name="BIND_DEBUG_UNBIND" />
+		<field name="BIND_IMPORTANT" since="14" />
+		<field name="BIND_NOT_FOREGROUND" since="8" />
+		<field name="BIND_WAIVE_PRIORITY" since="14" />
+		<field name="CLIPBOARD_SERVICE" />
+		<field name="CONNECTIVITY_SERVICE" />
+		<field name="CONTEXT_IGNORE_SECURITY" />
+		<field name="CONTEXT_INCLUDE_CODE" />
+		<field name="CONTEXT_RESTRICTED" since="4" />
+		<field name="DEVICE_POLICY_SERVICE" since="8" />
+		<field name="DOWNLOAD_SERVICE" since="9" />
+		<field name="DROPBOX_SERVICE" since="8" />
+		<field name="INPUT_METHOD_SERVICE" since="3" />
+		<field name="KEYGUARD_SERVICE" />
+		<field name="LAYOUT_INFLATER_SERVICE" />
+		<field name="LOCATION_SERVICE" />
+		<field name="MODE_APPEND" />
+		<field name="MODE_MULTI_PROCESS" since="11" />
+		<field name="MODE_PRIVATE" />
+		<field name="MODE_WORLD_READABLE" />
+		<field name="MODE_WORLD_WRITEABLE" />
+		<field name="NFC_SERVICE" since="10" />
+		<field name="NOTIFICATION_SERVICE" />
+		<field name="POWER_SERVICE" />
+		<field name="SEARCH_SERVICE" />
+		<field name="SENSOR_SERVICE" />
+		<field name="STORAGE_SERVICE" since="9" />
+		<field name="TELEPHONY_SERVICE" />
+		<field name="TEXT_SERVICES_MANAGER_SERVICE" since="14" />
+		<field name="UI_MODE_SERVICE" since="8" />
+		<field name="USB_SERVICE" since="12" />
+		<field name="VIBRATOR_SERVICE" />
+		<field name="WALLPAPER_SERVICE" />
+		<field name="WIFI_P2P_SERVICE" since="14" />
+		<field name="WIFI_SERVICE" />
+		<field name="WINDOW_SERVICE" />
+	</class>
+	<class name="android/content/ContextWrapper" since="1">
+		<extends name="android/content/Context" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="attachBaseContext(Landroid/content/Context;)V" />
+		<method name="bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z" />
+		<method name="checkCallingOrSelfPermission(Ljava/lang/String;)I" />
+		<method name="checkCallingOrSelfUriPermission(Landroid/net/Uri;I)I" />
+		<method name="checkCallingPermission(Ljava/lang/String;)I" />
+		<method name="checkCallingUriPermission(Landroid/net/Uri;I)I" />
+		<method name="checkPermission(Ljava/lang/String;II)I" />
+		<method name="checkUriPermission(Landroid/net/Uri;III)I" />
+		<method name="checkUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;III)I" />
+		<method name="clearWallpaper()V" />
+		<method name="createPackageContext(Ljava/lang/String;I)Landroid/content/Context;" />
+		<method name="databaseList()[Ljava/lang/String;" />
+		<method name="deleteDatabase(Ljava/lang/String;)Z" />
+		<method name="deleteFile(Ljava/lang/String;)Z" />
+		<method name="enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="enforceCallingOrSelfUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
+		<method name="enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="enforceCallingUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
+		<method name="enforcePermission(Ljava/lang/String;IILjava/lang/String;)V" />
+		<method name="enforceUriPermission(Landroid/net/Uri;IIILjava/lang/String;)V" />
+		<method name="enforceUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V" />
+		<method name="fileList()[Ljava/lang/String;" />
+		<method name="getApplicationContext()Landroid/content/Context;" />
+		<method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;" since="4" />
+		<method name="getAssets()Landroid/content/res/AssetManager;" />
+		<method name="getBaseContext()Landroid/content/Context;" />
+		<method name="getCacheDir()Ljava/io/File;" />
+		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getContentResolver()Landroid/content/ContentResolver;" />
+		<method name="getDatabasePath(Ljava/lang/String;)Ljava/io/File;" />
+		<method name="getDir(Ljava/lang/String;I)Ljava/io/File;" />
+		<method name="getExternalCacheDir()Ljava/io/File;" since="8" />
+		<method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8" />
+		<method name="getFileStreamPath(Ljava/lang/String;)Ljava/io/File;" />
+		<method name="getFilesDir()Ljava/io/File;" />
+		<method name="getMainLooper()Landroid/os/Looper;" />
+		<method name="getObbDir()Ljava/io/File;" since="11" />
+		<method name="getPackageCodePath()Ljava/lang/String;" />
+		<method name="getPackageManager()Landroid/content/pm/PackageManager;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getPackageResourcePath()Ljava/lang/String;" />
+		<method name="getResources()Landroid/content/res/Resources;" />
+		<method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;" />
+		<method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getTheme()Landroid/content/res/Resources$Theme;" />
+		<method name="getWallpaper()Landroid/graphics/drawable/Drawable;" />
+		<method name="getWallpaperDesiredMinimumHeight()I" />
+		<method name="getWallpaperDesiredMinimumWidth()I" />
+		<method name="grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V" />
+		<method name="openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;" />
+		<method name="openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
+		<method name="peekWallpaper()Landroid/graphics/drawable/Drawable;" />
+		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;" />
+		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;" />
+		<method name="removeStickyBroadcast(Landroid/content/Intent;)V" />
+		<method name="revokeUriPermission(Landroid/net/Uri;I)V" />
+		<method name="sendBroadcast(Landroid/content/Intent;)V" />
+		<method name="sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
+		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
+		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="sendStickyBroadcast(Landroid/content/Intent;)V" />
+		<method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" />
+		<method name="setTheme(I)V" />
+		<method name="setWallpaper(Landroid/graphics/Bitmap;)V" />
+		<method name="setWallpaper(Ljava/io/InputStream;)V" />
+		<method name="startActivities([Landroid/content/Intent;)V" since="11" />
+		<method name="startActivity(Landroid/content/Intent;)V" />
+		<method name="startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;III)V" since="5" />
+		<method name="startService(Landroid/content/Intent;)Landroid/content/ComponentName;" />
+		<method name="stopService(Landroid/content/Intent;)Z" />
+		<method name="unbindService(Landroid/content/ServiceConnection;)V" />
+		<method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V" />
+	</class>
+	<class name="android/content/CursorLoader" since="11">
+		<extends name="android/content/AsyncTaskLoader" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="deliverResult(Landroid/database/Cursor;)V" />
+		<method name="getProjection()[Ljava/lang/String;" />
+		<method name="getSelection()Ljava/lang/String;" />
+		<method name="getSelectionArgs()[Ljava/lang/String;" />
+		<method name="getSortOrder()Ljava/lang/String;" />
+		<method name="getUri()Landroid/net/Uri;" />
+		<method name="loadInBackground()Landroid/database/Cursor;" />
+		<method name="onCanceled(Landroid/database/Cursor;)V" />
+		<method name="setProjection([Ljava/lang/String;)V" />
+		<method name="setSelection(Ljava/lang/String;)V" />
+		<method name="setSelectionArgs([Ljava/lang/String;)V" />
+		<method name="setSortOrder(Ljava/lang/String;)V" />
+		<method name="setUri(Landroid/net/Uri;)V" />
+	</class>
+	<class name="android/content/DialogInterface" since="1">
+		<method name="cancel()V" />
+		<method name="dismiss()V" />
+		<field name="BUTTON1" />
+		<field name="BUTTON2" />
+		<field name="BUTTON3" />
+		<field name="BUTTON_NEGATIVE" since="3" />
+		<field name="BUTTON_NEUTRAL" since="3" />
+		<field name="BUTTON_POSITIVE" since="3" />
+	</class>
+	<class name="android/content/DialogInterface$OnCancelListener" since="1">
+		<method name="onCancel(Landroid/content/DialogInterface;)V" />
+	</class>
+	<class name="android/content/DialogInterface$OnClickListener" since="1">
+		<method name="onClick(Landroid/content/DialogInterface;I)V" />
+	</class>
+	<class name="android/content/DialogInterface$OnDismissListener" since="1">
+		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
+	</class>
+	<class name="android/content/DialogInterface$OnKeyListener" since="1">
+		<method name="onKey(Landroid/content/DialogInterface;ILandroid/view/KeyEvent;)Z" />
+	</class>
+	<class name="android/content/DialogInterface$OnMultiChoiceClickListener" since="1">
+		<method name="onClick(Landroid/content/DialogInterface;IZ)V" />
+	</class>
+	<class name="android/content/DialogInterface$OnShowListener" since="8">
+		<method name="onShow(Landroid/content/DialogInterface;)V" />
+	</class>
+	<class name="android/content/Entity" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/ContentValues;)V" />
+		<method name="addSubValue(Landroid/net/Uri;Landroid/content/ContentValues;)V" />
+		<method name="getEntityValues()Landroid/content/ContentValues;" />
+		<method name="getSubValues()Ljava/util/ArrayList;" />
+	</class>
+	<class name="android/content/Entity$NamedContentValues" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/net/Uri;Landroid/content/ContentValues;)V" />
+		<field name="uri" />
+		<field name="values" />
+	</class>
+	<class name="android/content/EntityIterator" since="8">
+		<implements name="java/util/Iterator" />
+		<method name="close()V" />
+		<method name="reset()V" />
+	</class>
+	<class name="android/content/Intent" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<implements name="java/lang/Cloneable" since="8" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Landroid/content/Intent;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Landroid/net/Uri;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V" />
+		<method name="addCategory(Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="addFlags(I)Landroid/content/Intent;" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="cloneFilter()Landroid/content/Intent;" />
+		<method name="createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;" />
+		<method name="describeContents()I" />
+		<method name="fillIn(Landroid/content/Intent;I)I" />
+		<method name="filterEquals(Landroid/content/Intent;)Z" />
+		<method name="filterHashCode()I" />
+		<method name="getAction()Ljava/lang/String;" />
+		<method name="getBooleanArrayExtra(Ljava/lang/String;)[Z" />
+		<method name="getBooleanExtra(Ljava/lang/String;Z)Z" />
+		<method name="getBundleExtra(Ljava/lang/String;)Landroid/os/Bundle;" />
+		<method name="getByteArrayExtra(Ljava/lang/String;)[B" />
+		<method name="getByteExtra(Ljava/lang/String;B)B" />
+		<method name="getCategories()Ljava/util/Set;" />
+		<method name="getCharArrayExtra(Ljava/lang/String;)[C" />
+		<method name="getCharExtra(Ljava/lang/String;C)C" />
+		<method name="getCharSequenceArrayExtra(Ljava/lang/String;)[Ljava/lang/CharSequence;" since="8" />
+		<method name="getCharSequenceArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" since="8" />
+		<method name="getCharSequenceExtra(Ljava/lang/String;)Ljava/lang/CharSequence;" />
+		<method name="getComponent()Landroid/content/ComponentName;" />
+		<method name="getData()Landroid/net/Uri;" />
+		<method name="getDataString()Ljava/lang/String;" />
+		<method name="getDoubleArrayExtra(Ljava/lang/String;)[D" />
+		<method name="getDoubleExtra(Ljava/lang/String;D)D" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getFlags()I" />
+		<method name="getFloatArrayExtra(Ljava/lang/String;)[F" />
+		<method name="getFloatExtra(Ljava/lang/String;F)F" />
+		<method name="getIntArrayExtra(Ljava/lang/String;)[I" />
+		<method name="getIntExtra(Ljava/lang/String;I)I" />
+		<method name="getIntegerArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getIntent(Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="getIntentOld(Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="getLongArrayExtra(Ljava/lang/String;)[J" />
+		<method name="getLongExtra(Ljava/lang/String;J)J" />
+		<method name="getPackage()Ljava/lang/String;" since="4" />
+		<method name="getParcelableArrayExtra(Ljava/lang/String;)[Landroid/os/Parcelable;" />
+		<method name="getParcelableArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getParcelableExtra(Ljava/lang/String;)LT;" />
+		<method name="getScheme()Ljava/lang/String;" />
+		<method name="getSelector()Landroid/content/Intent;" since="15" />
+		<method name="getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable;" />
+		<method name="getShortArrayExtra(Ljava/lang/String;)[S" />
+		<method name="getShortExtra(Ljava/lang/String;S)S" />
+		<method name="getSourceBounds()Landroid/graphics/Rect;" since="7" />
+		<method name="getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="getStringArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getStringExtra(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="hasCategory(Ljava/lang/String;)Z" />
+		<method name="hasExtra(Ljava/lang/String;)Z" />
+		<method name="hasFileDescriptors()Z" />
+		<method name="makeMainActivity(Landroid/content/ComponentName;)Landroid/content/Intent;" since="11" />
+		<method name="makeMainSelectorActivity(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" since="15" />
+		<method name="makeRestartActivityTask(Landroid/content/ComponentName;)Landroid/content/Intent;" since="11" />
+		<method name="parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent;" />
+		<method name="parseUri(Ljava/lang/String;I)Landroid/content/Intent;" since="4" />
+		<method name="putCharSequenceArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" since="8" />
+		<method name="putExtra(Ljava/lang/String;B)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;C)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;D)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;F)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;I)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;J)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;S)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;Z)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[B)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[C)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[D)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[F)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[I)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[J)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[Landroid/os/Parcelable;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[Ljava/lang/CharSequence;)Landroid/content/Intent;" since="8" />
+		<method name="putExtra(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[S)Landroid/content/Intent;" />
+		<method name="putExtra(Ljava/lang/String;[Z)Landroid/content/Intent;" />
+		<method name="putExtras(Landroid/content/Intent;)Landroid/content/Intent;" />
+		<method name="putExtras(Landroid/os/Bundle;)Landroid/content/Intent;" />
+		<method name="putIntegerArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" />
+		<method name="putParcelableArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" />
+		<method name="putStringArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="removeCategory(Ljava/lang/String;)V" />
+		<method name="removeExtra(Ljava/lang/String;)V" />
+		<method name="replaceExtras(Landroid/content/Intent;)Landroid/content/Intent;" since="3" />
+		<method name="replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent;" since="3" />
+		<method name="resolveActivity(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName;" />
+		<method name="resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo;" />
+		<method name="resolveType(Landroid/content/ContentResolver;)Ljava/lang/String;" />
+		<method name="resolveType(Landroid/content/Context;)Ljava/lang/String;" />
+		<method name="resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;" />
+		<method name="setAction(Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent;" />
+		<method name="setClassName(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;" />
+		<method name="setData(Landroid/net/Uri;)Landroid/content/Intent;" />
+		<method name="setDataAndType(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="setExtrasClassLoader(Ljava/lang/ClassLoader;)V" />
+		<method name="setFlags(I)Landroid/content/Intent;" />
+		<method name="setPackage(Ljava/lang/String;)Landroid/content/Intent;" since="4" />
+		<method name="setSelector(Landroid/content/Intent;)V" since="15" />
+		<method name="setSourceBounds(Landroid/graphics/Rect;)V" since="7" />
+		<method name="setType(Ljava/lang/String;)Landroid/content/Intent;" />
+		<method name="toURI()Ljava/lang/String;" />
+		<method name="toUri(I)Ljava/lang/String;" since="4" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_AIRPLANE_MODE_CHANGED" />
+		<field name="ACTION_ALL_APPS" />
+		<field name="ACTION_ANSWER" />
+		<field name="ACTION_APP_ERROR" since="14" />
+		<field name="ACTION_ATTACH_DATA" />
+		<field name="ACTION_BATTERY_CHANGED" />
+		<field name="ACTION_BATTERY_LOW" />
+		<field name="ACTION_BATTERY_OKAY" since="4" />
+		<field name="ACTION_BOOT_COMPLETED" />
+		<field name="ACTION_BUG_REPORT" />
+		<field name="ACTION_CALL" />
+		<field name="ACTION_CALL_BUTTON" />
+		<field name="ACTION_CAMERA_BUTTON" />
+		<field name="ACTION_CHOOSER" />
+		<field name="ACTION_CLOSE_SYSTEM_DIALOGS" />
+		<field name="ACTION_CONFIGURATION_CHANGED" />
+		<field name="ACTION_CREATE_SHORTCUT" />
+		<field name="ACTION_DATE_CHANGED" />
+		<field name="ACTION_DEFAULT" />
+		<field name="ACTION_DELETE" />
+		<field name="ACTION_DEVICE_STORAGE_LOW" />
+		<field name="ACTION_DEVICE_STORAGE_OK" />
+		<field name="ACTION_DIAL" />
+		<field name="ACTION_DOCK_EVENT" since="5" />
+		<field name="ACTION_EDIT" />
+		<field name="ACTION_EXTERNAL_APPLICATIONS_AVAILABLE" since="8" />
+		<field name="ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE" since="8" />
+		<field name="ACTION_FACTORY_TEST" />
+		<field name="ACTION_GET_CONTENT" />
+		<field name="ACTION_GTALK_SERVICE_CONNECTED" />
+		<field name="ACTION_GTALK_SERVICE_DISCONNECTED" />
+		<field name="ACTION_HEADSET_PLUG" />
+		<field name="ACTION_INPUT_METHOD_CHANGED" since="3" />
+		<field name="ACTION_INSERT" />
+		<field name="ACTION_INSERT_OR_EDIT" />
+		<field name="ACTION_INSTALL_PACKAGE" since="14" />
+		<field name="ACTION_LOCALE_CHANGED" since="7" />
+		<field name="ACTION_MAIN" />
+		<field name="ACTION_MANAGE_NETWORK_USAGE" since="14" />
+		<field name="ACTION_MANAGE_PACKAGE_STORAGE" />
+		<field name="ACTION_MEDIA_BAD_REMOVAL" />
+		<field name="ACTION_MEDIA_BUTTON" />
+		<field name="ACTION_MEDIA_CHECKING" since="3" />
+		<field name="ACTION_MEDIA_EJECT" />
+		<field name="ACTION_MEDIA_MOUNTED" />
+		<field name="ACTION_MEDIA_NOFS" since="3" />
+		<field name="ACTION_MEDIA_REMOVED" />
+		<field name="ACTION_MEDIA_SCANNER_FINISHED" />
+		<field name="ACTION_MEDIA_SCANNER_SCAN_FILE" />
+		<field name="ACTION_MEDIA_SCANNER_STARTED" />
+		<field name="ACTION_MEDIA_SHARED" />
+		<field name="ACTION_MEDIA_UNMOUNTABLE" />
+		<field name="ACTION_MEDIA_UNMOUNTED" />
+		<field name="ACTION_MY_PACKAGE_REPLACED" since="12" />
+		<field name="ACTION_NEW_OUTGOING_CALL" />
+		<field name="ACTION_PACKAGE_ADDED" />
+		<field name="ACTION_PACKAGE_CHANGED" />
+		<field name="ACTION_PACKAGE_DATA_CLEARED" since="3" />
+		<field name="ACTION_PACKAGE_FIRST_LAUNCH" since="12" />
+		<field name="ACTION_PACKAGE_FULLY_REMOVED" since="14" />
+		<field name="ACTION_PACKAGE_INSTALL" />
+		<field name="ACTION_PACKAGE_NEEDS_VERIFICATION" since="14" />
+		<field name="ACTION_PACKAGE_REMOVED" />
+		<field name="ACTION_PACKAGE_REPLACED" since="3" />
+		<field name="ACTION_PACKAGE_RESTARTED" />
+		<field name="ACTION_PASTE" since="11" />
+		<field name="ACTION_PICK" />
+		<field name="ACTION_PICK_ACTIVITY" />
+		<field name="ACTION_POWER_CONNECTED" since="4" />
+		<field name="ACTION_POWER_DISCONNECTED" since="4" />
+		<field name="ACTION_POWER_USAGE_SUMMARY" since="4" />
+		<field name="ACTION_PROVIDER_CHANGED" />
+		<field name="ACTION_REBOOT" />
+		<field name="ACTION_RUN" />
+		<field name="ACTION_SCREEN_OFF" />
+		<field name="ACTION_SCREEN_ON" />
+		<field name="ACTION_SEARCH" />
+		<field name="ACTION_SEARCH_LONG_PRESS" since="3" />
+		<field name="ACTION_SEND" />
+		<field name="ACTION_SENDTO" />
+		<field name="ACTION_SEND_MULTIPLE" since="4" />
+		<field name="ACTION_SET_WALLPAPER" />
+		<field name="ACTION_SHUTDOWN" since="4" />
+		<field name="ACTION_SYNC" />
+		<field name="ACTION_SYSTEM_TUTORIAL" since="3" />
+		<field name="ACTION_TIMEZONE_CHANGED" />
+		<field name="ACTION_TIME_CHANGED" />
+		<field name="ACTION_TIME_TICK" />
+		<field name="ACTION_UID_REMOVED" />
+		<field name="ACTION_UMS_CONNECTED" />
+		<field name="ACTION_UMS_DISCONNECTED" />
+		<field name="ACTION_UNINSTALL_PACKAGE" since="14" />
+		<field name="ACTION_USER_PRESENT" since="3" />
+		<field name="ACTION_VIEW" />
+		<field name="ACTION_VOICE_COMMAND" />
+		<field name="ACTION_WALLPAPER_CHANGED" />
+		<field name="ACTION_WEB_SEARCH" />
+		<field name="CATEGORY_ALTERNATIVE" />
+		<field name="CATEGORY_APP_BROWSER" since="15" />
+		<field name="CATEGORY_APP_CALCULATOR" since="15" />
+		<field name="CATEGORY_APP_CALENDAR" since="15" />
+		<field name="CATEGORY_APP_CONTACTS" since="15" />
+		<field name="CATEGORY_APP_EMAIL" since="15" />
+		<field name="CATEGORY_APP_GALLERY" since="15" />
+		<field name="CATEGORY_APP_MAPS" since="15" />
+		<field name="CATEGORY_APP_MARKET" since="11" />
+		<field name="CATEGORY_APP_MESSAGING" since="15" />
+		<field name="CATEGORY_APP_MUSIC" since="15" />
+		<field name="CATEGORY_BROWSABLE" />
+		<field name="CATEGORY_CAR_DOCK" since="5" />
+		<field name="CATEGORY_CAR_MODE" since="8" />
+		<field name="CATEGORY_DEFAULT" />
+		<field name="CATEGORY_DESK_DOCK" since="5" />
+		<field name="CATEGORY_DEVELOPMENT_PREFERENCE" />
+		<field name="CATEGORY_EMBED" />
+		<field name="CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST" />
+		<field name="CATEGORY_GADGET" />
+		<field name="CATEGORY_HE_DESK_DOCK" since="11" />
+		<field name="CATEGORY_HOME" />
+		<field name="CATEGORY_INFO" since="3" />
+		<field name="CATEGORY_LAUNCHER" />
+		<field name="CATEGORY_LE_DESK_DOCK" since="11" />
+		<field name="CATEGORY_MONKEY" />
+		<field name="CATEGORY_OPENABLE" />
+		<field name="CATEGORY_PREFERENCE" />
+		<field name="CATEGORY_SAMPLE_CODE" />
+		<field name="CATEGORY_SELECTED_ALTERNATIVE" />
+		<field name="CATEGORY_TAB" />
+		<field name="CATEGORY_TEST" />
+		<field name="CATEGORY_UNIT_TEST" />
+		<field name="CREATOR" />
+		<field name="EXTRA_ALARM_COUNT" />
+		<field name="EXTRA_ALLOW_REPLACE" since="14" />
+		<field name="EXTRA_BCC" />
+		<field name="EXTRA_BUG_REPORT" since="14" />
+		<field name="EXTRA_CC" />
+		<field name="EXTRA_CHANGED_COMPONENT_NAME" since="5" />
+		<field name="EXTRA_CHANGED_COMPONENT_NAME_LIST" since="7" />
+		<field name="EXTRA_CHANGED_PACKAGE_LIST" since="8" />
+		<field name="EXTRA_CHANGED_UID_LIST" since="8" />
+		<field name="EXTRA_DATA_REMOVED" since="3" />
+		<field name="EXTRA_DOCK_STATE" since="5" />
+		<field name="EXTRA_DOCK_STATE_CAR" since="5" />
+		<field name="EXTRA_DOCK_STATE_DESK" since="5" />
+		<field name="EXTRA_DOCK_STATE_HE_DESK" since="11" />
+		<field name="EXTRA_DOCK_STATE_LE_DESK" since="11" />
+		<field name="EXTRA_DOCK_STATE_UNDOCKED" since="5" />
+		<field name="EXTRA_DONT_KILL_APP" />
+		<field name="EXTRA_EMAIL" />
+		<field name="EXTRA_INITIAL_INTENTS" since="5" />
+		<field name="EXTRA_INSTALLER_PACKAGE_NAME" since="14" />
+		<field name="EXTRA_INTENT" />
+		<field name="EXTRA_KEY_EVENT" />
+		<field name="EXTRA_LOCAL_ONLY" since="11" />
+		<field name="EXTRA_NOT_UNKNOWN_SOURCE" since="14" />
+		<field name="EXTRA_PHONE_NUMBER" />
+		<field name="EXTRA_REMOTE_INTENT_TOKEN" since="5" />
+		<field name="EXTRA_REPLACING" since="3" />
+		<field name="EXTRA_RETURN_RESULT" since="14" />
+		<field name="EXTRA_SHORTCUT_ICON" />
+		<field name="EXTRA_SHORTCUT_ICON_RESOURCE" />
+		<field name="EXTRA_SHORTCUT_INTENT" />
+		<field name="EXTRA_SHORTCUT_NAME" />
+		<field name="EXTRA_STREAM" />
+		<field name="EXTRA_SUBJECT" />
+		<field name="EXTRA_TEMPLATE" />
+		<field name="EXTRA_TEXT" />
+		<field name="EXTRA_TITLE" />
+		<field name="EXTRA_UID" />
+		<field name="FILL_IN_ACTION" />
+		<field name="FILL_IN_CATEGORIES" />
+		<field name="FILL_IN_COMPONENT" />
+		<field name="FILL_IN_DATA" />
+		<field name="FILL_IN_PACKAGE" since="4" />
+		<field name="FILL_IN_SELECTOR" since="15" />
+		<field name="FILL_IN_SOURCE_BOUNDS" since="7" />
+		<field name="FLAG_ACTIVITY_BROUGHT_TO_FRONT" />
+		<field name="FLAG_ACTIVITY_CLEAR_TASK" since="11" />
+		<field name="FLAG_ACTIVITY_CLEAR_TOP" />
+		<field name="FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET" since="3" />
+		<field name="FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS" />
+		<field name="FLAG_ACTIVITY_FORWARD_RESULT" />
+		<field name="FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY" />
+		<field name="FLAG_ACTIVITY_MULTIPLE_TASK" />
+		<field name="FLAG_ACTIVITY_NEW_TASK" />
+		<field name="FLAG_ACTIVITY_NO_ANIMATION" since="5" />
+		<field name="FLAG_ACTIVITY_NO_HISTORY" />
+		<field name="FLAG_ACTIVITY_NO_USER_ACTION" since="3" />
+		<field name="FLAG_ACTIVITY_PREVIOUS_IS_TOP" />
+		<field name="FLAG_ACTIVITY_REORDER_TO_FRONT" since="3" />
+		<field name="FLAG_ACTIVITY_RESET_TASK_IF_NEEDED" />
+		<field name="FLAG_ACTIVITY_SINGLE_TOP" />
+		<field name="FLAG_ACTIVITY_TASK_ON_HOME" since="11" />
+		<field name="FLAG_DEBUG_LOG_RESOLUTION" />
+		<field name="FLAG_EXCLUDE_STOPPED_PACKAGES" since="12" />
+		<field name="FLAG_FROM_BACKGROUND" />
+		<field name="FLAG_GRANT_READ_URI_PERMISSION" />
+		<field name="FLAG_GRANT_WRITE_URI_PERMISSION" />
+		<field name="FLAG_INCLUDE_STOPPED_PACKAGES" since="12" />
+		<field name="FLAG_RECEIVER_REGISTERED_ONLY" />
+		<field name="FLAG_RECEIVER_REPLACE_PENDING" since="8" />
+		<field name="METADATA_DOCK_HOME" since="5" />
+		<field name="URI_INTENT_SCHEME" since="4" />
+	</class>
+	<class name="android/content/Intent$FilterComparison" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Intent;)V" />
+		<method name="getIntent()Landroid/content/Intent;" />
+	</class>
+	<class name="android/content/Intent$ShortcutIconResource" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="fromContext(Landroid/content/Context;I)Landroid/content/Intent$ShortcutIconResource;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="packageName" />
+		<field name="resourceName" />
+	</class>
+	<class name="android/content/IntentFilter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/IntentFilter;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="actionsIterator()Ljava/util/Iterator;" />
+		<method name="addAction(Ljava/lang/String;)V" />
+		<method name="addCategory(Ljava/lang/String;)V" />
+		<method name="addDataAuthority(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="addDataPath(Ljava/lang/String;I)V" />
+		<method name="addDataScheme(Ljava/lang/String;)V" />
+		<method name="addDataType(Ljava/lang/String;)V" />
+		<method name="authoritiesIterator()Ljava/util/Iterator;" />
+		<method name="categoriesIterator()Ljava/util/Iterator;" />
+		<method name="countActions()I" />
+		<method name="countCategories()I" />
+		<method name="countDataAuthorities()I" />
+		<method name="countDataPaths()I" />
+		<method name="countDataSchemes()I" />
+		<method name="countDataTypes()I" />
+		<method name="create(Ljava/lang/String;Ljava/lang/String;)Landroid/content/IntentFilter;" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getAction(I)Ljava/lang/String;" />
+		<method name="getCategory(I)Ljava/lang/String;" />
+		<method name="getDataAuthority(I)Landroid/content/IntentFilter$AuthorityEntry;" />
+		<method name="getDataPath(I)Landroid/os/PatternMatcher;" />
+		<method name="getDataScheme(I)Ljava/lang/String;" />
+		<method name="getDataType(I)Ljava/lang/String;" />
+		<method name="getPriority()I" />
+		<method name="hasAction(Ljava/lang/String;)Z" />
+		<method name="hasCategory(Ljava/lang/String;)Z" />
+		<method name="hasDataAuthority(Landroid/net/Uri;)Z" />
+		<method name="hasDataPath(Ljava/lang/String;)Z" />
+		<method name="hasDataScheme(Ljava/lang/String;)Z" />
+		<method name="hasDataType(Ljava/lang/String;)Z" />
+		<method name="match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I" />
+		<method name="match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I" />
+		<method name="matchAction(Ljava/lang/String;)Z" />
+		<method name="matchCategories(Ljava/util/Set;)Ljava/lang/String;" />
+		<method name="matchData(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)I" />
+		<method name="matchDataAuthority(Landroid/net/Uri;)I" />
+		<method name="pathsIterator()Ljava/util/Iterator;" />
+		<method name="readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V" />
+		<method name="schemesIterator()Ljava/util/Iterator;" />
+		<method name="setPriority(I)V" />
+		<method name="typesIterator()Ljava/util/Iterator;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<method name="writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V" />
+		<field name="CREATOR" />
+		<field name="MATCH_ADJUSTMENT_MASK" />
+		<field name="MATCH_ADJUSTMENT_NORMAL" />
+		<field name="MATCH_CATEGORY_EMPTY" />
+		<field name="MATCH_CATEGORY_HOST" />
+		<field name="MATCH_CATEGORY_MASK" />
+		<field name="MATCH_CATEGORY_PATH" />
+		<field name="MATCH_CATEGORY_PORT" />
+		<field name="MATCH_CATEGORY_SCHEME" />
+		<field name="MATCH_CATEGORY_TYPE" />
+		<field name="NO_MATCH_ACTION" />
+		<field name="NO_MATCH_CATEGORY" />
+		<field name="NO_MATCH_DATA" />
+		<field name="NO_MATCH_TYPE" />
+		<field name="SYSTEM_HIGH_PRIORITY" />
+		<field name="SYSTEM_LOW_PRIORITY" />
+	</class>
+	<class name="android/content/IntentFilter$AuthorityEntry" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getHost()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="match(Landroid/net/Uri;)I" />
+	</class>
+	<class name="android/content/IntentFilter$MalformedMimeTypeException" since="1">
+		<extends name="android/util/AndroidException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/IntentSender" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getTargetPackage()Ljava/lang/String;" since="9" />
+		<method name="readIntentSenderOrNullFromParcel(Landroid/os/Parcel;)Landroid/content/IntentSender;" />
+		<method name="sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V" />
+		<method name="sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V" since="14" />
+		<method name="writeIntentSenderOrNullToParcel(Landroid/content/IntentSender;Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/IntentSender$OnFinished" since="4">
+		<method name="onSendFinished(Landroid/content/IntentSender;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V" />
+	</class>
+	<class name="android/content/IntentSender$SendIntentException" since="4">
+		<extends name="android/util/AndroidException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/Loader" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="abandon()V" />
+		<method name="dataToString(LD;)Ljava/lang/String;" />
+		<method name="deliverResult(LD;)V" />
+		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
+		<method name="forceLoad()V" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getId()I" />
+		<method name="isAbandoned()Z" />
+		<method name="isReset()Z" />
+		<method name="isStarted()Z" />
+		<method name="onAbandon()V" />
+		<method name="onContentChanged()V" />
+		<method name="onForceLoad()V" />
+		<method name="onReset()V" />
+		<method name="onStartLoading()V" />
+		<method name="onStopLoading()V" />
+		<method name="registerListener(ILandroid/content/Loader$OnLoadCompleteListener;)V" />
+		<method name="reset()V" />
+		<method name="startLoading()V" />
+		<method name="stopLoading()V" />
+		<method name="takeContentChanged()Z" />
+		<method name="unregisterListener(Landroid/content/Loader$OnLoadCompleteListener;)V" />
+	</class>
+	<class name="android/content/Loader$ForceLoadContentObserver" since="11">
+		<extends name="android/database/ContentObserver" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/content/Loader$OnLoadCompleteListener" since="11">
+		<method name="onLoadComplete(Landroid/content/Loader;LD;)V" />
+	</class>
+	<class name="android/content/MutableContextWrapper" since="1">
+		<extends name="android/content/ContextWrapper" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="setBaseContext(Landroid/content/Context;)V" />
+	</class>
+	<class name="android/content/OperationApplicationException" since="5">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="getNumSuccessfulYieldPoints()I" />
+	</class>
+	<class name="android/content/PeriodicSync" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="account" />
+		<field name="authority" />
+		<field name="extras" />
+		<field name="period" />
+	</class>
+	<class name="android/content/ReceiverCallNotAllowedException" since="1">
+		<extends name="android/util/AndroidRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/SearchRecentSuggestionsProvider" since="1">
+		<extends name="android/content/ContentProvider" />
+		<method name="&lt;init>()V" />
+		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
+		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
+		<method name="onCreate()Z" />
+		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="setupSuggestions(Ljava/lang/String;I)V" />
+		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<field name="DATABASE_MODE_2LINES" />
+		<field name="DATABASE_MODE_QUERIES" />
+	</class>
+	<class name="android/content/ServiceConnection" since="1">
+		<method name="onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V" />
+		<method name="onServiceDisconnected(Landroid/content/ComponentName;)V" />
+	</class>
+	<class name="android/content/SharedPreferences" since="1">
+		<method name="contains(Ljava/lang/String;)Z" />
+		<method name="edit()Landroid/content/SharedPreferences$Editor;" />
+		<method name="getAll()Ljava/util/Map;" />
+		<method name="getBoolean(Ljava/lang/String;Z)Z" />
+		<method name="getFloat(Ljava/lang/String;F)F" />
+		<method name="getInt(Ljava/lang/String;I)I" />
+		<method name="getLong(Ljava/lang/String;J)J" />
+		<method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;" since="11" />
+		<method name="registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V" />
+		<method name="unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V" />
+	</class>
+	<class name="android/content/SharedPreferences$Editor" since="1">
+		<method name="apply()V" since="9" />
+		<method name="clear()Landroid/content/SharedPreferences$Editor;" />
+		<method name="commit()Z" />
+		<method name="putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;" />
+		<method name="putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor;" />
+		<method name="putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor;" />
+		<method name="putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor;" />
+		<method name="putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;" />
+		<method name="putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor;" since="11" />
+		<method name="remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;" />
+	</class>
+	<class name="android/content/SharedPreferences$OnSharedPreferenceChangeListener" since="1">
+		<method name="onSharedPreferenceChanged(Landroid/content/SharedPreferences;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/SyncAdapterType" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ZZ)V" />
+		<method name="allowParallelSyncs()Z" since="11" />
+		<method name="describeContents()I" />
+		<method name="getSettingsActivity()Ljava/lang/String;" since="14" />
+		<method name="isAlwaysSyncable()Z" since="11" />
+		<method name="isUserVisible()Z" />
+		<method name="newKey(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SyncAdapterType;" />
+		<method name="supportsUploading()Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="accountType" />
+		<field name="authority" />
+		<field name="isKey" />
+	</class>
+	<class name="android/content/SyncContext" since="5">
+		<extends name="java/lang/Object" />
+		<method name="getSyncContextBinder()Landroid/os/IBinder;" />
+		<method name="onFinished(Landroid/content/SyncResult;)V" />
+	</class>
+	<class name="android/content/SyncInfo" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" since="11" />
+		<method name="describeContents()I" since="11" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="11" />
+		<field name="account" />
+		<field name="authority" />
+		<field name="startTime" />
+	</class>
+	<class name="android/content/SyncResult" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="clear()V" />
+		<method name="describeContents()I" />
+		<method name="hasError()Z" />
+		<method name="hasHardError()Z" />
+		<method name="hasSoftError()Z" />
+		<method name="madeSomeProgress()Z" />
+		<method name="toDebugString()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ALREADY_IN_PROGRESS" />
+		<field name="CREATOR" />
+		<field name="databaseError" />
+		<field name="delayUntil" since="8" />
+		<field name="fullSyncRequested" />
+		<field name="moreRecordsToGet" />
+		<field name="partialSyncUnavailable" />
+		<field name="stats" />
+		<field name="syncAlreadyInProgress" />
+		<field name="tooManyDeletions" />
+		<field name="tooManyRetries" />
+	</class>
+	<class name="android/content/SyncStats" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="clear()V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="numAuthExceptions" />
+		<field name="numConflictDetectedExceptions" />
+		<field name="numDeletes" />
+		<field name="numEntries" />
+		<field name="numInserts" />
+		<field name="numIoExceptions" />
+		<field name="numParseExceptions" />
+		<field name="numSkippedEntries" />
+		<field name="numUpdates" />
+	</class>
+	<class name="android/content/SyncStatusObserver" since="5">
+		<method name="onStatusChanged(I)V" />
+	</class>
+	<class name="android/content/UriMatcher" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="addURI(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="match(Landroid/net/Uri;)I" />
+		<field name="NO_MATCH" />
+	</class>
+	<class name="android/content/pm/ActivityInfo" since="1">
+		<extends name="android/content/pm/ComponentInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/ActivityInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getThemeResource()I" />
+		<field name="CONFIG_FONT_SCALE" />
+		<field name="CONFIG_KEYBOARD" />
+		<field name="CONFIG_KEYBOARD_HIDDEN" />
+		<field name="CONFIG_LOCALE" />
+		<field name="CONFIG_MCC" />
+		<field name="CONFIG_MNC" />
+		<field name="CONFIG_NAVIGATION" />
+		<field name="CONFIG_ORIENTATION" />
+		<field name="CONFIG_SCREEN_LAYOUT" since="4" />
+		<field name="CONFIG_SCREEN_SIZE" since="13" />
+		<field name="CONFIG_SMALLEST_SCREEN_SIZE" since="13" />
+		<field name="CONFIG_TOUCHSCREEN" />
+		<field name="CONFIG_UI_MODE" since="8" />
+		<field name="CREATOR" />
+		<field name="FLAG_ALLOW_TASK_REPARENTING" />
+		<field name="FLAG_ALWAYS_RETAIN_TASK_STATE" />
+		<field name="FLAG_CLEAR_TASK_ON_LAUNCH" />
+		<field name="FLAG_EXCLUDE_FROM_RECENTS" />
+		<field name="FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS" since="5" />
+		<field name="FLAG_FINISH_ON_TASK_LAUNCH" />
+		<field name="FLAG_HARDWARE_ACCELERATED" since="11" />
+		<field name="FLAG_MULTIPROCESS" />
+		<field name="FLAG_NO_HISTORY" since="3" />
+		<field name="FLAG_STATE_NOT_NEEDED" />
+		<field name="LAUNCH_MULTIPLE" />
+		<field name="LAUNCH_SINGLE_INSTANCE" />
+		<field name="LAUNCH_SINGLE_TASK" />
+		<field name="LAUNCH_SINGLE_TOP" />
+		<field name="SCREEN_ORIENTATION_BEHIND" />
+		<field name="SCREEN_ORIENTATION_FULL_SENSOR" since="9" />
+		<field name="SCREEN_ORIENTATION_LANDSCAPE" />
+		<field name="SCREEN_ORIENTATION_NOSENSOR" />
+		<field name="SCREEN_ORIENTATION_PORTRAIT" />
+		<field name="SCREEN_ORIENTATION_REVERSE_LANDSCAPE" since="9" />
+		<field name="SCREEN_ORIENTATION_REVERSE_PORTRAIT" since="9" />
+		<field name="SCREEN_ORIENTATION_SENSOR" />
+		<field name="SCREEN_ORIENTATION_SENSOR_LANDSCAPE" since="9" />
+		<field name="SCREEN_ORIENTATION_SENSOR_PORTRAIT" since="9" />
+		<field name="SCREEN_ORIENTATION_UNSPECIFIED" />
+		<field name="SCREEN_ORIENTATION_USER" />
+		<field name="UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW" since="14" />
+		<field name="configChanges" />
+		<field name="flags" />
+		<field name="launchMode" />
+		<field name="permission" />
+		<field name="screenOrientation" />
+		<field name="softInputMode" since="3" />
+		<field name="targetActivity" />
+		<field name="taskAffinity" />
+		<field name="theme" />
+		<field name="uiOptions" since="14" />
+	</class>
+	<class name="android/content/pm/ApplicationInfo" since="1">
+		<extends name="android/content/pm/PackageItemInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/ApplicationInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<field name="CREATOR" />
+		<field name="FLAG_ALLOW_BACKUP" since="8" />
+		<field name="FLAG_ALLOW_CLEAR_USER_DATA" />
+		<field name="FLAG_ALLOW_TASK_REPARENTING" />
+		<field name="FLAG_DEBUGGABLE" />
+		<field name="FLAG_EXTERNAL_STORAGE" since="8" />
+		<field name="FLAG_FACTORY_TEST" />
+		<field name="FLAG_HAS_CODE" />
+		<field name="FLAG_KILL_AFTER_RESTORE" since="8" />
+		<field name="FLAG_LARGE_HEAP" since="11" />
+		<field name="FLAG_PERSISTENT" />
+		<field name="FLAG_RESIZEABLE_FOR_SCREENS" since="4" />
+		<field name="FLAG_RESTORE_ANY_VERSION" since="8" />
+		<field name="FLAG_STOPPED" since="12" />
+		<field name="FLAG_SUPPORTS_LARGE_SCREENS" since="4" />
+		<field name="FLAG_SUPPORTS_NORMAL_SCREENS" since="4" />
+		<field name="FLAG_SUPPORTS_SCREEN_DENSITIES" since="4" />
+		<field name="FLAG_SUPPORTS_SMALL_SCREENS" since="4" />
+		<field name="FLAG_SUPPORTS_XLARGE_SCREENS" since="11" />
+		<field name="FLAG_SYSTEM" />
+		<field name="FLAG_TEST_ONLY" since="4" />
+		<field name="FLAG_UPDATED_SYSTEM_APP" since="4" />
+		<field name="FLAG_VM_SAFE_MODE" since="8" />
+		<field name="backupAgentName" since="8" />
+		<field name="className" />
+		<field name="compatibleWidthLimitDp" since="13" />
+		<field name="dataDir" />
+		<field name="descriptionRes" />
+		<field name="enabled" />
+		<field name="flags" />
+		<field name="largestWidthLimitDp" since="13" />
+		<field name="manageSpaceActivityName" />
+		<field name="nativeLibraryDir" since="9" />
+		<field name="permission" />
+		<field name="processName" />
+		<field name="publicSourceDir" />
+		<field name="requiresSmallestWidthDp" since="13" />
+		<field name="sharedLibraryFiles" />
+		<field name="sourceDir" />
+		<field name="targetSdkVersion" since="4" />
+		<field name="taskAffinity" />
+		<field name="theme" />
+		<field name="uiOptions" since="14" />
+		<field name="uid" />
+	</class>
+	<class name="android/content/pm/ApplicationInfo$DisplayNameComparator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Comparator" />
+		<method name="&lt;init>(Landroid/content/pm/PackageManager;)V" />
+		<method name="compare(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;)I" />
+	</class>
+	<class name="android/content/pm/ComponentInfo" since="1">
+		<extends name="android/content/pm/PackageItemInfo" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/ComponentInfo;)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="getIconResource()I" />
+		<method name="isEnabled()Z" since="11" />
+		<field name="applicationInfo" />
+		<field name="descriptionRes" since="8" />
+		<field name="enabled" />
+		<field name="exported" />
+		<field name="processName" />
+	</class>
+	<class name="android/content/pm/ConfigurationInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/ConfigurationInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="getGlEsVersion()Ljava/lang/String;" since="4" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="GL_ES_VERSION_UNDEFINED" since="4" />
+		<field name="INPUT_FEATURE_FIVE_WAY_NAV" />
+		<field name="INPUT_FEATURE_HARD_KEYBOARD" />
+		<field name="reqGlEsVersion" since="4" />
+		<field name="reqInputFeatures" />
+		<field name="reqKeyboardType" />
+		<field name="reqNavigation" />
+		<field name="reqTouchScreen" />
+	</class>
+	<class name="android/content/pm/FeatureInfo" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/FeatureInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="getGlEsVersion()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="FLAG_REQUIRED" />
+		<field name="GL_ES_VERSION_UNDEFINED" />
+		<field name="flags" />
+		<field name="name" />
+		<field name="reqGlEsVersion" />
+	</class>
+	<class name="android/content/pm/IPackageInstallObserver" since="1">
+		<implements name="android/os/IInterface" />
+		<method name="packageInstalled(Ljava/lang/String;I)V" />
+	</class>
+	<class name="android/content/pm/IPackageInstallObserver$Stub" since="1">
+		<extends name="android/os/Binder" />
+		<implements name="android/content/pm/IPackageInstallObserver" />
+		<method name="&lt;init>()V" />
+		<method name="asBinder()Landroid/os/IBinder;" />
+		<method name="asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallObserver;" />
+		<method name="onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
+	</class>
+	<class name="android/content/pm/InstrumentationInfo" since="1">
+		<extends name="android/content/pm/PackageItemInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/InstrumentationInfo;)V" />
+		<method name="describeContents()I" />
+		<field name="CREATOR" />
+		<field name="dataDir" />
+		<field name="functionalTest" />
+		<field name="handleProfiling" />
+		<field name="publicSourceDir" />
+		<field name="sourceDir" />
+		<field name="targetPackage" />
+	</class>
+	<class name="android/content/pm/LabeledIntent" since="5">
+		<extends name="android/content/Intent" />
+		<method name="&lt;init>(Landroid/content/Intent;Ljava/lang/String;II)V" />
+		<method name="&lt;init>(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/CharSequence;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;II)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V" />
+		<method name="getIconResource()I" />
+		<method name="getLabelResource()I" />
+		<method name="getNonLocalizedLabel()Ljava/lang/CharSequence;" />
+		<method name="getSourcePackage()Ljava/lang/String;" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/pm/PackageInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="activities" />
+		<field name="applicationInfo" />
+		<field name="configPreferences" since="3" />
+		<field name="firstInstallTime" since="9" />
+		<field name="gids" />
+		<field name="instrumentation" />
+		<field name="lastUpdateTime" since="9" />
+		<field name="packageName" />
+		<field name="permissions" />
+		<field name="providers" />
+		<field name="receivers" />
+		<field name="reqFeatures" since="5" />
+		<field name="requestedPermissions" />
+		<field name="services" />
+		<field name="sharedUserId" since="3" />
+		<field name="sharedUserLabel" since="3" />
+		<field name="signatures" />
+		<field name="versionCode" />
+		<field name="versionName" />
+	</class>
+	<class name="android/content/pm/PackageItemInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/PackageItemInfo;)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="dumpBack(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="dumpFront(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="loadLogo(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="icon" />
+		<field name="labelRes" />
+		<field name="logo" since="9" />
+		<field name="metaData" />
+		<field name="name" />
+		<field name="nonLocalizedLabel" />
+		<field name="packageName" />
+	</class>
+	<class name="android/content/pm/PackageItemInfo$DisplayNameComparator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Comparator" />
+		<method name="&lt;init>(Landroid/content/pm/PackageManager;)V" />
+		<method name="compare(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/PackageItemInfo;)I" />
+	</class>
+	<class name="android/content/pm/PackageManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addPackageToPreferred(Ljava/lang/String;)V" />
+		<method name="addPermission(Landroid/content/pm/PermissionInfo;)Z" />
+		<method name="addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z" since="8" />
+		<method name="addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;)V" />
+		<method name="canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8" />
+		<method name="checkPermission(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="checkSignatures(II)I" since="5" />
+		<method name="checkSignatures(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="clearPackagePreferredActivities(Ljava/lang/String;)V" />
+		<method name="currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8" />
+		<method name="getActivityIcon(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getActivityIcon(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;" />
+		<method name="getActivityLogo(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getActivityLogo(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getAllPermissionGroups(I)Ljava/util/List;" />
+		<method name="getApplicationEnabledSetting(Ljava/lang/String;)I" />
+		<method name="getApplicationIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getApplicationIcon(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;" />
+		<method name="getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
+		<method name="getApplicationLogo(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getApplicationLogo(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getComponentEnabledSetting(Landroid/content/ComponentName;)I" />
+		<method name="getDefaultActivityIcon()Landroid/graphics/drawable/Drawable;" />
+		<method name="getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getInstalledApplications(I)Ljava/util/List;" />
+		<method name="getInstalledPackages(I)Ljava/util/List;" />
+		<method name="getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;" since="5" />
+		<method name="getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;" />
+		<method name="getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;" since="3" />
+		<method name="getNameForUid(I)Ljava/lang/String;" />
+		<method name="getPackageArchiveInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;" />
+		<method name="getPackageGids(Ljava/lang/String;)[I" />
+		<method name="getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;" />
+		<method name="getPackagesForUid(I)[Ljava/lang/String;" />
+		<method name="getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;" />
+		<method name="getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;" />
+		<method name="getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I" />
+		<method name="getPreferredPackages(I)Ljava/util/List;" />
+		<method name="getProviderInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ProviderInfo;" since="9" />
+		<method name="getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;" />
+		<method name="getResourcesForActivity(Landroid/content/ComponentName;)Landroid/content/res/Resources;" />
+		<method name="getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;" />
+		<method name="getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;" />
+		<method name="getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;" />
+		<method name="getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo;" since="5" />
+		<method name="getSystemSharedLibraryNames()[Ljava/lang/String;" since="3" />
+		<method name="getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
+		<method name="getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser;" />
+		<method name="hasSystemFeature(Ljava/lang/String;)Z" since="5" />
+		<method name="installPackage(Landroid/net/Uri;)V" />
+		<method name="installPackage(Landroid/net/Uri;Landroid/content/pm/IPackageInstallObserver;I)V" />
+		<method name="isSafeMode()Z" since="3" />
+		<method name="queryBroadcastReceivers(Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryContentProviders(Ljava/lang/String;II)Ljava/util/List;" />
+		<method name="queryInstrumentation(Ljava/lang/String;I)Ljava/util/List;" />
+		<method name="queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;" />
+		<method name="removePackageFromPreferred(Ljava/lang/String;)V" />
+		<method name="removePermission(Ljava/lang/String;)V" />
+		<method name="resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;" />
+		<method name="resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo;" />
+		<method name="resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;" />
+		<method name="setApplicationEnabledSetting(Ljava/lang/String;II)V" />
+		<method name="setComponentEnabledSetting(Landroid/content/ComponentName;II)V" />
+		<method name="setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V" since="11" />
+		<method name="verifyPendingInstall(II)V" since="14" />
+		<field name="COMPONENT_ENABLED_STATE_DEFAULT" />
+		<field name="COMPONENT_ENABLED_STATE_DISABLED" />
+		<field name="COMPONENT_ENABLED_STATE_DISABLED_USER" since="14" />
+		<field name="COMPONENT_ENABLED_STATE_ENABLED" />
+		<field name="DONT_KILL_APP" />
+		<field name="EXTRA_VERIFICATION_ID" since="14" />
+		<field name="FEATURE_AUDIO_LOW_LATENCY" since="9" />
+		<field name="FEATURE_BLUETOOTH" since="8" />
+		<field name="FEATURE_CAMERA" since="7" />
+		<field name="FEATURE_CAMERA_AUTOFOCUS" since="7" />
+		<field name="FEATURE_CAMERA_FLASH" since="7" />
+		<field name="FEATURE_CAMERA_FRONT" since="9" />
+		<field name="FEATURE_FAKETOUCH" since="11" />
+		<field name="FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT" since="13" />
+		<field name="FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND" since="13" />
+		<field name="FEATURE_LIVE_WALLPAPER" since="7" />
+		<field name="FEATURE_LOCATION" since="8" />
+		<field name="FEATURE_LOCATION_GPS" since="8" />
+		<field name="FEATURE_LOCATION_NETWORK" since="8" />
+		<field name="FEATURE_MICROPHONE" since="8" />
+		<field name="FEATURE_NFC" since="9" />
+		<field name="FEATURE_SCREEN_LANDSCAPE" since="13" />
+		<field name="FEATURE_SCREEN_PORTRAIT" since="13" />
+		<field name="FEATURE_SENSOR_ACCELEROMETER" since="8" />
+		<field name="FEATURE_SENSOR_BAROMETER" since="9" />
+		<field name="FEATURE_SENSOR_COMPASS" since="8" />
+		<field name="FEATURE_SENSOR_GYROSCOPE" since="9" />
+		<field name="FEATURE_SENSOR_LIGHT" since="7" />
+		<field name="FEATURE_SENSOR_PROXIMITY" since="7" />
+		<field name="FEATURE_SIP" since="9" />
+		<field name="FEATURE_SIP_VOIP" since="9" />
+		<field name="FEATURE_TELEPHONY" since="7" />
+		<field name="FEATURE_TELEPHONY_CDMA" since="7" />
+		<field name="FEATURE_TELEPHONY_GSM" since="7" />
+		<field name="FEATURE_TOUCHSCREEN" since="8" />
+		<field name="FEATURE_TOUCHSCREEN_MULTITOUCH" since="7" />
+		<field name="FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT" since="8" />
+		<field name="FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND" since="9" />
+		<field name="FEATURE_USB_ACCESSORY" since="12" />
+		<field name="FEATURE_USB_HOST" since="12" />
+		<field name="FEATURE_WIFI" since="8" />
+		<field name="FEATURE_WIFI_DIRECT" since="14" />
+		<field name="FORWARD_LOCK_PACKAGE" />
+		<field name="GET_ACTIVITIES" />
+		<field name="GET_CONFIGURATIONS" since="3" />
+		<field name="GET_DISABLED_COMPONENTS" />
+		<field name="GET_GIDS" />
+		<field name="GET_INSTRUMENTATION" />
+		<field name="GET_INTENT_FILTERS" />
+		<field name="GET_META_DATA" />
+		<field name="GET_PERMISSIONS" />
+		<field name="GET_PROVIDERS" />
+		<field name="GET_RECEIVERS" />
+		<field name="GET_RESOLVED_FILTER" />
+		<field name="GET_SERVICES" />
+		<field name="GET_SHARED_LIBRARY_FILES" />
+		<field name="GET_SIGNATURES" />
+		<field name="GET_UNINSTALLED_PACKAGES" since="3" />
+		<field name="GET_URI_PERMISSION_PATTERNS" />
+		<field name="INSTALL_FAILED_ALREADY_EXISTS" />
+		<field name="INSTALL_FAILED_CONFLICTING_PROVIDER" since="3" />
+		<field name="INSTALL_FAILED_DEXOPT" />
+		<field name="INSTALL_FAILED_DUPLICATE_PACKAGE" />
+		<field name="INSTALL_FAILED_INSUFFICIENT_STORAGE" />
+		<field name="INSTALL_FAILED_INVALID_APK" />
+		<field name="INSTALL_FAILED_INVALID_URI" />
+		<field name="INSTALL_FAILED_MISSING_SHARED_LIBRARY" />
+		<field name="INSTALL_FAILED_NO_SHARED_USER" />
+		<field name="INSTALL_FAILED_OLDER_SDK" />
+		<field name="INSTALL_FAILED_REPLACE_COULDNT_DELETE" />
+		<field name="INSTALL_FAILED_SHARED_USER_INCOMPATIBLE" />
+		<field name="INSTALL_FAILED_UPDATE_INCOMPATIBLE" />
+		<field name="INSTALL_PARSE_FAILED_BAD_MANIFEST" />
+		<field name="INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME" />
+		<field name="INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID" />
+		<field name="INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING" />
+		<field name="INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES" />
+		<field name="INSTALL_PARSE_FAILED_MANIFEST_EMPTY" />
+		<field name="INSTALL_PARSE_FAILED_MANIFEST_MALFORMED" />
+		<field name="INSTALL_PARSE_FAILED_NOT_APK" />
+		<field name="INSTALL_PARSE_FAILED_NO_CERTIFICATES" />
+		<field name="INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION" />
+		<field name="INSTALL_SUCCEEDED" />
+		<field name="MATCH_DEFAULT_ONLY" />
+		<field name="PERMISSION_DENIED" />
+		<field name="PERMISSION_GRANTED" />
+		<field name="PKG_INSTALL_COMPLETE" />
+		<field name="PKG_INSTALL_INCOMPLETE" />
+		<field name="REPLACE_EXISTING_PACKAGE" />
+		<field name="SIGNATURE_FIRST_NOT_SIGNED" />
+		<field name="SIGNATURE_MATCH" />
+		<field name="SIGNATURE_NEITHER_SIGNED" />
+		<field name="SIGNATURE_NO_MATCH" />
+		<field name="SIGNATURE_SECOND_NOT_SIGNED" />
+		<field name="SIGNATURE_UNKNOWN_PACKAGE" />
+		<field name="VERIFICATION_ALLOW" since="14" />
+		<field name="VERIFICATION_REJECT" since="14" />
+	</class>
+	<class name="android/content/pm/PackageManager$NameNotFoundException" since="1">
+		<extends name="android/util/AndroidException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/pm/PackageStats" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/content/pm/PackageStats;)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="cacheSize" />
+		<field name="codeSize" />
+		<field name="dataSize" />
+		<field name="externalCacheSize" since="11" />
+		<field name="externalCodeSize" since="14" />
+		<field name="externalDataSize" since="11" />
+		<field name="externalMediaSize" since="11" />
+		<field name="externalObbSize" since="11" />
+		<field name="packageName" />
+	</class>
+	<class name="android/content/pm/PathPermission" since="4">
+		<extends name="android/os/PatternMatcher" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="getReadPermission()Ljava/lang/String;" />
+		<method name="getWritePermission()Ljava/lang/String;" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/pm/PermissionGroupInfo" since="1">
+		<extends name="android/content/pm/PackageItemInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/PermissionGroupInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<field name="CREATOR" />
+		<field name="descriptionRes" />
+		<field name="nonLocalizedDescription" />
+	</class>
+	<class name="android/content/pm/PermissionInfo" since="1">
+		<extends name="android/content/pm/PackageItemInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/PermissionInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="loadDescription(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<field name="CREATOR" />
+		<field name="PROTECTION_DANGEROUS" />
+		<field name="PROTECTION_NORMAL" />
+		<field name="PROTECTION_SIGNATURE" />
+		<field name="PROTECTION_SIGNATURE_OR_SYSTEM" />
+		<field name="descriptionRes" />
+		<field name="group" />
+		<field name="nonLocalizedDescription" />
+		<field name="protectionLevel" />
+	</class>
+	<class name="android/content/pm/ProviderInfo" since="1">
+		<extends name="android/content/pm/ComponentInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/ProviderInfo;)V" />
+		<method name="describeContents()I" />
+		<field name="CREATOR" />
+		<field name="authority" />
+		<field name="grantUriPermissions" />
+		<field name="initOrder" />
+		<field name="isSyncable" />
+		<field name="multiprocess" />
+		<field name="pathPermissions" since="4" />
+		<field name="readPermission" />
+		<field name="uriPermissionPatterns" />
+		<field name="writePermission" />
+	</class>
+	<class name="android/content/pm/ResolveInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getIconResource()I" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="activityInfo" />
+		<field name="filter" />
+		<field name="icon" />
+		<field name="isDefault" />
+		<field name="labelRes" />
+		<field name="match" />
+		<field name="nonLocalizedLabel" />
+		<field name="preferredOrder" />
+		<field name="priority" />
+		<field name="resolvePackageName" since="5" />
+		<field name="serviceInfo" />
+		<field name="specificIndex" />
+	</class>
+	<class name="android/content/pm/ResolveInfo$DisplayNameComparator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Comparator" />
+		<method name="&lt;init>(Landroid/content/pm/PackageManager;)V" />
+		<method name="compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I" />
+	</class>
+	<class name="android/content/pm/ServiceInfo" since="1">
+		<extends name="android/content/pm/ComponentInfo" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/pm/ServiceInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="5" />
+		<field name="CREATOR" />
+		<field name="FLAG_STOP_WITH_TASK" since="14" />
+		<field name="flags" since="14" />
+		<field name="permission" />
+	</class>
+	<class name="android/content/pm/Signature" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="describeContents()I" />
+		<method name="toByteArray()[B" />
+		<method name="toChars()[C" />
+		<method name="toChars([C[I)[C" />
+		<method name="toCharsString()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/res/AssetFileDescriptor" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" since="3" />
+		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;JJ)V" />
+		<method name="close()V" />
+		<method name="createInputStream()Ljava/io/FileInputStream;" since="3" />
+		<method name="createOutputStream()Ljava/io/FileOutputStream;" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getDeclaredLength()J" since="3" />
+		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
+		<method name="getLength()J" />
+		<method name="getParcelFileDescriptor()Landroid/os/ParcelFileDescriptor;" />
+		<method name="getStartOffset()J" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+		<field name="CREATOR" since="3" />
+		<field name="UNKNOWN_LENGTH" since="3" />
+	</class>
+	<class name="android/content/res/AssetFileDescriptor$AutoCloseInputStream" since="3">
+		<extends name="android/os/ParcelFileDescriptor$AutoCloseInputStream" />
+		<method name="&lt;init>(Landroid/content/res/AssetFileDescriptor;)V" />
+	</class>
+	<class name="android/content/res/AssetFileDescriptor$AutoCloseOutputStream" since="3">
+		<extends name="android/os/ParcelFileDescriptor$AutoCloseOutputStream" />
+		<method name="&lt;init>(Landroid/content/res/AssetFileDescriptor;)V" />
+	</class>
+	<class name="android/content/res/AssetManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="close()V" />
+		<method name="getLocales()[Ljava/lang/String;" />
+		<method name="list(Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="open(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="open(Ljava/lang/String;I)Ljava/io/InputStream;" />
+		<method name="openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
+		<method name="openNonAssetFd(ILjava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
+		<method name="openNonAssetFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;" />
+		<method name="openXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;" />
+		<method name="openXmlResourceParser(Ljava/lang/String;)Landroid/content/res/XmlResourceParser;" />
+		<field name="ACCESS_BUFFER" />
+		<field name="ACCESS_RANDOM" />
+		<field name="ACCESS_STREAMING" />
+		<field name="ACCESS_UNKNOWN" />
+	</class>
+	<class name="android/content/res/AssetManager$AssetInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="available()I" />
+		<method name="close()V" />
+		<method name="getAssetInt()I" />
+		<method name="mark(I)V" />
+		<method name="markSupported()Z" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="reset()V" />
+		<method name="skip(J)J" />
+	</class>
+	<class name="android/content/res/ColorStateList" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>([[I[I)V" />
+		<method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/res/ColorStateList;" />
+		<method name="describeContents()I" />
+		<method name="getColorForState([II)I" />
+		<method name="getDefaultColor()I" />
+		<method name="isStateful()Z" />
+		<method name="valueOf(I)Landroid/content/res/ColorStateList;" />
+		<method name="withAlpha(I)Landroid/content/res/ColorStateList;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/content/res/Configuration" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/res/Configuration;)V" />
+		<method name="compareTo(Landroid/content/res/Configuration;)I" />
+		<method name="describeContents()I" />
+		<method name="diff(Landroid/content/res/Configuration;)I" />
+		<method name="equals(Landroid/content/res/Configuration;)Z" />
+		<method name="isLayoutSizeAtLeast(I)Z" since="11" />
+		<method name="needNewResources(II)Z" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" since="8" />
+		<method name="setTo(Landroid/content/res/Configuration;)V" since="8" />
+		<method name="setToDefaults()V" />
+		<method name="updateFrom(Landroid/content/res/Configuration;)I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="HARDKEYBOARDHIDDEN_NO" since="3" />
+		<field name="HARDKEYBOARDHIDDEN_UNDEFINED" since="3" />
+		<field name="HARDKEYBOARDHIDDEN_YES" since="3" />
+		<field name="KEYBOARDHIDDEN_NO" />
+		<field name="KEYBOARDHIDDEN_UNDEFINED" />
+		<field name="KEYBOARDHIDDEN_YES" />
+		<field name="KEYBOARD_12KEY" />
+		<field name="KEYBOARD_NOKEYS" />
+		<field name="KEYBOARD_QWERTY" />
+		<field name="KEYBOARD_UNDEFINED" />
+		<field name="NAVIGATIONHIDDEN_NO" since="5" />
+		<field name="NAVIGATIONHIDDEN_UNDEFINED" since="5" />
+		<field name="NAVIGATIONHIDDEN_YES" since="5" />
+		<field name="NAVIGATION_DPAD" />
+		<field name="NAVIGATION_NONAV" />
+		<field name="NAVIGATION_TRACKBALL" />
+		<field name="NAVIGATION_UNDEFINED" />
+		<field name="NAVIGATION_WHEEL" />
+		<field name="ORIENTATION_LANDSCAPE" />
+		<field name="ORIENTATION_PORTRAIT" />
+		<field name="ORIENTATION_SQUARE" />
+		<field name="ORIENTATION_UNDEFINED" />
+		<field name="SCREENLAYOUT_LONG_MASK" since="4" />
+		<field name="SCREENLAYOUT_LONG_NO" since="4" />
+		<field name="SCREENLAYOUT_LONG_UNDEFINED" since="4" />
+		<field name="SCREENLAYOUT_LONG_YES" since="4" />
+		<field name="SCREENLAYOUT_SIZE_LARGE" since="4" />
+		<field name="SCREENLAYOUT_SIZE_MASK" since="4" />
+		<field name="SCREENLAYOUT_SIZE_NORMAL" since="4" />
+		<field name="SCREENLAYOUT_SIZE_SMALL" since="4" />
+		<field name="SCREENLAYOUT_SIZE_UNDEFINED" since="4" />
+		<field name="SCREENLAYOUT_SIZE_XLARGE" since="9" />
+		<field name="SCREEN_HEIGHT_DP_UNDEFINED" since="13" />
+		<field name="SCREEN_WIDTH_DP_UNDEFINED" since="13" />
+		<field name="SMALLEST_SCREEN_WIDTH_DP_UNDEFINED" since="13" />
+		<field name="TOUCHSCREEN_FINGER" />
+		<field name="TOUCHSCREEN_NOTOUCH" />
+		<field name="TOUCHSCREEN_STYLUS" />
+		<field name="TOUCHSCREEN_UNDEFINED" />
+		<field name="UI_MODE_NIGHT_MASK" since="8" />
+		<field name="UI_MODE_NIGHT_NO" since="8" />
+		<field name="UI_MODE_NIGHT_UNDEFINED" since="8" />
+		<field name="UI_MODE_NIGHT_YES" since="8" />
+		<field name="UI_MODE_TYPE_CAR" since="8" />
+		<field name="UI_MODE_TYPE_DESK" since="8" />
+		<field name="UI_MODE_TYPE_MASK" since="8" />
+		<field name="UI_MODE_TYPE_NORMAL" since="8" />
+		<field name="UI_MODE_TYPE_TELEVISION" since="13" />
+		<field name="UI_MODE_TYPE_UNDEFINED" since="8" />
+		<field name="fontScale" />
+		<field name="hardKeyboardHidden" since="3" />
+		<field name="keyboard" />
+		<field name="keyboardHidden" />
+		<field name="locale" />
+		<field name="mcc" />
+		<field name="mnc" />
+		<field name="navigation" />
+		<field name="navigationHidden" since="5" />
+		<field name="orientation" />
+		<field name="screenHeightDp" since="13" />
+		<field name="screenLayout" since="4" />
+		<field name="screenWidthDp" since="13" />
+		<field name="smallestScreenWidthDp" since="13" />
+		<field name="touchscreen" />
+		<field name="uiMode" since="8" />
+	</class>
+	<class name="android/content/res/ObbInfo" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="OBB_OVERLAY" />
+		<field name="filename" />
+		<field name="flags" />
+		<field name="packageName" />
+		<field name="version" />
+	</class>
+	<class name="android/content/res/ObbScanner" since="9">
+		<extends name="java/lang/Object" />
+		<method name="getObbInfo(Ljava/lang/String;)Landroid/content/res/ObbInfo;" />
+	</class>
+	<class name="android/content/res/Resources" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V" />
+		<method name="finishPreloading()V" />
+		<method name="flushLayoutCache()V" />
+		<method name="getAnimation(I)Landroid/content/res/XmlResourceParser;" />
+		<method name="getAssets()Landroid/content/res/AssetManager;" />
+		<method name="getBoolean(I)Z" since="3" />
+		<method name="getColor(I)I" />
+		<method name="getColorStateList(I)Landroid/content/res/ColorStateList;" />
+		<method name="getConfiguration()Landroid/content/res/Configuration;" />
+		<method name="getDimension(I)F" />
+		<method name="getDimensionPixelOffset(I)I" />
+		<method name="getDimensionPixelSize(I)I" />
+		<method name="getDisplayMetrics()Landroid/util/DisplayMetrics;" />
+		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" />
+		<method name="getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;" since="15" />
+		<method name="getFraction(III)F" since="3" />
+		<method name="getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getIntArray(I)[I" />
+		<method name="getInteger(I)I" />
+		<method name="getLayout(I)Landroid/content/res/XmlResourceParser;" />
+		<method name="getMovie(I)Landroid/graphics/Movie;" />
+		<method name="getQuantityString(II)Ljava/lang/String;" />
+		<method name="getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="getQuantityText(II)Ljava/lang/CharSequence;" />
+		<method name="getResourceEntryName(I)Ljava/lang/String;" />
+		<method name="getResourceName(I)Ljava/lang/String;" />
+		<method name="getResourcePackageName(I)Ljava/lang/String;" />
+		<method name="getResourceTypeName(I)Ljava/lang/String;" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getString(I[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="getStringArray(I)[Ljava/lang/String;" />
+		<method name="getSystem()Landroid/content/res/Resources;" />
+		<method name="getText(I)Ljava/lang/CharSequence;" />
+		<method name="getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTextArray(I)[Ljava/lang/CharSequence;" />
+		<method name="getValue(ILandroid/util/TypedValue;Z)V" />
+		<method name="getValue(Ljava/lang/String;Landroid/util/TypedValue;Z)V" />
+		<method name="getValueForDensity(IILandroid/util/TypedValue;Z)V" since="15" />
+		<method name="getXml(I)Landroid/content/res/XmlResourceParser;" />
+		<method name="newTheme()Landroid/content/res/Resources$Theme;" />
+		<method name="obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;" />
+		<method name="obtainTypedArray(I)Landroid/content/res/TypedArray;" />
+		<method name="openRawResource(I)Ljava/io/InputStream;" />
+		<method name="openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;" since="3" />
+		<method name="openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor;" />
+		<method name="parseBundleExtra(Ljava/lang/String;Landroid/util/AttributeSet;Landroid/os/Bundle;)V" since="3" />
+		<method name="parseBundleExtras(Landroid/content/res/XmlResourceParser;Landroid/os/Bundle;)V" since="3" />
+		<method name="updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V" />
+	</class>
+	<class name="android/content/res/Resources$NotFoundException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/content/res/Resources$Theme" since="1">
+		<extends name="java/lang/Object" />
+		<method name="applyStyle(IZ)V" />
+		<method name="dump(ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;" />
+		<method name="obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;" />
+		<method name="obtainStyledAttributes([I)Landroid/content/res/TypedArray;" />
+		<method name="resolveAttribute(ILandroid/util/TypedValue;Z)Z" />
+		<method name="setTo(Landroid/content/res/Resources$Theme;)V" />
+	</class>
+	<class name="android/content/res/TypedArray" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getBoolean(IZ)Z" />
+		<method name="getColor(II)I" />
+		<method name="getColorStateList(I)Landroid/content/res/ColorStateList;" />
+		<method name="getDimension(IF)F" />
+		<method name="getDimensionPixelOffset(II)I" />
+		<method name="getDimensionPixelSize(II)I" />
+		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" />
+		<method name="getFloat(IF)F" />
+		<method name="getFraction(IIIF)F" />
+		<method name="getIndex(I)I" />
+		<method name="getIndexCount()I" />
+		<method name="getInt(II)I" />
+		<method name="getInteger(II)I" />
+		<method name="getLayoutDimension(II)I" since="3" />
+		<method name="getLayoutDimension(ILjava/lang/String;)I" />
+		<method name="getNonResourceString(I)Ljava/lang/String;" />
+		<method name="getPositionDescription()Ljava/lang/String;" />
+		<method name="getResourceId(II)I" />
+		<method name="getResources()Landroid/content/res/Resources;" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getText(I)Ljava/lang/CharSequence;" />
+		<method name="getTextArray(I)[Ljava/lang/CharSequence;" />
+		<method name="getValue(ILandroid/util/TypedValue;)Z" />
+		<method name="hasValue(I)Z" />
+		<method name="length()I" />
+		<method name="peekValue(I)Landroid/util/TypedValue;" />
+		<method name="recycle()V" />
+	</class>
+	<class name="android/content/res/XmlResourceParser" since="1">
+		<implements name="android/util/AttributeSet" />
+		<implements name="org/xmlpull/v1/XmlPullParser" />
+		<method name="close()V" />
+	</class>
+	<class name="android/database/AbstractCursor" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/database/CrossProcessCursor" />
+		<method name="&lt;init>()V" />
+		<method name="checkPosition()V" />
+		<method name="close()V" />
+		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
+		<method name="deactivate()V" />
+		<method name="fillWindow(ILandroid/database/CursorWindow;)V" />
+		<method name="getBlob(I)[B" />
+		<method name="getColumnCount()I" />
+		<method name="getColumnIndex(Ljava/lang/String;)I" />
+		<method name="getColumnIndexOrThrow(Ljava/lang/String;)I" />
+		<method name="getColumnName(I)Ljava/lang/String;" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDouble(I)D" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getNotificationUri()Landroid/net/Uri;" since="11" />
+		<method name="getPosition()I" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getType(I)I" since="11" />
+		<method name="getUpdatedField(I)Ljava/lang/Object;" />
+		<method name="getWantsAllOnMoveCalls()Z" />
+		<method name="getWindow()Landroid/database/CursorWindow;" />
+		<method name="isAfterLast()Z" />
+		<method name="isBeforeFirst()Z" />
+		<method name="isClosed()Z" />
+		<method name="isFieldUpdated(I)Z" />
+		<method name="isFirst()Z" />
+		<method name="isLast()Z" />
+		<method name="isNull(I)Z" />
+		<method name="move(I)Z" />
+		<method name="moveToFirst()Z" />
+		<method name="moveToLast()Z" />
+		<method name="moveToNext()Z" />
+		<method name="moveToPosition(I)Z" />
+		<method name="moveToPrevious()Z" />
+		<method name="onChange(Z)V" />
+		<method name="onMove(II)Z" />
+		<method name="registerContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="requery()Z" />
+		<method name="respond(Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V" />
+		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<field name="mClosed" />
+		<field name="mContentResolver" />
+		<field name="mCurrentRowID" />
+		<field name="mPos" />
+		<field name="mRowIdColumnIndex" />
+		<field name="mUpdatedRows" />
+	</class>
+	<class name="android/database/AbstractCursor$SelfContentObserver" since="1">
+		<extends name="android/database/ContentObserver" />
+		<method name="&lt;init>(Landroid/database/AbstractCursor;)V" />
+	</class>
+	<class name="android/database/AbstractWindowedCursor" since="1">
+		<extends name="android/database/AbstractCursor" />
+		<method name="&lt;init>()V" />
+		<method name="getDouble(I)D" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="hasWindow()Z" />
+		<method name="isBlob(I)Z" />
+		<method name="isFloat(I)Z" since="5" />
+		<method name="isLong(I)Z" since="5" />
+		<method name="isNull(I)Z" />
+		<method name="isString(I)Z" since="5" />
+		<method name="setWindow(Landroid/database/CursorWindow;)V" />
+		<field name="mWindow" />
+	</class>
+	<class name="android/database/CharArrayBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>([C)V" />
+		<field name="data" />
+		<field name="sizeCopied" />
+	</class>
+	<class name="android/database/ContentObservable" since="1">
+		<extends name="android/database/Observable" />
+		<method name="&lt;init>()V" />
+		<method name="dispatchChange(Z)V" />
+		<method name="notifyChange(Z)V" />
+		<method name="registerObserver(Landroid/database/ContentObserver;)V" />
+	</class>
+	<class name="android/database/ContentObserver" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/os/Handler;)V" />
+		<method name="deliverSelfNotifications()Z" />
+		<method name="dispatchChange(Z)V" />
+		<method name="onChange(Z)V" />
+	</class>
+	<class name="android/database/CrossProcessCursor" since="1">
+		<implements name="android/database/Cursor" />
+		<method name="fillWindow(ILandroid/database/CursorWindow;)V" />
+		<method name="getWindow()Landroid/database/CursorWindow;" />
+		<method name="onMove(II)Z" />
+	</class>
+	<class name="android/database/CrossProcessCursorWrapper" since="15">
+		<extends name="android/database/CursorWrapper" />
+		<implements name="android/database/CrossProcessCursor" />
+		<method name="&lt;init>(Landroid/database/Cursor;)V" />
+		<method name="fillWindow(ILandroid/database/CursorWindow;)V" />
+		<method name="getWindow()Landroid/database/CursorWindow;" />
+		<method name="onMove(II)Z" />
+	</class>
+	<class name="android/database/Cursor" since="1">
+		<method name="close()V" />
+		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
+		<method name="deactivate()V" />
+		<method name="getBlob(I)[B" />
+		<method name="getColumnCount()I" />
+		<method name="getColumnIndex(Ljava/lang/String;)I" />
+		<method name="getColumnIndexOrThrow(Ljava/lang/String;)I" />
+		<method name="getColumnName(I)Ljava/lang/String;" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDouble(I)D" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getPosition()I" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getType(I)I" since="11" />
+		<method name="getWantsAllOnMoveCalls()Z" />
+		<method name="isAfterLast()Z" />
+		<method name="isBeforeFirst()Z" />
+		<method name="isClosed()Z" />
+		<method name="isFirst()Z" />
+		<method name="isLast()Z" />
+		<method name="isNull(I)Z" />
+		<method name="move(I)Z" />
+		<method name="moveToFirst()Z" />
+		<method name="moveToLast()Z" />
+		<method name="moveToNext()Z" />
+		<method name="moveToPosition(I)Z" />
+		<method name="moveToPrevious()Z" />
+		<method name="registerContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="requery()Z" />
+		<method name="respond(Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V" />
+		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<field name="FIELD_TYPE_BLOB" since="11" />
+		<field name="FIELD_TYPE_FLOAT" since="11" />
+		<field name="FIELD_TYPE_INTEGER" since="11" />
+		<field name="FIELD_TYPE_NULL" since="11" />
+		<field name="FIELD_TYPE_STRING" since="11" />
+	</class>
+	<class name="android/database/CursorIndexOutOfBoundsException" since="1">
+		<extends name="java/lang/IndexOutOfBoundsException" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/CursorJoiner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Iterable" />
+		<implements name="java/util/Iterator" />
+		<method name="&lt;init>(Landroid/database/Cursor;[Ljava/lang/String;Landroid/database/Cursor;[Ljava/lang/String;)V" />
+		<method name="hasNext()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="next()Landroid/database/CursorJoiner$Result;" />
+		<method name="remove()V" />
+	</class>
+	<class name="android/database/CursorJoiner$Result" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/database/CursorJoiner$Result;" />
+		<method name="values()[Landroid/database/CursorJoiner$Result;" />
+		<field name="BOTH" />
+		<field name="LEFT" />
+		<field name="RIGHT" />
+	</class>
+	<class name="android/database/CursorWindow" since="1">
+		<extends name="android/database/sqlite/SQLiteClosable" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" since="15" />
+		<method name="&lt;init>(Z)V" />
+		<method name="allocRow()Z" />
+		<method name="clear()V" />
+		<method name="close()V" />
+		<method name="copyStringToBuffer(IILandroid/database/CharArrayBuffer;)V" />
+		<method name="describeContents()I" />
+		<method name="freeLastRow()V" />
+		<method name="getBlob(II)[B" />
+		<method name="getDouble(II)D" />
+		<method name="getFloat(II)F" />
+		<method name="getInt(II)I" />
+		<method name="getLong(II)J" />
+		<method name="getNumRows()I" />
+		<method name="getShort(II)S" />
+		<method name="getStartPosition()I" />
+		<method name="getString(II)Ljava/lang/String;" />
+		<method name="getType(II)I" since="11" />
+		<method name="isBlob(II)Z" />
+		<method name="isFloat(II)Z" since="5" />
+		<method name="isLong(II)Z" since="5" />
+		<method name="isNull(II)Z" />
+		<method name="isString(II)Z" since="5" />
+		<method name="newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;" />
+		<method name="onAllReferencesReleased()V" />
+		<method name="putBlob([BII)Z" />
+		<method name="putDouble(DII)Z" />
+		<method name="putLong(JII)Z" />
+		<method name="putNull(II)Z" />
+		<method name="putString(Ljava/lang/String;II)Z" />
+		<method name="setNumColumns(I)Z" />
+		<method name="setStartPosition(I)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/database/CursorWrapper" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/database/Cursor" />
+		<method name="&lt;init>(Landroid/database/Cursor;)V" />
+		<method name="close()V" />
+		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
+		<method name="deactivate()V" />
+		<method name="getBlob(I)[B" />
+		<method name="getColumnCount()I" />
+		<method name="getColumnIndex(Ljava/lang/String;)I" />
+		<method name="getColumnIndexOrThrow(Ljava/lang/String;)I" />
+		<method name="getColumnName(I)Ljava/lang/String;" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDouble(I)D" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getPosition()I" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getType(I)I" since="11" />
+		<method name="getWantsAllOnMoveCalls()Z" />
+		<method name="getWrappedCursor()Landroid/database/Cursor;" since="11" />
+		<method name="isAfterLast()Z" />
+		<method name="isBeforeFirst()Z" />
+		<method name="isClosed()Z" />
+		<method name="isFirst()Z" />
+		<method name="isLast()Z" />
+		<method name="isNull(I)Z" />
+		<method name="move(I)Z" />
+		<method name="moveToFirst()Z" />
+		<method name="moveToLast()Z" />
+		<method name="moveToNext()Z" />
+		<method name="moveToPosition(I)Z" />
+		<method name="moveToPrevious()Z" />
+		<method name="registerContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="requery()Z" />
+		<method name="respond(Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V" />
+		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+	</class>
+	<class name="android/database/DataSetObservable" since="1">
+		<extends name="android/database/Observable" />
+		<method name="&lt;init>()V" />
+		<method name="notifyChanged()V" />
+		<method name="notifyInvalidated()V" />
+	</class>
+	<class name="android/database/DataSetObserver" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="onChanged()V" />
+		<method name="onInvalidated()V" />
+	</class>
+	<class name="android/database/DatabaseErrorHandler" since="11">
+		<method name="onCorruption(Landroid/database/sqlite/SQLiteDatabase;)V" />
+	</class>
+	<class name="android/database/DatabaseUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V" />
+		<method name="appendSelectionArgs([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;" since="11" />
+		<method name="appendValueToSql(Ljava/lang/StringBuilder;Ljava/lang/Object;)V" />
+		<method name="bindObjectToProgram(Landroid/database/sqlite/SQLiteProgram;ILjava/lang/Object;)V" />
+		<method name="blobFileDescriptorForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="11" />
+		<method name="blobFileDescriptorForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;" since="11" />
+		<method name="concatenateWhere(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11" />
+		<method name="createDbFromSqlStatements(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="cursorDoubleToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
+		<method name="cursorDoubleToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
+		<method name="cursorDoubleToCursorValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
+		<method name="cursorFloatToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
+		<method name="cursorIntToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
+		<method name="cursorIntToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
+		<method name="cursorIntToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
+		<method name="cursorLongToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
+		<method name="cursorLongToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
+		<method name="cursorLongToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
+		<method name="cursorRowToContentValues(Landroid/database/Cursor;Landroid/content/ContentValues;)V" />
+		<method name="cursorShortToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
+		<method name="cursorStringToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;)V" />
+		<method name="cursorStringToContentValues(Landroid/database/Cursor;Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;)V" />
+		<method name="cursorStringToContentValuesIfPresent(Landroid/database/Cursor;Landroid/content/ContentValues;Ljava/lang/String;)V" since="8" />
+		<method name="cursorStringToInsertHelper(Landroid/database/Cursor;Ljava/lang/String;Landroid/database/DatabaseUtils$InsertHelper;I)V" />
+		<method name="dumpCurrentRow(Landroid/database/Cursor;)V" />
+		<method name="dumpCurrentRow(Landroid/database/Cursor;Ljava/io/PrintStream;)V" />
+		<method name="dumpCurrentRow(Landroid/database/Cursor;Ljava/lang/StringBuilder;)V" />
+		<method name="dumpCurrentRowToString(Landroid/database/Cursor;)Ljava/lang/String;" />
+		<method name="dumpCursor(Landroid/database/Cursor;)V" />
+		<method name="dumpCursor(Landroid/database/Cursor;Ljava/io/PrintStream;)V" />
+		<method name="dumpCursor(Landroid/database/Cursor;Ljava/lang/StringBuilder;)V" />
+		<method name="dumpCursorToString(Landroid/database/Cursor;)Ljava/lang/String;" />
+		<method name="getCollationKey(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getHexCollationKey(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getSqlStatementType(Ljava/lang/String;)I" since="11" />
+		<method name="longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J" />
+		<method name="longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J" />
+		<method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J" />
+		<method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;)J" since="11" />
+		<method name="queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J" since="11" />
+		<method name="readExceptionFromParcel(Landroid/os/Parcel;)V" />
+		<method name="readExceptionWithFileNotFoundExceptionFromParcel(Landroid/os/Parcel;)V" />
+		<method name="readExceptionWithOperationApplicationExceptionFromParcel(Landroid/os/Parcel;)V" since="5" />
+		<method name="sqlEscapeString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="stringForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="stringForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="writeExceptionToParcel(Landroid/os/Parcel;Ljava/lang/Exception;)V" />
+		<field name="STATEMENT_ABORT" since="11" />
+		<field name="STATEMENT_ATTACH" since="11" />
+		<field name="STATEMENT_BEGIN" since="11" />
+		<field name="STATEMENT_COMMIT" since="11" />
+		<field name="STATEMENT_DDL" since="11" />
+		<field name="STATEMENT_OTHER" since="11" />
+		<field name="STATEMENT_PRAGMA" since="11" />
+		<field name="STATEMENT_SELECT" since="11" />
+		<field name="STATEMENT_UNPREPARED" since="11" />
+		<field name="STATEMENT_UPDATE" since="11" />
+	</class>
+	<class name="android/database/DatabaseUtils$InsertHelper" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)V" />
+		<method name="bind(ID)V" />
+		<method name="bind(IF)V" />
+		<method name="bind(II)V" />
+		<method name="bind(IJ)V" />
+		<method name="bind(ILjava/lang/String;)V" />
+		<method name="bind(IZ)V" />
+		<method name="bind(I[B)V" />
+		<method name="bindNull(I)V" />
+		<method name="close()V" />
+		<method name="execute()J" />
+		<method name="getColumnIndex(Ljava/lang/String;)I" />
+		<method name="insert(Landroid/content/ContentValues;)J" />
+		<method name="prepareForInsert()V" />
+		<method name="prepareForReplace()V" />
+		<method name="replace(Landroid/content/ContentValues;)J" />
+		<field name="TABLE_INFO_PRAGMA_DEFAULT_INDEX" />
+	</class>
+	<class name="android/database/DefaultDatabaseErrorHandler" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/database/DatabaseErrorHandler" />
+		<method name="&lt;init>()V" />
+		<method name="onCorruption(Landroid/database/sqlite/SQLiteDatabase;)V" />
+	</class>
+	<class name="android/database/MatrixCursor" since="1">
+		<extends name="android/database/AbstractCursor" />
+		<method name="&lt;init>([Ljava/lang/String;)V" />
+		<method name="&lt;init>([Ljava/lang/String;I)V" />
+		<method name="addRow(Ljava/lang/Iterable;)V" />
+		<method name="addRow([Ljava/lang/Object;)V" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDouble(I)D" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="isNull(I)Z" />
+		<method name="newRow()Landroid/database/MatrixCursor$RowBuilder;" />
+	</class>
+	<class name="android/database/MatrixCursor$RowBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="add(Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;" />
+	</class>
+	<class name="android/database/MergeCursor" since="1">
+		<extends name="android/database/AbstractCursor" />
+		<method name="&lt;init>([Landroid/database/Cursor;)V" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDouble(I)D" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="isNull(I)Z" />
+	</class>
+	<class name="android/database/Observable" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="registerObserver(LT;)V" />
+		<method name="unregisterAll()V" />
+		<method name="unregisterObserver(LT;)V" />
+		<field name="mObservers" />
+	</class>
+	<class name="android/database/SQLException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/StaleDataException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteAbortException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteAccessPermException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteBlobTooBigException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteCantOpenDatabaseException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteClosable" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="acquireReference()V" />
+		<method name="onAllReferencesReleased()V" />
+		<method name="onAllReferencesReleasedFromContainer()V" />
+		<method name="releaseReference()V" />
+		<method name="releaseReferenceFromContainer()V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteConstraintException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteCursor" since="1">
+		<extends name="android/database/AbstractWindowedCursor" />
+		<method name="&lt;init>(Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V" since="11" />
+		<method name="&lt;init>(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDatabase()Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="setSelectionArguments([Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteCursorDriver" since="1">
+		<method name="cursorClosed()V" />
+		<method name="cursorDeactivated()V" />
+		<method name="cursorRequeried(Landroid/database/Cursor;)V" />
+		<method name="query(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="setBindArguments([Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDatabase" since="1">
+		<extends name="android/database/sqlite/SQLiteClosable" />
+		<method name="beginTransaction()V" />
+		<method name="beginTransactionNonExclusive()V" since="11" />
+		<method name="beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V" since="5" />
+		<method name="beginTransactionWithListenerNonExclusive(Landroid/database/sqlite/SQLiteTransactionListener;)V" since="11" />
+		<method name="close()V" />
+		<method name="compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;" />
+		<method name="create(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="enableWriteAheadLogging()Z" since="11" />
+		<method name="endTransaction()V" />
+		<method name="execSQL(Ljava/lang/String;)V" />
+		<method name="execSQL(Ljava/lang/String;[Ljava/lang/Object;)V" />
+		<method name="findEditTable(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getAttachedDbs()Ljava/util/List;" since="11" />
+		<method name="getMaximumSize()J" />
+		<method name="getPageSize()J" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getSyncedTables()Ljava/util/Map;" />
+		<method name="getVersion()I" />
+		<method name="inTransaction()Z" />
+		<method name="insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
+		<method name="insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
+		<method name="insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J" since="8" />
+		<method name="isDatabaseIntegrityOk()Z" since="11" />
+		<method name="isDbLockedByCurrentThread()Z" />
+		<method name="isDbLockedByOtherThreads()Z" />
+		<method name="isOpen()Z" />
+		<method name="isReadOnly()Z" />
+		<method name="markTableSyncable(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="markTableSyncable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="needUpgrade(I)Z" />
+		<method name="onAllReferencesReleased()V" />
+		<method name="openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
+		<method name="openOrCreateDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
+		<method name="query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="releaseMemory()I" />
+		<method name="replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
+		<method name="replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J" />
+		<method name="setLocale(Ljava/util/Locale;)V" />
+		<method name="setLockingEnabled(Z)V" />
+		<method name="setMaxSqlCacheSize(I)V" since="11" />
+		<method name="setMaximumSize(J)J" />
+		<method name="setPageSize(J)V" />
+		<method name="setTransactionSuccessful()V" />
+		<method name="setVersion(I)V" />
+		<method name="update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I" since="8" />
+		<method name="yieldIfContended()Z" />
+		<method name="yieldIfContendedSafely()Z" since="3" />
+		<method name="yieldIfContendedSafely(J)Z" since="5" />
+		<field name="CONFLICT_ABORT" since="8" />
+		<field name="CONFLICT_FAIL" since="8" />
+		<field name="CONFLICT_IGNORE" since="8" />
+		<field name="CONFLICT_NONE" since="8" />
+		<field name="CONFLICT_REPLACE" since="8" />
+		<field name="CONFLICT_ROLLBACK" since="8" />
+		<field name="CREATE_IF_NECESSARY" />
+		<field name="MAX_SQL_CACHE_SIZE" since="11" />
+		<field name="NO_LOCALIZED_COLLATORS" />
+		<field name="OPEN_READONLY" />
+		<field name="OPEN_READWRITE" />
+		<field name="SQLITE_MAX_LIKE_PATTERN_LENGTH" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDatabase$CursorFactory" since="1">
+		<method name="newCursor(Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)Landroid/database/Cursor;" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDatabaseCorruptException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDatabaseLockedException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDatatypeMismatchException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDiskIOException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteDoneException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteException" since="1">
+		<extends name="android/database/SQLException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteFullException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteMisuseException" since="1">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteOpenHelper" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)V" since="11" />
+		<method name="close()V" />
+		<method name="getDatabaseName()Ljava/lang/String;" since="14" />
+		<method name="getReadableDatabase()Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="onCreate(Landroid/database/sqlite/SQLiteDatabase;)V" />
+		<method name="onDowngrade(Landroid/database/sqlite/SQLiteDatabase;II)V" since="11" />
+		<method name="onOpen(Landroid/database/sqlite/SQLiteDatabase;)V" />
+		<method name="onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteOutOfMemoryException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteProgram" since="1">
+		<extends name="android/database/sqlite/SQLiteClosable" />
+		<method name="bindAllArgsAsStrings([Ljava/lang/String;)V" since="11" />
+		<method name="bindBlob(I[B)V" />
+		<method name="bindDouble(ID)V" />
+		<method name="bindLong(IJ)V" />
+		<method name="bindNull(I)V" />
+		<method name="bindString(ILjava/lang/String;)V" />
+		<method name="clearBindings()V" />
+		<method name="close()V" />
+		<method name="compile(Ljava/lang/String;Z)V" />
+		<method name="getUniqueId()I" />
+		<method name="native_bind_blob(I[B)V" />
+		<method name="native_bind_double(ID)V" />
+		<method name="native_bind_long(IJ)V" />
+		<method name="native_bind_null(I)V" />
+		<method name="native_bind_string(ILjava/lang/String;)V" />
+		<method name="native_compile(Ljava/lang/String;)V" />
+		<method name="native_finalize()V" />
+		<method name="onAllReferencesReleased()V" />
+		<field name="mDatabase" />
+		<field name="nHandle" />
+		<field name="nStatement" />
+	</class>
+	<class name="android/database/sqlite/SQLiteQuery" since="1">
+		<extends name="android/database/sqlite/SQLiteProgram" />
+	</class>
+	<class name="android/database/sqlite/SQLiteQueryBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V" />
+		<method name="appendWhere(Ljava/lang/CharSequence;)V" />
+		<method name="appendWhereEscapeString(Ljava/lang/String;)V" />
+		<method name="buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11" />
+		<method name="buildQuery([Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="buildUnionQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="buildUnionSubQuery(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="11" />
+		<method name="buildUnionSubQuery(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getTables()Ljava/lang/String;" />
+		<method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="setCursorFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)V" />
+		<method name="setDistinct(Z)V" />
+		<method name="setProjectionMap(Ljava/util/Map;)V" />
+		<method name="setStrict(Z)V" since="14" />
+		<method name="setTables(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteReadOnlyDatabaseException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteStatement" since="1">
+		<extends name="android/database/sqlite/SQLiteProgram" />
+		<method name="execute()V" />
+		<method name="executeInsert()J" />
+		<method name="executeUpdateDelete()I" since="11" />
+		<method name="simpleQueryForBlobFileDescriptor()Landroid/os/ParcelFileDescriptor;" since="11" />
+		<method name="simpleQueryForLong()J" />
+		<method name="simpleQueryForString()Ljava/lang/String;" />
+	</class>
+	<class name="android/database/sqlite/SQLiteTableLockedException" since="11">
+		<extends name="android/database/sqlite/SQLiteException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/database/sqlite/SQLiteTransactionListener" since="5">
+		<method name="onBegin()V" />
+		<method name="onCommit()V" />
+		<method name="onRollback()V" />
+	</class>
+	<class name="android/drm/DrmConvertedStatus" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I[BI)V" />
+		<field name="STATUS_ERROR" />
+		<field name="STATUS_INPUTDATA_ERROR" />
+		<field name="STATUS_OK" />
+		<field name="convertedData" />
+		<field name="offset" />
+		<field name="statusCode" />
+	</class>
+	<class name="android/drm/DrmErrorEvent" since="11">
+		<extends name="android/drm/DrmEvent" />
+		<method name="&lt;init>(IILjava/lang/String;)V" />
+		<method name="&lt;init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12" />
+		<field name="TYPE_ACQUIRE_DRM_INFO_FAILED" since="12" />
+		<field name="TYPE_NOT_SUPPORTED" />
+		<field name="TYPE_NO_INTERNET_CONNECTION" />
+		<field name="TYPE_OUT_OF_MEMORY" />
+		<field name="TYPE_PROCESS_DRM_INFO_FAILED" />
+		<field name="TYPE_REMOVE_ALL_RIGHTS_FAILED" />
+		<field name="TYPE_RIGHTS_NOT_INSTALLED" />
+		<field name="TYPE_RIGHTS_RENEWAL_NOT_ALLOWED" />
+	</class>
+	<class name="android/drm/DrmEvent" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(IILjava/lang/String;)V" />
+		<method name="&lt;init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" since="12" />
+		<method name="getMessage()Ljava/lang/String;" />
+		<method name="getType()I" />
+		<method name="getUniqueId()I" />
+		<field name="DRM_INFO_OBJECT" since="12" />
+		<field name="DRM_INFO_STATUS_OBJECT" />
+		<field name="TYPE_ALL_RIGHTS_REMOVED" />
+		<field name="TYPE_DRM_INFO_PROCESSED" />
+	</class>
+	<class name="android/drm/DrmInfo" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(I[BLjava/lang/String;)V" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getData()[B" />
+		<method name="getInfoType()I" />
+		<method name="getMimeType()Ljava/lang/String;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="keyIterator()Ljava/util/Iterator;" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="android/drm/DrmInfoEvent" since="11">
+		<extends name="android/drm/DrmEvent" />
+		<method name="&lt;init>(IILjava/lang/String;)V" />
+		<method name="&lt;init>(IILjava/lang/String;Ljava/util/HashMap;)V" since="12" />
+		<field name="TYPE_ACCOUNT_ALREADY_REGISTERED" />
+		<field name="TYPE_ALREADY_REGISTERED_BY_ANOTHER_ACCOUNT" />
+		<field name="TYPE_REMOVE_RIGHTS" />
+		<field name="TYPE_RIGHTS_INSTALLED" />
+		<field name="TYPE_RIGHTS_REMOVED" since="12" />
+		<field name="TYPE_WAIT_FOR_RIGHTS" />
+	</class>
+	<class name="android/drm/DrmInfoRequest" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(ILjava/lang/String;)V" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getInfoType()I" />
+		<method name="getMimeType()Ljava/lang/String;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="keyIterator()Ljava/util/Iterator;" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<field name="ACCOUNT_ID" />
+		<field name="SUBSCRIPTION_ID" />
+		<field name="TYPE_REGISTRATION_INFO" />
+		<field name="TYPE_RIGHTS_ACQUISITION_INFO" />
+		<field name="TYPE_RIGHTS_ACQUISITION_PROGRESS_INFO" />
+		<field name="TYPE_UNREGISTRATION_INFO" />
+	</class>
+	<class name="android/drm/DrmInfoStatus" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(IILandroid/drm/ProcessedData;Ljava/lang/String;)V" />
+		<field name="STATUS_ERROR" />
+		<field name="STATUS_OK" />
+		<field name="data" />
+		<field name="infoType" />
+		<field name="mimeType" />
+		<field name="statusCode" />
+	</class>
+	<class name="android/drm/DrmManagerClient" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="acquireDrmInfo(Landroid/drm/DrmInfoRequest;)Landroid/drm/DrmInfo;" />
+		<method name="acquireRights(Landroid/drm/DrmInfoRequest;)I" />
+		<method name="canHandle(Landroid/net/Uri;Ljava/lang/String;)Z" />
+		<method name="canHandle(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="checkRightsStatus(Landroid/net/Uri;)I" />
+		<method name="checkRightsStatus(Landroid/net/Uri;I)I" />
+		<method name="checkRightsStatus(Ljava/lang/String;)I" />
+		<method name="checkRightsStatus(Ljava/lang/String;I)I" />
+		<method name="closeConvertSession(I)Landroid/drm/DrmConvertedStatus;" />
+		<method name="convertData(I[B)Landroid/drm/DrmConvertedStatus;" />
+		<method name="getAvailableDrmEngines()[Ljava/lang/String;" />
+		<method name="getConstraints(Landroid/net/Uri;I)Landroid/content/ContentValues;" />
+		<method name="getConstraints(Ljava/lang/String;I)Landroid/content/ContentValues;" />
+		<method name="getDrmObjectType(Landroid/net/Uri;Ljava/lang/String;)I" />
+		<method name="getDrmObjectType(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getMetadata(Landroid/net/Uri;)Landroid/content/ContentValues;" />
+		<method name="getMetadata(Ljava/lang/String;)Landroid/content/ContentValues;" />
+		<method name="getOriginalMimeType(Landroid/net/Uri;)Ljava/lang/String;" />
+		<method name="getOriginalMimeType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="openConvertSession(Ljava/lang/String;)I" />
+		<method name="processDrmInfo(Landroid/drm/DrmInfo;)I" />
+		<method name="removeAllRights()I" />
+		<method name="removeRights(Landroid/net/Uri;)I" />
+		<method name="removeRights(Ljava/lang/String;)I" />
+		<method name="saveRights(Landroid/drm/DrmRights;Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="setOnErrorListener(Landroid/drm/DrmManagerClient$OnErrorListener;)V" />
+		<method name="setOnEventListener(Landroid/drm/DrmManagerClient$OnEventListener;)V" />
+		<method name="setOnInfoListener(Landroid/drm/DrmManagerClient$OnInfoListener;)V" />
+		<field name="ERROR_NONE" />
+		<field name="ERROR_UNKNOWN" />
+	</class>
+	<class name="android/drm/DrmManagerClient$OnErrorListener" since="11">
+		<method name="onError(Landroid/drm/DrmManagerClient;Landroid/drm/DrmErrorEvent;)V" />
+	</class>
+	<class name="android/drm/DrmManagerClient$OnEventListener" since="11">
+		<method name="onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;)V" since="12" />
+		<method name="onEvent(Landroid/drm/DrmManagerClient;Landroid/drm/DrmEvent;Ljava/util/HashMap;)V" />
+	</class>
+	<class name="android/drm/DrmManagerClient$OnInfoListener" since="11">
+		<method name="onInfo(Landroid/drm/DrmManagerClient;Landroid/drm/DrmInfoEvent;)V" />
+	</class>
+	<class name="android/drm/DrmRights" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/drm/ProcessedData;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getAccountId()Ljava/lang/String;" />
+		<method name="getData()[B" />
+		<method name="getMimeType()Ljava/lang/String;" />
+		<method name="getSubscriptionId()Ljava/lang/String;" />
+	</class>
+	<class name="android/drm/DrmStore" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/drm/DrmStore$Action" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="DEFAULT" />
+		<field name="DISPLAY" />
+		<field name="EXECUTE" />
+		<field name="OUTPUT" />
+		<field name="PLAY" />
+		<field name="PREVIEW" />
+		<field name="RINGTONE" />
+		<field name="TRANSFER" />
+	</class>
+	<class name="android/drm/DrmStore$ConstraintsColumns" since="11">
+		<field name="EXTENDED_METADATA" />
+		<field name="LICENSE_AVAILABLE_TIME" />
+		<field name="LICENSE_EXPIRY_TIME" />
+		<field name="LICENSE_START_TIME" />
+		<field name="MAX_REPEAT_COUNT" />
+		<field name="REMAINING_REPEAT_COUNT" />
+	</class>
+	<class name="android/drm/DrmStore$DrmObjectType" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="CONTENT" />
+		<field name="RIGHTS_OBJECT" />
+		<field name="TRIGGER_OBJECT" />
+		<field name="UNKNOWN" />
+	</class>
+	<class name="android/drm/DrmStore$Playback" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="PAUSE" />
+		<field name="RESUME" />
+		<field name="START" />
+		<field name="STOP" />
+	</class>
+	<class name="android/drm/DrmStore$RightsStatus" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="RIGHTS_EXPIRED" />
+		<field name="RIGHTS_INVALID" />
+		<field name="RIGHTS_NOT_ACQUIRED" />
+		<field name="RIGHTS_VALID" />
+	</class>
+	<class name="android/drm/DrmSupportInfo" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addFileSuffix(Ljava/lang/String;)V" />
+		<method name="addMimeType(Ljava/lang/String;)V" />
+		<method name="getDescriprition()Ljava/lang/String;" />
+		<method name="getFileSuffixIterator()Ljava/util/Iterator;" />
+		<method name="getMimeTypeIterator()Ljava/util/Iterator;" />
+		<method name="setDescription(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/drm/DrmUtils" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getExtendedMetadataParser([B)Landroid/drm/DrmUtils$ExtendedMetadataParser;" />
+	</class>
+	<class name="android/drm/DrmUtils$ExtendedMetadataParser" since="11">
+		<extends name="java/lang/Object" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="keyIterator()Ljava/util/Iterator;" />
+	</class>
+	<class name="android/drm/ProcessedData" since="11">
+		<extends name="java/lang/Object" />
+		<method name="getAccountId()Ljava/lang/String;" />
+		<method name="getData()[B" />
+		<method name="getSubscriptionId()Ljava/lang/String;" />
+	</class>
+	<class name="android/gesture/Gesture" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="addStroke(Landroid/gesture/GestureStroke;)V" />
+		<method name="clone()Ljava/lang/Object;" since="8" />
+		<method name="describeContents()I" />
+		<method name="getBoundingBox()Landroid/graphics/RectF;" />
+		<method name="getID()J" />
+		<method name="getLength()F" />
+		<method name="getStrokes()Ljava/util/ArrayList;" />
+		<method name="getStrokesCount()I" />
+		<method name="toBitmap(IIII)Landroid/graphics/Bitmap;" />
+		<method name="toBitmap(IIIII)Landroid/graphics/Bitmap;" />
+		<method name="toPath()Landroid/graphics/Path;" />
+		<method name="toPath(IIII)Landroid/graphics/Path;" />
+		<method name="toPath(Landroid/graphics/Path;)Landroid/graphics/Path;" />
+		<method name="toPath(Landroid/graphics/Path;IIII)Landroid/graphics/Path;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/gesture/GestureLibraries" since="4">
+		<extends name="java/lang/Object" />
+		<method name="fromFile(Ljava/io/File;)Landroid/gesture/GestureLibrary;" />
+		<method name="fromFile(Ljava/lang/String;)Landroid/gesture/GestureLibrary;" />
+		<method name="fromPrivateFile(Landroid/content/Context;Ljava/lang/String;)Landroid/gesture/GestureLibrary;" />
+		<method name="fromRawResource(Landroid/content/Context;I)Landroid/gesture/GestureLibrary;" />
+	</class>
+	<class name="android/gesture/GestureLibrary" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
+		<method name="getGestureEntries()Ljava/util/Set;" />
+		<method name="getGestures(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getOrientationStyle()I" />
+		<method name="getSequenceType()I" />
+		<method name="isReadOnly()Z" />
+		<method name="load()Z" />
+		<method name="recognize(Landroid/gesture/Gesture;)Ljava/util/ArrayList;" />
+		<method name="removeEntry(Ljava/lang/String;)V" />
+		<method name="removeGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
+		<method name="save()Z" />
+		<method name="setOrientationStyle(I)V" />
+		<method name="setSequenceType(I)V" />
+		<field name="mStore" />
+	</class>
+	<class name="android/gesture/GestureOverlayView" since="4">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="addOnGestureListener(Landroid/gesture/GestureOverlayView$OnGestureListener;)V" />
+		<method name="addOnGesturePerformedListener(Landroid/gesture/GestureOverlayView$OnGesturePerformedListener;)V" />
+		<method name="addOnGesturingListener(Landroid/gesture/GestureOverlayView$OnGesturingListener;)V" />
+		<method name="cancelClearAnimation()V" />
+		<method name="cancelGesture()V" />
+		<method name="clear(Z)V" />
+		<method name="getCurrentStroke()Ljava/util/ArrayList;" />
+		<method name="getFadeOffset()J" />
+		<method name="getGesture()Landroid/gesture/Gesture;" />
+		<method name="getGestureColor()I" />
+		<method name="getGesturePath()Landroid/graphics/Path;" />
+		<method name="getGesturePath(Landroid/graphics/Path;)Landroid/graphics/Path;" />
+		<method name="getGestureStrokeAngleThreshold()F" />
+		<method name="getGestureStrokeLengthThreshold()F" />
+		<method name="getGestureStrokeSquarenessTreshold()F" />
+		<method name="getGestureStrokeType()I" />
+		<method name="getGestureStrokeWidth()F" />
+		<method name="getOrientation()I" />
+		<method name="getUncertainGestureColor()I" />
+		<method name="isEventsInterceptionEnabled()Z" />
+		<method name="isFadeEnabled()Z" />
+		<method name="isGestureVisible()Z" />
+		<method name="isGesturing()Z" />
+		<method name="removeAllOnGestureListeners()V" />
+		<method name="removeAllOnGesturePerformedListeners()V" />
+		<method name="removeAllOnGesturingListeners()V" />
+		<method name="removeOnGestureListener(Landroid/gesture/GestureOverlayView$OnGestureListener;)V" />
+		<method name="removeOnGesturePerformedListener(Landroid/gesture/GestureOverlayView$OnGesturePerformedListener;)V" />
+		<method name="removeOnGesturingListener(Landroid/gesture/GestureOverlayView$OnGesturingListener;)V" />
+		<method name="setEventsInterceptionEnabled(Z)V" />
+		<method name="setFadeEnabled(Z)V" />
+		<method name="setFadeOffset(J)V" />
+		<method name="setGesture(Landroid/gesture/Gesture;)V" />
+		<method name="setGestureColor(I)V" />
+		<method name="setGestureStrokeAngleThreshold(F)V" />
+		<method name="setGestureStrokeLengthThreshold(F)V" />
+		<method name="setGestureStrokeSquarenessTreshold(F)V" />
+		<method name="setGestureStrokeType(I)V" />
+		<method name="setGestureStrokeWidth(F)V" />
+		<method name="setGestureVisible(Z)V" />
+		<method name="setOrientation(I)V" />
+		<method name="setUncertainGestureColor(I)V" />
+		<field name="GESTURE_STROKE_TYPE_MULTIPLE" />
+		<field name="GESTURE_STROKE_TYPE_SINGLE" />
+		<field name="ORIENTATION_HORIZONTAL" />
+		<field name="ORIENTATION_VERTICAL" />
+	</class>
+	<class name="android/gesture/GestureOverlayView$OnGestureListener" since="4">
+		<method name="onGesture(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
+		<method name="onGestureCancelled(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
+		<method name="onGestureEnded(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
+		<method name="onGestureStarted(Landroid/gesture/GestureOverlayView;Landroid/view/MotionEvent;)V" />
+	</class>
+	<class name="android/gesture/GestureOverlayView$OnGesturePerformedListener" since="4">
+		<method name="onGesturePerformed(Landroid/gesture/GestureOverlayView;Landroid/gesture/Gesture;)V" />
+	</class>
+	<class name="android/gesture/GestureOverlayView$OnGesturingListener" since="4">
+		<method name="onGesturingEnded(Landroid/gesture/GestureOverlayView;)V" />
+		<method name="onGesturingStarted(Landroid/gesture/GestureOverlayView;)V" />
+	</class>
+	<class name="android/gesture/GesturePoint" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(FFJ)V" />
+		<method name="clone()Ljava/lang/Object;" since="8" />
+		<field name="timestamp" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/gesture/GestureStore" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
+		<method name="getGestureEntries()Ljava/util/Set;" />
+		<method name="getGestures(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getOrientationStyle()I" />
+		<method name="getSequenceType()I" />
+		<method name="hasChanged()Z" />
+		<method name="load(Ljava/io/InputStream;)V" />
+		<method name="load(Ljava/io/InputStream;Z)V" />
+		<method name="recognize(Landroid/gesture/Gesture;)Ljava/util/ArrayList;" />
+		<method name="removeEntry(Ljava/lang/String;)V" />
+		<method name="removeGesture(Ljava/lang/String;Landroid/gesture/Gesture;)V" />
+		<method name="save(Ljava/io/OutputStream;)V" />
+		<method name="save(Ljava/io/OutputStream;Z)V" />
+		<method name="setOrientationStyle(I)V" />
+		<method name="setSequenceType(I)V" />
+		<field name="ORIENTATION_INVARIANT" />
+		<field name="ORIENTATION_SENSITIVE" />
+		<field name="SEQUENCE_INVARIANT" />
+		<field name="SEQUENCE_SENSITIVE" />
+	</class>
+	<class name="android/gesture/GestureStroke" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/util/ArrayList;)V" />
+		<method name="clearPath()V" />
+		<method name="clone()Ljava/lang/Object;" since="8" />
+		<method name="computeOrientedBoundingBox()Landroid/gesture/OrientedBoundingBox;" />
+		<method name="getPath()Landroid/graphics/Path;" />
+		<method name="toPath(FFI)Landroid/graphics/Path;" />
+		<field name="boundingBox" />
+		<field name="length" />
+		<field name="points" />
+	</class>
+	<class name="android/gesture/GestureUtils" since="8">
+		<extends name="java/lang/Object" />
+		<method name="computeOrientedBoundingBox(Ljava/util/ArrayList;)Landroid/gesture/OrientedBoundingBox;" />
+		<method name="computeOrientedBoundingBox([F)Landroid/gesture/OrientedBoundingBox;" />
+		<method name="spatialSampling(Landroid/gesture/Gesture;I)[F" />
+		<method name="spatialSampling(Landroid/gesture/Gesture;IZ)[F" />
+		<method name="temporalSampling(Landroid/gesture/GestureStroke;I)[F" />
+	</class>
+	<class name="android/gesture/OrientedBoundingBox" since="4">
+		<extends name="java/lang/Object" />
+		<field name="centerX" />
+		<field name="centerY" />
+		<field name="height" />
+		<field name="orientation" />
+		<field name="squareness" />
+		<field name="width" />
+	</class>
+	<class name="android/gesture/Prediction" since="4">
+		<extends name="java/lang/Object" />
+		<field name="name" />
+		<field name="score" />
+	</class>
+	<class name="android/graphics/AvoidXfermode" since="1">
+		<extends name="android/graphics/Xfermode" />
+		<method name="&lt;init>(IILandroid/graphics/AvoidXfermode$Mode;)V" />
+	</class>
+	<class name="android/graphics/AvoidXfermode$Mode" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/AvoidXfermode$Mode;" />
+		<method name="values()[Landroid/graphics/AvoidXfermode$Mode;" />
+		<field name="AVOID" />
+		<field name="TARGET" />
+	</class>
+	<class name="android/graphics/Bitmap" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z" />
+		<method name="copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;" />
+		<method name="copyPixelsFromBuffer(Ljava/nio/Buffer;)V" since="3" />
+		<method name="copyPixelsToBuffer(Ljava/nio/Buffer;)V" />
+		<method name="createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" />
+		<method name="createBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;" />
+		<method name="createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap;" />
+		<method name="createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;" />
+		<method name="createBitmap([IIIIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" />
+		<method name="createBitmap([IIILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;" />
+		<method name="createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;" />
+		<method name="describeContents()I" />
+		<method name="eraseColor(I)V" />
+		<method name="extractAlpha()Landroid/graphics/Bitmap;" />
+		<method name="extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap;" />
+		<method name="getByteCount()I" since="12" />
+		<method name="getConfig()Landroid/graphics/Bitmap$Config;" />
+		<method name="getDensity()I" since="4" />
+		<method name="getGenerationId()I" since="12" />
+		<method name="getHeight()I" />
+		<method name="getNinePatchChunk()[B" />
+		<method name="getPixel(II)I" />
+		<method name="getPixels([IIIIIII)V" />
+		<method name="getRowBytes()I" />
+		<method name="getScaledHeight(I)I" since="4" />
+		<method name="getScaledHeight(Landroid/graphics/Canvas;)I" since="4" />
+		<method name="getScaledHeight(Landroid/util/DisplayMetrics;)I" since="4" />
+		<method name="getScaledWidth(I)I" since="4" />
+		<method name="getScaledWidth(Landroid/graphics/Canvas;)I" since="4" />
+		<method name="getScaledWidth(Landroid/util/DisplayMetrics;)I" since="4" />
+		<method name="getWidth()I" />
+		<method name="hasAlpha()Z" />
+		<method name="isMutable()Z" />
+		<method name="isRecycled()Z" />
+		<method name="prepareToDraw()V" since="4" />
+		<method name="recycle()V" />
+		<method name="sameAs(Landroid/graphics/Bitmap;)Z" since="12" />
+		<method name="setDensity(I)V" since="4" />
+		<method name="setHasAlpha(Z)V" since="12" />
+		<method name="setPixel(III)V" />
+		<method name="setPixels([IIIIIII)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="DENSITY_NONE" since="4" />
+	</class>
+	<class name="android/graphics/Bitmap$CompressFormat" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$CompressFormat;" />
+		<method name="values()[Landroid/graphics/Bitmap$CompressFormat;" />
+		<field name="JPEG" />
+		<field name="PNG" />
+		<field name="WEBP" since="14" />
+	</class>
+	<class name="android/graphics/Bitmap$Config" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$Config;" />
+		<method name="values()[Landroid/graphics/Bitmap$Config;" />
+		<field name="ALPHA_8" />
+		<field name="ARGB_4444" />
+		<field name="ARGB_8888" />
+		<field name="RGB_565" />
+	</class>
+	<class name="android/graphics/BitmapFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="decodeByteArray([BII)Landroid/graphics/Bitmap;" />
+		<method name="decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="decodeFile(Ljava/lang/String;)Landroid/graphics/Bitmap;" />
+		<method name="decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap;" />
+		<method name="decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap;" />
+		<method name="decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="decodeResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="4" />
+		<method name="decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap;" />
+		<method name="decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+	</class>
+	<class name="android/graphics/BitmapFactory$Options" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="requestCancelDecode()V" />
+		<field name="inBitmap" since="11" />
+		<field name="inDensity" since="4" />
+		<field name="inDither" />
+		<field name="inInputShareable" since="4" />
+		<field name="inJustDecodeBounds" />
+		<field name="inMutable" since="11" />
+		<field name="inPreferQualityOverSpeed" since="10" />
+		<field name="inPreferredConfig" />
+		<field name="inPurgeable" since="4" />
+		<field name="inSampleSize" />
+		<field name="inScaled" since="4" />
+		<field name="inScreenDensity" since="4" />
+		<field name="inTargetDensity" since="4" />
+		<field name="inTempStorage" />
+		<field name="mCancel" />
+		<field name="outHeight" />
+		<field name="outMimeType" />
+		<field name="outWidth" />
+	</class>
+	<class name="android/graphics/BitmapRegionDecoder" since="10">
+		<extends name="java/lang/Object" />
+		<method name="decodeRegion(Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="getHeight()I" />
+		<method name="getWidth()I" />
+		<method name="isRecycled()Z" />
+		<method name="newInstance(Ljava/io/FileDescriptor;Z)Landroid/graphics/BitmapRegionDecoder;" />
+		<method name="newInstance(Ljava/io/InputStream;Z)Landroid/graphics/BitmapRegionDecoder;" />
+		<method name="newInstance(Ljava/lang/String;Z)Landroid/graphics/BitmapRegionDecoder;" />
+		<method name="newInstance([BIIZ)Landroid/graphics/BitmapRegionDecoder;" />
+		<method name="recycle()V" />
+	</class>
+	<class name="android/graphics/BitmapShader" since="1">
+		<extends name="android/graphics/Shader" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V" />
+	</class>
+	<class name="android/graphics/BlurMaskFilter" since="1">
+		<extends name="android/graphics/MaskFilter" />
+		<method name="&lt;init>(FLandroid/graphics/BlurMaskFilter$Blur;)V" />
+	</class>
+	<class name="android/graphics/BlurMaskFilter$Blur" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/BlurMaskFilter$Blur;" />
+		<method name="values()[Landroid/graphics/BlurMaskFilter$Blur;" />
+		<field name="INNER" />
+		<field name="NORMAL" />
+		<field name="OUTER" />
+		<field name="SOLID" />
+	</class>
+	<class name="android/graphics/Camera" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="applyToCanvas(Landroid/graphics/Canvas;)V" />
+		<method name="dotWithNormal(FFF)F" />
+		<method name="getMatrix(Landroid/graphics/Matrix;)V" />
+		<method name="restore()V" />
+		<method name="rotate(FFF)V" since="12" />
+		<method name="rotateX(F)V" />
+		<method name="rotateY(F)V" />
+		<method name="rotateZ(F)V" />
+		<method name="save()V" />
+		<method name="setLocation(FFF)V" since="12" />
+		<method name="translate(FFF)V" />
+	</class>
+	<class name="android/graphics/Canvas" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
+		<method name="&lt;init>(Ljavax/microedition/khronos/opengles/GL;)V" />
+		<method name="clipPath(Landroid/graphics/Path;)Z" />
+		<method name="clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z" />
+		<method name="clipRect(FFFF)Z" />
+		<method name="clipRect(FFFFLandroid/graphics/Region$Op;)Z" />
+		<method name="clipRect(IIII)Z" />
+		<method name="clipRect(Landroid/graphics/Rect;)Z" />
+		<method name="clipRect(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z" />
+		<method name="clipRect(Landroid/graphics/RectF;)Z" />
+		<method name="clipRect(Landroid/graphics/RectF;Landroid/graphics/Region$Op;)Z" />
+		<method name="clipRegion(Landroid/graphics/Region;)Z" />
+		<method name="clipRegion(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
+		<method name="concat(Landroid/graphics/Matrix;)V" />
+		<method name="drawARGB(IIII)V" />
+		<method name="drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V" />
+		<method name="drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V" />
+		<method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V" />
+		<method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V" />
+		<method name="drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V" />
+		<method name="drawBitmap([IIIFFIIZLandroid/graphics/Paint;)V" since="3" />
+		<method name="drawBitmap([IIIIIIIZLandroid/graphics/Paint;)V" />
+		<method name="drawBitmapMesh(Landroid/graphics/Bitmap;II[FI[IILandroid/graphics/Paint;)V" />
+		<method name="drawCircle(FFFLandroid/graphics/Paint;)V" />
+		<method name="drawColor(I)V" />
+		<method name="drawColor(ILandroid/graphics/PorterDuff$Mode;)V" />
+		<method name="drawLine(FFFFLandroid/graphics/Paint;)V" />
+		<method name="drawLines([FIILandroid/graphics/Paint;)V" />
+		<method name="drawLines([FLandroid/graphics/Paint;)V" />
+		<method name="drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V" />
+		<method name="drawPaint(Landroid/graphics/Paint;)V" />
+		<method name="drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V" />
+		<method name="drawPicture(Landroid/graphics/Picture;)V" />
+		<method name="drawPicture(Landroid/graphics/Picture;Landroid/graphics/Rect;)V" />
+		<method name="drawPicture(Landroid/graphics/Picture;Landroid/graphics/RectF;)V" />
+		<method name="drawPoint(FFLandroid/graphics/Paint;)V" />
+		<method name="drawPoints([FIILandroid/graphics/Paint;)V" />
+		<method name="drawPoints([FLandroid/graphics/Paint;)V" />
+		<method name="drawPosText(Ljava/lang/String;[FLandroid/graphics/Paint;)V" />
+		<method name="drawPosText([CII[FLandroid/graphics/Paint;)V" />
+		<method name="drawRGB(III)V" />
+		<method name="drawRect(FFFFLandroid/graphics/Paint;)V" />
+		<method name="drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V" />
+		<method name="drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V" />
+		<method name="drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V" />
+		<method name="drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V" />
+		<method name="drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V" />
+		<method name="drawText(Ljava/lang/String;IIFFLandroid/graphics/Paint;)V" />
+		<method name="drawText([CIIFFLandroid/graphics/Paint;)V" />
+		<method name="drawTextOnPath(Ljava/lang/String;Landroid/graphics/Path;FFLandroid/graphics/Paint;)V" />
+		<method name="drawTextOnPath([CIILandroid/graphics/Path;FFLandroid/graphics/Paint;)V" />
+		<method name="drawVertices(Landroid/graphics/Canvas$VertexMode;I[FI[FI[II[SIILandroid/graphics/Paint;)V" />
+		<method name="freeGlCaches()V" />
+		<method name="getClipBounds()Landroid/graphics/Rect;" />
+		<method name="getClipBounds(Landroid/graphics/Rect;)Z" />
+		<method name="getDensity()I" since="4" />
+		<method name="getDrawFilter()Landroid/graphics/DrawFilter;" />
+		<method name="getGL()Ljavax/microedition/khronos/opengles/GL;" />
+		<method name="getHeight()I" />
+		<method name="getMatrix()Landroid/graphics/Matrix;" />
+		<method name="getMatrix(Landroid/graphics/Matrix;)V" />
+		<method name="getMaximumBitmapHeight()I" since="14" />
+		<method name="getMaximumBitmapWidth()I" since="14" />
+		<method name="getSaveCount()I" />
+		<method name="getWidth()I" />
+		<method name="isHardwareAccelerated()Z" since="11" />
+		<method name="isOpaque()Z" />
+		<method name="quickReject(FFFFLandroid/graphics/Canvas$EdgeType;)Z" />
+		<method name="quickReject(Landroid/graphics/Path;Landroid/graphics/Canvas$EdgeType;)Z" />
+		<method name="quickReject(Landroid/graphics/RectF;Landroid/graphics/Canvas$EdgeType;)Z" />
+		<method name="restore()V" />
+		<method name="restoreToCount(I)V" />
+		<method name="rotate(F)V" />
+		<method name="rotate(FFF)V" />
+		<method name="save()I" />
+		<method name="save(I)I" />
+		<method name="saveLayer(FFFFLandroid/graphics/Paint;I)I" />
+		<method name="saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I" />
+		<method name="saveLayerAlpha(FFFFII)I" />
+		<method name="saveLayerAlpha(Landroid/graphics/RectF;II)I" />
+		<method name="scale(FF)V" />
+		<method name="scale(FFFF)V" />
+		<method name="setBitmap(Landroid/graphics/Bitmap;)V" />
+		<method name="setDensity(I)V" since="4" />
+		<method name="setDrawFilter(Landroid/graphics/DrawFilter;)V" />
+		<method name="setMatrix(Landroid/graphics/Matrix;)V" />
+		<method name="setViewport(II)V" />
+		<method name="skew(FF)V" />
+		<method name="translate(FF)V" />
+		<field name="ALL_SAVE_FLAG" />
+		<field name="CLIP_SAVE_FLAG" />
+		<field name="CLIP_TO_LAYER_SAVE_FLAG" />
+		<field name="FULL_COLOR_LAYER_SAVE_FLAG" />
+		<field name="HAS_ALPHA_LAYER_SAVE_FLAG" />
+		<field name="MATRIX_SAVE_FLAG" />
+	</class>
+	<class name="android/graphics/Canvas$EdgeType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Canvas$EdgeType;" />
+		<method name="values()[Landroid/graphics/Canvas$EdgeType;" />
+		<field name="AA" />
+		<field name="BW" />
+	</class>
+	<class name="android/graphics/Canvas$VertexMode" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Canvas$VertexMode;" />
+		<method name="values()[Landroid/graphics/Canvas$VertexMode;" />
+		<field name="TRIANGLES" />
+		<field name="TRIANGLE_FAN" />
+		<field name="TRIANGLE_STRIP" />
+	</class>
+	<class name="android/graphics/Color" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="HSVToColor(I[F)I" />
+		<method name="HSVToColor([F)I" />
+		<method name="RGBToHSV(III[F)V" />
+		<method name="alpha(I)I" />
+		<method name="argb(IIII)I" />
+		<method name="blue(I)I" />
+		<method name="colorToHSV(I[F)V" />
+		<method name="green(I)I" />
+		<method name="parseColor(Ljava/lang/String;)I" />
+		<method name="red(I)I" />
+		<method name="rgb(III)I" />
+		<field name="BLACK" />
+		<field name="BLUE" />
+		<field name="CYAN" />
+		<field name="DKGRAY" />
+		<field name="GRAY" />
+		<field name="GREEN" />
+		<field name="LTGRAY" />
+		<field name="MAGENTA" />
+		<field name="RED" />
+		<field name="TRANSPARENT" />
+		<field name="WHITE" />
+		<field name="YELLOW" />
+	</class>
+	<class name="android/graphics/ColorFilter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/ColorMatrix" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/ColorMatrix;)V" />
+		<method name="&lt;init>([F)V" />
+		<method name="getArray()[F" />
+		<method name="postConcat(Landroid/graphics/ColorMatrix;)V" />
+		<method name="preConcat(Landroid/graphics/ColorMatrix;)V" />
+		<method name="reset()V" />
+		<method name="set(Landroid/graphics/ColorMatrix;)V" />
+		<method name="set([F)V" />
+		<method name="setConcat(Landroid/graphics/ColorMatrix;Landroid/graphics/ColorMatrix;)V" />
+		<method name="setRGB2YUV()V" />
+		<method name="setRotate(IF)V" />
+		<method name="setSaturation(F)V" />
+		<method name="setScale(FFFF)V" />
+		<method name="setYUV2RGB()V" />
+	</class>
+	<class name="android/graphics/ColorMatrixColorFilter" since="1">
+		<extends name="android/graphics/ColorFilter" />
+		<method name="&lt;init>(Landroid/graphics/ColorMatrix;)V" />
+		<method name="&lt;init>([F)V" />
+	</class>
+	<class name="android/graphics/ComposePathEffect" since="1">
+		<extends name="android/graphics/PathEffect" />
+		<method name="&lt;init>(Landroid/graphics/PathEffect;Landroid/graphics/PathEffect;)V" />
+	</class>
+	<class name="android/graphics/ComposeShader" since="1">
+		<extends name="android/graphics/Shader" />
+		<method name="&lt;init>(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/PorterDuff$Mode;)V" />
+		<method name="&lt;init>(Landroid/graphics/Shader;Landroid/graphics/Shader;Landroid/graphics/Xfermode;)V" />
+	</class>
+	<class name="android/graphics/CornerPathEffect" since="1">
+		<extends name="android/graphics/PathEffect" />
+		<method name="&lt;init>(F)V" />
+	</class>
+	<class name="android/graphics/DashPathEffect" since="1">
+		<extends name="android/graphics/PathEffect" />
+		<method name="&lt;init>([FF)V" />
+	</class>
+	<class name="android/graphics/DiscretePathEffect" since="1">
+		<extends name="android/graphics/PathEffect" />
+		<method name="&lt;init>(FF)V" />
+	</class>
+	<class name="android/graphics/DrawFilter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/EmbossMaskFilter" since="1">
+		<extends name="android/graphics/MaskFilter" />
+		<method name="&lt;init>([FFFF)V" />
+	</class>
+	<class name="android/graphics/ImageFormat" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getBitsPerPixel(I)I" />
+		<field name="JPEG" />
+		<field name="NV16" />
+		<field name="NV21" />
+		<field name="RGB_565" />
+		<field name="UNKNOWN" />
+		<field name="YUY2" />
+		<field name="YV12" since="9" />
+	</class>
+	<class name="android/graphics/Interpolator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="getKeyFrameCount()I" />
+		<method name="getValueCount()I" />
+		<method name="reset(I)V" />
+		<method name="reset(II)V" />
+		<method name="setKeyFrame(II[F)V" />
+		<method name="setKeyFrame(II[F[F)V" />
+		<method name="setRepeatMirror(FZ)V" />
+		<method name="timeToValues(I[F)Landroid/graphics/Interpolator$Result;" />
+		<method name="timeToValues([F)Landroid/graphics/Interpolator$Result;" />
+	</class>
+	<class name="android/graphics/Interpolator$Result" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Interpolator$Result;" />
+		<method name="values()[Landroid/graphics/Interpolator$Result;" />
+		<field name="FREEZE_END" />
+		<field name="FREEZE_START" />
+		<field name="NORMAL" />
+	</class>
+	<class name="android/graphics/LayerRasterizer" since="1">
+		<extends name="android/graphics/Rasterizer" />
+		<method name="&lt;init>()V" />
+		<method name="addLayer(Landroid/graphics/Paint;)V" />
+		<method name="addLayer(Landroid/graphics/Paint;FF)V" />
+	</class>
+	<class name="android/graphics/LightingColorFilter" since="1">
+		<extends name="android/graphics/ColorFilter" />
+		<method name="&lt;init>(II)V" />
+	</class>
+	<class name="android/graphics/LinearGradient" since="1">
+		<extends name="android/graphics/Shader" />
+		<method name="&lt;init>(FFFFIILandroid/graphics/Shader$TileMode;)V" />
+		<method name="&lt;init>(FFFF[I[FLandroid/graphics/Shader$TileMode;)V" />
+	</class>
+	<class name="android/graphics/MaskFilter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/Matrix" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/Matrix;)V" />
+		<method name="getValues([F)V" />
+		<method name="invert(Landroid/graphics/Matrix;)Z" />
+		<method name="isIdentity()Z" />
+		<method name="mapPoints([F)V" />
+		<method name="mapPoints([FI[FII)V" />
+		<method name="mapPoints([F[F)V" />
+		<method name="mapRadius(F)F" />
+		<method name="mapRect(Landroid/graphics/RectF;)Z" />
+		<method name="mapRect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z" />
+		<method name="mapVectors([F)V" />
+		<method name="mapVectors([FI[FII)V" />
+		<method name="mapVectors([F[F)V" />
+		<method name="postConcat(Landroid/graphics/Matrix;)Z" />
+		<method name="postRotate(F)Z" />
+		<method name="postRotate(FFF)Z" />
+		<method name="postScale(FF)Z" />
+		<method name="postScale(FFFF)Z" />
+		<method name="postSkew(FF)Z" />
+		<method name="postSkew(FFFF)Z" />
+		<method name="postTranslate(FF)Z" />
+		<method name="preConcat(Landroid/graphics/Matrix;)Z" />
+		<method name="preRotate(F)Z" />
+		<method name="preRotate(FFF)Z" />
+		<method name="preScale(FF)Z" />
+		<method name="preScale(FFFF)Z" />
+		<method name="preSkew(FF)Z" />
+		<method name="preSkew(FFFF)Z" />
+		<method name="preTranslate(FF)Z" />
+		<method name="rectStaysRect()Z" />
+		<method name="reset()V" />
+		<method name="set(Landroid/graphics/Matrix;)V" />
+		<method name="setConcat(Landroid/graphics/Matrix;Landroid/graphics/Matrix;)Z" />
+		<method name="setPolyToPoly([FI[FII)Z" />
+		<method name="setRectToRect(Landroid/graphics/RectF;Landroid/graphics/RectF;Landroid/graphics/Matrix$ScaleToFit;)Z" />
+		<method name="setRotate(F)V" />
+		<method name="setRotate(FFF)V" />
+		<method name="setScale(FF)V" />
+		<method name="setScale(FFFF)V" />
+		<method name="setSinCos(FF)V" />
+		<method name="setSinCos(FFFF)V" />
+		<method name="setSkew(FF)V" />
+		<method name="setSkew(FFFF)V" />
+		<method name="setTranslate(FF)V" />
+		<method name="setValues([F)V" />
+		<method name="toShortString()Ljava/lang/String;" />
+		<field name="MPERSP_0" />
+		<field name="MPERSP_1" />
+		<field name="MPERSP_2" />
+		<field name="MSCALE_X" />
+		<field name="MSCALE_Y" />
+		<field name="MSKEW_X" />
+		<field name="MSKEW_Y" />
+		<field name="MTRANS_X" />
+		<field name="MTRANS_Y" />
+	</class>
+	<class name="android/graphics/Matrix$ScaleToFit" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Matrix$ScaleToFit;" />
+		<method name="values()[Landroid/graphics/Matrix$ScaleToFit;" />
+		<field name="CENTER" />
+		<field name="END" />
+		<field name="FILL" />
+		<field name="START" />
+	</class>
+	<class name="android/graphics/Movie" since="1">
+		<extends name="java/lang/Object" />
+		<method name="decodeByteArray([BII)Landroid/graphics/Movie;" />
+		<method name="decodeFile(Ljava/lang/String;)Landroid/graphics/Movie;" />
+		<method name="decodeStream(Ljava/io/InputStream;)Landroid/graphics/Movie;" />
+		<method name="draw(Landroid/graphics/Canvas;FF)V" />
+		<method name="draw(Landroid/graphics/Canvas;FFLandroid/graphics/Paint;)V" />
+		<method name="duration()I" />
+		<method name="height()I" />
+		<method name="isOpaque()Z" />
+		<method name="setTime(I)Z" />
+		<method name="width()I" />
+	</class>
+	<class name="android/graphics/NinePatch" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;[BLjava/lang/String;)V" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;Landroid/graphics/Paint;)V" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/RectF;)V" />
+		<method name="getDensity()I" since="4" />
+		<method name="getHeight()I" />
+		<method name="getTransparentRegion(Landroid/graphics/Rect;)Landroid/graphics/Region;" />
+		<method name="getWidth()I" />
+		<method name="hasAlpha()Z" />
+		<method name="isNinePatchChunk([B)Z" />
+		<method name="setPaint(Landroid/graphics/Paint;)V" />
+	</class>
+	<class name="android/graphics/Paint" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/graphics/Paint;)V" />
+		<method name="ascent()F" />
+		<method name="breakText(Ljava/lang/CharSequence;IIZF[F)I" />
+		<method name="breakText(Ljava/lang/String;ZF[F)I" />
+		<method name="breakText([CIIF[F)I" />
+		<method name="clearShadowLayer()V" />
+		<method name="descent()F" />
+		<method name="getAlpha()I" />
+		<method name="getColor()I" />
+		<method name="getColorFilter()Landroid/graphics/ColorFilter;" />
+		<method name="getFillPath(Landroid/graphics/Path;Landroid/graphics/Path;)Z" />
+		<method name="getFlags()I" />
+		<method name="getFontMetrics()Landroid/graphics/Paint$FontMetrics;" />
+		<method name="getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F" />
+		<method name="getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;" />
+		<method name="getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I" />
+		<method name="getFontSpacing()F" />
+		<method name="getHinting()I" since="14" />
+		<method name="getMaskFilter()Landroid/graphics/MaskFilter;" />
+		<method name="getPathEffect()Landroid/graphics/PathEffect;" />
+		<method name="getRasterizer()Landroid/graphics/Rasterizer;" />
+		<method name="getShader()Landroid/graphics/Shader;" />
+		<method name="getStrokeCap()Landroid/graphics/Paint$Cap;" />
+		<method name="getStrokeJoin()Landroid/graphics/Paint$Join;" />
+		<method name="getStrokeMiter()F" />
+		<method name="getStrokeWidth()F" />
+		<method name="getStyle()Landroid/graphics/Paint$Style;" />
+		<method name="getTextAlign()Landroid/graphics/Paint$Align;" />
+		<method name="getTextBounds(Ljava/lang/String;IILandroid/graphics/Rect;)V" />
+		<method name="getTextBounds([CIILandroid/graphics/Rect;)V" />
+		<method name="getTextPath(Ljava/lang/String;IIFFLandroid/graphics/Path;)V" />
+		<method name="getTextPath([CIIFFLandroid/graphics/Path;)V" />
+		<method name="getTextScaleX()F" />
+		<method name="getTextSize()F" />
+		<method name="getTextSkewX()F" />
+		<method name="getTextWidths(Ljava/lang/CharSequence;II[F)I" />
+		<method name="getTextWidths(Ljava/lang/String;II[F)I" />
+		<method name="getTextWidths(Ljava/lang/String;[F)I" />
+		<method name="getTextWidths([CII[F)I" />
+		<method name="getTypeface()Landroid/graphics/Typeface;" />
+		<method name="getXfermode()Landroid/graphics/Xfermode;" />
+		<method name="isAntiAlias()Z" />
+		<method name="isDither()Z" />
+		<method name="isFakeBoldText()Z" />
+		<method name="isFilterBitmap()Z" />
+		<method name="isLinearText()Z" />
+		<method name="isStrikeThruText()Z" />
+		<method name="isSubpixelText()Z" />
+		<method name="isUnderlineText()Z" />
+		<method name="measureText(Ljava/lang/CharSequence;II)F" />
+		<method name="measureText(Ljava/lang/String;)F" />
+		<method name="measureText(Ljava/lang/String;II)F" />
+		<method name="measureText([CII)F" />
+		<method name="reset()V" />
+		<method name="set(Landroid/graphics/Paint;)V" />
+		<method name="setARGB(IIII)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setAntiAlias(Z)V" />
+		<method name="setColor(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter;" />
+		<method name="setDither(Z)V" />
+		<method name="setFakeBoldText(Z)V" />
+		<method name="setFilterBitmap(Z)V" />
+		<method name="setFlags(I)V" />
+		<method name="setHinting(I)V" since="14" />
+		<method name="setLinearText(Z)V" />
+		<method name="setMaskFilter(Landroid/graphics/MaskFilter;)Landroid/graphics/MaskFilter;" />
+		<method name="setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;" />
+		<method name="setRasterizer(Landroid/graphics/Rasterizer;)Landroid/graphics/Rasterizer;" />
+		<method name="setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;" />
+		<method name="setShadowLayer(FFFI)V" />
+		<method name="setStrikeThruText(Z)V" />
+		<method name="setStrokeCap(Landroid/graphics/Paint$Cap;)V" />
+		<method name="setStrokeJoin(Landroid/graphics/Paint$Join;)V" />
+		<method name="setStrokeMiter(F)V" />
+		<method name="setStrokeWidth(F)V" />
+		<method name="setStyle(Landroid/graphics/Paint$Style;)V" />
+		<method name="setSubpixelText(Z)V" />
+		<method name="setTextAlign(Landroid/graphics/Paint$Align;)V" />
+		<method name="setTextScaleX(F)V" />
+		<method name="setTextSize(F)V" />
+		<method name="setTextSkewX(F)V" />
+		<method name="setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;" />
+		<method name="setUnderlineText(Z)V" />
+		<method name="setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;" />
+		<field name="ANTI_ALIAS_FLAG" />
+		<field name="DEV_KERN_TEXT_FLAG" />
+		<field name="DITHER_FLAG" />
+		<field name="FAKE_BOLD_TEXT_FLAG" />
+		<field name="FILTER_BITMAP_FLAG" />
+		<field name="HINTING_OFF" since="14" />
+		<field name="HINTING_ON" since="14" />
+		<field name="LINEAR_TEXT_FLAG" />
+		<field name="STRIKE_THRU_TEXT_FLAG" />
+		<field name="SUBPIXEL_TEXT_FLAG" />
+		<field name="UNDERLINE_TEXT_FLAG" />
+	</class>
+	<class name="android/graphics/Paint$Align" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Align;" />
+		<method name="values()[Landroid/graphics/Paint$Align;" />
+		<field name="CENTER" />
+		<field name="LEFT" />
+		<field name="RIGHT" />
+	</class>
+	<class name="android/graphics/Paint$Cap" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Cap;" />
+		<method name="values()[Landroid/graphics/Paint$Cap;" />
+		<field name="BUTT" />
+		<field name="ROUND" />
+		<field name="SQUARE" />
+	</class>
+	<class name="android/graphics/Paint$FontMetrics" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ascent" />
+		<field name="bottom" />
+		<field name="descent" />
+		<field name="leading" />
+		<field name="top" />
+	</class>
+	<class name="android/graphics/Paint$FontMetricsInt" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ascent" />
+		<field name="bottom" />
+		<field name="descent" />
+		<field name="leading" />
+		<field name="top" />
+	</class>
+	<class name="android/graphics/Paint$Join" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Join;" />
+		<method name="values()[Landroid/graphics/Paint$Join;" />
+		<field name="BEVEL" />
+		<field name="MITER" />
+		<field name="ROUND" />
+	</class>
+	<class name="android/graphics/Paint$Style" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Paint$Style;" />
+		<method name="values()[Landroid/graphics/Paint$Style;" />
+		<field name="FILL" />
+		<field name="FILL_AND_STROKE" />
+		<field name="STROKE" />
+	</class>
+	<class name="android/graphics/PaintFlagsDrawFilter" since="1">
+		<extends name="android/graphics/DrawFilter" />
+		<method name="&lt;init>(II)V" />
+	</class>
+	<class name="android/graphics/Path" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/Path;)V" />
+		<method name="addArc(Landroid/graphics/RectF;FF)V" />
+		<method name="addCircle(FFFLandroid/graphics/Path$Direction;)V" />
+		<method name="addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V" />
+		<method name="addPath(Landroid/graphics/Path;)V" />
+		<method name="addPath(Landroid/graphics/Path;FF)V" />
+		<method name="addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V" />
+		<method name="addRect(FFFFLandroid/graphics/Path$Direction;)V" />
+		<method name="addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V" />
+		<method name="addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V" />
+		<method name="addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V" />
+		<method name="arcTo(Landroid/graphics/RectF;FF)V" />
+		<method name="arcTo(Landroid/graphics/RectF;FFZ)V" />
+		<method name="close()V" />
+		<method name="computeBounds(Landroid/graphics/RectF;Z)V" />
+		<method name="cubicTo(FFFFFF)V" />
+		<method name="getFillType()Landroid/graphics/Path$FillType;" />
+		<method name="incReserve(I)V" />
+		<method name="isEmpty()Z" />
+		<method name="isInverseFillType()Z" />
+		<method name="isRect(Landroid/graphics/RectF;)Z" />
+		<method name="lineTo(FF)V" />
+		<method name="moveTo(FF)V" />
+		<method name="offset(FF)V" />
+		<method name="offset(FFLandroid/graphics/Path;)V" />
+		<method name="quadTo(FFFF)V" />
+		<method name="rCubicTo(FFFFFF)V" />
+		<method name="rLineTo(FF)V" />
+		<method name="rMoveTo(FF)V" />
+		<method name="rQuadTo(FFFF)V" />
+		<method name="reset()V" />
+		<method name="rewind()V" />
+		<method name="set(Landroid/graphics/Path;)V" />
+		<method name="setFillType(Landroid/graphics/Path$FillType;)V" />
+		<method name="setLastPoint(FF)V" />
+		<method name="toggleInverseFillType()V" />
+		<method name="transform(Landroid/graphics/Matrix;)V" />
+		<method name="transform(Landroid/graphics/Matrix;Landroid/graphics/Path;)V" />
+	</class>
+	<class name="android/graphics/Path$Direction" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$Direction;" />
+		<method name="values()[Landroid/graphics/Path$Direction;" />
+		<field name="CCW" />
+		<field name="CW" />
+	</class>
+	<class name="android/graphics/Path$FillType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Path$FillType;" />
+		<method name="values()[Landroid/graphics/Path$FillType;" />
+		<field name="EVEN_ODD" />
+		<field name="INVERSE_EVEN_ODD" />
+		<field name="INVERSE_WINDING" />
+		<field name="WINDING" />
+	</class>
+	<class name="android/graphics/PathDashPathEffect" since="1">
+		<extends name="android/graphics/PathEffect" />
+		<method name="&lt;init>(Landroid/graphics/Path;FFLandroid/graphics/PathDashPathEffect$Style;)V" />
+	</class>
+	<class name="android/graphics/PathDashPathEffect$Style" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/PathDashPathEffect$Style;" />
+		<method name="values()[Landroid/graphics/PathDashPathEffect$Style;" />
+		<field name="MORPH" />
+		<field name="ROTATE" />
+		<field name="TRANSLATE" />
+	</class>
+	<class name="android/graphics/PathEffect" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/PathMeasure" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/Path;Z)V" />
+		<method name="getLength()F" />
+		<method name="getMatrix(FLandroid/graphics/Matrix;I)Z" />
+		<method name="getPosTan(F[F[F)Z" />
+		<method name="getSegment(FFLandroid/graphics/Path;Z)Z" />
+		<method name="isClosed()Z" />
+		<method name="nextContour()Z" />
+		<method name="setPath(Landroid/graphics/Path;Z)V" />
+		<field name="POSITION_MATRIX_FLAG" />
+		<field name="TANGENT_MATRIX_FLAG" />
+	</class>
+	<class name="android/graphics/Picture" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/Picture;)V" />
+		<method name="beginRecording(II)Landroid/graphics/Canvas;" />
+		<method name="createFromStream(Ljava/io/InputStream;)Landroid/graphics/Picture;" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="endRecording()V" />
+		<method name="getHeight()I" />
+		<method name="getWidth()I" />
+		<method name="writeToStream(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="android/graphics/PixelFormat" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="formatHasAlpha(I)Z" />
+		<method name="getPixelFormatInfo(ILandroid/graphics/PixelFormat;)V" />
+		<field name="A_8" />
+		<field name="JPEG" />
+		<field name="LA_88" />
+		<field name="L_8" />
+		<field name="OPAQUE" />
+		<field name="RGBA_4444" />
+		<field name="RGBA_5551" />
+		<field name="RGBA_8888" />
+		<field name="RGBX_8888" />
+		<field name="RGB_332" />
+		<field name="RGB_565" />
+		<field name="RGB_888" />
+		<field name="TRANSLUCENT" />
+		<field name="TRANSPARENT" />
+		<field name="UNKNOWN" />
+		<field name="YCbCr_420_SP" />
+		<field name="YCbCr_422_I" since="5" />
+		<field name="YCbCr_422_SP" />
+		<field name="bitsPerPixel" />
+		<field name="bytesPerPixel" />
+	</class>
+	<class name="android/graphics/PixelXorXfermode" since="1">
+		<extends name="android/graphics/Xfermode" />
+		<method name="&lt;init>(I)V" />
+	</class>
+	<class name="android/graphics/Point" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" since="13" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/graphics/Point;)V" />
+		<method name="describeContents()I" since="13" />
+		<method name="equals(II)Z" />
+		<method name="negate()V" />
+		<method name="offset(II)V" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" since="13" />
+		<method name="set(II)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="13" />
+		<field name="CREATOR" since="13" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/graphics/PointF" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" since="13" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(FF)V" />
+		<method name="&lt;init>(Landroid/graphics/Point;)V" />
+		<method name="describeContents()I" since="13" />
+		<method name="equals(FF)Z" />
+		<method name="length()F" />
+		<method name="length(FF)F" />
+		<method name="negate()V" />
+		<method name="offset(FF)V" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" since="13" />
+		<method name="set(FF)V" />
+		<method name="set(Landroid/graphics/PointF;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="13" />
+		<field name="CREATOR" since="13" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/graphics/PorterDuff" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/PorterDuff$Mode" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/PorterDuff$Mode;" />
+		<method name="values()[Landroid/graphics/PorterDuff$Mode;" />
+		<field name="ADD" since="11" />
+		<field name="CLEAR" />
+		<field name="DARKEN" />
+		<field name="DST" />
+		<field name="DST_ATOP" />
+		<field name="DST_IN" />
+		<field name="DST_OUT" />
+		<field name="DST_OVER" />
+		<field name="LIGHTEN" />
+		<field name="MULTIPLY" />
+		<field name="OVERLAY" since="11" />
+		<field name="SCREEN" />
+		<field name="SRC" />
+		<field name="SRC_ATOP" />
+		<field name="SRC_IN" />
+		<field name="SRC_OUT" />
+		<field name="SRC_OVER" />
+		<field name="XOR" />
+	</class>
+	<class name="android/graphics/PorterDuffColorFilter" since="1">
+		<extends name="android/graphics/ColorFilter" />
+		<method name="&lt;init>(ILandroid/graphics/PorterDuff$Mode;)V" />
+	</class>
+	<class name="android/graphics/PorterDuffXfermode" since="1">
+		<extends name="android/graphics/Xfermode" />
+		<method name="&lt;init>(Landroid/graphics/PorterDuff$Mode;)V" />
+	</class>
+	<class name="android/graphics/RadialGradient" since="1">
+		<extends name="android/graphics/Shader" />
+		<method name="&lt;init>(FFFIILandroid/graphics/Shader$TileMode;)V" />
+		<method name="&lt;init>(FFF[I[FLandroid/graphics/Shader$TileMode;)V" />
+	</class>
+	<class name="android/graphics/Rasterizer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/Rect" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(IIII)V" />
+		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
+		<method name="centerX()I" />
+		<method name="centerY()I" />
+		<method name="contains(II)Z" />
+		<method name="contains(IIII)Z" />
+		<method name="contains(Landroid/graphics/Rect;)Z" />
+		<method name="describeContents()I" />
+		<method name="exactCenterX()F" />
+		<method name="exactCenterY()F" />
+		<method name="flattenToString()Ljava/lang/String;" since="7" />
+		<method name="height()I" />
+		<method name="inset(II)V" />
+		<method name="intersect(IIII)Z" />
+		<method name="intersect(Landroid/graphics/Rect;)Z" />
+		<method name="intersects(IIII)Z" />
+		<method name="intersects(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z" />
+		<method name="isEmpty()Z" />
+		<method name="offset(II)V" />
+		<method name="offsetTo(II)V" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="set(IIII)V" />
+		<method name="set(Landroid/graphics/Rect;)V" />
+		<method name="setEmpty()V" />
+		<method name="setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z" />
+		<method name="sort()V" />
+		<method name="toShortString()Ljava/lang/String;" since="3" />
+		<method name="unflattenFromString(Ljava/lang/String;)Landroid/graphics/Rect;" since="7" />
+		<method name="union(II)V" />
+		<method name="union(IIII)V" />
+		<method name="union(Landroid/graphics/Rect;)V" />
+		<method name="width()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="bottom" />
+		<field name="left" />
+		<field name="right" />
+		<field name="top" />
+	</class>
+	<class name="android/graphics/RectF" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(FFFF)V" />
+		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
+		<method name="&lt;init>(Landroid/graphics/RectF;)V" />
+		<method name="centerX()F" />
+		<method name="centerY()F" />
+		<method name="contains(FF)Z" />
+		<method name="contains(FFFF)Z" />
+		<method name="contains(Landroid/graphics/RectF;)Z" />
+		<method name="describeContents()I" since="3" />
+		<method name="height()F" />
+		<method name="inset(FF)V" />
+		<method name="intersect(FFFF)Z" />
+		<method name="intersect(Landroid/graphics/RectF;)Z" />
+		<method name="intersects(FFFF)Z" />
+		<method name="intersects(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z" />
+		<method name="isEmpty()Z" />
+		<method name="offset(FF)V" />
+		<method name="offsetTo(FF)V" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" since="3" />
+		<method name="round(Landroid/graphics/Rect;)V" />
+		<method name="roundOut(Landroid/graphics/Rect;)V" />
+		<method name="set(FFFF)V" />
+		<method name="set(Landroid/graphics/Rect;)V" />
+		<method name="set(Landroid/graphics/RectF;)V" />
+		<method name="setEmpty()V" />
+		<method name="setIntersect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z" />
+		<method name="sort()V" />
+		<method name="toShortString()Ljava/lang/String;" since="14" />
+		<method name="union(FF)V" />
+		<method name="union(FFFF)V" />
+		<method name="union(Landroid/graphics/RectF;)V" />
+		<method name="width()F" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+		<field name="CREATOR" since="3" />
+		<field name="bottom" />
+		<field name="left" />
+		<field name="right" />
+		<field name="top" />
+	</class>
+	<class name="android/graphics/Region" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(IIII)V" />
+		<method name="&lt;init>(Landroid/graphics/Rect;)V" />
+		<method name="&lt;init>(Landroid/graphics/Region;)V" />
+		<method name="contains(II)Z" />
+		<method name="describeContents()I" />
+		<method name="getBoundaryPath()Landroid/graphics/Path;" />
+		<method name="getBoundaryPath(Landroid/graphics/Path;)Z" />
+		<method name="getBounds()Landroid/graphics/Rect;" />
+		<method name="getBounds(Landroid/graphics/Rect;)Z" />
+		<method name="isComplex()Z" />
+		<method name="isEmpty()Z" />
+		<method name="isRect()Z" />
+		<method name="op(IIIILandroid/graphics/Region$Op;)Z" />
+		<method name="op(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z" />
+		<method name="op(Landroid/graphics/Rect;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
+		<method name="op(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
+		<method name="op(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z" />
+		<method name="quickContains(IIII)Z" />
+		<method name="quickContains(Landroid/graphics/Rect;)Z" />
+		<method name="quickReject(IIII)Z" />
+		<method name="quickReject(Landroid/graphics/Rect;)Z" />
+		<method name="quickReject(Landroid/graphics/Region;)Z" />
+		<method name="set(IIII)Z" />
+		<method name="set(Landroid/graphics/Rect;)Z" />
+		<method name="set(Landroid/graphics/Region;)Z" />
+		<method name="setEmpty()V" />
+		<method name="setPath(Landroid/graphics/Path;Landroid/graphics/Region;)Z" />
+		<method name="translate(II)V" />
+		<method name="translate(IILandroid/graphics/Region;)V" />
+		<method name="union(Landroid/graphics/Rect;)Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/graphics/Region$Op" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Region$Op;" />
+		<method name="values()[Landroid/graphics/Region$Op;" />
+		<field name="DIFFERENCE" />
+		<field name="INTERSECT" />
+		<field name="REPLACE" />
+		<field name="REVERSE_DIFFERENCE" />
+		<field name="UNION" />
+		<field name="XOR" />
+	</class>
+	<class name="android/graphics/RegionIterator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/graphics/Region;)V" />
+		<method name="next(Landroid/graphics/Rect;)Z" />
+	</class>
+	<class name="android/graphics/Shader" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getLocalMatrix(Landroid/graphics/Matrix;)Z" />
+		<method name="setLocalMatrix(Landroid/graphics/Matrix;)V" />
+	</class>
+	<class name="android/graphics/Shader$TileMode" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/Shader$TileMode;" />
+		<method name="values()[Landroid/graphics/Shader$TileMode;" />
+		<field name="CLAMP" />
+		<field name="MIRROR" />
+		<field name="REPEAT" />
+	</class>
+	<class name="android/graphics/SumPathEffect" since="1">
+		<extends name="android/graphics/PathEffect" />
+		<method name="&lt;init>(Landroid/graphics/PathEffect;Landroid/graphics/PathEffect;)V" />
+	</class>
+	<class name="android/graphics/SurfaceTexture" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="getTimestamp()J" since="14" />
+		<method name="getTransformMatrix([F)V" />
+		<method name="release()V" since="14" />
+		<method name="setDefaultBufferSize(II)V" since="15" />
+		<method name="setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V" />
+		<method name="updateTexImage()V" />
+	</class>
+	<class name="android/graphics/SurfaceTexture$OnFrameAvailableListener" since="11">
+		<method name="onFrameAvailable(Landroid/graphics/SurfaceTexture;)V" />
+	</class>
+	<class name="android/graphics/SurfaceTexture$OutOfResourcesException" since="11">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/graphics/SweepGradient" since="1">
+		<extends name="android/graphics/Shader" />
+		<method name="&lt;init>(FFII)V" />
+		<method name="&lt;init>(FF[I[F)V" />
+	</class>
+	<class name="android/graphics/Typeface" since="1">
+		<extends name="java/lang/Object" />
+		<method name="create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;" />
+		<method name="create(Ljava/lang/String;I)Landroid/graphics/Typeface;" />
+		<method name="createFromAsset(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;" />
+		<method name="createFromFile(Ljava/io/File;)Landroid/graphics/Typeface;" since="4" />
+		<method name="createFromFile(Ljava/lang/String;)Landroid/graphics/Typeface;" since="4" />
+		<method name="defaultFromStyle(I)Landroid/graphics/Typeface;" />
+		<method name="getStyle()I" />
+		<method name="isBold()Z" />
+		<method name="isItalic()Z" />
+		<field name="BOLD" />
+		<field name="BOLD_ITALIC" />
+		<field name="DEFAULT" />
+		<field name="DEFAULT_BOLD" />
+		<field name="ITALIC" />
+		<field name="MONOSPACE" />
+		<field name="NORMAL" />
+		<field name="SANS_SERIF" />
+		<field name="SERIF" />
+	</class>
+	<class name="android/graphics/Xfermode" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/YuvImage" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>([BIII[I)V" />
+		<method name="compressToJpeg(Landroid/graphics/Rect;ILjava/io/OutputStream;)Z" />
+		<method name="getHeight()I" />
+		<method name="getStrides()[I" />
+		<method name="getWidth()I" />
+		<method name="getYuvData()[B" />
+		<method name="getYuvFormat()I" />
+	</class>
+	<class name="android/graphics/drawable/Animatable" since="4">
+		<method name="isRunning()Z" />
+		<method name="start()V" />
+		<method name="stop()V" />
+	</class>
+	<class name="android/graphics/drawable/AnimationDrawable" since="1">
+		<extends name="android/graphics/drawable/DrawableContainer" />
+		<implements name="java/lang/Runnable" />
+		<implements name="android/graphics/drawable/Animatable" since="4" />
+		<method name="&lt;init>()V" />
+		<method name="addFrame(Landroid/graphics/drawable/Drawable;I)V" />
+		<method name="getDuration(I)I" />
+		<method name="getFrame(I)Landroid/graphics/drawable/Drawable;" />
+		<method name="getNumberOfFrames()I" />
+		<method name="isOneShot()Z" />
+		<method name="isRunning()Z" />
+		<method name="run()V" />
+		<method name="setOneShot(Z)V" />
+		<method name="start()V" />
+		<method name="stop()V" />
+	</class>
+	<class name="android/graphics/drawable/BitmapDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/res/Resources;)V" since="4" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V" since="4" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Ljava/io/InputStream;)V" since="5" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Ljava/lang/String;)V" since="5" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getBitmap()Landroid/graphics/Bitmap;" />
+		<method name="getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;" />
+		<method name="getGravity()I" />
+		<method name="getOpacity()I" />
+		<method name="getPaint()Landroid/graphics/Paint;" />
+		<method name="getTileModeX()Landroid/graphics/Shader$TileMode;" />
+		<method name="getTileModeY()Landroid/graphics/Shader$TileMode;" />
+		<method name="setAlpha(I)V" />
+		<method name="setAntiAlias(Z)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setGravity(I)V" />
+		<method name="setTargetDensity(I)V" since="4" />
+		<method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4" />
+		<method name="setTargetDensity(Landroid/util/DisplayMetrics;)V" since="4" />
+		<method name="setTileModeX(Landroid/graphics/Shader$TileMode;)V" />
+		<method name="setTileModeXY(Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V" />
+		<method name="setTileModeY(Landroid/graphics/Shader$TileMode;)V" />
+	</class>
+	<class name="android/graphics/drawable/ClipDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;II)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+		<field name="HORIZONTAL" />
+		<field name="VERTICAL" />
+	</class>
+	<class name="android/graphics/drawable/ColorDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getAlpha()I" />
+		<method name="getColor()I" since="11" />
+		<method name="getOpacity()I" />
+		<method name="setAlpha(I)V" />
+		<method name="setColor(I)V" since="11" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+	</class>
+	<class name="android/graphics/drawable/Drawable" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clearColorFilter()V" />
+		<method name="copyBounds()Landroid/graphics/Rect;" />
+		<method name="copyBounds(Landroid/graphics/Rect;)V" />
+		<method name="createFromPath(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
+		<method name="createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="4" />
+		<method name="createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/drawable/Drawable;" since="5" />
+		<method name="createFromStream(Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
+		<method name="createFromXml(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;)Landroid/graphics/drawable/Drawable;" />
+		<method name="createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/graphics/drawable/Drawable;" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getBounds()Landroid/graphics/Rect;" />
+		<method name="getCallback()Landroid/graphics/drawable/Drawable$Callback;" since="11" />
+		<method name="getChangingConfigurations()I" />
+		<method name="getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;" />
+		<method name="getCurrent()Landroid/graphics/drawable/Drawable;" />
+		<method name="getIntrinsicHeight()I" />
+		<method name="getIntrinsicWidth()I" />
+		<method name="getLevel()I" />
+		<method name="getMinimumHeight()I" />
+		<method name="getMinimumWidth()I" />
+		<method name="getOpacity()I" />
+		<method name="getPadding(Landroid/graphics/Rect;)Z" />
+		<method name="getState()[I" />
+		<method name="getTransparentRegion()Landroid/graphics/Region;" />
+		<method name="inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)V" />
+		<method name="invalidateSelf()V" />
+		<method name="isStateful()Z" />
+		<method name="isVisible()Z" />
+		<method name="jumpToCurrentState()V" since="11" />
+		<method name="mutate()Landroid/graphics/drawable/Drawable;" since="3" />
+		<method name="onBoundsChange(Landroid/graphics/Rect;)V" />
+		<method name="onLevelChange(I)Z" />
+		<method name="onStateChange([I)Z" />
+		<method name="resolveOpacity(II)I" />
+		<method name="scheduleSelf(Ljava/lang/Runnable;J)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setBounds(IIII)V" />
+		<method name="setBounds(Landroid/graphics/Rect;)V" />
+		<method name="setCallback(Landroid/graphics/drawable/Drawable$Callback;)V" />
+		<method name="setChangingConfigurations(I)V" />
+		<method name="setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setDither(Z)V" />
+		<method name="setFilterBitmap(Z)V" />
+		<method name="setLevel(I)Z" />
+		<method name="setState([I)Z" />
+		<method name="setVisible(ZZ)Z" />
+		<method name="unscheduleSelf(Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/Drawable$Callback" since="1">
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/Drawable$ConstantState" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getChangingConfigurations()I" />
+		<method name="newDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;" since="5" />
+	</class>
+	<class name="android/graphics/drawable/DrawableContainer" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>()V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="selectDrawable(I)Z" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V" />
+		<method name="setEnterFadeDuration(I)V" since="11" />
+		<method name="setExitFadeDuration(I)V" since="11" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/DrawableContainer$DrawableContainerState" since="1">
+		<extends name="android/graphics/drawable/Drawable$ConstantState" />
+		<method name="addChild(Landroid/graphics/drawable/Drawable;)I" />
+		<method name="canConstantState()Z" />
+		<method name="computeConstantSize()V" since="11" />
+		<method name="getChangingConfigurations()I" />
+		<method name="getChildCount()I" />
+		<method name="getChildren()[Landroid/graphics/drawable/Drawable;" />
+		<method name="getConstantHeight()I" />
+		<method name="getConstantMinimumHeight()I" />
+		<method name="getConstantMinimumWidth()I" />
+		<method name="getConstantPadding()Landroid/graphics/Rect;" />
+		<method name="getConstantWidth()I" />
+		<method name="getEnterFadeDuration()I" since="11" />
+		<method name="getExitFadeDuration()I" since="11" />
+		<method name="getOpacity()I" />
+		<method name="growArray(II)V" />
+		<method name="isConstantSize()Z" />
+		<method name="isStateful()Z" />
+		<method name="setConstantSize(Z)V" />
+		<method name="setEnterFadeDuration(I)V" since="11" />
+		<method name="setExitFadeDuration(I)V" since="11" />
+		<method name="setVariablePadding(Z)V" />
+	</class>
+	<class name="android/graphics/drawable/GradientDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="setAlpha(I)V" />
+		<method name="setColor(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setCornerRadii([F)V" />
+		<method name="setCornerRadius(F)V" />
+		<method name="setGradientCenter(FF)V" />
+		<method name="setGradientRadius(F)V" />
+		<method name="setGradientType(I)V" />
+		<method name="setShape(I)V" />
+		<method name="setSize(II)V" />
+		<method name="setStroke(II)V" />
+		<method name="setStroke(IIFF)V" />
+		<method name="setUseLevel(Z)V" />
+		<field name="LINE" />
+		<field name="LINEAR_GRADIENT" />
+		<field name="OVAL" />
+		<field name="RADIAL_GRADIENT" />
+		<field name="RECTANGLE" />
+		<field name="RING" />
+		<field name="SWEEP_GRADIENT" />
+	</class>
+	<class name="android/graphics/drawable/GradientDrawable$Orientation" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/graphics/drawable/GradientDrawable$Orientation;" />
+		<method name="values()[Landroid/graphics/drawable/GradientDrawable$Orientation;" />
+		<field name="BL_TR" />
+		<field name="BOTTOM_TOP" />
+		<field name="BR_TL" />
+		<field name="LEFT_RIGHT" />
+		<field name="RIGHT_LEFT" />
+		<field name="TL_BR" />
+		<field name="TOP_BOTTOM" />
+		<field name="TR_BL" />
+	</class>
+	<class name="android/graphics/drawable/InsetDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;I)V" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;IIII)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/LayerDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>([Landroid/graphics/drawable/Drawable;)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="findDrawableByLayerId(I)Landroid/graphics/drawable/Drawable;" />
+		<method name="getDrawable(I)Landroid/graphics/drawable/Drawable;" />
+		<method name="getId(I)I" />
+		<method name="getNumberOfLayers()I" />
+		<method name="getOpacity()I" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setDrawableByLayerId(ILandroid/graphics/drawable/Drawable;)Z" />
+		<method name="setId(II)V" />
+		<method name="setLayerInset(IIIII)V" />
+		<method name="setOpacity(I)V" since="11" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/LevelListDrawable" since="1">
+		<extends name="android/graphics/drawable/DrawableContainer" />
+		<method name="&lt;init>()V" />
+		<method name="addLevel(IILandroid/graphics/drawable/Drawable;)V" />
+	</class>
+	<class name="android/graphics/drawable/NinePatchDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Ljava/lang/String;)V" since="4" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/graphics/NinePatch;)V" since="4" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Landroid/graphics/NinePatch;)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="getPaint()Landroid/graphics/Paint;" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setTargetDensity(I)V" since="4" />
+		<method name="setTargetDensity(Landroid/graphics/Canvas;)V" since="4" />
+		<method name="setTargetDensity(Landroid/util/DisplayMetrics;)V" since="4" />
+	</class>
+	<class name="android/graphics/drawable/PaintDrawable" since="1">
+		<extends name="android/graphics/drawable/ShapeDrawable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="setCornerRadii([F)V" />
+		<method name="setCornerRadius(F)V" />
+	</class>
+	<class name="android/graphics/drawable/PictureDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<method name="&lt;init>(Landroid/graphics/Picture;)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="getPicture()Landroid/graphics/Picture;" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setPicture(Landroid/graphics/Picture;)V" />
+	</class>
+	<class name="android/graphics/drawable/RotateDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>()V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" />
+		<method name="getOpacity()I" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/ScaleDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;IFF)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" since="3" />
+		<method name="getOpacity()I" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="android/graphics/drawable/ShapeDrawable" since="1">
+		<extends name="android/graphics/drawable/Drawable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/graphics/drawable/shapes/Shape;)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getOpacity()I" />
+		<method name="getPaint()Landroid/graphics/Paint;" />
+		<method name="getShaderFactory()Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;" />
+		<method name="getShape()Landroid/graphics/drawable/shapes/Shape;" />
+		<method name="inflateTag(Ljava/lang/String;Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Z" />
+		<method name="onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setIntrinsicHeight(I)V" />
+		<method name="setIntrinsicWidth(I)V" />
+		<method name="setPadding(IIII)V" />
+		<method name="setPadding(Landroid/graphics/Rect;)V" />
+		<method name="setShaderFactory(Landroid/graphics/drawable/ShapeDrawable$ShaderFactory;)V" />
+		<method name="setShape(Landroid/graphics/drawable/shapes/Shape;)V" />
+	</class>
+	<class name="android/graphics/drawable/ShapeDrawable$ShaderFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="resize(II)Landroid/graphics/Shader;" />
+	</class>
+	<class name="android/graphics/drawable/StateListDrawable" since="1">
+		<extends name="android/graphics/drawable/DrawableContainer" />
+		<method name="&lt;init>()V" />
+		<method name="addState([ILandroid/graphics/drawable/Drawable;)V" />
+	</class>
+	<class name="android/graphics/drawable/TransitionDrawable" since="1">
+		<extends name="android/graphics/drawable/LayerDrawable" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<method name="&lt;init>([Landroid/graphics/drawable/Drawable;)V" since="3" />
+		<method name="isCrossFadeEnabled()Z" />
+		<method name="resetTransition()V" />
+		<method name="reverseTransition(I)V" />
+		<method name="setCrossFadeEnabled(Z)V" />
+		<method name="startTransition(I)V" />
+	</class>
+	<class name="android/graphics/drawable/shapes/ArcShape" since="1">
+		<extends name="android/graphics/drawable/shapes/RectShape" />
+		<method name="&lt;init>(FF)V" />
+	</class>
+	<class name="android/graphics/drawable/shapes/OvalShape" since="1">
+		<extends name="android/graphics/drawable/shapes/RectShape" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/graphics/drawable/shapes/PathShape" since="1">
+		<extends name="android/graphics/drawable/shapes/Shape" />
+		<method name="&lt;init>(Landroid/graphics/Path;FF)V" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V" />
+	</class>
+	<class name="android/graphics/drawable/shapes/RectShape" since="1">
+		<extends name="android/graphics/drawable/shapes/Shape" />
+		<method name="&lt;init>()V" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V" />
+		<method name="rect()Landroid/graphics/RectF;" />
+	</class>
+	<class name="android/graphics/drawable/shapes/RoundRectShape" since="1">
+		<extends name="android/graphics/drawable/shapes/RectShape" />
+		<method name="&lt;init>([FLandroid/graphics/RectF;[F)V" />
+	</class>
+	<class name="android/graphics/drawable/shapes/Shape" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Landroid/graphics/drawable/shapes/Shape;" since="3" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V" />
+		<method name="getHeight()F" />
+		<method name="getWidth()F" />
+		<method name="hasAlpha()Z" />
+		<method name="onResize(FF)V" />
+		<method name="resize(FF)V" />
+	</class>
+	<class name="android/hardware/Camera" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addCallbackBuffer([B)V" since="8" />
+		<method name="autoFocus(Landroid/hardware/Camera$AutoFocusCallback;)V" />
+		<method name="cancelAutoFocus()V" since="5" />
+		<method name="getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V" since="9" />
+		<method name="getNumberOfCameras()I" since="9" />
+		<method name="getParameters()Landroid/hardware/Camera$Parameters;" />
+		<method name="lock()V" since="5" />
+		<method name="open()Landroid/hardware/Camera;" />
+		<method name="open(I)Landroid/hardware/Camera;" since="9" />
+		<method name="reconnect()V" since="8" />
+		<method name="release()V" />
+		<method name="setDisplayOrientation(I)V" since="8" />
+		<method name="setErrorCallback(Landroid/hardware/Camera$ErrorCallback;)V" />
+		<method name="setFaceDetectionListener(Landroid/hardware/Camera$FaceDetectionListener;)V" since="14" />
+		<method name="setOneShotPreviewCallback(Landroid/hardware/Camera$PreviewCallback;)V" since="3" />
+		<method name="setParameters(Landroid/hardware/Camera$Parameters;)V" />
+		<method name="setPreviewCallback(Landroid/hardware/Camera$PreviewCallback;)V" />
+		<method name="setPreviewCallbackWithBuffer(Landroid/hardware/Camera$PreviewCallback;)V" since="8" />
+		<method name="setPreviewDisplay(Landroid/view/SurfaceHolder;)V" />
+		<method name="setPreviewTexture(Landroid/graphics/SurfaceTexture;)V" since="11" />
+		<method name="setZoomChangeListener(Landroid/hardware/Camera$OnZoomChangeListener;)V" since="8" />
+		<method name="startFaceDetection()V" since="14" />
+		<method name="startPreview()V" />
+		<method name="startSmoothZoom(I)V" since="8" />
+		<method name="stopFaceDetection()V" since="14" />
+		<method name="stopPreview()V" />
+		<method name="stopSmoothZoom()V" since="8" />
+		<method name="takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V" />
+		<method name="takePicture(Landroid/hardware/Camera$ShutterCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;Landroid/hardware/Camera$PictureCallback;)V" since="5" />
+		<method name="unlock()V" since="5" />
+		<field name="ACTION_NEW_PICTURE" since="14" />
+		<field name="ACTION_NEW_VIDEO" since="14" />
+		<field name="CAMERA_ERROR_SERVER_DIED" />
+		<field name="CAMERA_ERROR_UNKNOWN" />
+	</class>
+	<class name="android/hardware/Camera$Area" since="14">
+		<method name="&lt;init>(Landroid/graphics/Rect;I)V" />
+		<field name="rect" />
+		<field name="weight" />
+	</class>
+	<class name="android/hardware/Camera$AutoFocusCallback" since="1">
+		<method name="onAutoFocus(ZLandroid/hardware/Camera;)V" />
+	</class>
+	<class name="android/hardware/Camera$CameraInfo" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="CAMERA_FACING_BACK" />
+		<field name="CAMERA_FACING_FRONT" />
+		<field name="facing" />
+		<field name="orientation" />
+	</class>
+	<class name="android/hardware/Camera$ErrorCallback" since="1">
+		<method name="onError(ILandroid/hardware/Camera;)V" />
+	</class>
+	<class name="android/hardware/Camera$Face" since="14">
+		<method name="&lt;init>()V" />
+		<field name="id" />
+		<field name="leftEye" />
+		<field name="mouth" />
+		<field name="rect" />
+		<field name="rightEye" />
+		<field name="score" />
+	</class>
+	<class name="android/hardware/Camera$FaceDetectionListener" since="14">
+		<method name="onFaceDetection([Landroid/hardware/Camera$Face;Landroid/hardware/Camera;)V" />
+	</class>
+	<class name="android/hardware/Camera$OnZoomChangeListener" since="8">
+		<method name="onZoomChange(IZLandroid/hardware/Camera;)V" />
+	</class>
+	<class name="android/hardware/Camera$Parameters" since="1">
+		<extends name="java/lang/Object" />
+		<method name="flatten()Ljava/lang/String;" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getAntibanding()Ljava/lang/String;" since="5" />
+		<method name="getAutoExposureLock()Z" since="14" />
+		<method name="getAutoWhiteBalanceLock()Z" since="14" />
+		<method name="getColorEffect()Ljava/lang/String;" since="5" />
+		<method name="getExposureCompensation()I" since="8" />
+		<method name="getExposureCompensationStep()F" since="8" />
+		<method name="getFlashMode()Ljava/lang/String;" since="5" />
+		<method name="getFocalLength()F" since="8" />
+		<method name="getFocusAreas()Ljava/util/List;" since="14" />
+		<method name="getFocusDistances([F)V" since="9" />
+		<method name="getFocusMode()Ljava/lang/String;" since="5" />
+		<method name="getHorizontalViewAngle()F" since="8" />
+		<method name="getInt(Ljava/lang/String;)I" />
+		<method name="getJpegQuality()I" since="5" />
+		<method name="getJpegThumbnailQuality()I" since="5" />
+		<method name="getJpegThumbnailSize()Landroid/hardware/Camera$Size;" since="5" />
+		<method name="getMaxExposureCompensation()I" since="8" />
+		<method name="getMaxNumDetectedFaces()I" since="14" />
+		<method name="getMaxNumFocusAreas()I" since="14" />
+		<method name="getMaxNumMeteringAreas()I" since="14" />
+		<method name="getMaxZoom()I" since="8" />
+		<method name="getMeteringAreas()Ljava/util/List;" since="14" />
+		<method name="getMinExposureCompensation()I" since="8" />
+		<method name="getPictureFormat()I" />
+		<method name="getPictureSize()Landroid/hardware/Camera$Size;" />
+		<method name="getPreferredPreviewSizeForVideo()Landroid/hardware/Camera$Size;" since="11" />
+		<method name="getPreviewFormat()I" />
+		<method name="getPreviewFpsRange([I)V" since="9" />
+		<method name="getPreviewFrameRate()I" />
+		<method name="getPreviewSize()Landroid/hardware/Camera$Size;" />
+		<method name="getSceneMode()Ljava/lang/String;" since="5" />
+		<method name="getSupportedAntibanding()Ljava/util/List;" since="5" />
+		<method name="getSupportedColorEffects()Ljava/util/List;" since="5" />
+		<method name="getSupportedFlashModes()Ljava/util/List;" since="5" />
+		<method name="getSupportedFocusModes()Ljava/util/List;" since="5" />
+		<method name="getSupportedJpegThumbnailSizes()Ljava/util/List;" since="8" />
+		<method name="getSupportedPictureFormats()Ljava/util/List;" since="5" />
+		<method name="getSupportedPictureSizes()Ljava/util/List;" since="5" />
+		<method name="getSupportedPreviewFormats()Ljava/util/List;" since="5" />
+		<method name="getSupportedPreviewFpsRange()Ljava/util/List;" since="9" />
+		<method name="getSupportedPreviewFrameRates()Ljava/util/List;" since="5" />
+		<method name="getSupportedPreviewSizes()Ljava/util/List;" since="5" />
+		<method name="getSupportedSceneModes()Ljava/util/List;" since="5" />
+		<method name="getSupportedVideoSizes()Ljava/util/List;" since="11" />
+		<method name="getSupportedWhiteBalance()Ljava/util/List;" since="5" />
+		<method name="getVerticalViewAngle()F" since="8" />
+		<method name="getVideoStabilization()Z" since="15" />
+		<method name="getWhiteBalance()Ljava/lang/String;" since="5" />
+		<method name="getZoom()I" since="8" />
+		<method name="getZoomRatios()Ljava/util/List;" since="8" />
+		<method name="isAutoExposureLockSupported()Z" since="14" />
+		<method name="isAutoWhiteBalanceLockSupported()Z" since="14" />
+		<method name="isSmoothZoomSupported()Z" since="8" />
+		<method name="isVideoSnapshotSupported()Z" since="14" />
+		<method name="isVideoStabilizationSupported()Z" since="15" />
+		<method name="isZoomSupported()Z" since="8" />
+		<method name="remove(Ljava/lang/String;)V" />
+		<method name="removeGpsData()V" since="5" />
+		<method name="set(Ljava/lang/String;I)V" />
+		<method name="set(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setAntibanding(Ljava/lang/String;)V" since="5" />
+		<method name="setAutoExposureLock(Z)V" since="14" />
+		<method name="setAutoWhiteBalanceLock(Z)V" since="14" />
+		<method name="setColorEffect(Ljava/lang/String;)V" since="5" />
+		<method name="setExposureCompensation(I)V" since="8" />
+		<method name="setFlashMode(Ljava/lang/String;)V" since="5" />
+		<method name="setFocusAreas(Ljava/util/List;)V" since="14" />
+		<method name="setFocusMode(Ljava/lang/String;)V" since="5" />
+		<method name="setGpsAltitude(D)V" since="5" />
+		<method name="setGpsLatitude(D)V" since="5" />
+		<method name="setGpsLongitude(D)V" since="5" />
+		<method name="setGpsProcessingMethod(Ljava/lang/String;)V" since="8" />
+		<method name="setGpsTimestamp(J)V" since="5" />
+		<method name="setJpegQuality(I)V" since="5" />
+		<method name="setJpegThumbnailQuality(I)V" since="5" />
+		<method name="setJpegThumbnailSize(II)V" since="5" />
+		<method name="setMeteringAreas(Ljava/util/List;)V" since="14" />
+		<method name="setPictureFormat(I)V" />
+		<method name="setPictureSize(II)V" />
+		<method name="setPreviewFormat(I)V" />
+		<method name="setPreviewFpsRange(II)V" since="9" />
+		<method name="setPreviewFrameRate(I)V" />
+		<method name="setPreviewSize(II)V" />
+		<method name="setRecordingHint(Z)V" since="14" />
+		<method name="setRotation(I)V" since="5" />
+		<method name="setSceneMode(Ljava/lang/String;)V" since="5" />
+		<method name="setVideoStabilization(Z)V" since="15" />
+		<method name="setWhiteBalance(Ljava/lang/String;)V" since="5" />
+		<method name="setZoom(I)V" since="8" />
+		<method name="unflatten(Ljava/lang/String;)V" />
+		<field name="ANTIBANDING_50HZ" since="5" />
+		<field name="ANTIBANDING_60HZ" since="5" />
+		<field name="ANTIBANDING_AUTO" since="5" />
+		<field name="ANTIBANDING_OFF" since="5" />
+		<field name="EFFECT_AQUA" since="5" />
+		<field name="EFFECT_BLACKBOARD" since="5" />
+		<field name="EFFECT_MONO" since="5" />
+		<field name="EFFECT_NEGATIVE" since="5" />
+		<field name="EFFECT_NONE" since="5" />
+		<field name="EFFECT_POSTERIZE" since="5" />
+		<field name="EFFECT_SEPIA" since="5" />
+		<field name="EFFECT_SOLARIZE" since="5" />
+		<field name="EFFECT_WHITEBOARD" since="5" />
+		<field name="FLASH_MODE_AUTO" since="5" />
+		<field name="FLASH_MODE_OFF" since="5" />
+		<field name="FLASH_MODE_ON" since="5" />
+		<field name="FLASH_MODE_RED_EYE" since="5" />
+		<field name="FLASH_MODE_TORCH" since="5" />
+		<field name="FOCUS_DISTANCE_FAR_INDEX" since="9" />
+		<field name="FOCUS_DISTANCE_NEAR_INDEX" since="9" />
+		<field name="FOCUS_DISTANCE_OPTIMAL_INDEX" since="9" />
+		<field name="FOCUS_MODE_AUTO" since="5" />
+		<field name="FOCUS_MODE_CONTINUOUS_PICTURE" since="14" />
+		<field name="FOCUS_MODE_CONTINUOUS_VIDEO" since="9" />
+		<field name="FOCUS_MODE_EDOF" since="8" />
+		<field name="FOCUS_MODE_FIXED" since="5" />
+		<field name="FOCUS_MODE_INFINITY" since="5" />
+		<field name="FOCUS_MODE_MACRO" since="5" />
+		<field name="PREVIEW_FPS_MAX_INDEX" since="9" />
+		<field name="PREVIEW_FPS_MIN_INDEX" since="9" />
+		<field name="SCENE_MODE_ACTION" since="5" />
+		<field name="SCENE_MODE_AUTO" since="5" />
+		<field name="SCENE_MODE_BARCODE" since="8" />
+		<field name="SCENE_MODE_BEACH" since="5" />
+		<field name="SCENE_MODE_CANDLELIGHT" since="5" />
+		<field name="SCENE_MODE_FIREWORKS" since="5" />
+		<field name="SCENE_MODE_LANDSCAPE" since="5" />
+		<field name="SCENE_MODE_NIGHT" since="5" />
+		<field name="SCENE_MODE_NIGHT_PORTRAIT" since="5" />
+		<field name="SCENE_MODE_PARTY" since="5" />
+		<field name="SCENE_MODE_PORTRAIT" since="5" />
+		<field name="SCENE_MODE_SNOW" since="5" />
+		<field name="SCENE_MODE_SPORTS" since="5" />
+		<field name="SCENE_MODE_STEADYPHOTO" since="5" />
+		<field name="SCENE_MODE_SUNSET" since="5" />
+		<field name="SCENE_MODE_THEATRE" since="5" />
+		<field name="WHITE_BALANCE_AUTO" since="5" />
+		<field name="WHITE_BALANCE_CLOUDY_DAYLIGHT" since="5" />
+		<field name="WHITE_BALANCE_DAYLIGHT" since="5" />
+		<field name="WHITE_BALANCE_FLUORESCENT" since="5" />
+		<field name="WHITE_BALANCE_INCANDESCENT" since="5" />
+		<field name="WHITE_BALANCE_SHADE" since="5" />
+		<field name="WHITE_BALANCE_TWILIGHT" since="5" />
+		<field name="WHITE_BALANCE_WARM_FLUORESCENT" since="5" />
+	</class>
+	<class name="android/hardware/Camera$PictureCallback" since="1">
+		<method name="onPictureTaken([BLandroid/hardware/Camera;)V" />
+	</class>
+	<class name="android/hardware/Camera$PreviewCallback" since="1">
+		<method name="onPreviewFrame([BLandroid/hardware/Camera;)V" />
+	</class>
+	<class name="android/hardware/Camera$ShutterCallback" since="1">
+		<method name="onShutter()V" />
+	</class>
+	<class name="android/hardware/Camera$Size" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(II)V" />
+		<field name="height" />
+		<field name="width" />
+	</class>
+	<class name="android/hardware/GeomagneticField" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(FFFJ)V" />
+		<method name="getDeclination()F" />
+		<method name="getFieldStrength()F" />
+		<method name="getHorizontalStrength()F" />
+		<method name="getInclination()F" />
+		<method name="getX()F" />
+		<method name="getY()F" />
+		<method name="getZ()F" />
+	</class>
+	<class name="android/hardware/Sensor" since="3">
+		<extends name="java/lang/Object" />
+		<method name="getMaximumRange()F" />
+		<method name="getMinDelay()I" since="9" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPower()F" />
+		<method name="getResolution()F" />
+		<method name="getType()I" />
+		<method name="getVendor()Ljava/lang/String;" />
+		<method name="getVersion()I" />
+		<field name="TYPE_ACCELEROMETER" />
+		<field name="TYPE_ALL" />
+		<field name="TYPE_AMBIENT_TEMPERATURE" since="14" />
+		<field name="TYPE_GRAVITY" since="9" />
+		<field name="TYPE_GYROSCOPE" />
+		<field name="TYPE_LIGHT" />
+		<field name="TYPE_LINEAR_ACCELERATION" since="9" />
+		<field name="TYPE_MAGNETIC_FIELD" />
+		<field name="TYPE_ORIENTATION" />
+		<field name="TYPE_PRESSURE" />
+		<field name="TYPE_PROXIMITY" />
+		<field name="TYPE_RELATIVE_HUMIDITY" since="14" />
+		<field name="TYPE_ROTATION_VECTOR" since="9" />
+		<field name="TYPE_TEMPERATURE" />
+	</class>
+	<class name="android/hardware/SensorEvent" since="3">
+		<extends name="java/lang/Object" />
+		<field name="accuracy" />
+		<field name="sensor" />
+		<field name="timestamp" />
+		<field name="values" />
+	</class>
+	<class name="android/hardware/SensorEventListener" since="3">
+		<method name="onAccuracyChanged(Landroid/hardware/Sensor;I)V" />
+		<method name="onSensorChanged(Landroid/hardware/SensorEvent;)V" />
+	</class>
+	<class name="android/hardware/SensorListener" since="1">
+		<method name="onAccuracyChanged(II)V" />
+		<method name="onSensorChanged(I[F)V" />
+	</class>
+	<class name="android/hardware/SensorManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getAltitude(FF)F" since="9" />
+		<method name="getAngleChange([F[F[F)V" since="9" />
+		<method name="getDefaultSensor(I)Landroid/hardware/Sensor;" since="3" />
+		<method name="getInclination([F)F" since="3" />
+		<method name="getOrientation([F[F)[F" since="3" />
+		<method name="getQuaternionFromVector([F[F)V" since="9" />
+		<method name="getRotationMatrix([F[F[F[F)Z" since="3" />
+		<method name="getRotationMatrixFromVector([F[F)V" since="9" />
+		<method name="getSensorList(I)Ljava/util/List;" since="3" />
+		<method name="getSensors()I" />
+		<method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z" since="3" />
+		<method name="registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;)Z" since="3" />
+		<method name="registerListener(Landroid/hardware/SensorListener;I)Z" />
+		<method name="registerListener(Landroid/hardware/SensorListener;II)Z" />
+		<method name="remapCoordinateSystem([FII[F)Z" since="3" />
+		<method name="unregisterListener(Landroid/hardware/SensorEventListener;)V" since="3" />
+		<method name="unregisterListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V" since="3" />
+		<method name="unregisterListener(Landroid/hardware/SensorListener;)V" />
+		<method name="unregisterListener(Landroid/hardware/SensorListener;I)V" />
+		<field name="AXIS_MINUS_X" since="3" />
+		<field name="AXIS_MINUS_Y" since="3" />
+		<field name="AXIS_MINUS_Z" since="3" />
+		<field name="AXIS_X" since="3" />
+		<field name="AXIS_Y" since="3" />
+		<field name="AXIS_Z" since="3" />
+		<field name="DATA_X" />
+		<field name="DATA_Y" />
+		<field name="DATA_Z" />
+		<field name="GRAVITY_DEATH_STAR_I" />
+		<field name="GRAVITY_EARTH" />
+		<field name="GRAVITY_JUPITER" />
+		<field name="GRAVITY_MARS" />
+		<field name="GRAVITY_MERCURY" />
+		<field name="GRAVITY_MOON" />
+		<field name="GRAVITY_NEPTUNE" />
+		<field name="GRAVITY_PLUTO" />
+		<field name="GRAVITY_SATURN" />
+		<field name="GRAVITY_SUN" />
+		<field name="GRAVITY_THE_ISLAND" />
+		<field name="GRAVITY_URANUS" />
+		<field name="GRAVITY_VENUS" />
+		<field name="LIGHT_CLOUDY" />
+		<field name="LIGHT_FULLMOON" />
+		<field name="LIGHT_NO_MOON" />
+		<field name="LIGHT_OVERCAST" />
+		<field name="LIGHT_SHADE" />
+		<field name="LIGHT_SUNLIGHT" />
+		<field name="LIGHT_SUNLIGHT_MAX" />
+		<field name="LIGHT_SUNRISE" />
+		<field name="MAGNETIC_FIELD_EARTH_MAX" />
+		<field name="MAGNETIC_FIELD_EARTH_MIN" />
+		<field name="PRESSURE_STANDARD_ATMOSPHERE" since="9" />
+		<field name="RAW_DATA_INDEX" />
+		<field name="RAW_DATA_X" />
+		<field name="RAW_DATA_Y" />
+		<field name="RAW_DATA_Z" />
+		<field name="SENSOR_ACCELEROMETER" />
+		<field name="SENSOR_ALL" />
+		<field name="SENSOR_DELAY_FASTEST" />
+		<field name="SENSOR_DELAY_GAME" />
+		<field name="SENSOR_DELAY_NORMAL" />
+		<field name="SENSOR_DELAY_UI" />
+		<field name="SENSOR_LIGHT" />
+		<field name="SENSOR_MAGNETIC_FIELD" />
+		<field name="SENSOR_MAX" />
+		<field name="SENSOR_MIN" />
+		<field name="SENSOR_ORIENTATION" />
+		<field name="SENSOR_ORIENTATION_RAW" />
+		<field name="SENSOR_PROXIMITY" />
+		<field name="SENSOR_STATUS_ACCURACY_HIGH" />
+		<field name="SENSOR_STATUS_ACCURACY_LOW" />
+		<field name="SENSOR_STATUS_ACCURACY_MEDIUM" />
+		<field name="SENSOR_STATUS_UNRELIABLE" />
+		<field name="SENSOR_TEMPERATURE" />
+		<field name="SENSOR_TRICORDER" />
+		<field name="STANDARD_GRAVITY" />
+	</class>
+	<class name="android/hardware/usb/UsbAccessory" since="12">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getDescription()Ljava/lang/String;" />
+		<method name="getManufacturer()Ljava/lang/String;" />
+		<method name="getModel()Ljava/lang/String;" />
+		<method name="getSerial()Ljava/lang/String;" />
+		<method name="getUri()Ljava/lang/String;" />
+		<method name="getVersion()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/hardware/usb/UsbConstants" since="12">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="USB_CLASS_APP_SPEC" />
+		<field name="USB_CLASS_AUDIO" />
+		<field name="USB_CLASS_CDC_DATA" />
+		<field name="USB_CLASS_COMM" />
+		<field name="USB_CLASS_CONTENT_SEC" />
+		<field name="USB_CLASS_CSCID" />
+		<field name="USB_CLASS_HID" />
+		<field name="USB_CLASS_HUB" />
+		<field name="USB_CLASS_MASS_STORAGE" />
+		<field name="USB_CLASS_MISC" />
+		<field name="USB_CLASS_PER_INTERFACE" />
+		<field name="USB_CLASS_PHYSICA" />
+		<field name="USB_CLASS_PRINTER" />
+		<field name="USB_CLASS_STILL_IMAGE" />
+		<field name="USB_CLASS_VENDOR_SPEC" />
+		<field name="USB_CLASS_VIDEO" />
+		<field name="USB_CLASS_WIRELESS_CONTROLLER" />
+		<field name="USB_DIR_IN" />
+		<field name="USB_DIR_OUT" />
+		<field name="USB_ENDPOINT_DIR_MASK" />
+		<field name="USB_ENDPOINT_NUMBER_MASK" />
+		<field name="USB_ENDPOINT_XFERTYPE_MASK" />
+		<field name="USB_ENDPOINT_XFER_BULK" />
+		<field name="USB_ENDPOINT_XFER_CONTROL" />
+		<field name="USB_ENDPOINT_XFER_INT" />
+		<field name="USB_ENDPOINT_XFER_ISOC" />
+		<field name="USB_INTERFACE_SUBCLASS_BOOT" />
+		<field name="USB_SUBCLASS_VENDOR_SPEC" />
+		<field name="USB_TYPE_CLASS" />
+		<field name="USB_TYPE_MASK" />
+		<field name="USB_TYPE_RESERVED" />
+		<field name="USB_TYPE_STANDARD" />
+		<field name="USB_TYPE_VENDOR" />
+	</class>
+	<class name="android/hardware/usb/UsbDevice" since="12">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getDeviceClass()I" />
+		<method name="getDeviceId()I" />
+		<method name="getDeviceId(Ljava/lang/String;)I" />
+		<method name="getDeviceName()Ljava/lang/String;" />
+		<method name="getDeviceName(I)Ljava/lang/String;" />
+		<method name="getDeviceProtocol()I" />
+		<method name="getDeviceSubclass()I" />
+		<method name="getInterface(I)Landroid/hardware/usb/UsbInterface;" />
+		<method name="getInterfaceCount()I" />
+		<method name="getProductId()I" />
+		<method name="getVendorId()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/hardware/usb/UsbDeviceConnection" since="12">
+		<extends name="java/lang/Object" />
+		<method name="bulkTransfer(Landroid/hardware/usb/UsbEndpoint;[BII)I" />
+		<method name="claimInterface(Landroid/hardware/usb/UsbInterface;Z)Z" />
+		<method name="close()V" />
+		<method name="controlTransfer(IIII[BII)I" />
+		<method name="getFileDescriptor()I" />
+		<method name="getRawDescriptors()[B" since="13" />
+		<method name="getSerial()Ljava/lang/String;" />
+		<method name="releaseInterface(Landroid/hardware/usb/UsbInterface;)Z" />
+		<method name="requestWait()Landroid/hardware/usb/UsbRequest;" />
+	</class>
+	<class name="android/hardware/usb/UsbEndpoint" since="12">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getAddress()I" />
+		<method name="getAttributes()I" />
+		<method name="getDirection()I" />
+		<method name="getEndpointNumber()I" />
+		<method name="getInterval()I" />
+		<method name="getMaxPacketSize()I" />
+		<method name="getType()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/hardware/usb/UsbInterface" since="12">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getEndpoint(I)Landroid/hardware/usb/UsbEndpoint;" />
+		<method name="getEndpointCount()I" />
+		<method name="getId()I" />
+		<method name="getInterfaceClass()I" />
+		<method name="getInterfaceProtocol()I" />
+		<method name="getInterfaceSubclass()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/hardware/usb/UsbManager" since="12">
+		<extends name="java/lang/Object" />
+		<method name="getAccessoryList()[Landroid/hardware/usb/UsbAccessory;" />
+		<method name="getDeviceList()Ljava/util/HashMap;" />
+		<method name="hasPermission(Landroid/hardware/usb/UsbAccessory;)Z" />
+		<method name="hasPermission(Landroid/hardware/usb/UsbDevice;)Z" />
+		<method name="openAccessory(Landroid/hardware/usb/UsbAccessory;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="openDevice(Landroid/hardware/usb/UsbDevice;)Landroid/hardware/usb/UsbDeviceConnection;" />
+		<method name="requestPermission(Landroid/hardware/usb/UsbAccessory;Landroid/app/PendingIntent;)V" />
+		<method name="requestPermission(Landroid/hardware/usb/UsbDevice;Landroid/app/PendingIntent;)V" />
+		<field name="ACTION_USB_ACCESSORY_ATTACHED" />
+		<field name="ACTION_USB_ACCESSORY_DETACHED" />
+		<field name="ACTION_USB_DEVICE_ATTACHED" />
+		<field name="ACTION_USB_DEVICE_DETACHED" />
+		<field name="EXTRA_ACCESSORY" />
+		<field name="EXTRA_DEVICE" />
+		<field name="EXTRA_PERMISSION_GRANTED" />
+	</class>
+	<class name="android/hardware/usb/UsbRequest" since="12">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="cancel()Z" />
+		<method name="close()V" />
+		<method name="getClientData()Ljava/lang/Object;" />
+		<method name="getEndpoint()Landroid/hardware/usb/UsbEndpoint;" />
+		<method name="initialize(Landroid/hardware/usb/UsbDeviceConnection;Landroid/hardware/usb/UsbEndpoint;)Z" />
+		<method name="queue(Ljava/nio/ByteBuffer;I)Z" />
+		<method name="setClientData(Ljava/lang/Object;)V" />
+	</class>
+	<class name="android/inputmethodservice/AbstractInputMethodService" since="3">
+		<extends name="android/app/Service" />
+		<implements name="android/view/KeyEvent$Callback" />
+		<method name="&lt;init>()V" />
+		<method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;" />
+		<method name="onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;" />
+		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/inputmethod/InputMethod" />
+		<method name="&lt;init>()V" />
+		<method name="createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V" />
+		<method name="revokeSession(Landroid/view/inputmethod/InputMethodSession;)V" />
+		<method name="setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V" />
+	</class>
+	<class name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/inputmethod/InputMethodSession" />
+		<method name="&lt;init>()V" />
+		<method name="dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
+		<method name="dispatchTrackballEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
+		<method name="isEnabled()Z" />
+		<method name="isRevoked()Z" />
+		<method name="revokeSelf()V" />
+		<method name="setEnabled(Z)V" />
+	</class>
+	<class name="android/inputmethodservice/ExtractEditText" since="3">
+		<extends name="android/widget/EditText" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="finishInternalChanges()V" />
+		<method name="hasVerticalScrollBar()Z" />
+		<method name="startInternalChanges()V" />
+	</class>
+	<class name="android/inputmethodservice/InputMethodService" since="3">
+		<extends name="android/inputmethodservice/AbstractInputMethodService" />
+		<method name="&lt;init>()V" />
+		<method name="getBackDisposition()I" since="11" />
+		<method name="getCandidatesHiddenVisibility()I" />
+		<method name="getCurrentInputBinding()Landroid/view/inputmethod/InputBinding;" />
+		<method name="getCurrentInputConnection()Landroid/view/inputmethod/InputConnection;" />
+		<method name="getCurrentInputEditorInfo()Landroid/view/inputmethod/EditorInfo;" />
+		<method name="getCurrentInputStarted()Z" />
+		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
+		<method name="getMaxWidth()I" />
+		<method name="getTextForImeAction(I)Ljava/lang/CharSequence;" />
+		<method name="getWindow()Landroid/app/Dialog;" />
+		<method name="hideStatusIcon()V" />
+		<method name="hideWindow()V" />
+		<method name="isExtractViewShown()Z" />
+		<method name="isFullscreenMode()Z" />
+		<method name="isInputViewShown()Z" />
+		<method name="isShowInputRequested()Z" />
+		<method name="onAppPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="onBindInput()V" />
+		<method name="onComputeInsets(Landroid/inputmethodservice/InputMethodService$Insets;)V" />
+		<method name="onConfigureWindow(Landroid/view/Window;ZZ)V" />
+		<method name="onCreateCandidatesView()Landroid/view/View;" />
+		<method name="onCreateExtractTextView()Landroid/view/View;" />
+		<method name="onCreateInputMethodInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;" />
+		<method name="onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;" />
+		<method name="onCreateInputView()Landroid/view/View;" />
+		<method name="onCurrentInputMethodSubtypeChanged(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
+		<method name="onDisplayCompletions([Landroid/view/inputmethod/CompletionInfo;)V" />
+		<method name="onEvaluateFullscreenMode()Z" />
+		<method name="onEvaluateInputViewShown()Z" />
+		<method name="onExtractTextContextMenuItem(I)Z" />
+		<method name="onExtractedCursorMovement(II)V" />
+		<method name="onExtractedSelectionChanged(II)V" />
+		<method name="onExtractedTextClicked()V" />
+		<method name="onExtractingInputChanged(Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="onFinishCandidatesView(Z)V" />
+		<method name="onFinishInput()V" />
+		<method name="onFinishInputView(Z)V" />
+		<method name="onInitializeInterface()V" />
+		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
+		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
+		<method name="onShowInputRequested(IZ)Z" />
+		<method name="onStartCandidatesView(Landroid/view/inputmethod/EditorInfo;Z)V" />
+		<method name="onStartInput(Landroid/view/inputmethod/EditorInfo;Z)V" />
+		<method name="onStartInputView(Landroid/view/inputmethod/EditorInfo;Z)V" />
+		<method name="onUnbindInput()V" />
+		<method name="onUpdateCursor(Landroid/graphics/Rect;)V" />
+		<method name="onUpdateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V" />
+		<method name="onUpdateExtractingViews(Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="onUpdateExtractingVisibility(Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="onUpdateSelection(IIIIII)V" />
+		<method name="onViewClicked(Z)V" since="14" />
+		<method name="onWindowHidden()V" />
+		<method name="onWindowShown()V" />
+		<method name="requestHideSelf(I)V" />
+		<method name="sendDefaultEditorAction(Z)Z" />
+		<method name="sendDownUpKeyEvents(I)V" />
+		<method name="sendKeyChar(C)V" />
+		<method name="setBackDisposition(I)V" since="11" />
+		<method name="setCandidatesView(Landroid/view/View;)V" />
+		<method name="setCandidatesViewShown(Z)V" />
+		<method name="setExtractView(Landroid/view/View;)V" />
+		<method name="setExtractViewShown(Z)V" />
+		<method name="setInputView(Landroid/view/View;)V" />
+		<method name="showStatusIcon(I)V" />
+		<method name="showWindow(Z)V" />
+		<method name="switchInputMethod(Ljava/lang/String;)V" />
+		<method name="updateFullscreenMode()V" />
+		<method name="updateInputViewShown()V" />
+		<field name="BACK_DISPOSITION_DEFAULT" since="11" />
+		<field name="BACK_DISPOSITION_WILL_DISMISS" since="11" />
+		<field name="BACK_DISPOSITION_WILL_NOT_DISMISS" since="11" />
+	</class>
+	<class name="android/inputmethodservice/InputMethodService$InputMethodImpl" since="3">
+		<extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl" />
+		<method name="&lt;init>()V" />
+		<method name="attachToken(Landroid/os/IBinder;)V" />
+		<method name="bindInput(Landroid/view/inputmethod/InputBinding;)V" />
+		<method name="changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
+		<method name="hideSoftInput(ILandroid/os/ResultReceiver;)V" />
+		<method name="restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="showSoftInput(ILandroid/os/ResultReceiver;)V" />
+		<method name="startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="unbindInput()V" />
+	</class>
+	<class name="android/inputmethodservice/InputMethodService$InputMethodSessionImpl" since="3">
+		<extends name="android/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl" />
+		<method name="&lt;init>()V" />
+		<method name="appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V" />
+		<method name="finishInput()V" />
+		<method name="toggleSoftInput(II)V" />
+		<method name="updateCursor(Landroid/graphics/Rect;)V" />
+		<method name="updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V" />
+		<method name="updateSelection(IIIIII)V" />
+		<method name="viewClicked(Z)V" since="14" />
+	</class>
+	<class name="android/inputmethodservice/InputMethodService$Insets" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="TOUCHABLE_INSETS_CONTENT" />
+		<field name="TOUCHABLE_INSETS_FRAME" />
+		<field name="TOUCHABLE_INSETS_REGION" since="11" />
+		<field name="TOUCHABLE_INSETS_VISIBLE" />
+		<field name="contentTopInsets" />
+		<field name="touchableInsets" />
+		<field name="touchableRegion" since="11" />
+		<field name="visibleTopInsets" />
+	</class>
+	<class name="android/inputmethodservice/Keyboard" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;II)V" />
+		<method name="&lt;init>(Landroid/content/Context;IIII)V" since="11" />
+		<method name="&lt;init>(Landroid/content/Context;ILjava/lang/CharSequence;II)V" />
+		<method name="createKeyFromXml(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard$Row;IILandroid/content/res/XmlResourceParser;)Landroid/inputmethodservice/Keyboard$Key;" />
+		<method name="createRowFromXml(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;)Landroid/inputmethodservice/Keyboard$Row;" />
+		<method name="getHeight()I" />
+		<method name="getHorizontalGap()I" />
+		<method name="getKeyHeight()I" />
+		<method name="getKeyWidth()I" />
+		<method name="getKeys()Ljava/util/List;" />
+		<method name="getMinWidth()I" />
+		<method name="getModifierKeys()Ljava/util/List;" />
+		<method name="getNearestKeys(II)[I" />
+		<method name="getShiftKeyIndex()I" />
+		<method name="getVerticalGap()I" />
+		<method name="isShifted()Z" />
+		<method name="setHorizontalGap(I)V" />
+		<method name="setKeyHeight(I)V" />
+		<method name="setKeyWidth(I)V" />
+		<method name="setShifted(Z)Z" />
+		<method name="setVerticalGap(I)V" />
+		<field name="EDGE_BOTTOM" />
+		<field name="EDGE_LEFT" />
+		<field name="EDGE_RIGHT" />
+		<field name="EDGE_TOP" />
+		<field name="KEYCODE_ALT" />
+		<field name="KEYCODE_CANCEL" />
+		<field name="KEYCODE_DELETE" />
+		<field name="KEYCODE_DONE" />
+		<field name="KEYCODE_MODE_CHANGE" />
+		<field name="KEYCODE_SHIFT" />
+	</class>
+	<class name="android/inputmethodservice/Keyboard$Key" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard$Row;IILandroid/content/res/XmlResourceParser;)V" />
+		<method name="&lt;init>(Landroid/inputmethodservice/Keyboard$Row;)V" />
+		<method name="getCurrentDrawableState()[I" />
+		<method name="isInside(II)Z" />
+		<method name="onPressed()V" />
+		<method name="onReleased(Z)V" />
+		<method name="squaredDistanceFrom(II)I" />
+		<field name="codes" />
+		<field name="edgeFlags" />
+		<field name="gap" />
+		<field name="height" />
+		<field name="icon" />
+		<field name="iconPreview" />
+		<field name="label" />
+		<field name="modifier" />
+		<field name="on" />
+		<field name="popupCharacters" />
+		<field name="popupResId" />
+		<field name="pressed" />
+		<field name="repeatable" />
+		<field name="sticky" />
+		<field name="text" />
+		<field name="width" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/inputmethodservice/Keyboard$Row" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/res/Resources;Landroid/inputmethodservice/Keyboard;Landroid/content/res/XmlResourceParser;)V" />
+		<method name="&lt;init>(Landroid/inputmethodservice/Keyboard;)V" />
+		<field name="defaultHeight" />
+		<field name="defaultHorizontalGap" />
+		<field name="defaultWidth" />
+		<field name="mode" />
+		<field name="rowEdgeFlags" />
+		<field name="verticalGap" />
+	</class>
+	<class name="android/inputmethodservice/KeyboardView" since="3">
+		<extends name="android/view/View" />
+		<implements name="android/view/View$OnClickListener" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="closing()V" />
+		<method name="getKeyboard()Landroid/inputmethodservice/Keyboard;" />
+		<method name="getOnKeyboardActionListener()Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;" />
+		<method name="handleBack()Z" />
+		<method name="invalidateAllKeys()V" since="4" />
+		<method name="invalidateKey(I)V" since="4" />
+		<method name="isPreviewEnabled()Z" />
+		<method name="isProximityCorrectionEnabled()Z" />
+		<method name="isShifted()Z" />
+		<method name="onClick(Landroid/view/View;)V" />
+		<method name="onDetachedFromWindow()V" />
+		<method name="onDraw(Landroid/graphics/Canvas;)V" />
+		<method name="onLongPress(Landroid/inputmethodservice/Keyboard$Key;)Z" />
+		<method name="onMeasure(II)V" />
+		<method name="onSizeChanged(IIII)V" />
+		<method name="setKeyboard(Landroid/inputmethodservice/Keyboard;)V" />
+		<method name="setOnKeyboardActionListener(Landroid/inputmethodservice/KeyboardView$OnKeyboardActionListener;)V" />
+		<method name="setPopupOffset(II)V" />
+		<method name="setPopupParent(Landroid/view/View;)V" />
+		<method name="setPreviewEnabled(Z)V" />
+		<method name="setProximityCorrectionEnabled(Z)V" />
+		<method name="setShifted(Z)Z" />
+		<method name="setVerticalCorrection(I)V" />
+		<method name="swipeDown()V" />
+		<method name="swipeLeft()V" />
+		<method name="swipeRight()V" />
+		<method name="swipeUp()V" />
+	</class>
+	<class name="android/inputmethodservice/KeyboardView$OnKeyboardActionListener" since="3">
+		<method name="onKey(I[I)V" />
+		<method name="onPress(I)V" />
+		<method name="onRelease(I)V" />
+		<method name="onText(Ljava/lang/CharSequence;)V" />
+		<method name="swipeDown()V" />
+		<method name="swipeLeft()V" />
+		<method name="swipeRight()V" />
+		<method name="swipeUp()V" />
+	</class>
+	<class name="android/location/Address" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Ljava/util/Locale;)V" />
+		<method name="clearLatitude()V" />
+		<method name="clearLongitude()V" />
+		<method name="describeContents()I" />
+		<method name="getAddressLine(I)Ljava/lang/String;" />
+		<method name="getAdminArea()Ljava/lang/String;" />
+		<method name="getCountryCode()Ljava/lang/String;" />
+		<method name="getCountryName()Ljava/lang/String;" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getFeatureName()Ljava/lang/String;" />
+		<method name="getLatitude()D" />
+		<method name="getLocale()Ljava/util/Locale;" />
+		<method name="getLocality()Ljava/lang/String;" />
+		<method name="getLongitude()D" />
+		<method name="getMaxAddressLineIndex()I" />
+		<method name="getPhone()Ljava/lang/String;" />
+		<method name="getPostalCode()Ljava/lang/String;" />
+		<method name="getPremises()Ljava/lang/String;" since="4" />
+		<method name="getSubAdminArea()Ljava/lang/String;" />
+		<method name="getSubLocality()Ljava/lang/String;" since="4" />
+		<method name="getSubThoroughfare()Ljava/lang/String;" since="4" />
+		<method name="getThoroughfare()Ljava/lang/String;" />
+		<method name="getUrl()Ljava/lang/String;" />
+		<method name="hasLatitude()Z" />
+		<method name="hasLongitude()Z" />
+		<method name="setAddressLine(ILjava/lang/String;)V" />
+		<method name="setAdminArea(Ljava/lang/String;)V" />
+		<method name="setCountryCode(Ljava/lang/String;)V" />
+		<method name="setCountryName(Ljava/lang/String;)V" />
+		<method name="setExtras(Landroid/os/Bundle;)V" />
+		<method name="setFeatureName(Ljava/lang/String;)V" />
+		<method name="setLatitude(D)V" />
+		<method name="setLocality(Ljava/lang/String;)V" />
+		<method name="setLongitude(D)V" />
+		<method name="setPhone(Ljava/lang/String;)V" />
+		<method name="setPostalCode(Ljava/lang/String;)V" />
+		<method name="setPremises(Ljava/lang/String;)V" since="4" />
+		<method name="setSubAdminArea(Ljava/lang/String;)V" />
+		<method name="setSubLocality(Ljava/lang/String;)V" since="4" />
+		<method name="setSubThoroughfare(Ljava/lang/String;)V" since="4" />
+		<method name="setThoroughfare(Ljava/lang/String;)V" />
+		<method name="setUrl(Ljava/lang/String;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/location/Criteria" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/location/Criteria;)V" />
+		<method name="describeContents()I" />
+		<method name="getAccuracy()I" />
+		<method name="getBearingAccuracy()I" since="9" />
+		<method name="getHorizontalAccuracy()I" since="9" />
+		<method name="getPowerRequirement()I" />
+		<method name="getSpeedAccuracy()I" since="9" />
+		<method name="getVerticalAccuracy()I" since="9" />
+		<method name="isAltitudeRequired()Z" />
+		<method name="isBearingRequired()Z" />
+		<method name="isCostAllowed()Z" />
+		<method name="isSpeedRequired()Z" />
+		<method name="setAccuracy(I)V" />
+		<method name="setAltitudeRequired(Z)V" />
+		<method name="setBearingAccuracy(I)V" since="9" />
+		<method name="setBearingRequired(Z)V" />
+		<method name="setCostAllowed(Z)V" />
+		<method name="setHorizontalAccuracy(I)V" since="9" />
+		<method name="setPowerRequirement(I)V" />
+		<method name="setSpeedAccuracy(I)V" since="9" />
+		<method name="setSpeedRequired(Z)V" />
+		<method name="setVerticalAccuracy(I)V" since="9" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACCURACY_COARSE" />
+		<field name="ACCURACY_FINE" />
+		<field name="ACCURACY_HIGH" since="9" />
+		<field name="ACCURACY_LOW" since="9" />
+		<field name="ACCURACY_MEDIUM" since="9" />
+		<field name="CREATOR" />
+		<field name="NO_REQUIREMENT" />
+		<field name="POWER_HIGH" />
+		<field name="POWER_LOW" />
+		<field name="POWER_MEDIUM" />
+	</class>
+	<class name="android/location/Geocoder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/util/Locale;)V" />
+		<method name="getFromLocation(DDI)Ljava/util/List;" />
+		<method name="getFromLocationName(Ljava/lang/String;I)Ljava/util/List;" />
+		<method name="getFromLocationName(Ljava/lang/String;IDDDD)Ljava/util/List;" />
+		<method name="isPresent()Z" since="9" />
+	</class>
+	<class name="android/location/GpsSatellite" since="3">
+		<extends name="java/lang/Object" />
+		<method name="getAzimuth()F" />
+		<method name="getElevation()F" />
+		<method name="getPrn()I" />
+		<method name="getSnr()F" />
+		<method name="hasAlmanac()Z" />
+		<method name="hasEphemeris()Z" />
+		<method name="usedInFix()Z" />
+	</class>
+	<class name="android/location/GpsStatus" since="3">
+		<extends name="java/lang/Object" />
+		<method name="getMaxSatellites()I" />
+		<method name="getSatellites()Ljava/lang/Iterable;" />
+		<method name="getTimeToFirstFix()I" />
+		<field name="GPS_EVENT_FIRST_FIX" />
+		<field name="GPS_EVENT_SATELLITE_STATUS" />
+		<field name="GPS_EVENT_STARTED" />
+		<field name="GPS_EVENT_STOPPED" />
+	</class>
+	<class name="android/location/GpsStatus$Listener" since="3">
+		<method name="onGpsStatusChanged(I)V" />
+	</class>
+	<class name="android/location/GpsStatus$NmeaListener" since="5">
+		<method name="onNmeaReceived(JLjava/lang/String;)V" />
+	</class>
+	<class name="android/location/Location" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/location/Location;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="bearingTo(Landroid/location/Location;)F" />
+		<method name="convert(DI)Ljava/lang/String;" />
+		<method name="convert(Ljava/lang/String;)D" />
+		<method name="describeContents()I" />
+		<method name="distanceBetween(DDDD[F)V" />
+		<method name="distanceTo(Landroid/location/Location;)F" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" since="3" />
+		<method name="getAccuracy()F" />
+		<method name="getAltitude()D" />
+		<method name="getBearing()F" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getLatitude()D" />
+		<method name="getLongitude()D" />
+		<method name="getProvider()Ljava/lang/String;" />
+		<method name="getSpeed()F" />
+		<method name="getTime()J" />
+		<method name="hasAccuracy()Z" />
+		<method name="hasAltitude()Z" />
+		<method name="hasBearing()Z" />
+		<method name="hasSpeed()Z" />
+		<method name="removeAccuracy()V" />
+		<method name="removeAltitude()V" />
+		<method name="removeBearing()V" />
+		<method name="removeSpeed()V" />
+		<method name="reset()V" />
+		<method name="set(Landroid/location/Location;)V" />
+		<method name="setAccuracy(F)V" />
+		<method name="setAltitude(D)V" />
+		<method name="setBearing(F)V" />
+		<method name="setExtras(Landroid/os/Bundle;)V" />
+		<method name="setLatitude(D)V" />
+		<method name="setLongitude(D)V" />
+		<method name="setProvider(Ljava/lang/String;)V" />
+		<method name="setSpeed(F)V" />
+		<method name="setTime(J)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="FORMAT_DEGREES" />
+		<field name="FORMAT_MINUTES" />
+		<field name="FORMAT_SECONDS" />
+	</class>
+	<class name="android/location/LocationListener" since="1">
+		<method name="onLocationChanged(Landroid/location/Location;)V" />
+		<method name="onProviderDisabled(Ljava/lang/String;)V" />
+		<method name="onProviderEnabled(Ljava/lang/String;)V" />
+		<method name="onStatusChanged(Ljava/lang/String;ILandroid/os/Bundle;)V" />
+	</class>
+	<class name="android/location/LocationManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z" since="3" />
+		<method name="addNmeaListener(Landroid/location/GpsStatus$NmeaListener;)Z" since="5" />
+		<method name="addProximityAlert(DDFJLandroid/app/PendingIntent;)V" />
+		<method name="addTestProvider(Ljava/lang/String;ZZZZZZZII)V" since="3" />
+		<method name="clearTestProviderEnabled(Ljava/lang/String;)V" since="3" />
+		<method name="clearTestProviderLocation(Ljava/lang/String;)V" since="3" />
+		<method name="clearTestProviderStatus(Ljava/lang/String;)V" since="3" />
+		<method name="getAllProviders()Ljava/util/List;" />
+		<method name="getBestProvider(Landroid/location/Criteria;Z)Ljava/lang/String;" />
+		<method name="getGpsStatus(Landroid/location/GpsStatus;)Landroid/location/GpsStatus;" since="3" />
+		<method name="getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;" />
+		<method name="getProvider(Ljava/lang/String;)Landroid/location/LocationProvider;" />
+		<method name="getProviders(Landroid/location/Criteria;Z)Ljava/util/List;" />
+		<method name="getProviders(Z)Ljava/util/List;" />
+		<method name="isProviderEnabled(Ljava/lang/String;)Z" />
+		<method name="removeGpsStatusListener(Landroid/location/GpsStatus$Listener;)V" since="3" />
+		<method name="removeNmeaListener(Landroid/location/GpsStatus$NmeaListener;)V" since="5" />
+		<method name="removeProximityAlert(Landroid/app/PendingIntent;)V" />
+		<method name="removeTestProvider(Ljava/lang/String;)V" since="3" />
+		<method name="removeUpdates(Landroid/app/PendingIntent;)V" since="3" />
+		<method name="removeUpdates(Landroid/location/LocationListener;)V" />
+		<method name="requestLocationUpdates(JFLandroid/location/Criteria;Landroid/app/PendingIntent;)V" since="9" />
+		<method name="requestLocationUpdates(JFLandroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9" />
+		<method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/app/PendingIntent;)V" since="3" />
+		<method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V" />
+		<method name="requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V" />
+		<method name="requestSingleUpdate(Landroid/location/Criteria;Landroid/app/PendingIntent;)V" since="9" />
+		<method name="requestSingleUpdate(Landroid/location/Criteria;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9" />
+		<method name="requestSingleUpdate(Ljava/lang/String;Landroid/app/PendingIntent;)V" since="9" />
+		<method name="requestSingleUpdate(Ljava/lang/String;Landroid/location/LocationListener;Landroid/os/Looper;)V" since="9" />
+		<method name="sendExtraCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Z" since="3" />
+		<method name="setTestProviderEnabled(Ljava/lang/String;Z)V" since="3" />
+		<method name="setTestProviderLocation(Ljava/lang/String;Landroid/location/Location;)V" since="3" />
+		<method name="setTestProviderStatus(Ljava/lang/String;ILandroid/os/Bundle;J)V" since="3" />
+		<field name="GPS_PROVIDER" />
+		<field name="KEY_LOCATION_CHANGED" since="3" />
+		<field name="KEY_PROVIDER_ENABLED" since="3" />
+		<field name="KEY_PROXIMITY_ENTERING" />
+		<field name="KEY_STATUS_CHANGED" since="3" />
+		<field name="NETWORK_PROVIDER" />
+		<field name="PASSIVE_PROVIDER" since="8" />
+		<field name="PROVIDERS_CHANGED_ACTION" since="9" />
+	</class>
+	<class name="android/location/LocationProvider" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getAccuracy()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPowerRequirement()I" />
+		<method name="hasMonetaryCost()Z" />
+		<method name="meetsCriteria(Landroid/location/Criteria;)Z" />
+		<method name="requiresCell()Z" />
+		<method name="requiresNetwork()Z" />
+		<method name="requiresSatellite()Z" />
+		<method name="supportsAltitude()Z" />
+		<method name="supportsBearing()Z" />
+		<method name="supportsSpeed()Z" />
+		<field name="AVAILABLE" />
+		<field name="OUT_OF_SERVICE" />
+		<field name="TEMPORARILY_UNAVAILABLE" />
+	</class>
+	<class name="android/media/AsyncPlayer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="play(Landroid/content/Context;Landroid/net/Uri;ZI)V" />
+		<method name="stop()V" />
+	</class>
+	<class name="android/media/AudioFormat" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="CHANNEL_CONFIGURATION_DEFAULT" />
+		<field name="CHANNEL_CONFIGURATION_INVALID" />
+		<field name="CHANNEL_CONFIGURATION_MONO" />
+		<field name="CHANNEL_CONFIGURATION_STEREO" />
+		<field name="CHANNEL_INVALID" since="5" />
+		<field name="CHANNEL_IN_BACK" since="5" />
+		<field name="CHANNEL_IN_BACK_PROCESSED" since="5" />
+		<field name="CHANNEL_IN_DEFAULT" since="5" />
+		<field name="CHANNEL_IN_FRONT" since="5" />
+		<field name="CHANNEL_IN_FRONT_PROCESSED" since="5" />
+		<field name="CHANNEL_IN_LEFT" since="5" />
+		<field name="CHANNEL_IN_LEFT_PROCESSED" since="5" />
+		<field name="CHANNEL_IN_MONO" since="5" />
+		<field name="CHANNEL_IN_PRESSURE" since="5" />
+		<field name="CHANNEL_IN_RIGHT" since="5" />
+		<field name="CHANNEL_IN_RIGHT_PROCESSED" since="5" />
+		<field name="CHANNEL_IN_STEREO" since="5" />
+		<field name="CHANNEL_IN_VOICE_DNLINK" since="5" />
+		<field name="CHANNEL_IN_VOICE_UPLINK" since="5" />
+		<field name="CHANNEL_IN_X_AXIS" since="5" />
+		<field name="CHANNEL_IN_Y_AXIS" since="5" />
+		<field name="CHANNEL_IN_Z_AXIS" since="5" />
+		<field name="CHANNEL_OUT_5POINT1" since="5" />
+		<field name="CHANNEL_OUT_7POINT1" since="5" />
+		<field name="CHANNEL_OUT_BACK_CENTER" since="5" />
+		<field name="CHANNEL_OUT_BACK_LEFT" since="5" />
+		<field name="CHANNEL_OUT_BACK_RIGHT" since="5" />
+		<field name="CHANNEL_OUT_DEFAULT" since="5" />
+		<field name="CHANNEL_OUT_FRONT_CENTER" since="5" />
+		<field name="CHANNEL_OUT_FRONT_LEFT" since="5" />
+		<field name="CHANNEL_OUT_FRONT_LEFT_OF_CENTER" since="5" />
+		<field name="CHANNEL_OUT_FRONT_RIGHT" since="5" />
+		<field name="CHANNEL_OUT_FRONT_RIGHT_OF_CENTER" since="5" />
+		<field name="CHANNEL_OUT_LOW_FREQUENCY" since="5" />
+		<field name="CHANNEL_OUT_MONO" since="5" />
+		<field name="CHANNEL_OUT_QUAD" since="5" />
+		<field name="CHANNEL_OUT_STEREO" since="5" />
+		<field name="CHANNEL_OUT_SURROUND" since="5" />
+		<field name="ENCODING_DEFAULT" />
+		<field name="ENCODING_INVALID" />
+		<field name="ENCODING_PCM_16BIT" />
+		<field name="ENCODING_PCM_8BIT" />
+	</class>
+	<class name="android/media/AudioManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="abandonAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;)I" since="8" />
+		<method name="adjustStreamVolume(III)V" />
+		<method name="adjustSuggestedStreamVolume(III)V" />
+		<method name="adjustVolume(II)V" />
+		<method name="getMode()I" />
+		<method name="getParameters(Ljava/lang/String;)Ljava/lang/String;" since="5" />
+		<method name="getRingerMode()I" />
+		<method name="getRouting(I)I" />
+		<method name="getStreamMaxVolume(I)I" />
+		<method name="getStreamVolume(I)I" />
+		<method name="getVibrateSetting(I)I" />
+		<method name="isBluetoothA2dpOn()Z" since="3" />
+		<method name="isBluetoothScoAvailableOffCall()Z" since="8" />
+		<method name="isBluetoothScoOn()Z" />
+		<method name="isMicrophoneMute()Z" />
+		<method name="isMusicActive()Z" />
+		<method name="isSpeakerphoneOn()Z" />
+		<method name="isWiredHeadsetOn()Z" since="5" />
+		<method name="loadSoundEffects()V" />
+		<method name="playSoundEffect(I)V" />
+		<method name="playSoundEffect(IF)V" since="3" />
+		<method name="registerMediaButtonEventReceiver(Landroid/content/ComponentName;)V" since="8" />
+		<method name="registerRemoteControlClient(Landroid/media/RemoteControlClient;)V" since="14" />
+		<method name="requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;II)I" since="8" />
+		<method name="setBluetoothA2dpOn(Z)V" since="3" />
+		<method name="setBluetoothScoOn(Z)V" />
+		<method name="setMicrophoneMute(Z)V" />
+		<method name="setMode(I)V" />
+		<method name="setParameters(Ljava/lang/String;)V" since="5" />
+		<method name="setRingerMode(I)V" />
+		<method name="setRouting(III)V" />
+		<method name="setSpeakerphoneOn(Z)V" />
+		<method name="setStreamMute(IZ)V" />
+		<method name="setStreamSolo(IZ)V" />
+		<method name="setStreamVolume(III)V" />
+		<method name="setVibrateSetting(II)V" />
+		<method name="setWiredHeadsetOn(Z)V" since="5" />
+		<method name="shouldVibrate(I)Z" />
+		<method name="startBluetoothSco()V" since="8" />
+		<method name="stopBluetoothSco()V" since="8" />
+		<method name="unloadSoundEffects()V" />
+		<method name="unregisterMediaButtonEventReceiver(Landroid/content/ComponentName;)V" since="8" />
+		<method name="unregisterRemoteControlClient(Landroid/media/RemoteControlClient;)V" since="14" />
+		<field name="ACTION_AUDIO_BECOMING_NOISY" since="3" />
+		<field name="ACTION_SCO_AUDIO_STATE_CHANGED" since="8" />
+		<field name="ACTION_SCO_AUDIO_STATE_UPDATED" since="14" />
+		<field name="ADJUST_LOWER" />
+		<field name="ADJUST_RAISE" />
+		<field name="ADJUST_SAME" />
+		<field name="AUDIOFOCUS_GAIN" since="8" />
+		<field name="AUDIOFOCUS_GAIN_TRANSIENT" since="8" />
+		<field name="AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK" since="8" />
+		<field name="AUDIOFOCUS_LOSS" since="8" />
+		<field name="AUDIOFOCUS_LOSS_TRANSIENT" since="8" />
+		<field name="AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK" since="8" />
+		<field name="AUDIOFOCUS_REQUEST_FAILED" since="8" />
+		<field name="AUDIOFOCUS_REQUEST_GRANTED" since="8" />
+		<field name="EXTRA_RINGER_MODE" />
+		<field name="EXTRA_SCO_AUDIO_PREVIOUS_STATE" since="14" />
+		<field name="EXTRA_SCO_AUDIO_STATE" since="8" />
+		<field name="EXTRA_VIBRATE_SETTING" />
+		<field name="EXTRA_VIBRATE_TYPE" />
+		<field name="FLAG_ALLOW_RINGER_MODES" />
+		<field name="FLAG_PLAY_SOUND" />
+		<field name="FLAG_REMOVE_SOUND_AND_VIBRATE" />
+		<field name="FLAG_SHOW_UI" />
+		<field name="FLAG_VIBRATE" />
+		<field name="FX_FOCUS_NAVIGATION_DOWN" />
+		<field name="FX_FOCUS_NAVIGATION_LEFT" />
+		<field name="FX_FOCUS_NAVIGATION_RIGHT" />
+		<field name="FX_FOCUS_NAVIGATION_UP" />
+		<field name="FX_KEYPRESS_DELETE" since="3" />
+		<field name="FX_KEYPRESS_RETURN" since="3" />
+		<field name="FX_KEYPRESS_SPACEBAR" since="3" />
+		<field name="FX_KEYPRESS_STANDARD" since="3" />
+		<field name="FX_KEY_CLICK" />
+		<field name="MODE_CURRENT" />
+		<field name="MODE_INVALID" />
+		<field name="MODE_IN_CALL" />
+		<field name="MODE_IN_COMMUNICATION" since="11" />
+		<field name="MODE_NORMAL" />
+		<field name="MODE_RINGTONE" />
+		<field name="NUM_STREAMS" />
+		<field name="RINGER_MODE_CHANGED_ACTION" />
+		<field name="RINGER_MODE_NORMAL" />
+		<field name="RINGER_MODE_SILENT" />
+		<field name="RINGER_MODE_VIBRATE" />
+		<field name="ROUTE_ALL" />
+		<field name="ROUTE_BLUETOOTH" />
+		<field name="ROUTE_BLUETOOTH_A2DP" since="3" />
+		<field name="ROUTE_BLUETOOTH_SCO" since="3" />
+		<field name="ROUTE_EARPIECE" />
+		<field name="ROUTE_HEADSET" />
+		<field name="ROUTE_SPEAKER" />
+		<field name="SCO_AUDIO_STATE_CONNECTED" since="8" />
+		<field name="SCO_AUDIO_STATE_CONNECTING" since="14" />
+		<field name="SCO_AUDIO_STATE_DISCONNECTED" since="8" />
+		<field name="SCO_AUDIO_STATE_ERROR" since="8" />
+		<field name="STREAM_ALARM" />
+		<field name="STREAM_DTMF" since="5" />
+		<field name="STREAM_MUSIC" />
+		<field name="STREAM_NOTIFICATION" since="3" />
+		<field name="STREAM_RING" />
+		<field name="STREAM_SYSTEM" />
+		<field name="STREAM_VOICE_CALL" />
+		<field name="USE_DEFAULT_STREAM_TYPE" />
+		<field name="VIBRATE_SETTING_CHANGED_ACTION" />
+		<field name="VIBRATE_SETTING_OFF" />
+		<field name="VIBRATE_SETTING_ON" />
+		<field name="VIBRATE_SETTING_ONLY_SILENT" />
+		<field name="VIBRATE_TYPE_NOTIFICATION" />
+		<field name="VIBRATE_TYPE_RINGER" />
+	</class>
+	<class name="android/media/AudioManager$OnAudioFocusChangeListener" since="8">
+		<method name="onAudioFocusChange(I)V" />
+	</class>
+	<class name="android/media/AudioRecord" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(IIIII)V" />
+		<method name="getAudioFormat()I" />
+		<method name="getAudioSource()I" />
+		<method name="getChannelConfiguration()I" />
+		<method name="getChannelCount()I" />
+		<method name="getMinBufferSize(III)I" />
+		<method name="getNotificationMarkerPosition()I" />
+		<method name="getPositionNotificationPeriod()I" />
+		<method name="getRecordingState()I" />
+		<method name="getSampleRate()I" />
+		<method name="getState()I" />
+		<method name="read(Ljava/nio/ByteBuffer;I)I" />
+		<method name="read([BII)I" />
+		<method name="read([SII)I" />
+		<method name="release()V" />
+		<method name="setNotificationMarkerPosition(I)I" />
+		<method name="setPositionNotificationPeriod(I)I" />
+		<method name="setRecordPositionUpdateListener(Landroid/media/AudioRecord$OnRecordPositionUpdateListener;)V" />
+		<method name="setRecordPositionUpdateListener(Landroid/media/AudioRecord$OnRecordPositionUpdateListener;Landroid/os/Handler;)V" />
+		<method name="startRecording()V" />
+		<method name="stop()V" />
+		<field name="ERROR" />
+		<field name="ERROR_BAD_VALUE" />
+		<field name="ERROR_INVALID_OPERATION" />
+		<field name="RECORDSTATE_RECORDING" />
+		<field name="RECORDSTATE_STOPPED" />
+		<field name="STATE_INITIALIZED" />
+		<field name="STATE_UNINITIALIZED" />
+		<field name="SUCCESS" />
+	</class>
+	<class name="android/media/AudioRecord$OnRecordPositionUpdateListener" since="3">
+		<method name="onMarkerReached(Landroid/media/AudioRecord;)V" />
+		<method name="onPeriodicNotification(Landroid/media/AudioRecord;)V" />
+	</class>
+	<class name="android/media/AudioTrack" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(IIIIII)V" />
+		<method name="&lt;init>(IIIIIII)V" since="9" />
+		<method name="attachAuxEffect(I)I" since="9" />
+		<method name="flush()V" />
+		<method name="getAudioFormat()I" />
+		<method name="getAudioSessionId()I" since="9" />
+		<method name="getChannelConfiguration()I" />
+		<method name="getChannelCount()I" />
+		<method name="getMaxVolume()F" />
+		<method name="getMinBufferSize(III)I" />
+		<method name="getMinVolume()F" />
+		<method name="getNativeFrameCount()I" />
+		<method name="getNativeOutputSampleRate(I)I" />
+		<method name="getNotificationMarkerPosition()I" />
+		<method name="getPlayState()I" />
+		<method name="getPlaybackHeadPosition()I" />
+		<method name="getPlaybackRate()I" />
+		<method name="getPositionNotificationPeriod()I" />
+		<method name="getSampleRate()I" />
+		<method name="getState()I" />
+		<method name="getStreamType()I" />
+		<method name="pause()V" />
+		<method name="play()V" />
+		<method name="release()V" />
+		<method name="reloadStaticData()I" />
+		<method name="setAuxEffectSendLevel(F)I" since="9" />
+		<method name="setLoopPoints(III)I" />
+		<method name="setNotificationMarkerPosition(I)I" />
+		<method name="setPlaybackHeadPosition(I)I" />
+		<method name="setPlaybackPositionUpdateListener(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;)V" />
+		<method name="setPlaybackPositionUpdateListener(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V" />
+		<method name="setPlaybackRate(I)I" />
+		<method name="setPositionNotificationPeriod(I)I" />
+		<method name="setState(I)V" />
+		<method name="setStereoVolume(FF)I" />
+		<method name="stop()V" />
+		<method name="write([BII)I" />
+		<method name="write([SII)I" />
+		<field name="ERROR" />
+		<field name="ERROR_BAD_VALUE" />
+		<field name="ERROR_INVALID_OPERATION" />
+		<field name="MODE_STATIC" />
+		<field name="MODE_STREAM" />
+		<field name="PLAYSTATE_PAUSED" />
+		<field name="PLAYSTATE_PLAYING" />
+		<field name="PLAYSTATE_STOPPED" />
+		<field name="STATE_INITIALIZED" />
+		<field name="STATE_NO_STATIC_DATA" />
+		<field name="STATE_UNINITIALIZED" />
+		<field name="SUCCESS" />
+	</class>
+	<class name="android/media/AudioTrack$OnPlaybackPositionUpdateListener" since="3">
+		<method name="onMarkerReached(Landroid/media/AudioTrack;)V" />
+		<method name="onPeriodicNotification(Landroid/media/AudioTrack;)V" />
+	</class>
+	<class name="android/media/CamcorderProfile" since="8">
+		<extends name="java/lang/Object" />
+		<method name="get(I)Landroid/media/CamcorderProfile;" />
+		<method name="get(II)Landroid/media/CamcorderProfile;" since="9" />
+		<method name="hasProfile(I)Z" since="11" />
+		<method name="hasProfile(II)Z" since="11" />
+		<field name="QUALITY_1080P" since="11" />
+		<field name="QUALITY_480P" since="11" />
+		<field name="QUALITY_720P" since="11" />
+		<field name="QUALITY_CIF" since="11" />
+		<field name="QUALITY_HIGH" />
+		<field name="QUALITY_LOW" />
+		<field name="QUALITY_QCIF" since="11" />
+		<field name="QUALITY_QVGA" since="15" />
+		<field name="QUALITY_TIME_LAPSE_1080P" since="11" />
+		<field name="QUALITY_TIME_LAPSE_480P" since="11" />
+		<field name="QUALITY_TIME_LAPSE_720P" since="11" />
+		<field name="QUALITY_TIME_LAPSE_CIF" since="11" />
+		<field name="QUALITY_TIME_LAPSE_HIGH" since="11" />
+		<field name="QUALITY_TIME_LAPSE_LOW" since="11" />
+		<field name="QUALITY_TIME_LAPSE_QCIF" since="11" />
+		<field name="QUALITY_TIME_LAPSE_QVGA" since="15" />
+		<field name="audioBitRate" />
+		<field name="audioChannels" />
+		<field name="audioCodec" />
+		<field name="audioSampleRate" />
+		<field name="duration" />
+		<field name="fileFormat" />
+		<field name="quality" />
+		<field name="videoBitRate" />
+		<field name="videoCodec" />
+		<field name="videoFrameHeight" />
+		<field name="videoFrameRate" />
+		<field name="videoFrameWidth" />
+	</class>
+	<class name="android/media/CameraProfile" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getJpegEncodingQualityParameter(I)I" />
+		<method name="getJpegEncodingQualityParameter(II)I" since="9" />
+		<field name="QUALITY_HIGH" />
+		<field name="QUALITY_LOW" />
+		<field name="QUALITY_MEDIUM" />
+	</class>
+	<class name="android/media/ExifInterface" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getAltitude(D)D" since="9" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getAttributeDouble(Ljava/lang/String;D)D" since="8" />
+		<method name="getAttributeInt(Ljava/lang/String;I)I" />
+		<method name="getLatLong([F)Z" />
+		<method name="getThumbnail()[B" />
+		<method name="hasThumbnail()Z" />
+		<method name="saveAttributes()V" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="ORIENTATION_FLIP_HORIZONTAL" />
+		<field name="ORIENTATION_FLIP_VERTICAL" />
+		<field name="ORIENTATION_NORMAL" />
+		<field name="ORIENTATION_ROTATE_180" />
+		<field name="ORIENTATION_ROTATE_270" />
+		<field name="ORIENTATION_ROTATE_90" />
+		<field name="ORIENTATION_TRANSPOSE" />
+		<field name="ORIENTATION_TRANSVERSE" />
+		<field name="ORIENTATION_UNDEFINED" />
+		<field name="TAG_APERTURE" since="11" />
+		<field name="TAG_DATETIME" />
+		<field name="TAG_EXPOSURE_TIME" since="11" />
+		<field name="TAG_FLASH" />
+		<field name="TAG_FOCAL_LENGTH" since="8" />
+		<field name="TAG_GPS_ALTITUDE" since="9" />
+		<field name="TAG_GPS_ALTITUDE_REF" since="9" />
+		<field name="TAG_GPS_DATESTAMP" since="8" />
+		<field name="TAG_GPS_LATITUDE" />
+		<field name="TAG_GPS_LATITUDE_REF" />
+		<field name="TAG_GPS_LONGITUDE" />
+		<field name="TAG_GPS_LONGITUDE_REF" />
+		<field name="TAG_GPS_PROCESSING_METHOD" since="8" />
+		<field name="TAG_GPS_TIMESTAMP" since="8" />
+		<field name="TAG_IMAGE_LENGTH" />
+		<field name="TAG_IMAGE_WIDTH" />
+		<field name="TAG_ISO" since="11" />
+		<field name="TAG_MAKE" />
+		<field name="TAG_MODEL" />
+		<field name="TAG_ORIENTATION" />
+		<field name="TAG_WHITE_BALANCE" />
+		<field name="WHITEBALANCE_AUTO" />
+		<field name="WHITEBALANCE_MANUAL" />
+	</class>
+	<class name="android/media/FaceDetector" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(III)V" />
+		<method name="findFaces(Landroid/graphics/Bitmap;[Landroid/media/FaceDetector$Face;)I" />
+	</class>
+	<class name="android/media/FaceDetector$Face" since="1">
+		<extends name="java/lang/Object" />
+		<method name="confidence()F" />
+		<method name="eyesDistance()F" />
+		<method name="getMidPoint(Landroid/graphics/PointF;)V" />
+		<method name="pose(I)F" />
+		<field name="CONFIDENCE_THRESHOLD" />
+		<field name="EULER_X" />
+		<field name="EULER_Y" />
+		<field name="EULER_Z" />
+	</class>
+	<class name="android/media/JetPlayer" since="3">
+		<extends name="java/lang/Object" />
+		<method name="clearQueue()Z" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="closeJetFile()Z" />
+		<method name="getJetPlayer()Landroid/media/JetPlayer;" />
+		<method name="getMaxTracks()I" />
+		<method name="loadJetFile(Landroid/content/res/AssetFileDescriptor;)Z" />
+		<method name="loadJetFile(Ljava/lang/String;)Z" />
+		<method name="pause()Z" />
+		<method name="play()Z" />
+		<method name="queueJetSegment(IIIIIB)Z" />
+		<method name="queueJetSegmentMuteArray(IIII[ZB)Z" />
+		<method name="release()V" />
+		<method name="setEventListener(Landroid/media/JetPlayer$OnJetEventListener;)V" />
+		<method name="setEventListener(Landroid/media/JetPlayer$OnJetEventListener;Landroid/os/Handler;)V" />
+		<method name="setMuteArray([ZZ)Z" />
+		<method name="setMuteFlag(IZZ)Z" />
+		<method name="setMuteFlags(IZ)Z" />
+		<method name="triggerClip(I)Z" />
+	</class>
+	<class name="android/media/JetPlayer$OnJetEventListener" since="3">
+		<method name="onJetEvent(Landroid/media/JetPlayer;SBBBB)V" />
+		<method name="onJetNumQueuedSegmentUpdate(Landroid/media/JetPlayer;I)V" />
+		<method name="onJetPauseUpdate(Landroid/media/JetPlayer;I)V" />
+		<method name="onJetUserIdUpdate(Landroid/media/JetPlayer;II)V" />
+	</class>
+	<class name="android/media/MediaMetadataRetriever" since="10">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="extractMetadata(I)Ljava/lang/String;" />
+		<method name="getEmbeddedPicture()[B" />
+		<method name="getFrameAtTime()Landroid/graphics/Bitmap;" />
+		<method name="getFrameAtTime(J)Landroid/graphics/Bitmap;" />
+		<method name="getFrameAtTime(JI)Landroid/graphics/Bitmap;" />
+		<method name="release()V" />
+		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;)V" />
+		<method name="setDataSource(Ljava/io/FileDescriptor;)V" />
+		<method name="setDataSource(Ljava/io/FileDescriptor;JJ)V" />
+		<method name="setDataSource(Ljava/lang/String;)V" />
+		<method name="setDataSource(Ljava/lang/String;Ljava/util/Map;)V" since="14" />
+		<field name="METADATA_KEY_ALBUM" />
+		<field name="METADATA_KEY_ALBUMARTIST" />
+		<field name="METADATA_KEY_ARTIST" />
+		<field name="METADATA_KEY_AUTHOR" />
+		<field name="METADATA_KEY_BITRATE" since="14" />
+		<field name="METADATA_KEY_CD_TRACK_NUMBER" />
+		<field name="METADATA_KEY_COMPILATION" />
+		<field name="METADATA_KEY_COMPOSER" />
+		<field name="METADATA_KEY_DATE" />
+		<field name="METADATA_KEY_DISC_NUMBER" />
+		<field name="METADATA_KEY_DURATION" />
+		<field name="METADATA_KEY_GENRE" />
+		<field name="METADATA_KEY_HAS_AUDIO" since="14" />
+		<field name="METADATA_KEY_HAS_VIDEO" since="14" />
+		<field name="METADATA_KEY_LOCATION" since="15" />
+		<field name="METADATA_KEY_MIMETYPE" />
+		<field name="METADATA_KEY_NUM_TRACKS" />
+		<field name="METADATA_KEY_TITLE" />
+		<field name="METADATA_KEY_VIDEO_HEIGHT" since="14" />
+		<field name="METADATA_KEY_VIDEO_WIDTH" since="14" />
+		<field name="METADATA_KEY_WRITER" />
+		<field name="METADATA_KEY_YEAR" />
+		<field name="OPTION_CLOSEST" />
+		<field name="OPTION_CLOSEST_SYNC" />
+		<field name="OPTION_NEXT_SYNC" />
+		<field name="OPTION_PREVIOUS_SYNC" />
+	</class>
+	<class name="android/media/MediaPlayer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="attachAuxEffect(I)V" since="9" />
+		<method name="create(Landroid/content/Context;I)Landroid/media/MediaPlayer;" />
+		<method name="create(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/MediaPlayer;" />
+		<method name="create(Landroid/content/Context;Landroid/net/Uri;Landroid/view/SurfaceHolder;)Landroid/media/MediaPlayer;" />
+		<method name="getAudioSessionId()I" since="9" />
+		<method name="getCurrentPosition()I" />
+		<method name="getDuration()I" />
+		<method name="getVideoHeight()I" />
+		<method name="getVideoWidth()I" />
+		<method name="isLooping()Z" since="3" />
+		<method name="isPlaying()Z" />
+		<method name="pause()V" />
+		<method name="prepare()V" />
+		<method name="prepareAsync()V" />
+		<method name="release()V" />
+		<method name="reset()V" />
+		<method name="seekTo(I)V" />
+		<method name="setAudioSessionId(I)V" since="9" />
+		<method name="setAudioStreamType(I)V" />
+		<method name="setAuxEffectSendLevel(F)V" since="9" />
+		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;)V" />
+		<method name="setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;)V" since="14" />
+		<method name="setDataSource(Ljava/io/FileDescriptor;)V" />
+		<method name="setDataSource(Ljava/io/FileDescriptor;JJ)V" />
+		<method name="setDataSource(Ljava/lang/String;)V" />
+		<method name="setDisplay(Landroid/view/SurfaceHolder;)V" />
+		<method name="setLooping(Z)V" />
+		<method name="setOnBufferingUpdateListener(Landroid/media/MediaPlayer$OnBufferingUpdateListener;)V" />
+		<method name="setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V" />
+		<method name="setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V" />
+		<method name="setOnInfoListener(Landroid/media/MediaPlayer$OnInfoListener;)V" since="3" />
+		<method name="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V" />
+		<method name="setOnSeekCompleteListener(Landroid/media/MediaPlayer$OnSeekCompleteListener;)V" />
+		<method name="setOnVideoSizeChangedListener(Landroid/media/MediaPlayer$OnVideoSizeChangedListener;)V" since="3" />
+		<method name="setScreenOnWhilePlaying(Z)V" />
+		<method name="setSurface(Landroid/view/Surface;)V" since="14" />
+		<method name="setVolume(FF)V" />
+		<method name="setWakeMode(Landroid/content/Context;I)V" />
+		<method name="start()V" />
+		<method name="stop()V" />
+		<field name="MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK" since="3" />
+		<field name="MEDIA_ERROR_SERVER_DIED" />
+		<field name="MEDIA_ERROR_UNKNOWN" />
+		<field name="MEDIA_INFO_BAD_INTERLEAVING" since="3" />
+		<field name="MEDIA_INFO_BUFFERING_END" since="9" />
+		<field name="MEDIA_INFO_BUFFERING_START" since="9" />
+		<field name="MEDIA_INFO_METADATA_UPDATE" since="5" />
+		<field name="MEDIA_INFO_NOT_SEEKABLE" since="3" />
+		<field name="MEDIA_INFO_UNKNOWN" since="3" />
+		<field name="MEDIA_INFO_VIDEO_TRACK_LAGGING" since="3" />
+	</class>
+	<class name="android/media/MediaPlayer$OnBufferingUpdateListener" since="1">
+		<method name="onBufferingUpdate(Landroid/media/MediaPlayer;I)V" />
+	</class>
+	<class name="android/media/MediaPlayer$OnCompletionListener" since="1">
+		<method name="onCompletion(Landroid/media/MediaPlayer;)V" />
+	</class>
+	<class name="android/media/MediaPlayer$OnErrorListener" since="1">
+		<method name="onError(Landroid/media/MediaPlayer;II)Z" />
+	</class>
+	<class name="android/media/MediaPlayer$OnInfoListener" since="3">
+		<method name="onInfo(Landroid/media/MediaPlayer;II)Z" />
+	</class>
+	<class name="android/media/MediaPlayer$OnPreparedListener" since="1">
+		<method name="onPrepared(Landroid/media/MediaPlayer;)V" />
+	</class>
+	<class name="android/media/MediaPlayer$OnSeekCompleteListener" since="1">
+		<method name="onSeekComplete(Landroid/media/MediaPlayer;)V" />
+	</class>
+	<class name="android/media/MediaPlayer$OnVideoSizeChangedListener" since="3">
+		<method name="onVideoSizeChanged(Landroid/media/MediaPlayer;II)V" />
+	</class>
+	<class name="android/media/MediaRecorder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAudioSourceMax()I" since="4" />
+		<method name="getMaxAmplitude()I" />
+		<method name="prepare()V" />
+		<method name="release()V" />
+		<method name="reset()V" />
+		<method name="setAudioChannels(I)V" since="8" />
+		<method name="setAudioEncoder(I)V" />
+		<method name="setAudioEncodingBitRate(I)V" since="8" />
+		<method name="setAudioSamplingRate(I)V" since="8" />
+		<method name="setAudioSource(I)V" />
+		<method name="setAuxiliaryOutputFile(Ljava/io/FileDescriptor;)V" since="11" />
+		<method name="setAuxiliaryOutputFile(Ljava/lang/String;)V" since="11" />
+		<method name="setCamera(Landroid/hardware/Camera;)V" since="3" />
+		<method name="setCaptureRate(D)V" since="11" />
+		<method name="setLocation(FF)V" since="14" />
+		<method name="setMaxDuration(I)V" since="3" />
+		<method name="setMaxFileSize(J)V" since="3" />
+		<method name="setOnErrorListener(Landroid/media/MediaRecorder$OnErrorListener;)V" since="3" />
+		<method name="setOnInfoListener(Landroid/media/MediaRecorder$OnInfoListener;)V" since="3" />
+		<method name="setOrientationHint(I)V" since="9" />
+		<method name="setOutputFile(Ljava/io/FileDescriptor;)V" since="3" />
+		<method name="setOutputFile(Ljava/lang/String;)V" />
+		<method name="setOutputFormat(I)V" />
+		<method name="setPreviewDisplay(Landroid/view/Surface;)V" />
+		<method name="setProfile(Landroid/media/CamcorderProfile;)V" since="8" />
+		<method name="setVideoEncoder(I)V" since="3" />
+		<method name="setVideoEncodingBitRate(I)V" since="8" />
+		<method name="setVideoFrameRate(I)V" since="3" />
+		<method name="setVideoSize(II)V" since="3" />
+		<method name="setVideoSource(I)V" since="3" />
+		<method name="start()V" />
+		<method name="stop()V" />
+		<field name="MEDIA_RECORDER_ERROR_UNKNOWN" since="3" />
+		<field name="MEDIA_RECORDER_INFO_MAX_DURATION_REACHED" since="3" />
+		<field name="MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED" since="3" />
+		<field name="MEDIA_RECORDER_INFO_UNKNOWN" since="3" />
+	</class>
+	<class name="android/media/MediaRecorder$AudioEncoder" since="1">
+		<extends name="java/lang/Object" />
+		<field name="AAC" since="10" />
+		<field name="AMR_NB" />
+		<field name="AMR_WB" since="10" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="android/media/MediaRecorder$AudioSource" since="1">
+		<extends name="java/lang/Object" />
+		<field name="CAMCORDER" since="7" />
+		<field name="DEFAULT" />
+		<field name="MIC" />
+		<field name="VOICE_CALL" since="4" />
+		<field name="VOICE_COMMUNICATION" since="11" />
+		<field name="VOICE_DOWNLINK" since="4" />
+		<field name="VOICE_RECOGNITION" since="7" />
+		<field name="VOICE_UPLINK" since="4" />
+	</class>
+	<class name="android/media/MediaRecorder$OnErrorListener" since="3">
+		<method name="onError(Landroid/media/MediaRecorder;II)V" />
+	</class>
+	<class name="android/media/MediaRecorder$OnInfoListener" since="3">
+		<method name="onInfo(Landroid/media/MediaRecorder;II)V" />
+	</class>
+	<class name="android/media/MediaRecorder$OutputFormat" since="1">
+		<extends name="java/lang/Object" />
+		<field name="AMR_NB" since="10" />
+		<field name="AMR_WB" since="10" />
+		<field name="DEFAULT" />
+		<field name="MPEG_4" />
+		<field name="RAW_AMR" since="3" />
+		<field name="THREE_GPP" />
+	</class>
+	<class name="android/media/MediaRecorder$VideoEncoder" since="3">
+		<extends name="java/lang/Object" />
+		<field name="DEFAULT" />
+		<field name="H263" />
+		<field name="H264" />
+		<field name="MPEG_4_SP" />
+	</class>
+	<class name="android/media/MediaRecorder$VideoSource" since="3">
+		<extends name="java/lang/Object" />
+		<field name="CAMERA" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="android/media/MediaScannerConnection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/content/ServiceConnection" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/media/MediaScannerConnection$MediaScannerConnectionClient;)V" />
+		<method name="connect()V" />
+		<method name="disconnect()V" />
+		<method name="isConnected()Z" />
+		<method name="onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V" />
+		<method name="onServiceDisconnected(Landroid/content/ComponentName;)V" />
+		<method name="scanFile(Landroid/content/Context;[Ljava/lang/String;[Ljava/lang/String;Landroid/media/MediaScannerConnection$OnScanCompletedListener;)V" since="8" />
+		<method name="scanFile(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/media/MediaScannerConnection$MediaScannerConnectionClient" since="1">
+		<implements name="android/media/MediaScannerConnection$OnScanCompletedListener" since="8" />
+		<method name="onMediaScannerConnected()V" />
+		<method name="onScanCompleted(Ljava/lang/String;Landroid/net/Uri;)V" />
+	</class>
+	<class name="android/media/MediaScannerConnection$OnScanCompletedListener" since="8">
+		<method name="onScanCompleted(Ljava/lang/String;Landroid/net/Uri;)V" />
+	</class>
+	<class name="android/media/RemoteControlClient" since="14">
+		<method name="&lt;init>(Landroid/app/PendingIntent;)V" />
+		<method name="&lt;init>(Landroid/app/PendingIntent;Landroid/os/Looper;)V" />
+		<method name="editMetadata(Z)Landroid/media/RemoteControlClient$MetadataEditor;" />
+		<method name="setPlaybackState(I)V" />
+		<method name="setTransportControlFlags(I)V" />
+		<field name="FLAG_KEY_MEDIA_FAST_FORWARD" />
+		<field name="FLAG_KEY_MEDIA_NEXT" />
+		<field name="FLAG_KEY_MEDIA_PAUSE" />
+		<field name="FLAG_KEY_MEDIA_PLAY" />
+		<field name="FLAG_KEY_MEDIA_PLAY_PAUSE" />
+		<field name="FLAG_KEY_MEDIA_PREVIOUS" />
+		<field name="FLAG_KEY_MEDIA_REWIND" />
+		<field name="FLAG_KEY_MEDIA_STOP" />
+		<field name="PLAYSTATE_BUFFERING" />
+		<field name="PLAYSTATE_ERROR" />
+		<field name="PLAYSTATE_FAST_FORWARDING" />
+		<field name="PLAYSTATE_PAUSED" />
+		<field name="PLAYSTATE_PLAYING" />
+		<field name="PLAYSTATE_REWINDING" />
+		<field name="PLAYSTATE_SKIPPING_BACKWARDS" />
+		<field name="PLAYSTATE_SKIPPING_FORWARDS" />
+		<field name="PLAYSTATE_STOPPED" />
+	</class>
+	<class name="android/media/RemoteControlClient$MetadataEditor" since="14">
+		<method name="apply()V" />
+		<method name="clear()V" />
+		<method name="putBitmap(ILandroid/graphics/Bitmap;)Landroid/media/RemoteControlClient$MetadataEditor;" />
+		<method name="putLong(IJ)Landroid/media/RemoteControlClient$MetadataEditor;" />
+		<method name="putString(ILjava/lang/String;)Landroid/media/RemoteControlClient$MetadataEditor;" />
+		<field name="BITMAP_KEY_ARTWORK" />
+	</class>
+	<class name="android/media/Ringtone" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getStreamType()I" />
+		<method name="getTitle(Landroid/content/Context;)Ljava/lang/String;" />
+		<method name="isPlaying()Z" />
+		<method name="play()V" />
+		<method name="setStreamType(I)V" />
+		<method name="stop()V" />
+	</class>
+	<class name="android/media/RingtoneManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/app/Activity;)V" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="getActualDefaultRingtoneUri(Landroid/content/Context;I)Landroid/net/Uri;" />
+		<method name="getCursor()Landroid/database/Cursor;" />
+		<method name="getDefaultType(Landroid/net/Uri;)I" />
+		<method name="getDefaultUri(I)Landroid/net/Uri;" />
+		<method name="getIncludeDrm()Z" />
+		<method name="getRingtone(I)Landroid/media/Ringtone;" />
+		<method name="getRingtone(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone;" />
+		<method name="getRingtonePosition(Landroid/net/Uri;)I" />
+		<method name="getRingtoneUri(I)Landroid/net/Uri;" />
+		<method name="getStopPreviousRingtone()Z" />
+		<method name="getValidRingtoneUri(Landroid/content/Context;)Landroid/net/Uri;" />
+		<method name="inferStreamType()I" since="3" />
+		<method name="isDefault(Landroid/net/Uri;)Z" />
+		<method name="setActualDefaultRingtoneUri(Landroid/content/Context;ILandroid/net/Uri;)V" />
+		<method name="setIncludeDrm(Z)V" />
+		<method name="setStopPreviousRingtone(Z)V" />
+		<method name="setType(I)V" />
+		<method name="stopPreviousRingtone()V" />
+		<field name="ACTION_RINGTONE_PICKER" />
+		<field name="EXTRA_RINGTONE_DEFAULT_URI" />
+		<field name="EXTRA_RINGTONE_EXISTING_URI" />
+		<field name="EXTRA_RINGTONE_INCLUDE_DRM" />
+		<field name="EXTRA_RINGTONE_PICKED_URI" />
+		<field name="EXTRA_RINGTONE_SHOW_DEFAULT" />
+		<field name="EXTRA_RINGTONE_SHOW_SILENT" />
+		<field name="EXTRA_RINGTONE_TITLE" />
+		<field name="EXTRA_RINGTONE_TYPE" />
+		<field name="ID_COLUMN_INDEX" />
+		<field name="TITLE_COLUMN_INDEX" />
+		<field name="TYPE_ALARM" />
+		<field name="TYPE_ALL" />
+		<field name="TYPE_NOTIFICATION" />
+		<field name="TYPE_RINGTONE" />
+		<field name="URI_COLUMN_INDEX" />
+	</class>
+	<class name="android/media/SoundPool" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(III)V" />
+		<method name="autoPause()V" since="8" />
+		<method name="autoResume()V" since="8" />
+		<method name="load(Landroid/content/Context;II)I" />
+		<method name="load(Landroid/content/res/AssetFileDescriptor;I)I" since="3" />
+		<method name="load(Ljava/io/FileDescriptor;JJI)I" since="3" />
+		<method name="load(Ljava/lang/String;I)I" />
+		<method name="pause(I)V" />
+		<method name="play(IFFIIF)I" />
+		<method name="release()V" />
+		<method name="resume(I)V" />
+		<method name="setLoop(II)V" />
+		<method name="setOnLoadCompleteListener(Landroid/media/SoundPool$OnLoadCompleteListener;)V" since="8" />
+		<method name="setPriority(II)V" />
+		<method name="setRate(IF)V" />
+		<method name="setVolume(IFF)V" />
+		<method name="stop(I)V" />
+		<method name="unload(I)Z" />
+	</class>
+	<class name="android/media/SoundPool$OnLoadCompleteListener" since="8">
+		<method name="onLoadComplete(Landroid/media/SoundPool;II)V" />
+	</class>
+	<class name="android/media/ThumbnailUtils" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="createVideoThumbnail(Ljava/lang/String;I)Landroid/graphics/Bitmap;" />
+		<method name="extractThumbnail(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap;" />
+		<method name="extractThumbnail(Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;" />
+		<field name="OPTIONS_RECYCLE_INPUT" />
+	</class>
+	<class name="android/media/ToneGenerator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(II)V" />
+		<method name="release()V" />
+		<method name="startTone(I)Z" />
+		<method name="startTone(II)Z" since="5" />
+		<method name="stopTone()V" />
+		<field name="MAX_VOLUME" />
+		<field name="MIN_VOLUME" />
+		<field name="TONE_CDMA_ABBR_ALERT" since="4" />
+		<field name="TONE_CDMA_ABBR_INTERCEPT" since="4" />
+		<field name="TONE_CDMA_ABBR_REORDER" since="4" />
+		<field name="TONE_CDMA_ALERT_AUTOREDIAL_LITE" since="4" />
+		<field name="TONE_CDMA_ALERT_CALL_GUARD" since="4" />
+		<field name="TONE_CDMA_ALERT_INCALL_LITE" since="4" />
+		<field name="TONE_CDMA_ALERT_NETWORK_LITE" since="4" />
+		<field name="TONE_CDMA_ANSWER" since="4" />
+		<field name="TONE_CDMA_CALLDROP_LITE" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_INTERGROUP" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_NORMAL" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT3" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT5" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT6" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PAT7" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_PING_RING" since="4" />
+		<field name="TONE_CDMA_CALL_SIGNAL_ISDN_SP_PRI" since="4" />
+		<field name="TONE_CDMA_CONFIRM" since="4" />
+		<field name="TONE_CDMA_DIAL_TONE_LITE" since="4" />
+		<field name="TONE_CDMA_EMERGENCY_RINGBACK" since="4" />
+		<field name="TONE_CDMA_HIGH_L" since="4" />
+		<field name="TONE_CDMA_HIGH_PBX_L" since="4" />
+		<field name="TONE_CDMA_HIGH_PBX_SLS" since="4" />
+		<field name="TONE_CDMA_HIGH_PBX_SS" since="4" />
+		<field name="TONE_CDMA_HIGH_PBX_SSL" since="4" />
+		<field name="TONE_CDMA_HIGH_PBX_S_X4" since="4" />
+		<field name="TONE_CDMA_HIGH_SLS" since="4" />
+		<field name="TONE_CDMA_HIGH_SS" since="4" />
+		<field name="TONE_CDMA_HIGH_SSL" since="4" />
+		<field name="TONE_CDMA_HIGH_SS_2" since="4" />
+		<field name="TONE_CDMA_HIGH_S_X4" since="4" />
+		<field name="TONE_CDMA_INTERCEPT" since="4" />
+		<field name="TONE_CDMA_KEYPAD_VOLUME_KEY_LITE" since="4" />
+		<field name="TONE_CDMA_LOW_L" since="4" />
+		<field name="TONE_CDMA_LOW_PBX_L" since="4" />
+		<field name="TONE_CDMA_LOW_PBX_SLS" since="4" />
+		<field name="TONE_CDMA_LOW_PBX_SS" since="4" />
+		<field name="TONE_CDMA_LOW_PBX_SSL" since="4" />
+		<field name="TONE_CDMA_LOW_PBX_S_X4" since="4" />
+		<field name="TONE_CDMA_LOW_SLS" since="4" />
+		<field name="TONE_CDMA_LOW_SS" since="4" />
+		<field name="TONE_CDMA_LOW_SSL" since="4" />
+		<field name="TONE_CDMA_LOW_SS_2" since="4" />
+		<field name="TONE_CDMA_LOW_S_X4" since="4" />
+		<field name="TONE_CDMA_MED_L" since="4" />
+		<field name="TONE_CDMA_MED_PBX_L" since="4" />
+		<field name="TONE_CDMA_MED_PBX_SLS" since="4" />
+		<field name="TONE_CDMA_MED_PBX_SS" since="4" />
+		<field name="TONE_CDMA_MED_PBX_SSL" since="4" />
+		<field name="TONE_CDMA_MED_PBX_S_X4" since="4" />
+		<field name="TONE_CDMA_MED_SLS" since="4" />
+		<field name="TONE_CDMA_MED_SS" since="4" />
+		<field name="TONE_CDMA_MED_SSL" since="4" />
+		<field name="TONE_CDMA_MED_SS_2" since="4" />
+		<field name="TONE_CDMA_MED_S_X4" since="4" />
+		<field name="TONE_CDMA_NETWORK_BUSY" since="4" />
+		<field name="TONE_CDMA_NETWORK_BUSY_ONE_SHOT" since="4" />
+		<field name="TONE_CDMA_NETWORK_CALLWAITING" since="4" />
+		<field name="TONE_CDMA_NETWORK_USA_RINGBACK" since="4" />
+		<field name="TONE_CDMA_ONE_MIN_BEEP" since="4" />
+		<field name="TONE_CDMA_PIP" since="4" />
+		<field name="TONE_CDMA_PRESSHOLDKEY_LITE" since="4" />
+		<field name="TONE_CDMA_REORDER" since="4" />
+		<field name="TONE_CDMA_SIGNAL_OFF" since="4" />
+		<field name="TONE_CDMA_SOFT_ERROR_LITE" since="4" />
+		<field name="TONE_DTMF_0" />
+		<field name="TONE_DTMF_1" />
+		<field name="TONE_DTMF_2" />
+		<field name="TONE_DTMF_3" />
+		<field name="TONE_DTMF_4" />
+		<field name="TONE_DTMF_5" />
+		<field name="TONE_DTMF_6" />
+		<field name="TONE_DTMF_7" />
+		<field name="TONE_DTMF_8" />
+		<field name="TONE_DTMF_9" />
+		<field name="TONE_DTMF_A" />
+		<field name="TONE_DTMF_B" />
+		<field name="TONE_DTMF_C" />
+		<field name="TONE_DTMF_D" />
+		<field name="TONE_DTMF_P" />
+		<field name="TONE_DTMF_S" />
+		<field name="TONE_PROP_ACK" />
+		<field name="TONE_PROP_BEEP" />
+		<field name="TONE_PROP_BEEP2" />
+		<field name="TONE_PROP_NACK" />
+		<field name="TONE_PROP_PROMPT" />
+		<field name="TONE_SUP_BUSY" />
+		<field name="TONE_SUP_CALL_WAITING" />
+		<field name="TONE_SUP_CONFIRM" since="4" />
+		<field name="TONE_SUP_CONGESTION" />
+		<field name="TONE_SUP_CONGESTION_ABBREV" since="4" />
+		<field name="TONE_SUP_DIAL" />
+		<field name="TONE_SUP_ERROR" />
+		<field name="TONE_SUP_INTERCEPT" since="4" />
+		<field name="TONE_SUP_INTERCEPT_ABBREV" since="4" />
+		<field name="TONE_SUP_PIP" since="4" />
+		<field name="TONE_SUP_RADIO_ACK" />
+		<field name="TONE_SUP_RADIO_NOTAVAIL" />
+		<field name="TONE_SUP_RINGTONE" />
+	</class>
+	<class name="android/media/audiofx/AudioEffect" since="9">
+		<extends name="java/lang/Object" />
+		<method name="getDescriptor()Landroid/media/audiofx/AudioEffect$Descriptor;" />
+		<method name="getEnabled()Z" />
+		<method name="getId()I" />
+		<method name="hasControl()Z" />
+		<method name="queryEffects()[Landroid/media/audiofx/AudioEffect$Descriptor;" />
+		<method name="release()V" />
+		<method name="setControlStatusListener(Landroid/media/audiofx/AudioEffect$OnControlStatusChangeListener;)V" />
+		<method name="setEnableStatusListener(Landroid/media/audiofx/AudioEffect$OnEnableStatusChangeListener;)V" />
+		<method name="setEnabled(Z)I" />
+		<field name="ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION" />
+		<field name="ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL" />
+		<field name="ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION" />
+		<field name="ALREADY_EXISTS" />
+		<field name="CONTENT_TYPE_GAME" />
+		<field name="CONTENT_TYPE_MOVIE" />
+		<field name="CONTENT_TYPE_MUSIC" />
+		<field name="CONTENT_TYPE_VOICE" />
+		<field name="EFFECT_AUXILIARY" />
+		<field name="EFFECT_INSERT" />
+		<field name="ERROR" />
+		<field name="ERROR_BAD_VALUE" />
+		<field name="ERROR_DEAD_OBJECT" />
+		<field name="ERROR_INVALID_OPERATION" />
+		<field name="ERROR_NO_INIT" />
+		<field name="ERROR_NO_MEMORY" />
+		<field name="EXTRA_AUDIO_SESSION" />
+		<field name="EXTRA_CONTENT_TYPE" />
+		<field name="EXTRA_PACKAGE_NAME" />
+		<field name="SUCCESS" />
+	</class>
+	<class name="android/media/audiofx/AudioEffect$Descriptor" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="connectMode" />
+		<field name="implementor" />
+		<field name="name" />
+		<field name="type" />
+		<field name="uuid" />
+	</class>
+	<class name="android/media/audiofx/AudioEffect$OnControlStatusChangeListener" since="9">
+		<method name="onControlStatusChange(Landroid/media/audiofx/AudioEffect;Z)V" />
+	</class>
+	<class name="android/media/audiofx/AudioEffect$OnEnableStatusChangeListener" since="9">
+		<method name="onEnableStatusChange(Landroid/media/audiofx/AudioEffect;Z)V" />
+	</class>
+	<class name="android/media/audiofx/BassBoost" since="9">
+		<extends name="android/media/audiofx/AudioEffect" />
+		<method name="&lt;init>(II)V" />
+		<method name="getProperties()Landroid/media/audiofx/BassBoost$Settings;" />
+		<method name="getRoundedStrength()S" />
+		<method name="getStrengthSupported()Z" />
+		<method name="setParameterListener(Landroid/media/audiofx/BassBoost$OnParameterChangeListener;)V" />
+		<method name="setProperties(Landroid/media/audiofx/BassBoost$Settings;)V" />
+		<method name="setStrength(S)V" />
+		<field name="PARAM_STRENGTH" />
+		<field name="PARAM_STRENGTH_SUPPORTED" />
+	</class>
+	<class name="android/media/audiofx/BassBoost$OnParameterChangeListener" since="9">
+		<method name="onParameterChange(Landroid/media/audiofx/BassBoost;IIS)V" />
+	</class>
+	<class name="android/media/audiofx/BassBoost$Settings" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="strength" />
+	</class>
+	<class name="android/media/audiofx/EnvironmentalReverb" since="9">
+		<extends name="android/media/audiofx/AudioEffect" />
+		<method name="&lt;init>(II)V" />
+		<method name="getDecayHFRatio()S" />
+		<method name="getDecayTime()I" />
+		<method name="getDensity()S" />
+		<method name="getDiffusion()S" />
+		<method name="getProperties()Landroid/media/audiofx/EnvironmentalReverb$Settings;" />
+		<method name="getReflectionsDelay()I" />
+		<method name="getReflectionsLevel()S" />
+		<method name="getReverbDelay()I" />
+		<method name="getReverbLevel()S" />
+		<method name="getRoomHFLevel()S" />
+		<method name="getRoomLevel()S" />
+		<method name="setDecayHFRatio(S)V" />
+		<method name="setDecayTime(I)V" />
+		<method name="setDensity(S)V" />
+		<method name="setDiffusion(S)V" />
+		<method name="setParameterListener(Landroid/media/audiofx/EnvironmentalReverb$OnParameterChangeListener;)V" />
+		<method name="setProperties(Landroid/media/audiofx/EnvironmentalReverb$Settings;)V" />
+		<method name="setReflectionsDelay(I)V" />
+		<method name="setReflectionsLevel(S)V" />
+		<method name="setReverbDelay(I)V" />
+		<method name="setReverbLevel(S)V" />
+		<method name="setRoomHFLevel(S)V" />
+		<method name="setRoomLevel(S)V" />
+		<field name="PARAM_DECAY_HF_RATIO" />
+		<field name="PARAM_DECAY_TIME" />
+		<field name="PARAM_DENSITY" />
+		<field name="PARAM_DIFFUSION" />
+		<field name="PARAM_REFLECTIONS_DELAY" />
+		<field name="PARAM_REFLECTIONS_LEVEL" />
+		<field name="PARAM_REVERB_DELAY" />
+		<field name="PARAM_REVERB_LEVEL" />
+		<field name="PARAM_ROOM_HF_LEVEL" />
+		<field name="PARAM_ROOM_LEVEL" />
+	</class>
+	<class name="android/media/audiofx/EnvironmentalReverb$OnParameterChangeListener" since="9">
+		<method name="onParameterChange(Landroid/media/audiofx/EnvironmentalReverb;III)V" />
+	</class>
+	<class name="android/media/audiofx/EnvironmentalReverb$Settings" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="decayHFRatio" />
+		<field name="decayTime" />
+		<field name="density" />
+		<field name="diffusion" />
+		<field name="reflectionsDelay" />
+		<field name="reflectionsLevel" />
+		<field name="reverbDelay" />
+		<field name="reverbLevel" />
+		<field name="roomHFLevel" />
+		<field name="roomLevel" />
+	</class>
+	<class name="android/media/audiofx/Equalizer" since="9">
+		<extends name="android/media/audiofx/AudioEffect" />
+		<method name="&lt;init>(II)V" />
+		<method name="getBand(I)S" />
+		<method name="getBandFreqRange(S)[I" />
+		<method name="getBandLevel(S)S" />
+		<method name="getBandLevelRange()[S" />
+		<method name="getCenterFreq(S)I" />
+		<method name="getCurrentPreset()S" />
+		<method name="getNumberOfBands()S" />
+		<method name="getNumberOfPresets()S" />
+		<method name="getPresetName(S)Ljava/lang/String;" />
+		<method name="getProperties()Landroid/media/audiofx/Equalizer$Settings;" />
+		<method name="setBandLevel(SS)V" />
+		<method name="setParameterListener(Landroid/media/audiofx/Equalizer$OnParameterChangeListener;)V" />
+		<method name="setProperties(Landroid/media/audiofx/Equalizer$Settings;)V" />
+		<method name="usePreset(S)V" />
+		<field name="PARAM_BAND_FREQ_RANGE" />
+		<field name="PARAM_BAND_LEVEL" />
+		<field name="PARAM_CENTER_FREQ" />
+		<field name="PARAM_CURRENT_PRESET" />
+		<field name="PARAM_GET_BAND" />
+		<field name="PARAM_GET_NUM_OF_PRESETS" />
+		<field name="PARAM_GET_PRESET_NAME" />
+		<field name="PARAM_LEVEL_RANGE" />
+		<field name="PARAM_NUM_BANDS" />
+		<field name="PARAM_STRING_SIZE_MAX" />
+	</class>
+	<class name="android/media/audiofx/Equalizer$OnParameterChangeListener" since="9">
+		<method name="onParameterChange(Landroid/media/audiofx/Equalizer;IIII)V" />
+	</class>
+	<class name="android/media/audiofx/Equalizer$Settings" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="bandLevels" />
+		<field name="curPreset" />
+		<field name="numBands" />
+	</class>
+	<class name="android/media/audiofx/PresetReverb" since="9">
+		<extends name="android/media/audiofx/AudioEffect" />
+		<method name="&lt;init>(II)V" />
+		<method name="getPreset()S" />
+		<method name="getProperties()Landroid/media/audiofx/PresetReverb$Settings;" />
+		<method name="setParameterListener(Landroid/media/audiofx/PresetReverb$OnParameterChangeListener;)V" />
+		<method name="setPreset(S)V" />
+		<method name="setProperties(Landroid/media/audiofx/PresetReverb$Settings;)V" />
+		<field name="PARAM_PRESET" />
+		<field name="PRESET_LARGEHALL" />
+		<field name="PRESET_LARGEROOM" />
+		<field name="PRESET_MEDIUMHALL" />
+		<field name="PRESET_MEDIUMROOM" />
+		<field name="PRESET_NONE" />
+		<field name="PRESET_PLATE" />
+		<field name="PRESET_SMALLROOM" />
+	</class>
+	<class name="android/media/audiofx/PresetReverb$OnParameterChangeListener" since="9">
+		<method name="onParameterChange(Landroid/media/audiofx/PresetReverb;IIS)V" />
+	</class>
+	<class name="android/media/audiofx/PresetReverb$Settings" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="preset" />
+	</class>
+	<class name="android/media/audiofx/Virtualizer" since="9">
+		<extends name="android/media/audiofx/AudioEffect" />
+		<method name="&lt;init>(II)V" />
+		<method name="getProperties()Landroid/media/audiofx/Virtualizer$Settings;" />
+		<method name="getRoundedStrength()S" />
+		<method name="getStrengthSupported()Z" />
+		<method name="setParameterListener(Landroid/media/audiofx/Virtualizer$OnParameterChangeListener;)V" />
+		<method name="setProperties(Landroid/media/audiofx/Virtualizer$Settings;)V" />
+		<method name="setStrength(S)V" />
+		<field name="PARAM_STRENGTH" />
+		<field name="PARAM_STRENGTH_SUPPORTED" />
+	</class>
+	<class name="android/media/audiofx/Virtualizer$OnParameterChangeListener" since="9">
+		<method name="onParameterChange(Landroid/media/audiofx/Virtualizer;IIS)V" />
+	</class>
+	<class name="android/media/audiofx/Virtualizer$Settings" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="strength" />
+	</class>
+	<class name="android/media/audiofx/Visualizer" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="getCaptureSize()I" />
+		<method name="getCaptureSizeRange()[I" />
+		<method name="getEnabled()Z" />
+		<method name="getFft([B)I" />
+		<method name="getMaxCaptureRate()I" />
+		<method name="getSamplingRate()I" />
+		<method name="getWaveForm([B)I" />
+		<method name="release()V" />
+		<method name="setCaptureSize(I)I" />
+		<method name="setDataCaptureListener(Landroid/media/audiofx/Visualizer$OnDataCaptureListener;IZZ)I" />
+		<method name="setEnabled(Z)I" />
+		<field name="ALREADY_EXISTS" />
+		<field name="ERROR" />
+		<field name="ERROR_BAD_VALUE" />
+		<field name="ERROR_DEAD_OBJECT" />
+		<field name="ERROR_INVALID_OPERATION" />
+		<field name="ERROR_NO_INIT" />
+		<field name="ERROR_NO_MEMORY" />
+		<field name="STATE_ENABLED" />
+		<field name="STATE_INITIALIZED" />
+		<field name="STATE_UNINITIALIZED" />
+		<field name="SUCCESS" />
+	</class>
+	<class name="android/media/audiofx/Visualizer$OnDataCaptureListener" since="9">
+		<method name="onFftDataCapture(Landroid/media/audiofx/Visualizer;[BI)V" />
+		<method name="onWaveFormDataCapture(Landroid/media/audiofx/Visualizer;[BI)V" />
+	</class>
+	<class name="android/media/effect/Effect" since="14">
+		<method name="&lt;init>()V" />
+		<method name="apply(IIII)V" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="release()V" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setUpdateListener(Landroid/media/effect/EffectUpdateListener;)V" />
+	</class>
+	<class name="android/media/effect/EffectContext" since="14">
+		<method name="createWithCurrentGlContext()Landroid/media/effect/EffectContext;" />
+		<method name="getFactory()Landroid/media/effect/EffectFactory;" />
+		<method name="release()V" />
+	</class>
+	<class name="android/media/effect/EffectFactory" since="14">
+		<method name="createEffect(Ljava/lang/String;)Landroid/media/effect/Effect;" />
+		<method name="isEffectSupported(Ljava/lang/String;)Z" />
+		<field name="EFFECT_AUTOFIX" />
+		<field name="EFFECT_BACKDROPPER" />
+		<field name="EFFECT_BITMAPOVERLAY" />
+		<field name="EFFECT_BLACKWHITE" />
+		<field name="EFFECT_BRIGHTNESS" />
+		<field name="EFFECT_CONTRAST" />
+		<field name="EFFECT_CROP" />
+		<field name="EFFECT_CROSSPROCESS" />
+		<field name="EFFECT_DOCUMENTARY" />
+		<field name="EFFECT_DUOTONE" />
+		<field name="EFFECT_FILLLIGHT" />
+		<field name="EFFECT_FISHEYE" />
+		<field name="EFFECT_FLIP" />
+		<field name="EFFECT_GRAIN" />
+		<field name="EFFECT_GRAYSCALE" />
+		<field name="EFFECT_LOMOISH" />
+		<field name="EFFECT_NEGATIVE" />
+		<field name="EFFECT_POSTERIZE" />
+		<field name="EFFECT_REDEYE" />
+		<field name="EFFECT_ROTATE" />
+		<field name="EFFECT_SATURATE" />
+		<field name="EFFECT_SEPIA" />
+		<field name="EFFECT_SHARPEN" />
+		<field name="EFFECT_STRAIGHTEN" />
+		<field name="EFFECT_TEMPERATURE" />
+		<field name="EFFECT_TINT" />
+		<field name="EFFECT_VIGNETTE" />
+	</class>
+	<class name="android/media/effect/EffectUpdateListener" since="14">
+		<method name="onEffectUpdated(Landroid/media/effect/Effect;Ljava/lang/Object;)V" />
+	</class>
+	<class name="android/mtp/MtpConstants" since="12">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="isAbstractObject(I)Z" />
+		<field name="ASSOCIATION_TYPE_GENERIC_FOLDER" />
+		<field name="FORMAT_3GP_CONTAINER" />
+		<field name="FORMAT_AAC" />
+		<field name="FORMAT_ABSTRACT_AUDIO_ALBUM" />
+		<field name="FORMAT_ABSTRACT_AUDIO_PLAYLIST" />
+		<field name="FORMAT_ABSTRACT_AV_PLAYLIST" />
+		<field name="FORMAT_ABSTRACT_DOCUMENT" />
+		<field name="FORMAT_ABSTRACT_IMAGE_ALBUM" />
+		<field name="FORMAT_ABSTRACT_MEDIACAST" />
+		<field name="FORMAT_ABSTRACT_MULTIMEDIA_ALBUM" />
+		<field name="FORMAT_ABSTRACT_VIDEO_ALBUM" />
+		<field name="FORMAT_ABSTRACT_VIDEO_PLAYLIST" />
+		<field name="FORMAT_AIFF" />
+		<field name="FORMAT_ASF" />
+		<field name="FORMAT_ASSOCIATION" />
+		<field name="FORMAT_ASX_PLAYLIST" />
+		<field name="FORMAT_AUDIBLE" />
+		<field name="FORMAT_AVI" />
+		<field name="FORMAT_BMP" />
+		<field name="FORMAT_DPOF" />
+		<field name="FORMAT_EXECUTABLE" />
+		<field name="FORMAT_EXIF_JPEG" />
+		<field name="FORMAT_FLAC" />
+		<field name="FORMAT_GIF" />
+		<field name="FORMAT_HTML" />
+		<field name="FORMAT_JFIF" />
+		<field name="FORMAT_JP2" />
+		<field name="FORMAT_JPX" />
+		<field name="FORMAT_M3U_PLAYLIST" />
+		<field name="FORMAT_MP2" />
+		<field name="FORMAT_MP3" />
+		<field name="FORMAT_MP4_CONTAINER" />
+		<field name="FORMAT_MPEG" />
+		<field name="FORMAT_MPL_PLAYLIST" />
+		<field name="FORMAT_MS_EXCEL_SPREADSHEET" />
+		<field name="FORMAT_MS_POWERPOINT_PRESENTATION" />
+		<field name="FORMAT_MS_WORD_DOCUMENT" />
+		<field name="FORMAT_OGG" />
+		<field name="FORMAT_PICT" />
+		<field name="FORMAT_PLS_PLAYLIST" />
+		<field name="FORMAT_PNG" />
+		<field name="FORMAT_SCRIPT" />
+		<field name="FORMAT_TEXT" />
+		<field name="FORMAT_TIFF" />
+		<field name="FORMAT_TIFF_EP" />
+		<field name="FORMAT_UNDEFINED" />
+		<field name="FORMAT_UNDEFINED_AUDIO" />
+		<field name="FORMAT_UNDEFINED_COLLECTION" />
+		<field name="FORMAT_UNDEFINED_DOCUMENT" />
+		<field name="FORMAT_UNDEFINED_FIRMWARE" />
+		<field name="FORMAT_UNDEFINED_VIDEO" />
+		<field name="FORMAT_WAV" />
+		<field name="FORMAT_WINDOWS_IMAGE_FORMAT" />
+		<field name="FORMAT_WMA" />
+		<field name="FORMAT_WMV" />
+		<field name="FORMAT_WPL_PLAYLIST" />
+		<field name="FORMAT_XML_DOCUMENT" />
+		<field name="PROTECTION_STATUS_NONE" />
+		<field name="PROTECTION_STATUS_NON_TRANSFERABLE_DATA" />
+		<field name="PROTECTION_STATUS_READ_ONLY" />
+		<field name="PROTECTION_STATUS_READ_ONLY_DATA" />
+	</class>
+	<class name="android/mtp/MtpDevice" since="12">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/hardware/usb/UsbDevice;)V" />
+		<method name="close()V" />
+		<method name="deleteObject(I)Z" />
+		<method name="getDeviceId()I" />
+		<method name="getDeviceInfo()Landroid/mtp/MtpDeviceInfo;" />
+		<method name="getDeviceName()Ljava/lang/String;" />
+		<method name="getObject(II)[B" />
+		<method name="getObjectHandles(III)[I" />
+		<method name="getObjectInfo(I)Landroid/mtp/MtpObjectInfo;" />
+		<method name="getParent(I)J" />
+		<method name="getStorageId(I)J" />
+		<method name="getStorageIds()[I" />
+		<method name="getStorageInfo(I)Landroid/mtp/MtpStorageInfo;" />
+		<method name="getThumbnail(I)[B" />
+		<method name="importFile(ILjava/lang/String;)Z" />
+		<method name="open(Landroid/hardware/usb/UsbDeviceConnection;)Z" />
+	</class>
+	<class name="android/mtp/MtpDeviceInfo" since="12">
+		<extends name="java/lang/Object" />
+		<method name="getManufacturer()Ljava/lang/String;" />
+		<method name="getModel()Ljava/lang/String;" />
+		<method name="getSerialNumber()Ljava/lang/String;" />
+		<method name="getVersion()Ljava/lang/String;" />
+	</class>
+	<class name="android/mtp/MtpObjectInfo" since="12">
+		<extends name="java/lang/Object" />
+		<method name="getAssociationDesc()I" />
+		<method name="getAssociationType()I" />
+		<method name="getCompressedSize()I" />
+		<method name="getDateCreated()J" />
+		<method name="getDateModified()J" />
+		<method name="getFormat()I" />
+		<method name="getImagePixDepth()I" />
+		<method name="getImagePixHeight()I" />
+		<method name="getImagePixWidth()I" />
+		<method name="getKeywords()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getObjectHandle()I" />
+		<method name="getParent()I" />
+		<method name="getProtectionStatus()I" />
+		<method name="getSequenceNumber()I" />
+		<method name="getStorageId()I" />
+		<method name="getThumbCompressedSize()I" />
+		<method name="getThumbFormat()I" />
+		<method name="getThumbPixHeight()I" />
+		<method name="getThumbPixWidth()I" />
+	</class>
+	<class name="android/mtp/MtpStorageInfo" since="12">
+		<extends name="java/lang/Object" />
+		<method name="getDescription()Ljava/lang/String;" />
+		<method name="getFreeSpace()J" />
+		<method name="getMaxCapacity()J" />
+		<method name="getStorageId()I" />
+		<method name="getVolumeIdentifier()Ljava/lang/String;" />
+	</class>
+	<class name="android/net/ConnectivityManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getActiveNetworkInfo()Landroid/net/NetworkInfo;" />
+		<method name="getAllNetworkInfo()[Landroid/net/NetworkInfo;" />
+		<method name="getBackgroundDataSetting()Z" since="3" />
+		<method name="getNetworkInfo(I)Landroid/net/NetworkInfo;" />
+		<method name="getNetworkPreference()I" />
+		<method name="isNetworkTypeValid(I)Z" />
+		<method name="requestRouteToHost(II)Z" />
+		<method name="setNetworkPreference(I)V" />
+		<method name="startUsingNetworkFeature(ILjava/lang/String;)I" />
+		<method name="stopUsingNetworkFeature(ILjava/lang/String;)I" />
+		<field name="ACTION_BACKGROUND_DATA_SETTING_CHANGED" since="3" />
+		<field name="CONNECTIVITY_ACTION" />
+		<field name="DEFAULT_NETWORK_PREFERENCE" />
+		<field name="EXTRA_EXTRA_INFO" />
+		<field name="EXTRA_IS_FAILOVER" />
+		<field name="EXTRA_NETWORK_INFO" />
+		<field name="EXTRA_NO_CONNECTIVITY" />
+		<field name="EXTRA_OTHER_NETWORK_INFO" />
+		<field name="EXTRA_REASON" />
+		<field name="TYPE_BLUETOOTH" since="13" />
+		<field name="TYPE_DUMMY" since="14" />
+		<field name="TYPE_ETHERNET" since="13" />
+		<field name="TYPE_MOBILE" />
+		<field name="TYPE_MOBILE_DUN" since="8" />
+		<field name="TYPE_MOBILE_HIPRI" since="8" />
+		<field name="TYPE_MOBILE_MMS" since="8" />
+		<field name="TYPE_MOBILE_SUPL" since="8" />
+		<field name="TYPE_WIFI" />
+		<field name="TYPE_WIMAX" since="8" />
+	</class>
+	<class name="android/net/Credentials" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(III)V" />
+		<method name="getGid()I" />
+		<method name="getPid()I" />
+		<method name="getUid()I" />
+	</class>
+	<class name="android/net/DhcpInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="dns1" />
+		<field name="dns2" />
+		<field name="gateway" />
+		<field name="ipAddress" />
+		<field name="leaseDuration" />
+		<field name="netmask" />
+		<field name="serverAddress" />
+	</class>
+	<class name="android/net/LocalServerSocket" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="accept()Landroid/net/LocalSocket;" />
+		<method name="close()V" />
+		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
+		<method name="getLocalSocketAddress()Landroid/net/LocalSocketAddress;" />
+	</class>
+	<class name="android/net/LocalSocket" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="bind(Landroid/net/LocalSocketAddress;)V" />
+		<method name="close()V" />
+		<method name="connect(Landroid/net/LocalSocketAddress;)V" />
+		<method name="connect(Landroid/net/LocalSocketAddress;I)V" />
+		<method name="getAncillaryFileDescriptors()[Ljava/io/FileDescriptor;" />
+		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getLocalSocketAddress()Landroid/net/LocalSocketAddress;" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="getPeerCredentials()Landroid/net/Credentials;" />
+		<method name="getReceiveBufferSize()I" />
+		<method name="getRemoteSocketAddress()Landroid/net/LocalSocketAddress;" />
+		<method name="getSendBufferSize()I" />
+		<method name="getSoTimeout()I" />
+		<method name="isBound()Z" />
+		<method name="isClosed()Z" />
+		<method name="isConnected()Z" />
+		<method name="isInputShutdown()Z" />
+		<method name="isOutputShutdown()Z" />
+		<method name="setFileDescriptorsForSend([Ljava/io/FileDescriptor;)V" />
+		<method name="setReceiveBufferSize(I)V" />
+		<method name="setSendBufferSize(I)V" />
+		<method name="setSoTimeout(I)V" />
+		<method name="shutdownInput()V" />
+		<method name="shutdownOutput()V" />
+	</class>
+	<class name="android/net/LocalSocketAddress" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Landroid/net/LocalSocketAddress$Namespace;)V" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getNamespace()Landroid/net/LocalSocketAddress$Namespace;" />
+	</class>
+	<class name="android/net/LocalSocketAddress$Namespace" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/net/LocalSocketAddress$Namespace;" />
+		<method name="values()[Landroid/net/LocalSocketAddress$Namespace;" />
+		<field name="ABSTRACT" />
+		<field name="FILESYSTEM" />
+		<field name="RESERVED" />
+	</class>
+	<class name="android/net/MailTo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getBody()Ljava/lang/String;" />
+		<method name="getCc()Ljava/lang/String;" />
+		<method name="getHeaders()Ljava/util/Map;" />
+		<method name="getSubject()Ljava/lang/String;" />
+		<method name="getTo()Ljava/lang/String;" />
+		<method name="isMailTo(Ljava/lang/String;)Z" />
+		<method name="parse(Ljava/lang/String;)Landroid/net/MailTo;" />
+		<field name="MAILTO_SCHEME" />
+	</class>
+	<class name="android/net/NetworkInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(I)V" />
+		<method name="describeContents()I" />
+		<method name="getDetailedState()Landroid/net/NetworkInfo$DetailedState;" />
+		<method name="getExtraInfo()Ljava/lang/String;" />
+		<method name="getReason()Ljava/lang/String;" />
+		<method name="getState()Landroid/net/NetworkInfo$State;" />
+		<method name="getSubtype()I" since="3" />
+		<method name="getSubtypeName()Ljava/lang/String;" since="3" />
+		<method name="getType()I" />
+		<method name="getTypeName()Ljava/lang/String;" />
+		<method name="isAvailable()Z" />
+		<method name="isConnected()Z" />
+		<method name="isConnectedOrConnecting()Z" />
+		<method name="isFailover()Z" />
+		<method name="isRoaming()Z" since="3" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+	</class>
+	<class name="android/net/NetworkInfo$DetailedState" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$DetailedState;" />
+		<method name="values()[Landroid/net/NetworkInfo$DetailedState;" />
+		<field name="AUTHENTICATING" />
+		<field name="BLOCKED" since="14" />
+		<field name="CONNECTED" />
+		<field name="CONNECTING" />
+		<field name="DISCONNECTED" />
+		<field name="DISCONNECTING" />
+		<field name="FAILED" />
+		<field name="IDLE" />
+		<field name="OBTAINING_IPADDR" />
+		<field name="SCANNING" />
+		<field name="SUSPENDED" />
+	</class>
+	<class name="android/net/NetworkInfo$State" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$State;" />
+		<method name="values()[Landroid/net/NetworkInfo$State;" />
+		<field name="CONNECTED" />
+		<field name="CONNECTING" />
+		<field name="DISCONNECTED" />
+		<field name="DISCONNECTING" />
+		<field name="SUSPENDED" />
+		<field name="UNKNOWN" />
+	</class>
+	<class name="android/net/ParseException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<field name="response" />
+	</class>
+	<class name="android/net/Proxy" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getDefaultHost()Ljava/lang/String;" />
+		<method name="getDefaultPort()I" />
+		<method name="getHost(Landroid/content/Context;)Ljava/lang/String;" />
+		<method name="getPort(Landroid/content/Context;)I" />
+		<field name="PROXY_CHANGE_ACTION" />
+	</class>
+	<class name="android/net/SSLCertificateSocketFactory" since="1">
+		<extends name="javax/net/ssl/SSLSocketFactory" />
+		<method name="&lt;init>(I)V" />
+		<method name="createSocket(Ljava/lang/String;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
+		<method name="getDefault(I)Ljavax/net/SocketFactory;" />
+		<method name="getDefault(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8" />
+		<method name="getDefaultCipherSuites()[Ljava/lang/String;" />
+		<method name="getHttpSocketFactory(ILandroid/net/SSLSessionCache;)Lorg/apache/http/conn/ssl/SSLSocketFactory;" since="8" />
+		<method name="getInsecure(ILandroid/net/SSLSessionCache;)Ljavax/net/ssl/SSLSocketFactory;" since="8" />
+		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
+		<method name="setKeyManagers([Ljavax/net/ssl/KeyManager;)V" since="14" />
+		<method name="setTrustManagers([Ljavax/net/ssl/TrustManager;)V" since="14" />
+	</class>
+	<class name="android/net/SSLSessionCache" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+	</class>
+	<class name="android/net/TrafficStats" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clearThreadStatsTag()V" since="14" />
+		<method name="getMobileRxBytes()J" />
+		<method name="getMobileRxPackets()J" />
+		<method name="getMobileTxBytes()J" />
+		<method name="getMobileTxPackets()J" />
+		<method name="getThreadStatsTag()I" since="14" />
+		<method name="getTotalRxBytes()J" />
+		<method name="getTotalRxPackets()J" />
+		<method name="getTotalTxBytes()J" />
+		<method name="getTotalTxPackets()J" />
+		<method name="getUidRxBytes(I)J" />
+		<method name="getUidRxPackets(I)J" since="12" />
+		<method name="getUidTcpRxBytes(I)J" since="12" />
+		<method name="getUidTcpRxSegments(I)J" since="12" />
+		<method name="getUidTcpTxBytes(I)J" since="12" />
+		<method name="getUidTcpTxSegments(I)J" since="12" />
+		<method name="getUidTxBytes(I)J" />
+		<method name="getUidTxPackets(I)J" since="12" />
+		<method name="getUidUdpRxBytes(I)J" since="12" />
+		<method name="getUidUdpRxPackets(I)J" since="12" />
+		<method name="getUidUdpTxBytes(I)J" since="12" />
+		<method name="getUidUdpTxPackets(I)J" since="12" />
+		<method name="incrementOperationCount(I)V" since="14" />
+		<method name="incrementOperationCount(II)V" since="14" />
+		<method name="setThreadStatsTag(I)V" since="14" />
+		<method name="tagSocket(Ljava/net/Socket;)V" since="14" />
+		<method name="untagSocket(Ljava/net/Socket;)V" since="14" />
+		<field name="UNSUPPORTED" />
+	</class>
+	<class name="android/net/Uri" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="android/os/Parcelable" />
+		<method name="buildUpon()Landroid/net/Uri$Builder;" />
+		<method name="compareTo(Landroid/net/Uri;)I" />
+		<method name="decode(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="encode(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="fromFile(Ljava/io/File;)Landroid/net/Uri;" />
+		<method name="fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="getAuthority()Ljava/lang/String;" />
+		<method name="getBooleanQueryParameter(Ljava/lang/String;Z)Z" since="11" />
+		<method name="getEncodedAuthority()Ljava/lang/String;" />
+		<method name="getEncodedFragment()Ljava/lang/String;" />
+		<method name="getEncodedPath()Ljava/lang/String;" />
+		<method name="getEncodedQuery()Ljava/lang/String;" />
+		<method name="getEncodedSchemeSpecificPart()Ljava/lang/String;" />
+		<method name="getEncodedUserInfo()Ljava/lang/String;" />
+		<method name="getFragment()Ljava/lang/String;" />
+		<method name="getHost()Ljava/lang/String;" />
+		<method name="getLastPathSegment()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPathSegments()Ljava/util/List;" />
+		<method name="getPort()I" />
+		<method name="getQuery()Ljava/lang/String;" />
+		<method name="getQueryParameter(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getQueryParameterNames()Ljava/util/Set;" since="11" />
+		<method name="getQueryParameters(Ljava/lang/String;)Ljava/util/List;" />
+		<method name="getScheme()Ljava/lang/String;" />
+		<method name="getSchemeSpecificPart()Ljava/lang/String;" />
+		<method name="getUserInfo()Ljava/lang/String;" />
+		<method name="isAbsolute()Z" />
+		<method name="isHierarchical()Z" />
+		<method name="isOpaque()Z" />
+		<method name="isRelative()Z" />
+		<method name="parse(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V" />
+		<field name="CREATOR" />
+		<field name="EMPTY" />
+	</class>
+	<class name="android/net/Uri$Builder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="authority(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="build()Landroid/net/Uri;" />
+		<method name="clearQuery()Landroid/net/Uri$Builder;" since="11" />
+		<method name="encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="encodedOpaquePart(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="fragment(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="opaquePart(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="path(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="query(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+		<method name="scheme(Ljava/lang/String;)Landroid/net/Uri$Builder;" />
+	</class>
+	<class name="android/net/UrlQuerySanitizer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="addSanitizedEntry(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clear()V" />
+		<method name="decodeHexDigit(C)I" />
+		<method name="getAllButNulAndAngleBracketsLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getAllButNulLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getAllButWhitespaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getAllIllegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getAllowUnregisteredParamaters()Z" />
+		<method name="getAmpAndSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getAmpLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getEffectiveValueSanitizer(Ljava/lang/String;)Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getParameterList()Ljava/util/List;" />
+		<method name="getParameterSet()Ljava/util/Set;" />
+		<method name="getPreferFirstRepeatedParameter()Z" />
+		<method name="getSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getUnregisteredParameterValueSanitizer()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getUrlAndSpaceLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getUrlLegal()Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValueSanitizer(Ljava/lang/String;)Landroid/net/UrlQuerySanitizer$ValueSanitizer;" />
+		<method name="hasParameter(Ljava/lang/String;)Z" />
+		<method name="isHexDigit(C)Z" />
+		<method name="parseEntry(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="parseQuery(Ljava/lang/String;)V" />
+		<method name="parseUrl(Ljava/lang/String;)V" />
+		<method name="registerParameter(Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V" />
+		<method name="registerParameters([Ljava/lang/String;Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V" />
+		<method name="setAllowUnregisteredParamaters(Z)V" />
+		<method name="setPreferFirstRepeatedParameter(Z)V" />
+		<method name="setUnregisteredParameterValueSanitizer(Landroid/net/UrlQuerySanitizer$ValueSanitizer;)V" />
+		<method name="unescape(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="android/net/UrlQuerySanitizer$IllegalCharacterValueSanitizer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/net/UrlQuerySanitizer$ValueSanitizer" />
+		<method name="&lt;init>(I)V" />
+		<method name="sanitize(Ljava/lang/String;)Ljava/lang/String;" />
+		<field name="ALL_BUT_NUL_AND_ANGLE_BRACKETS_LEGAL" />
+		<field name="ALL_BUT_NUL_LEGAL" />
+		<field name="ALL_BUT_WHITESPACE_LEGAL" />
+		<field name="ALL_ILLEGAL" />
+		<field name="ALL_OK" />
+		<field name="ALL_WHITESPACE_OK" />
+		<field name="AMP_AND_SPACE_LEGAL" />
+		<field name="AMP_LEGAL" />
+		<field name="AMP_OK" />
+		<field name="DQUOTE_OK" />
+		<field name="GT_OK" />
+		<field name="LT_OK" />
+		<field name="NON_7_BIT_ASCII_OK" />
+		<field name="NUL_OK" />
+		<field name="OTHER_WHITESPACE_OK" />
+		<field name="PCT_OK" />
+		<field name="SCRIPT_URL_OK" />
+		<field name="SPACE_LEGAL" />
+		<field name="SPACE_OK" />
+		<field name="SQUOTE_OK" />
+		<field name="URL_AND_SPACE_LEGAL" />
+		<field name="URL_LEGAL" />
+	</class>
+	<class name="android/net/UrlQuerySanitizer$ParameterValuePair" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="mParameter" />
+		<field name="mValue" />
+	</class>
+	<class name="android/net/UrlQuerySanitizer$ValueSanitizer" since="1">
+		<method name="sanitize(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="android/net/VpnService" since="14">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onRevoke()V" />
+		<method name="prepare(Landroid/content/Context;)Landroid/content/Intent;" />
+		<method name="protect(I)Z" />
+		<method name="protect(Ljava/net/DatagramSocket;)Z" />
+		<method name="protect(Ljava/net/Socket;)Z" />
+		<field name="SERVICE_INTERFACE" />
+	</class>
+	<class name="android/net/VpnService$Builder" since="14">
+		<method name="&lt;init>()V" />
+		<method name="addAddress(Ljava/lang/String;I)Landroid/net/VpnService$Builder;" />
+		<method name="addAddress(Ljava/net/InetAddress;I)Landroid/net/VpnService$Builder;" />
+		<method name="addDnsServer(Ljava/lang/String;)Landroid/net/VpnService$Builder;" />
+		<method name="addDnsServer(Ljava/net/InetAddress;)Landroid/net/VpnService$Builder;" />
+		<method name="addRoute(Ljava/lang/String;I)Landroid/net/VpnService$Builder;" />
+		<method name="addRoute(Ljava/net/InetAddress;I)Landroid/net/VpnService$Builder;" />
+		<method name="addSearchDomain(Ljava/lang/String;)Landroid/net/VpnService$Builder;" />
+		<method name="establish()Landroid/os/ParcelFileDescriptor;" />
+		<method name="setConfigureIntent(Landroid/app/PendingIntent;)Landroid/net/VpnService$Builder;" />
+		<method name="setMtu(I)Landroid/net/VpnService$Builder;" />
+		<method name="setSession(Ljava/lang/String;)Landroid/net/VpnService$Builder;" />
+	</class>
+	<class name="android/net/http/AndroidHttpClient" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/HttpClient" />
+		<method name="close()V" />
+		<method name="disableCurlLogging()V" />
+		<method name="enableCurlLogging(Ljava/lang/String;I)V" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;)LT;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;)LT;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="getCompressedEntity([BLandroid/content/ContentResolver;)Lorg/apache/http/entity/AbstractHttpEntity;" />
+		<method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
+		<method name="getMinGzipSize(Landroid/content/ContentResolver;)J" />
+		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="getUngzippedContent(Lorg/apache/http/HttpEntity;)Ljava/io/InputStream;" />
+		<method name="modifyRequestToAcceptGzipResponse(Lorg/apache/http/HttpRequest;)V" />
+		<method name="newInstance(Ljava/lang/String;)Landroid/net/http/AndroidHttpClient;" />
+		<method name="newInstance(Ljava/lang/String;Landroid/content/Context;)Landroid/net/http/AndroidHttpClient;" />
+		<method name="parseDate(Ljava/lang/String;)J" />
+		<field name="DEFAULT_SYNC_MIN_GZIP_BYTES" />
+	</class>
+	<class name="android/net/http/HttpResponseCache" since="13">
+		<extends name="java/net/ResponseCache" />
+		<implements name="java/io/Closeable" />
+		<method name="close()V" />
+		<method name="delete()V" />
+		<method name="flush()V" />
+		<method name="get(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;)Ljava/net/CacheResponse;" />
+		<method name="getHitCount()I" />
+		<method name="getInstalled()Landroid/net/http/HttpResponseCache;" />
+		<method name="getNetworkCount()I" />
+		<method name="getRequestCount()I" />
+		<method name="install(Ljava/io/File;J)Landroid/net/http/HttpResponseCache;" />
+		<method name="maxSize()J" />
+		<method name="put(Ljava/net/URI;Ljava/net/URLConnection;)Ljava/net/CacheRequest;" />
+		<method name="size()J" />
+	</class>
+	<class name="android/net/http/SslCertificate" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Ljava/util/Date;)V" since="8" />
+		<method name="&lt;init>(Ljava/security/cert/X509Certificate;)V" />
+		<method name="getIssuedBy()Landroid/net/http/SslCertificate$DName;" />
+		<method name="getIssuedTo()Landroid/net/http/SslCertificate$DName;" />
+		<method name="getValidNotAfter()Ljava/lang/String;" />
+		<method name="getValidNotAfterDate()Ljava/util/Date;" since="8" />
+		<method name="getValidNotBefore()Ljava/lang/String;" />
+		<method name="getValidNotBeforeDate()Ljava/util/Date;" since="8" />
+		<method name="restoreState(Landroid/os/Bundle;)Landroid/net/http/SslCertificate;" />
+		<method name="saveState(Landroid/net/http/SslCertificate;)Landroid/os/Bundle;" />
+	</class>
+	<class name="android/net/http/SslCertificate$DName" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getCName()Ljava/lang/String;" />
+		<method name="getDName()Ljava/lang/String;" />
+		<method name="getOName()Ljava/lang/String;" />
+		<method name="getUName()Ljava/lang/String;" />
+	</class>
+	<class name="android/net/http/SslError" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(ILandroid/net/http/SslCertificate;)V" />
+		<method name="&lt;init>(ILandroid/net/http/SslCertificate;Ljava/lang/String;)V" since="14" />
+		<method name="&lt;init>(ILjava/security/cert/X509Certificate;)V" />
+		<method name="&lt;init>(ILjava/security/cert/X509Certificate;Ljava/lang/String;)V" since="14" />
+		<method name="addError(I)Z" />
+		<method name="getCertificate()Landroid/net/http/SslCertificate;" />
+		<method name="getPrimaryError()I" />
+		<method name="getUrl()Ljava/lang/String;" since="14" />
+		<method name="hasError(I)Z" />
+		<field name="SSL_DATE_INVALID" since="14" />
+		<field name="SSL_EXPIRED" />
+		<field name="SSL_IDMISMATCH" />
+		<field name="SSL_INVALID" since="14" />
+		<field name="SSL_MAX_ERROR" />
+		<field name="SSL_NOTYETVALID" />
+		<field name="SSL_UNTRUSTED" />
+	</class>
+	<class name="android/net/rtp/AudioCodec" since="12">
+		<extends name="java/lang/Object" />
+		<method name="getCodec(ILjava/lang/String;Ljava/lang/String;)Landroid/net/rtp/AudioCodec;" />
+		<method name="getCodecs()[Landroid/net/rtp/AudioCodec;" />
+		<field name="AMR" />
+		<field name="GSM" />
+		<field name="GSM_EFR" />
+		<field name="PCMA" />
+		<field name="PCMU" />
+		<field name="fmtp" />
+		<field name="rtpmap" />
+		<field name="type" />
+	</class>
+	<class name="android/net/rtp/AudioGroup" since="12">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clear()V" />
+		<method name="getMode()I" />
+		<method name="getStreams()[Landroid/net/rtp/AudioStream;" />
+		<method name="sendDtmf(I)V" />
+		<method name="setMode(I)V" />
+		<field name="MODE_ECHO_SUPPRESSION" />
+		<field name="MODE_MUTED" />
+		<field name="MODE_NORMAL" />
+		<field name="MODE_ON_HOLD" />
+	</class>
+	<class name="android/net/rtp/AudioStream" since="12">
+		<extends name="android/net/rtp/RtpStream" />
+		<method name="&lt;init>(Ljava/net/InetAddress;)V" />
+		<method name="getCodec()Landroid/net/rtp/AudioCodec;" />
+		<method name="getDtmfType()I" />
+		<method name="getGroup()Landroid/net/rtp/AudioGroup;" />
+		<method name="isBusy()Z" />
+		<method name="join(Landroid/net/rtp/AudioGroup;)V" />
+		<method name="setCodec(Landroid/net/rtp/AudioCodec;)V" />
+		<method name="setDtmfType(I)V" />
+	</class>
+	<class name="android/net/rtp/RtpStream" since="12">
+		<extends name="java/lang/Object" />
+		<method name="associate(Ljava/net/InetAddress;I)V" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getMode()I" />
+		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
+		<method name="getRemotePort()I" />
+		<method name="isBusy()Z" />
+		<method name="release()V" />
+		<method name="setMode(I)V" />
+		<field name="MODE_NORMAL" />
+		<field name="MODE_RECEIVE_ONLY" />
+		<field name="MODE_SEND_ONLY" />
+	</class>
+	<class name="android/net/sip/SipAudioCall" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/net/sip/SipProfile;)V" />
+		<method name="answerCall(I)V" />
+		<method name="attachCall(Landroid/net/sip/SipSession;Ljava/lang/String;)V" />
+		<method name="close()V" />
+		<method name="continueCall(I)V" />
+		<method name="endCall()V" />
+		<method name="getLocalProfile()Landroid/net/sip/SipProfile;" />
+		<method name="getPeerProfile()Landroid/net/sip/SipProfile;" />
+		<method name="getState()I" />
+		<method name="holdCall(I)V" />
+		<method name="isInCall()Z" />
+		<method name="isMuted()Z" />
+		<method name="isOnHold()Z" />
+		<method name="makeCall(Landroid/net/sip/SipProfile;Landroid/net/sip/SipSession;I)V" />
+		<method name="sendDtmf(I)V" />
+		<method name="sendDtmf(ILandroid/os/Message;)V" />
+		<method name="setListener(Landroid/net/sip/SipAudioCall$Listener;)V" />
+		<method name="setListener(Landroid/net/sip/SipAudioCall$Listener;Z)V" />
+		<method name="setSpeakerMode(Z)V" />
+		<method name="startAudio()V" />
+		<method name="toggleMute()V" />
+	</class>
+	<class name="android/net/sip/SipAudioCall$Listener" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="onCallBusy(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onCallEnded(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onCallEstablished(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onCallHeld(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onCalling(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onChanged(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onError(Landroid/net/sip/SipAudioCall;ILjava/lang/String;)V" />
+		<method name="onReadyToCall(Landroid/net/sip/SipAudioCall;)V" />
+		<method name="onRinging(Landroid/net/sip/SipAudioCall;Landroid/net/sip/SipProfile;)V" />
+		<method name="onRingingBack(Landroid/net/sip/SipAudioCall;)V" />
+	</class>
+	<class name="android/net/sip/SipErrorCode" since="9">
+		<extends name="java/lang/Object" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<field name="CLIENT_ERROR" />
+		<field name="CROSS_DOMAIN_AUTHENTICATION" />
+		<field name="DATA_CONNECTION_LOST" />
+		<field name="INVALID_CREDENTIALS" />
+		<field name="INVALID_REMOTE_URI" />
+		<field name="IN_PROGRESS" />
+		<field name="NO_ERROR" />
+		<field name="PEER_NOT_REACHABLE" />
+		<field name="SERVER_ERROR" />
+		<field name="SERVER_UNREACHABLE" />
+		<field name="SOCKET_ERROR" />
+		<field name="TIME_OUT" />
+		<field name="TRANSACTION_TERMINTED" />
+	</class>
+	<class name="android/net/sip/SipException" since="9">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/net/sip/SipManager" since="9">
+		<extends name="java/lang/Object" />
+		<method name="close(Ljava/lang/String;)V" />
+		<method name="createSipSession(Landroid/net/sip/SipProfile;Landroid/net/sip/SipSession$Listener;)Landroid/net/sip/SipSession;" />
+		<method name="getCallId(Landroid/content/Intent;)Ljava/lang/String;" />
+		<method name="getOfferSessionDescription(Landroid/content/Intent;)Ljava/lang/String;" />
+		<method name="getSessionFor(Landroid/content/Intent;)Landroid/net/sip/SipSession;" />
+		<method name="isApiSupported(Landroid/content/Context;)Z" />
+		<method name="isIncomingCallIntent(Landroid/content/Intent;)Z" />
+		<method name="isOpened(Ljava/lang/String;)Z" />
+		<method name="isRegistered(Ljava/lang/String;)Z" />
+		<method name="isSipWifiOnly(Landroid/content/Context;)Z" />
+		<method name="isVoipSupported(Landroid/content/Context;)Z" />
+		<method name="makeAudioCall(Landroid/net/sip/SipProfile;Landroid/net/sip/SipProfile;Landroid/net/sip/SipAudioCall$Listener;I)Landroid/net/sip/SipAudioCall;" />
+		<method name="makeAudioCall(Ljava/lang/String;Ljava/lang/String;Landroid/net/sip/SipAudioCall$Listener;I)Landroid/net/sip/SipAudioCall;" />
+		<method name="newInstance(Landroid/content/Context;)Landroid/net/sip/SipManager;" />
+		<method name="open(Landroid/net/sip/SipProfile;)V" />
+		<method name="open(Landroid/net/sip/SipProfile;Landroid/app/PendingIntent;Landroid/net/sip/SipRegistrationListener;)V" />
+		<method name="register(Landroid/net/sip/SipProfile;ILandroid/net/sip/SipRegistrationListener;)V" />
+		<method name="setRegistrationListener(Ljava/lang/String;Landroid/net/sip/SipRegistrationListener;)V" />
+		<method name="takeAudioCall(Landroid/content/Intent;Landroid/net/sip/SipAudioCall$Listener;)Landroid/net/sip/SipAudioCall;" />
+		<method name="unregister(Landroid/net/sip/SipProfile;Landroid/net/sip/SipRegistrationListener;)V" />
+		<field name="EXTRA_CALL_ID" />
+		<field name="EXTRA_OFFER_SD" />
+		<field name="INCOMING_CALL_RESULT_CODE" />
+	</class>
+	<class name="android/net/sip/SipProfile" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="android/os/Parcelable" />
+		<implements name="java/io/Serializable" />
+		<method name="describeContents()I" />
+		<method name="getAuthUserName()Ljava/lang/String;" since="12" />
+		<method name="getAutoRegistration()Z" />
+		<method name="getDisplayName()Ljava/lang/String;" />
+		<method name="getPassword()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="getProfileName()Ljava/lang/String;" />
+		<method name="getProtocol()Ljava/lang/String;" />
+		<method name="getProxyAddress()Ljava/lang/String;" />
+		<method name="getSendKeepAlive()Z" />
+		<method name="getSipDomain()Ljava/lang/String;" />
+		<method name="getUriString()Ljava/lang/String;" />
+		<method name="getUserName()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/net/sip/SipProfile$Builder" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/net/sip/SipProfile;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="build()Landroid/net/sip/SipProfile;" />
+		<method name="setAuthUserName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" since="12" />
+		<method name="setAutoRegistration(Z)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setDisplayName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setOutboundProxy(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setPassword(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setPort(I)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setProfileName(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setProtocol(Ljava/lang/String;)Landroid/net/sip/SipProfile$Builder;" />
+		<method name="setSendKeepAlive(Z)Landroid/net/sip/SipProfile$Builder;" />
+	</class>
+	<class name="android/net/sip/SipRegistrationListener" since="9">
+		<method name="onRegistering(Ljava/lang/String;)V" />
+		<method name="onRegistrationDone(Ljava/lang/String;J)V" />
+		<method name="onRegistrationFailed(Ljava/lang/String;ILjava/lang/String;)V" />
+	</class>
+	<class name="android/net/sip/SipSession" since="9">
+		<extends name="java/lang/Object" />
+		<method name="answerCall(Ljava/lang/String;I)V" />
+		<method name="changeCall(Ljava/lang/String;I)V" />
+		<method name="endCall()V" />
+		<method name="getCallId()Ljava/lang/String;" />
+		<method name="getLocalIp()Ljava/lang/String;" />
+		<method name="getLocalProfile()Landroid/net/sip/SipProfile;" />
+		<method name="getPeerProfile()Landroid/net/sip/SipProfile;" />
+		<method name="getState()I" />
+		<method name="isInCall()Z" />
+		<method name="makeCall(Landroid/net/sip/SipProfile;Ljava/lang/String;I)V" />
+		<method name="register(I)V" />
+		<method name="setListener(Landroid/net/sip/SipSession$Listener;)V" />
+		<method name="unregister()V" />
+	</class>
+	<class name="android/net/sip/SipSession$Listener" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="onCallBusy(Landroid/net/sip/SipSession;)V" />
+		<method name="onCallChangeFailed(Landroid/net/sip/SipSession;ILjava/lang/String;)V" />
+		<method name="onCallEnded(Landroid/net/sip/SipSession;)V" />
+		<method name="onCallEstablished(Landroid/net/sip/SipSession;Ljava/lang/String;)V" />
+		<method name="onCalling(Landroid/net/sip/SipSession;)V" />
+		<method name="onError(Landroid/net/sip/SipSession;ILjava/lang/String;)V" />
+		<method name="onRegistering(Landroid/net/sip/SipSession;)V" />
+		<method name="onRegistrationDone(Landroid/net/sip/SipSession;I)V" />
+		<method name="onRegistrationFailed(Landroid/net/sip/SipSession;ILjava/lang/String;)V" />
+		<method name="onRegistrationTimeout(Landroid/net/sip/SipSession;)V" />
+		<method name="onRinging(Landroid/net/sip/SipSession;Landroid/net/sip/SipProfile;Ljava/lang/String;)V" />
+		<method name="onRingingBack(Landroid/net/sip/SipSession;)V" />
+	</class>
+	<class name="android/net/sip/SipSession$State" since="9">
+		<extends name="java/lang/Object" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<field name="DEREGISTERING" />
+		<field name="INCOMING_CALL" />
+		<field name="INCOMING_CALL_ANSWERING" />
+		<field name="IN_CALL" />
+		<field name="NOT_DEFINED" />
+		<field name="OUTGOING_CALL" />
+		<field name="OUTGOING_CALL_CANCELING" />
+		<field name="OUTGOING_CALL_RING_BACK" />
+		<field name="PINGING" />
+		<field name="READY_TO_CALL" />
+		<field name="REGISTERING" />
+	</class>
+	<class name="android/net/wifi/ScanResult" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="BSSID" />
+		<field name="SSID" />
+		<field name="capabilities" />
+		<field name="frequency" />
+		<field name="level" />
+	</class>
+	<class name="android/net/wifi/SupplicantState" since="1">
+		<extends name="java/lang/Enum" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="isValidState(Landroid/net/wifi/SupplicantState;)Z" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState;" />
+		<method name="values()[Landroid/net/wifi/SupplicantState;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ASSOCIATED" />
+		<field name="ASSOCIATING" />
+		<field name="AUTHENTICATING" since="14" />
+		<field name="COMPLETED" />
+		<field name="DISCONNECTED" />
+		<field name="DORMANT" />
+		<field name="FOUR_WAY_HANDSHAKE" />
+		<field name="GROUP_HANDSHAKE" />
+		<field name="INACTIVE" />
+		<field name="INTERFACE_DISABLED" since="14" />
+		<field name="INVALID" />
+		<field name="SCANNING" />
+		<field name="UNINITIALIZED" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="BSSID" />
+		<field name="SSID" />
+		<field name="allowedAuthAlgorithms" />
+		<field name="allowedGroupCiphers" />
+		<field name="allowedKeyManagement" />
+		<field name="allowedPairwiseCiphers" />
+		<field name="allowedProtocols" />
+		<field name="hiddenSSID" />
+		<field name="networkId" />
+		<field name="preSharedKey" />
+		<field name="priority" />
+		<field name="status" />
+		<field name="wepKeys" />
+		<field name="wepTxKeyIndex" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration$AuthAlgorithm" since="1">
+		<extends name="java/lang/Object" />
+		<field name="LEAP" />
+		<field name="OPEN" />
+		<field name="SHARED" />
+		<field name="strings" />
+		<field name="varName" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration$GroupCipher" since="1">
+		<extends name="java/lang/Object" />
+		<field name="CCMP" />
+		<field name="TKIP" />
+		<field name="WEP104" />
+		<field name="WEP40" />
+		<field name="strings" />
+		<field name="varName" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration$KeyMgmt" since="1">
+		<extends name="java/lang/Object" />
+		<field name="IEEE8021X" />
+		<field name="NONE" />
+		<field name="WPA_EAP" />
+		<field name="WPA_PSK" />
+		<field name="strings" />
+		<field name="varName" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration$PairwiseCipher" since="1">
+		<extends name="java/lang/Object" />
+		<field name="CCMP" />
+		<field name="NONE" />
+		<field name="TKIP" />
+		<field name="strings" />
+		<field name="varName" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration$Protocol" since="1">
+		<extends name="java/lang/Object" />
+		<field name="RSN" />
+		<field name="WPA" />
+		<field name="strings" />
+		<field name="varName" />
+	</class>
+	<class name="android/net/wifi/WifiConfiguration$Status" since="1">
+		<extends name="java/lang/Object" />
+		<field name="CURRENT" />
+		<field name="DISABLED" />
+		<field name="ENABLED" />
+		<field name="strings" />
+	</class>
+	<class name="android/net/wifi/WifiInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getBSSID()Ljava/lang/String;" />
+		<method name="getDetailedStateOf(Landroid/net/wifi/SupplicantState;)Landroid/net/NetworkInfo$DetailedState;" />
+		<method name="getHiddenSSID()Z" />
+		<method name="getIpAddress()I" />
+		<method name="getLinkSpeed()I" />
+		<method name="getMacAddress()Ljava/lang/String;" />
+		<method name="getNetworkId()I" />
+		<method name="getRssi()I" />
+		<method name="getSSID()Ljava/lang/String;" />
+		<method name="getSupplicantState()Landroid/net/wifi/SupplicantState;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="LINK_SPEED_UNITS" />
+	</class>
+	<class name="android/net/wifi/WifiManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addNetwork(Landroid/net/wifi/WifiConfiguration;)I" />
+		<method name="calculateSignalLevel(II)I" />
+		<method name="compareSignalLevel(II)I" />
+		<method name="createMulticastLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$MulticastLock;" since="4" />
+		<method name="createWifiLock(ILjava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;" since="3" />
+		<method name="createWifiLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;" />
+		<method name="disableNetwork(I)Z" />
+		<method name="disconnect()Z" />
+		<method name="enableNetwork(IZ)Z" />
+		<method name="getConfiguredNetworks()Ljava/util/List;" />
+		<method name="getConnectionInfo()Landroid/net/wifi/WifiInfo;" />
+		<method name="getDhcpInfo()Landroid/net/DhcpInfo;" />
+		<method name="getScanResults()Ljava/util/List;" />
+		<method name="getWifiState()I" />
+		<method name="isWifiEnabled()Z" />
+		<method name="pingSupplicant()Z" />
+		<method name="reassociate()Z" />
+		<method name="reconnect()Z" />
+		<method name="removeNetwork(I)Z" />
+		<method name="saveConfiguration()Z" />
+		<method name="setWifiEnabled(Z)Z" />
+		<method name="startScan()Z" />
+		<method name="updateNetwork(Landroid/net/wifi/WifiConfiguration;)I" />
+		<field name="ACTION_PICK_WIFI_NETWORK" />
+		<field name="ERROR_AUTHENTICATING" />
+		<field name="EXTRA_BSSID" />
+		<field name="EXTRA_NETWORK_INFO" />
+		<field name="EXTRA_NEW_RSSI" />
+		<field name="EXTRA_NEW_STATE" />
+		<field name="EXTRA_PREVIOUS_WIFI_STATE" />
+		<field name="EXTRA_SUPPLICANT_CONNECTED" />
+		<field name="EXTRA_SUPPLICANT_ERROR" />
+		<field name="EXTRA_WIFI_INFO" since="14" />
+		<field name="EXTRA_WIFI_STATE" />
+		<field name="NETWORK_IDS_CHANGED_ACTION" />
+		<field name="NETWORK_STATE_CHANGED_ACTION" />
+		<field name="RSSI_CHANGED_ACTION" />
+		<field name="SCAN_RESULTS_AVAILABLE_ACTION" />
+		<field name="SUPPLICANT_CONNECTION_CHANGE_ACTION" />
+		<field name="SUPPLICANT_STATE_CHANGED_ACTION" />
+		<field name="WIFI_MODE_FULL" since="3" />
+		<field name="WIFI_MODE_FULL_HIGH_PERF" since="12" />
+		<field name="WIFI_MODE_SCAN_ONLY" since="3" />
+		<field name="WIFI_STATE_CHANGED_ACTION" />
+		<field name="WIFI_STATE_DISABLED" />
+		<field name="WIFI_STATE_DISABLING" />
+		<field name="WIFI_STATE_ENABLED" />
+		<field name="WIFI_STATE_ENABLING" />
+		<field name="WIFI_STATE_UNKNOWN" />
+	</class>
+	<class name="android/net/wifi/WifiManager$MulticastLock" since="4">
+		<extends name="java/lang/Object" />
+		<method name="acquire()V" />
+		<method name="isHeld()Z" />
+		<method name="release()V" />
+		<method name="setReferenceCounted(Z)V" />
+	</class>
+	<class name="android/net/wifi/WifiManager$WifiLock" since="1">
+		<extends name="java/lang/Object" />
+		<method name="acquire()V" />
+		<method name="isHeld()Z" />
+		<method name="release()V" />
+		<method name="setReferenceCounted(Z)V" />
+		<method name="setWorkSource(Landroid/os/WorkSource;)V" since="9" />
+	</class>
+	<class name="android/net/wifi/WpsInfo" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/wifi/WpsInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="DISPLAY" />
+		<field name="INVALID" />
+		<field name="KEYPAD" />
+		<field name="LABEL" />
+		<field name="PBC" />
+		<field name="pin" />
+		<field name="setup" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pConfig" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pConfig;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="deviceAddress" />
+		<field name="groupOwnerIntent" />
+		<field name="wps" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pDevice" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pDevice;)V" />
+		<method name="describeContents()I" />
+		<method name="isGroupOwner()Z" />
+		<method name="isServiceDiscoveryCapable()Z" />
+		<method name="wpsDisplaySupported()Z" />
+		<method name="wpsKeypadSupported()Z" />
+		<method name="wpsPbcSupported()Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="AVAILABLE" />
+		<field name="CONNECTED" />
+		<field name="CREATOR" />
+		<field name="FAILED" />
+		<field name="INVITED" />
+		<field name="UNAVAILABLE" />
+		<field name="deviceAddress" />
+		<field name="deviceName" />
+		<field name="primaryDeviceType" />
+		<field name="secondaryDeviceType" />
+		<field name="status" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pDeviceList" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V" />
+		<method name="describeContents()I" />
+		<method name="getDeviceList()Ljava/util/Collection;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pGroup" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pGroup;)V" />
+		<method name="describeContents()I" />
+		<method name="getClientList()Ljava/util/Collection;" />
+		<method name="getInterface()Ljava/lang/String;" />
+		<method name="getNetworkName()Ljava/lang/String;" />
+		<method name="getOwner()Landroid/net/wifi/p2p/WifiP2pDevice;" />
+		<method name="getPassphrase()Ljava/lang/String;" />
+		<method name="isGroupOwner()Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pInfo" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/net/wifi/p2p/WifiP2pInfo;)V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="groupFormed" />
+		<field name="groupOwnerAddress" />
+		<field name="isGroupOwner" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager" since="14">
+		<method name="cancelConnect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
+		<method name="connect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pConfig;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
+		<method name="createGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
+		<method name="discoverPeers(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
+		<method name="initialize(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;" />
+		<method name="removeGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V" />
+		<method name="requestConnectionInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$ConnectionInfoListener;)V" />
+		<method name="requestGroupInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$GroupInfoListener;)V" />
+		<method name="requestPeers(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$PeerListListener;)V" />
+		<field name="BUSY" />
+		<field name="ERROR" />
+		<field name="EXTRA_NETWORK_INFO" />
+		<field name="EXTRA_WIFI_P2P_DEVICE" />
+		<field name="EXTRA_WIFI_P2P_INFO" />
+		<field name="EXTRA_WIFI_STATE" />
+		<field name="P2P_UNSUPPORTED" />
+		<field name="WIFI_P2P_CONNECTION_CHANGED_ACTION" />
+		<field name="WIFI_P2P_PEERS_CHANGED_ACTION" />
+		<field name="WIFI_P2P_STATE_CHANGED_ACTION" />
+		<field name="WIFI_P2P_STATE_DISABLED" />
+		<field name="WIFI_P2P_STATE_ENABLED" />
+		<field name="WIFI_P2P_THIS_DEVICE_CHANGED_ACTION" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager$ActionListener" since="14">
+		<method name="onFailure(I)V" />
+		<method name="onSuccess()V" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager$Channel" since="14">
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager$ChannelListener" since="14">
+		<method name="onChannelDisconnected()V" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager$ConnectionInfoListener" since="14">
+		<method name="onConnectionInfoAvailable(Landroid/net/wifi/p2p/WifiP2pInfo;)V" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager$GroupInfoListener" since="14">
+		<method name="onGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroup;)V" />
+	</class>
+	<class name="android/net/wifi/p2p/WifiP2pManager$PeerListListener" since="14">
+		<method name="onPeersAvailable(Landroid/net/wifi/p2p/WifiP2pDeviceList;)V" />
+	</class>
+	<class name="android/nfc/FormatException" since="9">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/nfc/NdefMessage" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>([B)V" />
+		<method name="&lt;init>([Landroid/nfc/NdefRecord;)V" />
+		<method name="describeContents()I" />
+		<method name="getRecords()[Landroid/nfc/NdefRecord;" />
+		<method name="toByteArray()[B" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/nfc/NdefRecord" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(S[B[B[B)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="createApplicationRecord(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14" />
+		<method name="createUri(Landroid/net/Uri;)Landroid/nfc/NdefRecord;" since="14" />
+		<method name="createUri(Ljava/lang/String;)Landroid/nfc/NdefRecord;" since="14" />
+		<method name="describeContents()I" />
+		<method name="getId()[B" />
+		<method name="getPayload()[B" />
+		<method name="getTnf()S" />
+		<method name="getType()[B" />
+		<method name="toByteArray()[B" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="RTD_ALTERNATIVE_CARRIER" />
+		<field name="RTD_HANDOVER_CARRIER" />
+		<field name="RTD_HANDOVER_REQUEST" />
+		<field name="RTD_HANDOVER_SELECT" />
+		<field name="RTD_SMART_POSTER" />
+		<field name="RTD_TEXT" />
+		<field name="RTD_URI" />
+		<field name="TNF_ABSOLUTE_URI" />
+		<field name="TNF_EMPTY" />
+		<field name="TNF_EXTERNAL_TYPE" />
+		<field name="TNF_MIME_MEDIA" />
+		<field name="TNF_UNCHANGED" />
+		<field name="TNF_UNKNOWN" />
+		<field name="TNF_WELL_KNOWN" />
+	</class>
+	<class name="android/nfc/NfcAdapter" since="9">
+		<extends name="java/lang/Object" />
+		<method name="disableForegroundDispatch(Landroid/app/Activity;)V" since="10" />
+		<method name="disableForegroundNdefPush(Landroid/app/Activity;)V" since="10" />
+		<method name="enableForegroundDispatch(Landroid/app/Activity;Landroid/app/PendingIntent;[Landroid/content/IntentFilter;[[Ljava/lang/String;)V" since="10" />
+		<method name="enableForegroundNdefPush(Landroid/app/Activity;Landroid/nfc/NdefMessage;)V" since="10" />
+		<method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;" />
+		<method name="getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter;" since="10" />
+		<method name="isEnabled()Z" />
+		<method name="setNdefPushMessage(Landroid/nfc/NdefMessage;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14" />
+		<method name="setNdefPushMessageCallback(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14" />
+		<method name="setOnNdefPushCompleteCallback(Landroid/nfc/NfcAdapter$OnNdefPushCompleteCallback;Landroid/app/Activity;[Landroid/app/Activity;)V" since="14" />
+		<field name="ACTION_NDEF_DISCOVERED" since="10" />
+		<field name="ACTION_TAG_DISCOVERED" />
+		<field name="ACTION_TECH_DISCOVERED" since="10" />
+		<field name="EXTRA_ID" />
+		<field name="EXTRA_NDEF_MESSAGES" />
+		<field name="EXTRA_TAG" since="10" />
+	</class>
+	<class name="android/nfc/NfcAdapter$CreateNdefMessageCallback" since="14">
+		<method name="createNdefMessage(Landroid/nfc/NfcEvent;)Landroid/nfc/NdefMessage;" />
+	</class>
+	<class name="android/nfc/NfcAdapter$OnNdefPushCompleteCallback" since="14">
+		<method name="onNdefPushComplete(Landroid/nfc/NfcEvent;)V" />
+	</class>
+	<class name="android/nfc/NfcEvent" since="14">
+		<field name="nfcAdapter" />
+	</class>
+	<class name="android/nfc/NfcManager" since="10">
+		<extends name="java/lang/Object" />
+		<method name="getDefaultAdapter()Landroid/nfc/NfcAdapter;" />
+	</class>
+	<class name="android/nfc/Tag" since="10">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getId()[B" />
+		<method name="getTechList()[Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/nfc/TagLostException" since="10">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/nfc/tech/BasicTagTechnology" since="10">
+		<extends name="java/lang/Object" />
+		<implements name="android/nfc/tech/TagTechnology" />
+		<method name="close()V" />
+		<method name="connect()V" />
+		<method name="getTag()Landroid/nfc/Tag;" />
+		<method name="isConnected()Z" />
+	</class>
+	<class name="android/nfc/tech/IsoDep" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/IsoDep;" />
+		<method name="getHiLayerResponse()[B" />
+		<method name="getHistoricalBytes()[B" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getTimeout()I" since="14" />
+		<method name="setTimeout(I)V" />
+		<method name="transceive([B)[B" />
+	</class>
+	<class name="android/nfc/tech/MifareClassic" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="authenticateSectorWithKeyA(I[B)Z" />
+		<method name="authenticateSectorWithKeyB(I[B)Z" />
+		<method name="blockToSector(I)I" />
+		<method name="decrement(II)V" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/MifareClassic;" />
+		<method name="getBlockCount()I" />
+		<method name="getBlockCountInSector(I)I" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getSectorCount()I" />
+		<method name="getSize()I" />
+		<method name="getTimeout()I" since="14" />
+		<method name="getType()I" />
+		<method name="increment(II)V" />
+		<method name="readBlock(I)[B" />
+		<method name="restore(I)V" />
+		<method name="sectorToBlock(I)I" />
+		<method name="setTimeout(I)V" since="14" />
+		<method name="transceive([B)[B" />
+		<method name="transfer(I)V" />
+		<method name="writeBlock(I[B)V" />
+		<field name="BLOCK_SIZE" />
+		<field name="KEY_DEFAULT" />
+		<field name="KEY_MIFARE_APPLICATION_DIRECTORY" />
+		<field name="KEY_NFC_FORUM" />
+		<field name="SIZE_1K" />
+		<field name="SIZE_2K" />
+		<field name="SIZE_4K" />
+		<field name="SIZE_MINI" />
+		<field name="TYPE_CLASSIC" />
+		<field name="TYPE_PLUS" />
+		<field name="TYPE_PRO" />
+		<field name="TYPE_UNKNOWN" />
+	</class>
+	<class name="android/nfc/tech/MifareUltralight" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/MifareUltralight;" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getTimeout()I" since="14" />
+		<method name="getType()I" />
+		<method name="readPages(I)[B" />
+		<method name="setTimeout(I)V" since="14" />
+		<method name="transceive([B)[B" />
+		<method name="writePage(I[B)V" />
+		<field name="PAGE_SIZE" />
+		<field name="TYPE_ULTRALIGHT" />
+		<field name="TYPE_ULTRALIGHT_C" />
+		<field name="TYPE_UNKNOWN" />
+	</class>
+	<class name="android/nfc/tech/Ndef" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="canMakeReadOnly()Z" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/Ndef;" />
+		<method name="getCachedNdefMessage()Landroid/nfc/NdefMessage;" />
+		<method name="getMaxSize()I" />
+		<method name="getNdefMessage()Landroid/nfc/NdefMessage;" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="isWritable()Z" />
+		<method name="makeReadOnly()Z" />
+		<method name="writeNdefMessage(Landroid/nfc/NdefMessage;)V" />
+		<field name="MIFARE_CLASSIC" />
+		<field name="NFC_FORUM_TYPE_1" />
+		<field name="NFC_FORUM_TYPE_2" />
+		<field name="NFC_FORUM_TYPE_3" />
+		<field name="NFC_FORUM_TYPE_4" />
+	</class>
+	<class name="android/nfc/tech/NdefFormatable" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="format(Landroid/nfc/NdefMessage;)V" />
+		<method name="formatReadOnly(Landroid/nfc/NdefMessage;)V" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NdefFormatable;" />
+	</class>
+	<class name="android/nfc/tech/NfcA" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcA;" />
+		<method name="getAtqa()[B" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getSak()S" />
+		<method name="getTimeout()I" since="14" />
+		<method name="setTimeout(I)V" since="14" />
+		<method name="transceive([B)[B" />
+	</class>
+	<class name="android/nfc/tech/NfcB" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcB;" />
+		<method name="getApplicationData()[B" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getProtocolInfo()[B" />
+		<method name="transceive([B)[B" />
+	</class>
+	<class name="android/nfc/tech/NfcF" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcF;" />
+		<method name="getManufacturer()[B" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getSystemCode()[B" />
+		<method name="getTimeout()I" since="14" />
+		<method name="setTimeout(I)V" since="14" />
+		<method name="transceive([B)[B" />
+	</class>
+	<class name="android/nfc/tech/NfcV" since="10">
+		<extends name="android/nfc/tech/BasicTagTechnology" />
+		<method name="get(Landroid/nfc/Tag;)Landroid/nfc/tech/NfcV;" />
+		<method name="getDsfId()B" />
+		<method name="getMaxTransceiveLength()I" since="14" />
+		<method name="getResponseFlags()B" />
+		<method name="transceive([B)[B" />
+	</class>
+	<class name="android/nfc/tech/TagTechnology" since="10">
+		<implements name="java/io/Closeable" />
+		<method name="close()V" />
+		<method name="connect()V" />
+		<method name="getTag()Landroid/nfc/Tag;" />
+		<method name="isConnected()Z" />
+	</class>
+	<class name="android/opengl/ETC1" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="decodeBlock(Ljava/nio/Buffer;Ljava/nio/Buffer;)V" />
+		<method name="decodeImage(Ljava/nio/Buffer;Ljava/nio/Buffer;IIII)V" />
+		<method name="encodeBlock(Ljava/nio/Buffer;ILjava/nio/Buffer;)V" />
+		<method name="encodeImage(Ljava/nio/Buffer;IIIILjava/nio/Buffer;)V" />
+		<method name="formatHeader(Ljava/nio/Buffer;II)V" />
+		<method name="getEncodedDataSize(II)I" />
+		<method name="getHeight(Ljava/nio/Buffer;)I" />
+		<method name="getWidth(Ljava/nio/Buffer;)I" />
+		<method name="isValid(Ljava/nio/Buffer;)Z" />
+		<field name="DECODED_BLOCK_SIZE" />
+		<field name="ENCODED_BLOCK_SIZE" />
+		<field name="ETC1_RGB8_OES" />
+		<field name="ETC_PKM_HEADER_SIZE" />
+	</class>
+	<class name="android/opengl/ETC1Util" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="compressTexture(Ljava/nio/Buffer;IIII)Landroid/opengl/ETC1Util$ETC1Texture;" />
+		<method name="createTexture(Ljava/io/InputStream;)Landroid/opengl/ETC1Util$ETC1Texture;" />
+		<method name="isETC1Supported()Z" />
+		<method name="loadTexture(IIIIILandroid/opengl/ETC1Util$ETC1Texture;)V" />
+		<method name="loadTexture(IIIIILjava/io/InputStream;)V" />
+		<method name="writeTexture(Landroid/opengl/ETC1Util$ETC1Texture;Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="android/opengl/ETC1Util$ETC1Texture" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(IILjava/nio/ByteBuffer;)V" />
+		<method name="getData()Ljava/nio/ByteBuffer;" />
+		<method name="getHeight()I" />
+		<method name="getWidth()I" />
+	</class>
+	<class name="android/opengl/GLDebugHelper" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="wrap(Ljavax/microedition/khronos/egl/EGL;ILjava/io/Writer;)Ljavax/microedition/khronos/egl/EGL;" />
+		<method name="wrap(Ljavax/microedition/khronos/opengles/GL;ILjava/io/Writer;)Ljavax/microedition/khronos/opengles/GL;" />
+		<field name="CONFIG_CHECK_GL_ERROR" />
+		<field name="CONFIG_CHECK_THREAD" />
+		<field name="CONFIG_LOG_ARGUMENT_NAMES" />
+		<field name="ERROR_WRONG_THREAD" />
+	</class>
+	<class name="android/opengl/GLES10" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="glActiveTexture(I)V" />
+		<method name="glAlphaFunc(IF)V" />
+		<method name="glAlphaFuncx(II)V" />
+		<method name="glBindTexture(II)V" />
+		<method name="glBlendFunc(II)V" />
+		<method name="glClear(I)V" />
+		<method name="glClearColor(FFFF)V" />
+		<method name="glClearColorx(IIII)V" />
+		<method name="glClearDepthf(F)V" />
+		<method name="glClearDepthx(I)V" />
+		<method name="glClearStencil(I)V" />
+		<method name="glClientActiveTexture(I)V" />
+		<method name="glColor4f(FFFF)V" />
+		<method name="glColor4x(IIII)V" />
+		<method name="glColorMask(ZZZZ)V" />
+		<method name="glColorPointer(IIILjava/nio/Buffer;)V" />
+		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCopyTexImage2D(IIIIIIII)V" />
+		<method name="glCopyTexSubImage2D(IIIIIIII)V" />
+		<method name="glCullFace(I)V" />
+		<method name="glDeleteTextures(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteTextures(I[II)V" />
+		<method name="glDepthFunc(I)V" />
+		<method name="glDepthMask(Z)V" />
+		<method name="glDepthRangef(FF)V" />
+		<method name="glDepthRangex(II)V" />
+		<method name="glDisable(I)V" />
+		<method name="glDisableClientState(I)V" />
+		<method name="glDrawArrays(III)V" />
+		<method name="glDrawElements(IIILjava/nio/Buffer;)V" />
+		<method name="glEnable(I)V" />
+		<method name="glEnableClientState(I)V" />
+		<method name="glFinish()V" />
+		<method name="glFlush()V" />
+		<method name="glFogf(IF)V" />
+		<method name="glFogfv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glFogfv(I[FI)V" />
+		<method name="glFogx(II)V" />
+		<method name="glFogxv(ILjava/nio/IntBuffer;)V" />
+		<method name="glFogxv(I[II)V" />
+		<method name="glFrontFace(I)V" />
+		<method name="glFrustumf(FFFFFF)V" />
+		<method name="glFrustumx(IIIIII)V" />
+		<method name="glGenTextures(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenTextures(I[II)V" />
+		<method name="glGetError()I" />
+		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetIntegerv(I[II)V" />
+		<method name="glGetString(I)Ljava/lang/String;" />
+		<method name="glHint(II)V" />
+		<method name="glLightModelf(IF)V" />
+		<method name="glLightModelfv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glLightModelfv(I[FI)V" />
+		<method name="glLightModelx(II)V" />
+		<method name="glLightModelxv(ILjava/nio/IntBuffer;)V" />
+		<method name="glLightModelxv(I[II)V" />
+		<method name="glLightf(IIF)V" />
+		<method name="glLightfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glLightfv(II[FI)V" />
+		<method name="glLightx(III)V" />
+		<method name="glLightxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glLightxv(II[II)V" />
+		<method name="glLineWidth(F)V" />
+		<method name="glLineWidthx(I)V" />
+		<method name="glLoadIdentity()V" />
+		<method name="glLoadMatrixf(Ljava/nio/FloatBuffer;)V" />
+		<method name="glLoadMatrixf([FI)V" />
+		<method name="glLoadMatrixx(Ljava/nio/IntBuffer;)V" />
+		<method name="glLoadMatrixx([II)V" />
+		<method name="glLogicOp(I)V" />
+		<method name="glMaterialf(IIF)V" />
+		<method name="glMaterialfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glMaterialfv(II[FI)V" />
+		<method name="glMaterialx(III)V" />
+		<method name="glMaterialxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glMaterialxv(II[II)V" />
+		<method name="glMatrixMode(I)V" />
+		<method name="glMultMatrixf(Ljava/nio/FloatBuffer;)V" />
+		<method name="glMultMatrixf([FI)V" />
+		<method name="glMultMatrixx(Ljava/nio/IntBuffer;)V" />
+		<method name="glMultMatrixx([II)V" />
+		<method name="glMultiTexCoord4f(IFFFF)V" />
+		<method name="glMultiTexCoord4x(IIIII)V" />
+		<method name="glNormal3f(FFF)V" />
+		<method name="glNormal3x(III)V" />
+		<method name="glNormalPointer(IILjava/nio/Buffer;)V" />
+		<method name="glOrthof(FFFFFF)V" />
+		<method name="glOrthox(IIIIII)V" />
+		<method name="glPixelStorei(II)V" />
+		<method name="glPointSize(F)V" />
+		<method name="glPointSizex(I)V" />
+		<method name="glPolygonOffset(FF)V" />
+		<method name="glPolygonOffsetx(II)V" />
+		<method name="glPopMatrix()V" />
+		<method name="glPushMatrix()V" />
+		<method name="glReadPixels(IIIIIILjava/nio/Buffer;)V" />
+		<method name="glRotatef(FFFF)V" />
+		<method name="glRotatex(IIII)V" />
+		<method name="glSampleCoverage(FZ)V" />
+		<method name="glSampleCoveragex(IZ)V" />
+		<method name="glScalef(FFF)V" />
+		<method name="glScalex(III)V" />
+		<method name="glScissor(IIII)V" />
+		<method name="glShadeModel(I)V" />
+		<method name="glStencilFunc(III)V" />
+		<method name="glStencilMask(I)V" />
+		<method name="glStencilOp(III)V" />
+		<method name="glTexCoordPointer(IIILjava/nio/Buffer;)V" />
+		<method name="glTexEnvf(IIF)V" />
+		<method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexEnvfv(II[FI)V" />
+		<method name="glTexEnvx(III)V" />
+		<method name="glTexEnvxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexEnvxv(II[II)V" />
+		<method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glTexParameterf(IIF)V" />
+		<method name="glTexParameterx(III)V" />
+		<method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glTranslatef(FFF)V" />
+		<method name="glTranslatex(III)V" />
+		<method name="glVertexPointer(IIILjava/nio/Buffer;)V" />
+		<method name="glViewport(IIII)V" />
+		<field name="GL_ADD" />
+		<field name="GL_ALIASED_LINE_WIDTH_RANGE" />
+		<field name="GL_ALIASED_POINT_SIZE_RANGE" />
+		<field name="GL_ALPHA" />
+		<field name="GL_ALPHA_BITS" />
+		<field name="GL_ALPHA_TEST" />
+		<field name="GL_ALWAYS" />
+		<field name="GL_AMBIENT" />
+		<field name="GL_AMBIENT_AND_DIFFUSE" />
+		<field name="GL_AND" />
+		<field name="GL_AND_INVERTED" />
+		<field name="GL_AND_REVERSE" />
+		<field name="GL_BACK" />
+		<field name="GL_BLEND" />
+		<field name="GL_BLUE_BITS" />
+		<field name="GL_BYTE" />
+		<field name="GL_CCW" />
+		<field name="GL_CLAMP_TO_EDGE" />
+		<field name="GL_CLEAR" />
+		<field name="GL_COLOR_ARRAY" />
+		<field name="GL_COLOR_BUFFER_BIT" />
+		<field name="GL_COLOR_LOGIC_OP" />
+		<field name="GL_COLOR_MATERIAL" />
+		<field name="GL_COMPRESSED_TEXTURE_FORMATS" />
+		<field name="GL_CONSTANT_ATTENUATION" />
+		<field name="GL_COPY" />
+		<field name="GL_COPY_INVERTED" />
+		<field name="GL_CULL_FACE" />
+		<field name="GL_CW" />
+		<field name="GL_DECAL" />
+		<field name="GL_DECR" />
+		<field name="GL_DEPTH_BITS" />
+		<field name="GL_DEPTH_BUFFER_BIT" />
+		<field name="GL_DEPTH_TEST" />
+		<field name="GL_DIFFUSE" />
+		<field name="GL_DITHER" />
+		<field name="GL_DONT_CARE" />
+		<field name="GL_DST_ALPHA" />
+		<field name="GL_DST_COLOR" />
+		<field name="GL_EMISSION" />
+		<field name="GL_EQUAL" />
+		<field name="GL_EQUIV" />
+		<field name="GL_EXP" />
+		<field name="GL_EXP2" />
+		<field name="GL_EXTENSIONS" />
+		<field name="GL_FALSE" />
+		<field name="GL_FASTEST" />
+		<field name="GL_FIXED" />
+		<field name="GL_FLAT" />
+		<field name="GL_FLOAT" />
+		<field name="GL_FOG" />
+		<field name="GL_FOG_COLOR" />
+		<field name="GL_FOG_DENSITY" />
+		<field name="GL_FOG_END" />
+		<field name="GL_FOG_HINT" />
+		<field name="GL_FOG_MODE" />
+		<field name="GL_FOG_START" />
+		<field name="GL_FRONT" />
+		<field name="GL_FRONT_AND_BACK" />
+		<field name="GL_GEQUAL" />
+		<field name="GL_GREATER" />
+		<field name="GL_GREEN_BITS" />
+		<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES" />
+		<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES" />
+		<field name="GL_INCR" />
+		<field name="GL_INVALID_ENUM" />
+		<field name="GL_INVALID_OPERATION" />
+		<field name="GL_INVALID_VALUE" />
+		<field name="GL_INVERT" />
+		<field name="GL_KEEP" />
+		<field name="GL_LEQUAL" />
+		<field name="GL_LESS" />
+		<field name="GL_LIGHT0" />
+		<field name="GL_LIGHT1" />
+		<field name="GL_LIGHT2" />
+		<field name="GL_LIGHT3" />
+		<field name="GL_LIGHT4" />
+		<field name="GL_LIGHT5" />
+		<field name="GL_LIGHT6" />
+		<field name="GL_LIGHT7" />
+		<field name="GL_LIGHTING" />
+		<field name="GL_LIGHT_MODEL_AMBIENT" />
+		<field name="GL_LIGHT_MODEL_TWO_SIDE" />
+		<field name="GL_LINEAR" />
+		<field name="GL_LINEAR_ATTENUATION" />
+		<field name="GL_LINEAR_MIPMAP_LINEAR" />
+		<field name="GL_LINEAR_MIPMAP_NEAREST" />
+		<field name="GL_LINES" />
+		<field name="GL_LINE_LOOP" />
+		<field name="GL_LINE_SMOOTH" />
+		<field name="GL_LINE_SMOOTH_HINT" />
+		<field name="GL_LINE_STRIP" />
+		<field name="GL_LUMINANCE" />
+		<field name="GL_LUMINANCE_ALPHA" />
+		<field name="GL_MAX_ELEMENTS_INDICES" />
+		<field name="GL_MAX_ELEMENTS_VERTICES" />
+		<field name="GL_MAX_LIGHTS" />
+		<field name="GL_MAX_MODELVIEW_STACK_DEPTH" />
+		<field name="GL_MAX_PROJECTION_STACK_DEPTH" />
+		<field name="GL_MAX_TEXTURE_SIZE" />
+		<field name="GL_MAX_TEXTURE_STACK_DEPTH" />
+		<field name="GL_MAX_TEXTURE_UNITS" />
+		<field name="GL_MAX_VIEWPORT_DIMS" />
+		<field name="GL_MODELVIEW" />
+		<field name="GL_MODULATE" />
+		<field name="GL_MULTISAMPLE" />
+		<field name="GL_NAND" />
+		<field name="GL_NEAREST" />
+		<field name="GL_NEAREST_MIPMAP_LINEAR" />
+		<field name="GL_NEAREST_MIPMAP_NEAREST" />
+		<field name="GL_NEVER" />
+		<field name="GL_NICEST" />
+		<field name="GL_NOOP" />
+		<field name="GL_NOR" />
+		<field name="GL_NORMALIZE" />
+		<field name="GL_NORMAL_ARRAY" />
+		<field name="GL_NOTEQUAL" />
+		<field name="GL_NO_ERROR" />
+		<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" />
+		<field name="GL_ONE" />
+		<field name="GL_ONE_MINUS_DST_ALPHA" />
+		<field name="GL_ONE_MINUS_DST_COLOR" />
+		<field name="GL_ONE_MINUS_SRC_ALPHA" />
+		<field name="GL_ONE_MINUS_SRC_COLOR" />
+		<field name="GL_OR" />
+		<field name="GL_OR_INVERTED" />
+		<field name="GL_OR_REVERSE" />
+		<field name="GL_OUT_OF_MEMORY" />
+		<field name="GL_PACK_ALIGNMENT" />
+		<field name="GL_PALETTE4_R5_G6_B5_OES" />
+		<field name="GL_PALETTE4_RGB5_A1_OES" />
+		<field name="GL_PALETTE4_RGB8_OES" />
+		<field name="GL_PALETTE4_RGBA4_OES" />
+		<field name="GL_PALETTE4_RGBA8_OES" />
+		<field name="GL_PALETTE8_R5_G6_B5_OES" />
+		<field name="GL_PALETTE8_RGB5_A1_OES" />
+		<field name="GL_PALETTE8_RGB8_OES" />
+		<field name="GL_PALETTE8_RGBA4_OES" />
+		<field name="GL_PALETTE8_RGBA8_OES" />
+		<field name="GL_PERSPECTIVE_CORRECTION_HINT" />
+		<field name="GL_POINTS" />
+		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
+		<field name="GL_POINT_SIZE" />
+		<field name="GL_POINT_SMOOTH" />
+		<field name="GL_POINT_SMOOTH_HINT" />
+		<field name="GL_POLYGON_OFFSET_FILL" />
+		<field name="GL_POLYGON_SMOOTH_HINT" />
+		<field name="GL_POSITION" />
+		<field name="GL_PROJECTION" />
+		<field name="GL_QUADRATIC_ATTENUATION" />
+		<field name="GL_RED_BITS" />
+		<field name="GL_RENDERER" />
+		<field name="GL_REPEAT" />
+		<field name="GL_REPLACE" />
+		<field name="GL_RESCALE_NORMAL" />
+		<field name="GL_RGB" />
+		<field name="GL_RGBA" />
+		<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" />
+		<field name="GL_SAMPLE_ALPHA_TO_ONE" />
+		<field name="GL_SAMPLE_COVERAGE" />
+		<field name="GL_SCISSOR_TEST" />
+		<field name="GL_SET" />
+		<field name="GL_SHININESS" />
+		<field name="GL_SHORT" />
+		<field name="GL_SMOOTH" />
+		<field name="GL_SMOOTH_LINE_WIDTH_RANGE" />
+		<field name="GL_SMOOTH_POINT_SIZE_RANGE" />
+		<field name="GL_SPECULAR" />
+		<field name="GL_SPOT_CUTOFF" />
+		<field name="GL_SPOT_DIRECTION" />
+		<field name="GL_SPOT_EXPONENT" />
+		<field name="GL_SRC_ALPHA" />
+		<field name="GL_SRC_ALPHA_SATURATE" />
+		<field name="GL_SRC_COLOR" />
+		<field name="GL_STACK_OVERFLOW" />
+		<field name="GL_STACK_UNDERFLOW" />
+		<field name="GL_STENCIL_BITS" />
+		<field name="GL_STENCIL_BUFFER_BIT" />
+		<field name="GL_STENCIL_TEST" />
+		<field name="GL_SUBPIXEL_BITS" />
+		<field name="GL_TEXTURE" />
+		<field name="GL_TEXTURE0" />
+		<field name="GL_TEXTURE1" />
+		<field name="GL_TEXTURE10" />
+		<field name="GL_TEXTURE11" />
+		<field name="GL_TEXTURE12" />
+		<field name="GL_TEXTURE13" />
+		<field name="GL_TEXTURE14" />
+		<field name="GL_TEXTURE15" />
+		<field name="GL_TEXTURE16" />
+		<field name="GL_TEXTURE17" />
+		<field name="GL_TEXTURE18" />
+		<field name="GL_TEXTURE19" />
+		<field name="GL_TEXTURE2" />
+		<field name="GL_TEXTURE20" />
+		<field name="GL_TEXTURE21" />
+		<field name="GL_TEXTURE22" />
+		<field name="GL_TEXTURE23" />
+		<field name="GL_TEXTURE24" />
+		<field name="GL_TEXTURE25" />
+		<field name="GL_TEXTURE26" />
+		<field name="GL_TEXTURE27" />
+		<field name="GL_TEXTURE28" />
+		<field name="GL_TEXTURE29" />
+		<field name="GL_TEXTURE3" />
+		<field name="GL_TEXTURE30" />
+		<field name="GL_TEXTURE31" />
+		<field name="GL_TEXTURE4" />
+		<field name="GL_TEXTURE5" />
+		<field name="GL_TEXTURE6" />
+		<field name="GL_TEXTURE7" />
+		<field name="GL_TEXTURE8" />
+		<field name="GL_TEXTURE9" />
+		<field name="GL_TEXTURE_2D" />
+		<field name="GL_TEXTURE_COORD_ARRAY" />
+		<field name="GL_TEXTURE_ENV" />
+		<field name="GL_TEXTURE_ENV_COLOR" />
+		<field name="GL_TEXTURE_ENV_MODE" />
+		<field name="GL_TEXTURE_MAG_FILTER" />
+		<field name="GL_TEXTURE_MIN_FILTER" />
+		<field name="GL_TEXTURE_WRAP_S" />
+		<field name="GL_TEXTURE_WRAP_T" />
+		<field name="GL_TRIANGLES" />
+		<field name="GL_TRIANGLE_FAN" />
+		<field name="GL_TRIANGLE_STRIP" />
+		<field name="GL_TRUE" />
+		<field name="GL_UNPACK_ALIGNMENT" />
+		<field name="GL_UNSIGNED_BYTE" />
+		<field name="GL_UNSIGNED_SHORT" />
+		<field name="GL_UNSIGNED_SHORT_4_4_4_4" />
+		<field name="GL_UNSIGNED_SHORT_5_5_5_1" />
+		<field name="GL_UNSIGNED_SHORT_5_6_5" />
+		<field name="GL_VENDOR" />
+		<field name="GL_VERSION" />
+		<field name="GL_VERTEX_ARRAY" />
+		<field name="GL_XOR" />
+		<field name="GL_ZERO" />
+	</class>
+	<class name="android/opengl/GLES10Ext" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I" />
+		<method name="glQueryMatrixxOES([II[II)I" />
+	</class>
+	<class name="android/opengl/GLES11" since="4">
+		<extends name="android/opengl/GLES10" />
+		<method name="&lt;init>()V" />
+		<method name="glBindBuffer(II)V" />
+		<method name="glBufferData(IILjava/nio/Buffer;I)V" />
+		<method name="glBufferSubData(IIILjava/nio/Buffer;)V" />
+		<method name="glClipPlanef(ILjava/nio/FloatBuffer;)V" />
+		<method name="glClipPlanef(I[FI)V" />
+		<method name="glClipPlanex(ILjava/nio/IntBuffer;)V" />
+		<method name="glClipPlanex(I[II)V" />
+		<method name="glColor4ub(BBBB)V" />
+		<method name="glColorPointer(IIII)V" />
+		<method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteBuffers(I[II)V" />
+		<method name="glDrawElements(IIII)V" />
+		<method name="glGenBuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenBuffers(I[II)V" />
+		<method name="glGetBooleanv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetBooleanv(I[ZI)V" />
+		<method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetBufferParameteriv(II[II)V" />
+		<method name="glGetClipPlanef(ILjava/nio/FloatBuffer;)V" />
+		<method name="glGetClipPlanef(I[FI)V" />
+		<method name="glGetClipPlanex(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetClipPlanex(I[II)V" />
+		<method name="glGetFixedv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetFixedv(I[II)V" />
+		<method name="glGetFloatv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glGetFloatv(I[FI)V" />
+		<method name="glGetLightfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetLightfv(II[FI)V" />
+		<method name="glGetLightxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetLightxv(II[II)V" />
+		<method name="glGetMaterialfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetMaterialfv(II[FI)V" />
+		<method name="glGetMaterialxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetMaterialxv(II[II)V" />
+		<method name="glGetTexEnvfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetTexEnvfv(II[FI)V" />
+		<method name="glGetTexEnviv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexEnviv(II[II)V" />
+		<method name="glGetTexEnvxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexEnvxv(II[II)V" />
+		<method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetTexParameterfv(II[FI)V" />
+		<method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexParameteriv(II[II)V" />
+		<method name="glGetTexParameterxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexParameterxv(II[II)V" />
+		<method name="glIsBuffer(I)Z" />
+		<method name="glIsEnabled(I)Z" />
+		<method name="glIsTexture(I)Z" />
+		<method name="glNormalPointer(III)V" />
+		<method name="glPointParameterf(IF)V" />
+		<method name="glPointParameterfv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glPointParameterfv(I[FI)V" />
+		<method name="glPointParameterx(II)V" />
+		<method name="glPointParameterxv(ILjava/nio/IntBuffer;)V" />
+		<method name="glPointParameterxv(I[II)V" />
+		<method name="glPointSizePointerOES(IILjava/nio/Buffer;)V" />
+		<method name="glTexCoordPointer(IIII)V" />
+		<method name="glTexEnvi(III)V" />
+		<method name="glTexEnviv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexEnviv(II[II)V" />
+		<method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexParameterfv(II[FI)V" />
+		<method name="glTexParameteri(III)V" />
+		<method name="glTexParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexParameteriv(II[II)V" />
+		<method name="glTexParameterxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexParameterxv(II[II)V" />
+		<method name="glVertexPointer(IIII)V" />
+		<field name="GL_ACTIVE_TEXTURE" />
+		<field name="GL_ADD_SIGNED" />
+		<field name="GL_ALPHA_SCALE" />
+		<field name="GL_ALPHA_TEST_FUNC" />
+		<field name="GL_ALPHA_TEST_REF" />
+		<field name="GL_ARRAY_BUFFER" />
+		<field name="GL_ARRAY_BUFFER_BINDING" />
+		<field name="GL_BLEND_DST" />
+		<field name="GL_BLEND_SRC" />
+		<field name="GL_BUFFER_ACCESS" />
+		<field name="GL_BUFFER_SIZE" />
+		<field name="GL_BUFFER_USAGE" />
+		<field name="GL_CLIENT_ACTIVE_TEXTURE" />
+		<field name="GL_CLIP_PLANE0" />
+		<field name="GL_CLIP_PLANE1" />
+		<field name="GL_CLIP_PLANE2" />
+		<field name="GL_CLIP_PLANE3" />
+		<field name="GL_CLIP_PLANE4" />
+		<field name="GL_CLIP_PLANE5" />
+		<field name="GL_COLOR_ARRAY_BUFFER_BINDING" />
+		<field name="GL_COLOR_ARRAY_POINTER" />
+		<field name="GL_COLOR_ARRAY_SIZE" />
+		<field name="GL_COLOR_ARRAY_STRIDE" />
+		<field name="GL_COLOR_ARRAY_TYPE" />
+		<field name="GL_COLOR_CLEAR_VALUE" />
+		<field name="GL_COLOR_WRITEMASK" />
+		<field name="GL_COMBINE" />
+		<field name="GL_COMBINE_ALPHA" />
+		<field name="GL_COMBINE_RGB" />
+		<field name="GL_CONSTANT" />
+		<field name="GL_COORD_REPLACE_OES" />
+		<field name="GL_CULL_FACE_MODE" />
+		<field name="GL_CURRENT_COLOR" />
+		<field name="GL_CURRENT_NORMAL" />
+		<field name="GL_CURRENT_TEXTURE_COORDS" />
+		<field name="GL_DEPTH_CLEAR_VALUE" />
+		<field name="GL_DEPTH_FUNC" />
+		<field name="GL_DEPTH_RANGE" />
+		<field name="GL_DEPTH_WRITEMASK" />
+		<field name="GL_DOT3_RGB" />
+		<field name="GL_DOT3_RGBA" />
+		<field name="GL_DYNAMIC_DRAW" />
+		<field name="GL_ELEMENT_ARRAY_BUFFER" />
+		<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" />
+		<field name="GL_FRONT_FACE" />
+		<field name="GL_GENERATE_MIPMAP" />
+		<field name="GL_GENERATE_MIPMAP_HINT" />
+		<field name="GL_INTERPOLATE" />
+		<field name="GL_LINE_WIDTH" />
+		<field name="GL_LOGIC_OP_MODE" />
+		<field name="GL_MATRIX_MODE" />
+		<field name="GL_MAX_CLIP_PLANES" />
+		<field name="GL_MODELVIEW_MATRIX" />
+		<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_MODELVIEW_STACK_DEPTH" />
+		<field name="GL_NORMAL_ARRAY_BUFFER_BINDING" />
+		<field name="GL_NORMAL_ARRAY_POINTER" />
+		<field name="GL_NORMAL_ARRAY_STRIDE" />
+		<field name="GL_NORMAL_ARRAY_TYPE" />
+		<field name="GL_OPERAND0_ALPHA" />
+		<field name="GL_OPERAND0_RGB" />
+		<field name="GL_OPERAND1_ALPHA" />
+		<field name="GL_OPERAND1_RGB" />
+		<field name="GL_OPERAND2_ALPHA" />
+		<field name="GL_OPERAND2_RGB" />
+		<field name="GL_POINT_DISTANCE_ATTENUATION" />
+		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
+		<field name="GL_POINT_SIZE" />
+		<field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_POINTER_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_STRIDE_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_TYPE_OES" />
+		<field name="GL_POINT_SIZE_MAX" />
+		<field name="GL_POINT_SIZE_MIN" />
+		<field name="GL_POINT_SPRITE_OES" />
+		<field name="GL_POLYGON_OFFSET_FACTOR" />
+		<field name="GL_POLYGON_OFFSET_UNITS" />
+		<field name="GL_PREVIOUS" />
+		<field name="GL_PRIMARY_COLOR" />
+		<field name="GL_PROJECTION_MATRIX" />
+		<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_PROJECTION_STACK_DEPTH" />
+		<field name="GL_RGB_SCALE" />
+		<field name="GL_SAMPLES" />
+		<field name="GL_SAMPLE_BUFFERS" />
+		<field name="GL_SAMPLE_COVERAGE_INVERT" />
+		<field name="GL_SAMPLE_COVERAGE_VALUE" />
+		<field name="GL_SCISSOR_BOX" />
+		<field name="GL_SHADE_MODEL" />
+		<field name="GL_SRC0_ALPHA" />
+		<field name="GL_SRC0_RGB" />
+		<field name="GL_SRC1_ALPHA" />
+		<field name="GL_SRC1_RGB" />
+		<field name="GL_SRC2_ALPHA" />
+		<field name="GL_SRC2_RGB" />
+		<field name="GL_STATIC_DRAW" />
+		<field name="GL_STENCIL_CLEAR_VALUE" />
+		<field name="GL_STENCIL_FAIL" />
+		<field name="GL_STENCIL_FUNC" />
+		<field name="GL_STENCIL_PASS_DEPTH_FAIL" />
+		<field name="GL_STENCIL_PASS_DEPTH_PASS" />
+		<field name="GL_STENCIL_REF" />
+		<field name="GL_STENCIL_VALUE_MASK" />
+		<field name="GL_STENCIL_WRITEMASK" />
+		<field name="GL_SUBTRACT" />
+		<field name="GL_TEXTURE_BINDING_2D" />
+		<field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING" />
+		<field name="GL_TEXTURE_COORD_ARRAY_POINTER" />
+		<field name="GL_TEXTURE_COORD_ARRAY_SIZE" />
+		<field name="GL_TEXTURE_COORD_ARRAY_STRIDE" />
+		<field name="GL_TEXTURE_COORD_ARRAY_TYPE" />
+		<field name="GL_TEXTURE_MATRIX" />
+		<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_TEXTURE_STACK_DEPTH" />
+		<field name="GL_VERTEX_ARRAY_BUFFER_BINDING" />
+		<field name="GL_VERTEX_ARRAY_POINTER" />
+		<field name="GL_VERTEX_ARRAY_SIZE" />
+		<field name="GL_VERTEX_ARRAY_STRIDE" />
+		<field name="GL_VERTEX_ARRAY_TYPE" />
+		<field name="GL_VIEWPORT" />
+		<field name="GL_WRITE_ONLY" />
+	</class>
+	<class name="android/opengl/GLES11Ext" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="glAlphaFuncxOES(II)V" />
+		<method name="glBindFramebufferOES(II)V" />
+		<method name="glBindRenderbufferOES(II)V" />
+		<method name="glBlendEquationOES(I)V" />
+		<method name="glBlendEquationSeparateOES(II)V" />
+		<method name="glBlendFuncSeparateOES(IIII)V" />
+		<method name="glCheckFramebufferStatusOES(I)I" />
+		<method name="glClearColorxOES(IIII)V" />
+		<method name="glClearDepthfOES(F)V" />
+		<method name="glClearDepthxOES(I)V" />
+		<method name="glClipPlanefOES(ILjava/nio/FloatBuffer;)V" />
+		<method name="glClipPlanefOES(I[FI)V" />
+		<method name="glClipPlanexOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glClipPlanexOES(I[II)V" />
+		<method name="glColor4xOES(IIII)V" />
+		<method name="glCurrentPaletteMatrixOES(I)V" />
+		<method name="glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteFramebuffersOES(I[II)V" />
+		<method name="glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteRenderbuffersOES(I[II)V" />
+		<method name="glDepthRangefOES(FF)V" />
+		<method name="glDepthRangexOES(II)V" />
+		<method name="glDrawTexfOES(FFFFF)V" />
+		<method name="glDrawTexfvOES(Ljava/nio/FloatBuffer;)V" />
+		<method name="glDrawTexfvOES([FI)V" />
+		<method name="glDrawTexiOES(IIIII)V" />
+		<method name="glDrawTexivOES(Ljava/nio/IntBuffer;)V" />
+		<method name="glDrawTexivOES([II)V" />
+		<method name="glDrawTexsOES(SSSSS)V" />
+		<method name="glDrawTexsvOES(Ljava/nio/ShortBuffer;)V" />
+		<method name="glDrawTexsvOES([SI)V" />
+		<method name="glDrawTexxOES(IIIII)V" />
+		<method name="glDrawTexxvOES(Ljava/nio/IntBuffer;)V" />
+		<method name="glDrawTexxvOES([II)V" />
+		<method name="glEGLImageTargetRenderbufferStorageOES(ILjava/nio/Buffer;)V" />
+		<method name="glEGLImageTargetTexture2DOES(ILjava/nio/Buffer;)V" />
+		<method name="glFogxOES(II)V" />
+		<method name="glFogxvOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glFogxvOES(I[II)V" />
+		<method name="glFramebufferRenderbufferOES(IIII)V" />
+		<method name="glFramebufferTexture2DOES(IIIII)V" />
+		<method name="glFrustumfOES(FFFFFF)V" />
+		<method name="glFrustumxOES(IIIIII)V" />
+		<method name="glGenFramebuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenFramebuffersOES(I[II)V" />
+		<method name="glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenRenderbuffersOES(I[II)V" />
+		<method name="glGenerateMipmapOES(I)V" />
+		<method name="glGetClipPlanefOES(ILjava/nio/FloatBuffer;)V" />
+		<method name="glGetClipPlanefOES(I[FI)V" />
+		<method name="glGetClipPlanexOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetClipPlanexOES(I[II)V" />
+		<method name="glGetFixedvOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetFixedvOES(I[II)V" />
+		<method name="glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V" />
+		<method name="glGetFramebufferAttachmentParameterivOES(III[II)V" />
+		<method name="glGetLightxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetLightxvOES(II[II)V" />
+		<method name="glGetMaterialxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetMaterialxvOES(II[II)V" />
+		<method name="glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetRenderbufferParameterivOES(II[II)V" />
+		<method name="glGetTexEnvxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexEnvxvOES(II[II)V" />
+		<method name="glGetTexGenfvOES(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetTexGenfvOES(II[FI)V" />
+		<method name="glGetTexGenivOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexGenivOES(II[II)V" />
+		<method name="glGetTexGenxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexGenxvOES(II[II)V" />
+		<method name="glGetTexParameterxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexParameterxvOES(II[II)V" />
+		<method name="glIsFramebufferOES(I)Z" />
+		<method name="glIsRenderbufferOES(I)Z" />
+		<method name="glLightModelxOES(II)V" />
+		<method name="glLightModelxvOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glLightModelxvOES(I[II)V" />
+		<method name="glLightxOES(III)V" />
+		<method name="glLightxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glLightxvOES(II[II)V" />
+		<method name="glLineWidthxOES(I)V" />
+		<method name="glLoadMatrixxOES(Ljava/nio/IntBuffer;)V" />
+		<method name="glLoadMatrixxOES([II)V" />
+		<method name="glLoadPaletteFromModelViewMatrixOES()V" />
+		<method name="glMaterialxOES(III)V" />
+		<method name="glMaterialxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glMaterialxvOES(II[II)V" />
+		<method name="glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V" />
+		<method name="glMultMatrixxOES(Ljava/nio/IntBuffer;)V" />
+		<method name="glMultMatrixxOES([II)V" />
+		<method name="glMultiTexCoord4xOES(IIIII)V" />
+		<method name="glNormal3xOES(III)V" />
+		<method name="glOrthofOES(FFFFFF)V" />
+		<method name="glOrthoxOES(IIIIII)V" />
+		<method name="glPointParameterxOES(II)V" />
+		<method name="glPointParameterxvOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glPointParameterxvOES(I[II)V" />
+		<method name="glPointSizexOES(I)V" />
+		<method name="glPolygonOffsetxOES(II)V" />
+		<method name="glRenderbufferStorageOES(IIII)V" />
+		<method name="glRotatexOES(IIII)V" />
+		<method name="glSampleCoveragexOES(IZ)V" />
+		<method name="glScalexOES(III)V" />
+		<method name="glTexEnvxOES(III)V" />
+		<method name="glTexEnvxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexEnvxvOES(II[II)V" />
+		<method name="glTexGenfOES(IIF)V" />
+		<method name="glTexGenfvOES(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexGenfvOES(II[FI)V" />
+		<method name="glTexGeniOES(III)V" />
+		<method name="glTexGenivOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexGenivOES(II[II)V" />
+		<method name="glTexGenxOES(III)V" />
+		<method name="glTexGenxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexGenxvOES(II[II)V" />
+		<method name="glTexParameterxOES(III)V" />
+		<method name="glTexParameterxvOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexParameterxvOES(II[II)V" />
+		<method name="glTranslatexOES(III)V" />
+		<method name="glWeightPointerOES(IIILjava/nio/Buffer;)V" />
+		<field name="GL_3DC_XY_AMD" />
+		<field name="GL_3DC_X_AMD" />
+		<field name="GL_ATC_RGBA_EXPLICIT_ALPHA_AMD" />
+		<field name="GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD" />
+		<field name="GL_ATC_RGB_AMD" />
+		<field name="GL_BGRA" />
+		<field name="GL_BLEND_DST_ALPHA_OES" />
+		<field name="GL_BLEND_DST_RGB_OES" />
+		<field name="GL_BLEND_EQUATION_ALPHA_OES" />
+		<field name="GL_BLEND_EQUATION_OES" />
+		<field name="GL_BLEND_EQUATION_RGB_OES" />
+		<field name="GL_BLEND_SRC_ALPHA_OES" />
+		<field name="GL_BLEND_SRC_RGB_OES" />
+		<field name="GL_BUFFER_ACCESS_OES" />
+		<field name="GL_BUFFER_MAPPED_OES" />
+		<field name="GL_BUFFER_MAP_POINTER_OES" />
+		<field name="GL_COLOR_ATTACHMENT0_OES" />
+		<field name="GL_CURRENT_PALETTE_MATRIX_OES" />
+		<field name="GL_DECR_WRAP_OES" />
+		<field name="GL_DEPTH24_STENCIL8_OES" />
+		<field name="GL_DEPTH_ATTACHMENT_OES" />
+		<field name="GL_DEPTH_COMPONENT16_OES" />
+		<field name="GL_DEPTH_COMPONENT24_OES" />
+		<field name="GL_DEPTH_COMPONENT32_OES" />
+		<field name="GL_DEPTH_STENCIL_OES" />
+		<field name="GL_ETC1_RGB8_OES" />
+		<field name="GL_FIXED_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" />
+		<field name="GL_FRAMEBUFFER_BINDING_OES" />
+		<field name="GL_FRAMEBUFFER_COMPLETE_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" />
+		<field name="GL_FRAMEBUFFER_OES" />
+		<field name="GL_FRAMEBUFFER_UNSUPPORTED_OES" />
+		<field name="GL_FUNC_ADD_OES" />
+		<field name="GL_FUNC_REVERSE_SUBTRACT_OES" />
+		<field name="GL_FUNC_SUBTRACT_OES" />
+		<field name="GL_INCR_WRAP_OES" />
+		<field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES" />
+		<field name="GL_MATRIX_PALETTE_OES" />
+		<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES" />
+		<field name="GL_MAX_PALETTE_MATRICES_OES" />
+		<field name="GL_MAX_RENDERBUFFER_SIZE_OES" />
+		<field name="GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT" />
+		<field name="GL_MAX_VERTEX_UNITS_OES" />
+		<field name="GL_MIRRORED_REPEAT_OES" />
+		<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_NONE_OES" />
+		<field name="GL_NORMAL_MAP_OES" />
+		<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_REFLECTION_MAP_OES" />
+		<field name="GL_RENDERBUFFER_ALPHA_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_BINDING_OES" />
+		<field name="GL_RENDERBUFFER_BLUE_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_DEPTH_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_GREEN_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_HEIGHT_OES" />
+		<field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES" />
+		<field name="GL_RENDERBUFFER_OES" />
+		<field name="GL_RENDERBUFFER_RED_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_STENCIL_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_WIDTH_OES" />
+		<field name="GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES" since="15" />
+		<field name="GL_RGB565_OES" />
+		<field name="GL_RGB5_A1_OES" />
+		<field name="GL_RGB8_OES" />
+		<field name="GL_RGBA4_OES" />
+		<field name="GL_RGBA8_OES" />
+		<field name="GL_SAMPLER_EXTERNAL_OES" since="15" />
+		<field name="GL_STENCIL_ATTACHMENT_OES" />
+		<field name="GL_STENCIL_INDEX1_OES" />
+		<field name="GL_STENCIL_INDEX4_OES" />
+		<field name="GL_STENCIL_INDEX8_OES" />
+		<field name="GL_TEXTURE_BINDING_CUBE_MAP_OES" />
+		<field name="GL_TEXTURE_BINDING_EXTERNAL_OES" since="15" />
+		<field name="GL_TEXTURE_CROP_RECT_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES" />
+		<field name="GL_TEXTURE_EXTERNAL_OES" since="15" />
+		<field name="GL_TEXTURE_GEN_MODE_OES" />
+		<field name="GL_TEXTURE_GEN_STR_OES" />
+		<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_TEXTURE_MAX_ANISOTROPY_EXT" />
+		<field name="GL_UNSIGNED_INT_24_8_OES" />
+		<field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES" />
+		<field name="GL_WEIGHT_ARRAY_OES" />
+		<field name="GL_WEIGHT_ARRAY_POINTER_OES" />
+		<field name="GL_WEIGHT_ARRAY_SIZE_OES" />
+		<field name="GL_WEIGHT_ARRAY_STRIDE_OES" />
+		<field name="GL_WEIGHT_ARRAY_TYPE_OES" />
+		<field name="GL_WRITE_ONLY_OES" />
+	</class>
+	<class name="android/opengl/GLES20" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="glActiveTexture(I)V" />
+		<method name="glAttachShader(II)V" />
+		<method name="glBindAttribLocation(IILjava/lang/String;)V" />
+		<method name="glBindBuffer(II)V" />
+		<method name="glBindFramebuffer(II)V" />
+		<method name="glBindRenderbuffer(II)V" />
+		<method name="glBindTexture(II)V" />
+		<method name="glBlendColor(FFFF)V" />
+		<method name="glBlendEquation(I)V" />
+		<method name="glBlendEquationSeparate(II)V" />
+		<method name="glBlendFunc(II)V" />
+		<method name="glBlendFuncSeparate(IIII)V" />
+		<method name="glBufferData(IILjava/nio/Buffer;I)V" />
+		<method name="glBufferSubData(IIILjava/nio/Buffer;)V" />
+		<method name="glCheckFramebufferStatus(I)I" />
+		<method name="glClear(I)V" />
+		<method name="glClearColor(FFFF)V" />
+		<method name="glClearDepthf(F)V" />
+		<method name="glClearStencil(I)V" />
+		<method name="glColorMask(ZZZZ)V" />
+		<method name="glCompileShader(I)V" />
+		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCopyTexImage2D(IIIIIIII)V" />
+		<method name="glCopyTexSubImage2D(IIIIIIII)V" />
+		<method name="glCreateProgram()I" />
+		<method name="glCreateShader(I)I" />
+		<method name="glCullFace(I)V" />
+		<method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteBuffers(I[II)V" />
+		<method name="glDeleteFramebuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteFramebuffers(I[II)V" />
+		<method name="glDeleteProgram(I)V" />
+		<method name="glDeleteRenderbuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteRenderbuffers(I[II)V" />
+		<method name="glDeleteShader(I)V" />
+		<method name="glDeleteTextures(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteTextures(I[II)V" />
+		<method name="glDepthFunc(I)V" />
+		<method name="glDepthMask(Z)V" />
+		<method name="glDepthRangef(FF)V" />
+		<method name="glDetachShader(II)V" />
+		<method name="glDisable(I)V" />
+		<method name="glDisableVertexAttribArray(I)V" />
+		<method name="glDrawArrays(III)V" />
+		<method name="glDrawElements(IIII)V" since="9" />
+		<method name="glDrawElements(IIILjava/nio/Buffer;)V" />
+		<method name="glEnable(I)V" />
+		<method name="glEnableVertexAttribArray(I)V" />
+		<method name="glFinish()V" />
+		<method name="glFlush()V" />
+		<method name="glFramebufferRenderbuffer(IIII)V" />
+		<method name="glFramebufferTexture2D(IIIII)V" />
+		<method name="glFrontFace(I)V" />
+		<method name="glGenBuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenBuffers(I[II)V" />
+		<method name="glGenFramebuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenFramebuffers(I[II)V" />
+		<method name="glGenRenderbuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenRenderbuffers(I[II)V" />
+		<method name="glGenTextures(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenTextures(I[II)V" />
+		<method name="glGenerateMipmap(I)V" />
+		<method name="glGetActiveAttrib(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" />
+		<method name="glGetActiveAttrib(III[II[II[II[BI)V" />
+		<method name="glGetActiveUniform(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V" />
+		<method name="glGetActiveUniform(III[II[II[II[BI)V" />
+		<method name="glGetAttachedShaders(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V" />
+		<method name="glGetAttachedShaders(II[II[II)V" />
+		<method name="glGetAttribLocation(ILjava/lang/String;)I" />
+		<method name="glGetBooleanv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetBooleanv(I[ZI)V" />
+		<method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetBufferParameteriv(II[II)V" />
+		<method name="glGetError()I" />
+		<method name="glGetFloatv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glGetFloatv(I[FI)V" />
+		<method name="glGetFramebufferAttachmentParameteriv(IIILjava/nio/IntBuffer;)V" />
+		<method name="glGetFramebufferAttachmentParameteriv(III[II)V" />
+		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetIntegerv(I[II)V" />
+		<method name="glGetProgramInfoLog(I)Ljava/lang/String;" />
+		<method name="glGetProgramiv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetProgramiv(II[II)V" />
+		<method name="glGetRenderbufferParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetRenderbufferParameteriv(II[II)V" />
+		<method name="glGetShaderInfoLog(I)Ljava/lang/String;" />
+		<method name="glGetShaderPrecisionFormat(IILjava/nio/IntBuffer;Ljava/nio/IntBuffer;)V" />
+		<method name="glGetShaderPrecisionFormat(II[II[II)V" />
+		<method name="glGetShaderSource(IILjava/nio/IntBuffer;B)V" />
+		<method name="glGetShaderSource(II[II[BI)V" />
+		<method name="glGetShaderiv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetShaderiv(II[II)V" />
+		<method name="glGetString(I)Ljava/lang/String;" />
+		<method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetTexParameterfv(II[FI)V" />
+		<method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexParameteriv(II[II)V" />
+		<method name="glGetUniformLocation(ILjava/lang/String;)I" />
+		<method name="glGetUniformfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetUniformfv(II[FI)V" />
+		<method name="glGetUniformiv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetUniformiv(II[II)V" />
+		<method name="glGetVertexAttribfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetVertexAttribfv(II[FI)V" />
+		<method name="glGetVertexAttribiv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetVertexAttribiv(II[II)V" />
+		<method name="glHint(II)V" />
+		<method name="glIsBuffer(I)Z" />
+		<method name="glIsEnabled(I)Z" />
+		<method name="glIsFramebuffer(I)Z" />
+		<method name="glIsProgram(I)Z" />
+		<method name="glIsRenderbuffer(I)Z" />
+		<method name="glIsShader(I)Z" />
+		<method name="glIsTexture(I)Z" />
+		<method name="glLineWidth(F)V" />
+		<method name="glLinkProgram(I)V" />
+		<method name="glPixelStorei(II)V" />
+		<method name="glPolygonOffset(FF)V" />
+		<method name="glReadPixels(IIIIIILjava/nio/Buffer;)V" />
+		<method name="glReleaseShaderCompiler()V" />
+		<method name="glRenderbufferStorage(IIII)V" />
+		<method name="glSampleCoverage(FZ)V" />
+		<method name="glScissor(IIII)V" />
+		<method name="glShaderBinary(ILjava/nio/IntBuffer;ILjava/nio/Buffer;I)V" />
+		<method name="glShaderBinary(I[IIILjava/nio/Buffer;I)V" />
+		<method name="glShaderSource(ILjava/lang/String;)V" />
+		<method name="glStencilFunc(III)V" />
+		<method name="glStencilFuncSeparate(IIII)V" />
+		<method name="glStencilMask(I)V" />
+		<method name="glStencilMaskSeparate(II)V" />
+		<method name="glStencilOp(III)V" />
+		<method name="glStencilOpSeparate(IIII)V" />
+		<method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glTexParameterf(IIF)V" />
+		<method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexParameterfv(II[FI)V" />
+		<method name="glTexParameteri(III)V" />
+		<method name="glTexParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexParameteriv(II[II)V" />
+		<method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glUniform1f(IF)V" />
+		<method name="glUniform1fv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glUniform1fv(II[FI)V" />
+		<method name="glUniform1i(II)V" />
+		<method name="glUniform1iv(IILjava/nio/IntBuffer;)V" />
+		<method name="glUniform1iv(II[II)V" />
+		<method name="glUniform2f(IFF)V" />
+		<method name="glUniform2fv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glUniform2fv(II[FI)V" />
+		<method name="glUniform2i(III)V" />
+		<method name="glUniform2iv(IILjava/nio/IntBuffer;)V" />
+		<method name="glUniform2iv(II[II)V" />
+		<method name="glUniform3f(IFFF)V" />
+		<method name="glUniform3fv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glUniform3fv(II[FI)V" />
+		<method name="glUniform3i(IIII)V" />
+		<method name="glUniform3iv(IILjava/nio/IntBuffer;)V" />
+		<method name="glUniform3iv(II[II)V" />
+		<method name="glUniform4f(IFFFF)V" />
+		<method name="glUniform4fv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glUniform4fv(II[FI)V" />
+		<method name="glUniform4i(IIIII)V" />
+		<method name="glUniform4iv(IILjava/nio/IntBuffer;)V" />
+		<method name="glUniform4iv(II[II)V" />
+		<method name="glUniformMatrix2fv(IIZLjava/nio/FloatBuffer;)V" />
+		<method name="glUniformMatrix2fv(IIZ[FI)V" />
+		<method name="glUniformMatrix3fv(IIZLjava/nio/FloatBuffer;)V" />
+		<method name="glUniformMatrix3fv(IIZ[FI)V" />
+		<method name="glUniformMatrix4fv(IIZLjava/nio/FloatBuffer;)V" />
+		<method name="glUniformMatrix4fv(IIZ[FI)V" />
+		<method name="glUseProgram(I)V" />
+		<method name="glValidateProgram(I)V" />
+		<method name="glVertexAttrib1f(IF)V" />
+		<method name="glVertexAttrib1fv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glVertexAttrib1fv(I[FI)V" />
+		<method name="glVertexAttrib2f(IFF)V" />
+		<method name="glVertexAttrib2fv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glVertexAttrib2fv(I[FI)V" />
+		<method name="glVertexAttrib3f(IFFF)V" />
+		<method name="glVertexAttrib3fv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glVertexAttrib3fv(I[FI)V" />
+		<method name="glVertexAttrib4f(IFFFF)V" />
+		<method name="glVertexAttrib4fv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glVertexAttrib4fv(I[FI)V" />
+		<method name="glVertexAttribPointer(IIIZII)V" since="9" />
+		<method name="glVertexAttribPointer(IIIZILjava/nio/Buffer;)V" />
+		<method name="glViewport(IIII)V" />
+		<field name="GL_ACTIVE_ATTRIBUTES" />
+		<field name="GL_ACTIVE_ATTRIBUTE_MAX_LENGTH" />
+		<field name="GL_ACTIVE_TEXTURE" />
+		<field name="GL_ACTIVE_UNIFORMS" />
+		<field name="GL_ACTIVE_UNIFORM_MAX_LENGTH" />
+		<field name="GL_ALIASED_LINE_WIDTH_RANGE" />
+		<field name="GL_ALIASED_POINT_SIZE_RANGE" />
+		<field name="GL_ALPHA" />
+		<field name="GL_ALPHA_BITS" />
+		<field name="GL_ALWAYS" />
+		<field name="GL_ARRAY_BUFFER" />
+		<field name="GL_ARRAY_BUFFER_BINDING" />
+		<field name="GL_ATTACHED_SHADERS" />
+		<field name="GL_BACK" />
+		<field name="GL_BLEND" />
+		<field name="GL_BLEND_COLOR" />
+		<field name="GL_BLEND_DST_ALPHA" />
+		<field name="GL_BLEND_DST_RGB" />
+		<field name="GL_BLEND_EQUATION" />
+		<field name="GL_BLEND_EQUATION_ALPHA" />
+		<field name="GL_BLEND_EQUATION_RGB" />
+		<field name="GL_BLEND_SRC_ALPHA" />
+		<field name="GL_BLEND_SRC_RGB" />
+		<field name="GL_BLUE_BITS" />
+		<field name="GL_BOOL" />
+		<field name="GL_BOOL_VEC2" />
+		<field name="GL_BOOL_VEC3" />
+		<field name="GL_BOOL_VEC4" />
+		<field name="GL_BUFFER_SIZE" />
+		<field name="GL_BUFFER_USAGE" />
+		<field name="GL_BYTE" />
+		<field name="GL_CCW" />
+		<field name="GL_CLAMP_TO_EDGE" />
+		<field name="GL_COLOR_ATTACHMENT0" />
+		<field name="GL_COLOR_BUFFER_BIT" />
+		<field name="GL_COLOR_CLEAR_VALUE" />
+		<field name="GL_COLOR_WRITEMASK" />
+		<field name="GL_COMPILE_STATUS" />
+		<field name="GL_COMPRESSED_TEXTURE_FORMATS" />
+		<field name="GL_CONSTANT_ALPHA" />
+		<field name="GL_CONSTANT_COLOR" />
+		<field name="GL_CULL_FACE" />
+		<field name="GL_CULL_FACE_MODE" />
+		<field name="GL_CURRENT_PROGRAM" />
+		<field name="GL_CURRENT_VERTEX_ATTRIB" />
+		<field name="GL_CW" />
+		<field name="GL_DECR" />
+		<field name="GL_DECR_WRAP" />
+		<field name="GL_DELETE_STATUS" />
+		<field name="GL_DEPTH_ATTACHMENT" />
+		<field name="GL_DEPTH_BITS" />
+		<field name="GL_DEPTH_BUFFER_BIT" />
+		<field name="GL_DEPTH_CLEAR_VALUE" />
+		<field name="GL_DEPTH_COMPONENT" />
+		<field name="GL_DEPTH_COMPONENT16" />
+		<field name="GL_DEPTH_FUNC" />
+		<field name="GL_DEPTH_RANGE" />
+		<field name="GL_DEPTH_TEST" />
+		<field name="GL_DEPTH_WRITEMASK" />
+		<field name="GL_DITHER" />
+		<field name="GL_DONT_CARE" />
+		<field name="GL_DST_ALPHA" />
+		<field name="GL_DST_COLOR" />
+		<field name="GL_DYNAMIC_DRAW" />
+		<field name="GL_ELEMENT_ARRAY_BUFFER" />
+		<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" />
+		<field name="GL_EQUAL" />
+		<field name="GL_EXTENSIONS" />
+		<field name="GL_FALSE" />
+		<field name="GL_FASTEST" />
+		<field name="GL_FIXED" />
+		<field name="GL_FLOAT" />
+		<field name="GL_FLOAT_MAT2" />
+		<field name="GL_FLOAT_MAT3" />
+		<field name="GL_FLOAT_MAT4" />
+		<field name="GL_FLOAT_VEC2" />
+		<field name="GL_FLOAT_VEC3" />
+		<field name="GL_FLOAT_VEC4" />
+		<field name="GL_FRAGMENT_SHADER" />
+		<field name="GL_FRAMEBUFFER" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" />
+		<field name="GL_FRAMEBUFFER_BINDING" />
+		<field name="GL_FRAMEBUFFER_COMPLETE" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" />
+		<field name="GL_FRAMEBUFFER_UNSUPPORTED" />
+		<field name="GL_FRONT" />
+		<field name="GL_FRONT_AND_BACK" />
+		<field name="GL_FRONT_FACE" />
+		<field name="GL_FUNC_ADD" />
+		<field name="GL_FUNC_REVERSE_SUBTRACT" />
+		<field name="GL_FUNC_SUBTRACT" />
+		<field name="GL_GENERATE_MIPMAP_HINT" />
+		<field name="GL_GEQUAL" />
+		<field name="GL_GREATER" />
+		<field name="GL_GREEN_BITS" />
+		<field name="GL_HIGH_FLOAT" />
+		<field name="GL_HIGH_INT" />
+		<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT" />
+		<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE" />
+		<field name="GL_INCR" />
+		<field name="GL_INCR_WRAP" />
+		<field name="GL_INFO_LOG_LENGTH" />
+		<field name="GL_INT" />
+		<field name="GL_INT_VEC2" />
+		<field name="GL_INT_VEC3" />
+		<field name="GL_INT_VEC4" />
+		<field name="GL_INVALID_ENUM" />
+		<field name="GL_INVALID_FRAMEBUFFER_OPERATION" />
+		<field name="GL_INVALID_OPERATION" />
+		<field name="GL_INVALID_VALUE" />
+		<field name="GL_INVERT" />
+		<field name="GL_KEEP" />
+		<field name="GL_LEQUAL" />
+		<field name="GL_LESS" />
+		<field name="GL_LINEAR" />
+		<field name="GL_LINEAR_MIPMAP_LINEAR" />
+		<field name="GL_LINEAR_MIPMAP_NEAREST" />
+		<field name="GL_LINES" />
+		<field name="GL_LINE_LOOP" />
+		<field name="GL_LINE_STRIP" />
+		<field name="GL_LINE_WIDTH" />
+		<field name="GL_LINK_STATUS" />
+		<field name="GL_LOW_FLOAT" />
+		<field name="GL_LOW_INT" />
+		<field name="GL_LUMINANCE" />
+		<field name="GL_LUMINANCE_ALPHA" />
+		<field name="GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS" />
+		<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE" />
+		<field name="GL_MAX_FRAGMENT_UNIFORM_VECTORS" />
+		<field name="GL_MAX_RENDERBUFFER_SIZE" />
+		<field name="GL_MAX_TEXTURE_IMAGE_UNITS" />
+		<field name="GL_MAX_TEXTURE_SIZE" />
+		<field name="GL_MAX_VARYING_VECTORS" />
+		<field name="GL_MAX_VERTEX_ATTRIBS" />
+		<field name="GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS" />
+		<field name="GL_MAX_VERTEX_UNIFORM_VECTORS" />
+		<field name="GL_MAX_VIEWPORT_DIMS" />
+		<field name="GL_MEDIUM_FLOAT" />
+		<field name="GL_MEDIUM_INT" />
+		<field name="GL_MIRRORED_REPEAT" />
+		<field name="GL_NEAREST" />
+		<field name="GL_NEAREST_MIPMAP_LINEAR" />
+		<field name="GL_NEAREST_MIPMAP_NEAREST" />
+		<field name="GL_NEVER" />
+		<field name="GL_NICEST" />
+		<field name="GL_NONE" />
+		<field name="GL_NOTEQUAL" />
+		<field name="GL_NO_ERROR" />
+		<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" />
+		<field name="GL_NUM_SHADER_BINARY_FORMATS" />
+		<field name="GL_ONE" />
+		<field name="GL_ONE_MINUS_CONSTANT_ALPHA" />
+		<field name="GL_ONE_MINUS_CONSTANT_COLOR" />
+		<field name="GL_ONE_MINUS_DST_ALPHA" />
+		<field name="GL_ONE_MINUS_DST_COLOR" />
+		<field name="GL_ONE_MINUS_SRC_ALPHA" />
+		<field name="GL_ONE_MINUS_SRC_COLOR" />
+		<field name="GL_OUT_OF_MEMORY" />
+		<field name="GL_PACK_ALIGNMENT" />
+		<field name="GL_POINTS" />
+		<field name="GL_POLYGON_OFFSET_FACTOR" />
+		<field name="GL_POLYGON_OFFSET_FILL" />
+		<field name="GL_POLYGON_OFFSET_UNITS" />
+		<field name="GL_RED_BITS" />
+		<field name="GL_RENDERBUFFER" />
+		<field name="GL_RENDERBUFFER_ALPHA_SIZE" />
+		<field name="GL_RENDERBUFFER_BINDING" />
+		<field name="GL_RENDERBUFFER_BLUE_SIZE" />
+		<field name="GL_RENDERBUFFER_DEPTH_SIZE" />
+		<field name="GL_RENDERBUFFER_GREEN_SIZE" />
+		<field name="GL_RENDERBUFFER_HEIGHT" />
+		<field name="GL_RENDERBUFFER_INTERNAL_FORMAT" />
+		<field name="GL_RENDERBUFFER_RED_SIZE" />
+		<field name="GL_RENDERBUFFER_STENCIL_SIZE" />
+		<field name="GL_RENDERBUFFER_WIDTH" />
+		<field name="GL_RENDERER" />
+		<field name="GL_REPEAT" />
+		<field name="GL_REPLACE" />
+		<field name="GL_RGB" />
+		<field name="GL_RGB565" />
+		<field name="GL_RGB5_A1" />
+		<field name="GL_RGBA" />
+		<field name="GL_RGBA4" />
+		<field name="GL_SAMPLER_2D" />
+		<field name="GL_SAMPLER_CUBE" />
+		<field name="GL_SAMPLES" />
+		<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" />
+		<field name="GL_SAMPLE_BUFFERS" />
+		<field name="GL_SAMPLE_COVERAGE" />
+		<field name="GL_SAMPLE_COVERAGE_INVERT" />
+		<field name="GL_SAMPLE_COVERAGE_VALUE" />
+		<field name="GL_SCISSOR_BOX" />
+		<field name="GL_SCISSOR_TEST" />
+		<field name="GL_SHADER_BINARY_FORMATS" />
+		<field name="GL_SHADER_COMPILER" />
+		<field name="GL_SHADER_SOURCE_LENGTH" />
+		<field name="GL_SHADER_TYPE" />
+		<field name="GL_SHADING_LANGUAGE_VERSION" />
+		<field name="GL_SHORT" />
+		<field name="GL_SRC_ALPHA" />
+		<field name="GL_SRC_ALPHA_SATURATE" />
+		<field name="GL_SRC_COLOR" />
+		<field name="GL_STATIC_DRAW" />
+		<field name="GL_STENCIL_ATTACHMENT" />
+		<field name="GL_STENCIL_BACK_FAIL" />
+		<field name="GL_STENCIL_BACK_FUNC" />
+		<field name="GL_STENCIL_BACK_PASS_DEPTH_FAIL" />
+		<field name="GL_STENCIL_BACK_PASS_DEPTH_PASS" />
+		<field name="GL_STENCIL_BACK_REF" />
+		<field name="GL_STENCIL_BACK_VALUE_MASK" />
+		<field name="GL_STENCIL_BACK_WRITEMASK" />
+		<field name="GL_STENCIL_BITS" />
+		<field name="GL_STENCIL_BUFFER_BIT" />
+		<field name="GL_STENCIL_CLEAR_VALUE" />
+		<field name="GL_STENCIL_FAIL" />
+		<field name="GL_STENCIL_FUNC" />
+		<field name="GL_STENCIL_INDEX" />
+		<field name="GL_STENCIL_INDEX8" />
+		<field name="GL_STENCIL_PASS_DEPTH_FAIL" />
+		<field name="GL_STENCIL_PASS_DEPTH_PASS" />
+		<field name="GL_STENCIL_REF" />
+		<field name="GL_STENCIL_TEST" />
+		<field name="GL_STENCIL_VALUE_MASK" />
+		<field name="GL_STENCIL_WRITEMASK" />
+		<field name="GL_STREAM_DRAW" />
+		<field name="GL_SUBPIXEL_BITS" />
+		<field name="GL_TEXTURE" />
+		<field name="GL_TEXTURE0" />
+		<field name="GL_TEXTURE1" />
+		<field name="GL_TEXTURE10" />
+		<field name="GL_TEXTURE11" />
+		<field name="GL_TEXTURE12" />
+		<field name="GL_TEXTURE13" />
+		<field name="GL_TEXTURE14" />
+		<field name="GL_TEXTURE15" />
+		<field name="GL_TEXTURE16" />
+		<field name="GL_TEXTURE17" />
+		<field name="GL_TEXTURE18" />
+		<field name="GL_TEXTURE19" />
+		<field name="GL_TEXTURE2" />
+		<field name="GL_TEXTURE20" />
+		<field name="GL_TEXTURE21" />
+		<field name="GL_TEXTURE22" />
+		<field name="GL_TEXTURE23" />
+		<field name="GL_TEXTURE24" />
+		<field name="GL_TEXTURE25" />
+		<field name="GL_TEXTURE26" />
+		<field name="GL_TEXTURE27" />
+		<field name="GL_TEXTURE28" />
+		<field name="GL_TEXTURE29" />
+		<field name="GL_TEXTURE3" />
+		<field name="GL_TEXTURE30" />
+		<field name="GL_TEXTURE31" />
+		<field name="GL_TEXTURE4" />
+		<field name="GL_TEXTURE5" />
+		<field name="GL_TEXTURE6" />
+		<field name="GL_TEXTURE7" />
+		<field name="GL_TEXTURE8" />
+		<field name="GL_TEXTURE9" />
+		<field name="GL_TEXTURE_2D" />
+		<field name="GL_TEXTURE_BINDING_2D" />
+		<field name="GL_TEXTURE_BINDING_CUBE_MAP" />
+		<field name="GL_TEXTURE_CUBE_MAP" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" />
+		<field name="GL_TEXTURE_MAG_FILTER" />
+		<field name="GL_TEXTURE_MIN_FILTER" />
+		<field name="GL_TEXTURE_WRAP_S" />
+		<field name="GL_TEXTURE_WRAP_T" />
+		<field name="GL_TRIANGLES" />
+		<field name="GL_TRIANGLE_FAN" />
+		<field name="GL_TRIANGLE_STRIP" />
+		<field name="GL_TRUE" />
+		<field name="GL_UNPACK_ALIGNMENT" />
+		<field name="GL_UNSIGNED_BYTE" />
+		<field name="GL_UNSIGNED_INT" />
+		<field name="GL_UNSIGNED_SHORT" />
+		<field name="GL_UNSIGNED_SHORT_4_4_4_4" />
+		<field name="GL_UNSIGNED_SHORT_5_5_5_1" />
+		<field name="GL_UNSIGNED_SHORT_5_6_5" />
+		<field name="GL_VALIDATE_STATUS" />
+		<field name="GL_VENDOR" />
+		<field name="GL_VERSION" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_ENABLED" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_NORMALIZED" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_POINTER" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_SIZE" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_STRIDE" />
+		<field name="GL_VERTEX_ATTRIB_ARRAY_TYPE" />
+		<field name="GL_VERTEX_SHADER" />
+		<field name="GL_VIEWPORT" />
+		<field name="GL_ZERO" />
+	</class>
+	<class name="android/opengl/GLException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/lang/String;)V" />
+	</class>
+	<class name="android/opengl/GLSurfaceView" since="3">
+		<extends name="android/view/SurfaceView" />
+		<implements name="android/view/SurfaceHolder$Callback" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getDebugFlags()I" />
+		<method name="getPreserveEGLContextOnPause()Z" since="11" />
+		<method name="getRenderMode()I" />
+		<method name="onPause()V" />
+		<method name="onResume()V" />
+		<method name="queueEvent(Ljava/lang/Runnable;)V" />
+		<method name="requestRender()V" />
+		<method name="setDebugFlags(I)V" />
+		<method name="setEGLConfigChooser(IIIIII)V" />
+		<method name="setEGLConfigChooser(Landroid/opengl/GLSurfaceView$EGLConfigChooser;)V" />
+		<method name="setEGLConfigChooser(Z)V" />
+		<method name="setEGLContextClientVersion(I)V" since="8" />
+		<method name="setEGLContextFactory(Landroid/opengl/GLSurfaceView$EGLContextFactory;)V" since="5" />
+		<method name="setEGLWindowSurfaceFactory(Landroid/opengl/GLSurfaceView$EGLWindowSurfaceFactory;)V" since="5" />
+		<method name="setGLWrapper(Landroid/opengl/GLSurfaceView$GLWrapper;)V" />
+		<method name="setPreserveEGLContextOnPause(Z)V" since="11" />
+		<method name="setRenderMode(I)V" />
+		<method name="setRenderer(Landroid/opengl/GLSurfaceView$Renderer;)V" />
+		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
+		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
+		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
+		<field name="DEBUG_CHECK_GL_ERROR" />
+		<field name="DEBUG_LOG_GL_CALLS" />
+		<field name="RENDERMODE_CONTINUOUSLY" />
+		<field name="RENDERMODE_WHEN_DIRTY" />
+	</class>
+	<class name="android/opengl/GLSurfaceView$EGLConfigChooser" since="3">
+		<method name="chooseConfig(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;)Ljavax/microedition/khronos/egl/EGLConfig;" />
+	</class>
+	<class name="android/opengl/GLSurfaceView$EGLContextFactory" since="5">
+		<method name="createContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;)Ljavax/microedition/khronos/egl/EGLContext;" />
+		<method name="destroyContext(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)V" />
+	</class>
+	<class name="android/opengl/GLSurfaceView$EGLWindowSurfaceFactory" since="5">
+		<method name="createWindowSurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLSurface;" />
+		<method name="destroySurface(Ljavax/microedition/khronos/egl/EGL10;Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)V" />
+	</class>
+	<class name="android/opengl/GLSurfaceView$GLWrapper" since="3">
+		<method name="wrap(Ljavax/microedition/khronos/opengles/GL;)Ljavax/microedition/khronos/opengles/GL;" />
+	</class>
+	<class name="android/opengl/GLSurfaceView$Renderer" since="3">
+		<method name="onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V" />
+		<method name="onSurfaceChanged(Ljavax/microedition/khronos/opengles/GL10;II)V" />
+		<method name="onSurfaceCreated(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V" />
+	</class>
+	<class name="android/opengl/GLU" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="gluErrorString(I)Ljava/lang/String;" />
+		<method name="gluLookAt(Ljavax/microedition/khronos/opengles/GL10;FFFFFFFFF)V" />
+		<method name="gluOrtho2D(Ljavax/microedition/khronos/opengles/GL10;FFFF)V" />
+		<method name="gluPerspective(Ljavax/microedition/khronos/opengles/GL10;FFFF)V" />
+		<method name="gluProject(FFF[FI[FI[II[FI)I" />
+		<method name="gluUnProject(FFF[FI[FI[II[FI)I" />
+	</class>
+	<class name="android/opengl/GLUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getEGLErrorString(I)Ljava/lang/String;" since="14" />
+		<method name="getInternalFormat(Landroid/graphics/Bitmap;)I" />
+		<method name="getType(Landroid/graphics/Bitmap;)I" />
+		<method name="texImage2D(IIILandroid/graphics/Bitmap;I)V" />
+		<method name="texImage2D(IIILandroid/graphics/Bitmap;II)V" />
+		<method name="texImage2D(IILandroid/graphics/Bitmap;I)V" />
+		<method name="texSubImage2D(IIIILandroid/graphics/Bitmap;)V" />
+		<method name="texSubImage2D(IIIILandroid/graphics/Bitmap;II)V" />
+	</class>
+	<class name="android/opengl/Matrix" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="frustumM([FIFFFFFF)V" />
+		<method name="invertM([FI[FI)Z" />
+		<method name="length(FFF)F" />
+		<method name="multiplyMM([FI[FI[FI)V" />
+		<method name="multiplyMV([FI[FI[FI)V" />
+		<method name="orthoM([FIFFFFFF)V" />
+		<method name="perspectiveM([FIFFFF)V" since="14" />
+		<method name="rotateM([FIFFFF)V" />
+		<method name="rotateM([FI[FIFFFF)V" />
+		<method name="scaleM([FIFFF)V" />
+		<method name="scaleM([FI[FIFFF)V" />
+		<method name="setIdentityM([FI)V" />
+		<method name="setLookAtM([FIFFFFFFFFF)V" since="8" />
+		<method name="setRotateEulerM([FIFFF)V" />
+		<method name="setRotateM([FIFFFF)V" />
+		<method name="translateM([FIFFF)V" />
+		<method name="translateM([FI[FIFFF)V" />
+		<method name="transposeM([FI[FI)V" />
+	</class>
+	<class name="android/opengl/Visibility" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="computeBoundingSphere([FII[FI)V" />
+		<method name="frustumCullSpheres([FI[FII[III)I" />
+		<method name="visibilityTest([FI[FI[CII)I" />
+	</class>
+	<class name="android/os/AsyncTask" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="cancel(Z)Z" />
+		<method name="doInBackground([LParams;)LResult;" />
+		<method name="execute(Ljava/lang/Runnable;)V" since="11" />
+		<method name="execute([LParams;)Landroid/os/AsyncTask;" />
+		<method name="executeOnExecutor(Ljava/util/concurrent/Executor;[LParams;)Landroid/os/AsyncTask;" since="11" />
+		<method name="get()LResult;" />
+		<method name="get(JLjava/util/concurrent/TimeUnit;)LResult;" />
+		<method name="getStatus()Landroid/os/AsyncTask$Status;" />
+		<method name="isCancelled()Z" />
+		<method name="onCancelled()V" />
+		<method name="onCancelled(LResult;)V" since="11" />
+		<method name="onPostExecute(LResult;)V" />
+		<method name="onPreExecute()V" />
+		<method name="onProgressUpdate([LProgress;)V" />
+		<method name="publishProgress([LProgress;)V" />
+		<field name="SERIAL_EXECUTOR" since="11" />
+		<field name="THREAD_POOL_EXECUTOR" since="11" />
+	</class>
+	<class name="android/os/AsyncTask$Status" since="3">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/os/AsyncTask$Status;" />
+		<method name="values()[Landroid/os/AsyncTask$Status;" />
+		<field name="FINISHED" />
+		<field name="PENDING" />
+		<field name="RUNNING" />
+	</class>
+	<class name="android/os/BadParcelableException" since="1">
+		<extends name="android/util/AndroidRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/os/BatteryManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="BATTERY_HEALTH_COLD" since="11" />
+		<field name="BATTERY_HEALTH_DEAD" />
+		<field name="BATTERY_HEALTH_GOOD" />
+		<field name="BATTERY_HEALTH_OVERHEAT" />
+		<field name="BATTERY_HEALTH_OVER_VOLTAGE" />
+		<field name="BATTERY_HEALTH_UNKNOWN" />
+		<field name="BATTERY_HEALTH_UNSPECIFIED_FAILURE" />
+		<field name="BATTERY_PLUGGED_AC" />
+		<field name="BATTERY_PLUGGED_USB" />
+		<field name="BATTERY_STATUS_CHARGING" />
+		<field name="BATTERY_STATUS_DISCHARGING" />
+		<field name="BATTERY_STATUS_FULL" />
+		<field name="BATTERY_STATUS_NOT_CHARGING" />
+		<field name="BATTERY_STATUS_UNKNOWN" />
+		<field name="EXTRA_HEALTH" since="5" />
+		<field name="EXTRA_ICON_SMALL" since="5" />
+		<field name="EXTRA_LEVEL" since="5" />
+		<field name="EXTRA_PLUGGED" since="5" />
+		<field name="EXTRA_PRESENT" since="5" />
+		<field name="EXTRA_SCALE" since="5" />
+		<field name="EXTRA_STATUS" since="5" />
+		<field name="EXTRA_TECHNOLOGY" since="5" />
+		<field name="EXTRA_TEMPERATURE" since="5" />
+		<field name="EXTRA_VOLTAGE" since="5" />
+	</class>
+	<class name="android/os/Binder" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/IBinder" />
+		<method name="&lt;init>()V" />
+		<method name="attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V" />
+		<method name="clearCallingIdentity()J" />
+		<method name="dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" />
+		<method name="dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="3" />
+		<method name="dumpAsync(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="13" />
+		<method name="flushPendingCommands()V" />
+		<method name="getCallingPid()I" />
+		<method name="getCallingUid()I" />
+		<method name="getInterfaceDescriptor()Ljava/lang/String;" />
+		<method name="isBinderAlive()Z" />
+		<method name="joinThreadPool()V" />
+		<method name="linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V" />
+		<method name="onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
+		<method name="pingBinder()Z" />
+		<method name="queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;" />
+		<method name="restoreCallingIdentity(J)V" />
+		<method name="transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
+		<method name="unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z" />
+	</class>
+	<class name="android/os/Build" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getRadioVersion()Ljava/lang/String;" since="14" />
+		<field name="BOARD" />
+		<field name="BOOTLOADER" since="8" />
+		<field name="BRAND" />
+		<field name="CPU_ABI" since="4" />
+		<field name="CPU_ABI2" since="8" />
+		<field name="DEVICE" />
+		<field name="DISPLAY" since="3" />
+		<field name="FINGERPRINT" />
+		<field name="HARDWARE" since="8" />
+		<field name="HOST" />
+		<field name="ID" />
+		<field name="MANUFACTURER" since="4" />
+		<field name="MODEL" />
+		<field name="PRODUCT" />
+		<field name="RADIO" since="8" />
+		<field name="SERIAL" since="9" />
+		<field name="TAGS" />
+		<field name="TIME" />
+		<field name="TYPE" />
+		<field name="UNKNOWN" since="8" />
+		<field name="USER" />
+	</class>
+	<class name="android/os/Build$VERSION" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="CODENAME" since="4" />
+		<field name="INCREMENTAL" />
+		<field name="RELEASE" />
+		<field name="SDK" />
+		<field name="SDK_INT" since="4" />
+	</class>
+	<class name="android/os/Build$VERSION_CODES" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="BASE" />
+		<field name="BASE_1_1" />
+		<field name="CUPCAKE" />
+		<field name="CUR_DEVELOPMENT" />
+		<field name="DONUT" />
+		<field name="ECLAIR" since="5" />
+		<field name="ECLAIR_0_1" since="6" />
+		<field name="ECLAIR_MR1" since="7" />
+		<field name="FROYO" since="8" />
+		<field name="GINGERBREAD" since="9" />
+		<field name="GINGERBREAD_MR1" since="10" />
+		<field name="HONEYCOMB" since="11" />
+		<field name="HONEYCOMB_MR1" since="12" />
+		<field name="HONEYCOMB_MR2" since="13" />
+		<field name="ICE_CREAM_SANDWICH" since="14" />
+		<field name="ICE_CREAM_SANDWICH_MR1" since="15" />
+	</class>
+	<class name="android/os/Bundle" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/os/Bundle;)V" />
+		<method name="&lt;init>(Ljava/lang/ClassLoader;)V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="containsKey(Ljava/lang/String;)Z" />
+		<method name="describeContents()I" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getBoolean(Ljava/lang/String;)Z" />
+		<method name="getBoolean(Ljava/lang/String;Z)Z" />
+		<method name="getBooleanArray(Ljava/lang/String;)[Z" />
+		<method name="getBundle(Ljava/lang/String;)Landroid/os/Bundle;" />
+		<method name="getByte(Ljava/lang/String;)B" />
+		<method name="getByte(Ljava/lang/String;B)Ljava/lang/Byte;" />
+		<method name="getByteArray(Ljava/lang/String;)[B" />
+		<method name="getChar(Ljava/lang/String;)C" />
+		<method name="getChar(Ljava/lang/String;C)C" />
+		<method name="getCharArray(Ljava/lang/String;)[C" />
+		<method name="getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;" />
+		<method name="getCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" since="12" />
+		<method name="getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence;" since="8" />
+		<method name="getCharSequenceArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" since="8" />
+		<method name="getClassLoader()Ljava/lang/ClassLoader;" since="11" />
+		<method name="getDouble(Ljava/lang/String;)D" />
+		<method name="getDouble(Ljava/lang/String;D)D" />
+		<method name="getDoubleArray(Ljava/lang/String;)[D" />
+		<method name="getFloat(Ljava/lang/String;)F" />
+		<method name="getFloat(Ljava/lang/String;F)F" />
+		<method name="getFloatArray(Ljava/lang/String;)[F" />
+		<method name="getInt(Ljava/lang/String;)I" />
+		<method name="getInt(Ljava/lang/String;I)I" />
+		<method name="getIntArray(Ljava/lang/String;)[I" />
+		<method name="getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getLong(Ljava/lang/String;)J" />
+		<method name="getLong(Ljava/lang/String;J)J" />
+		<method name="getLongArray(Ljava/lang/String;)[J" />
+		<method name="getParcelable(Ljava/lang/String;)LT;" />
+		<method name="getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable;" />
+		<method name="getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getSerializable(Ljava/lang/String;)Ljava/io/Serializable;" />
+		<method name="getShort(Ljava/lang/String;)S" />
+		<method name="getShort(Ljava/lang/String;S)S" />
+		<method name="getShortArray(Ljava/lang/String;)[S" />
+		<method name="getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray;" />
+		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" since="12" />
+		<method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="hasFileDescriptors()Z" />
+		<method name="isEmpty()Z" />
+		<method name="keySet()Ljava/util/Set;" />
+		<method name="putAll(Landroid/os/Bundle;)V" />
+		<method name="putBoolean(Ljava/lang/String;Z)V" />
+		<method name="putBooleanArray(Ljava/lang/String;[Z)V" />
+		<method name="putBundle(Ljava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="putByte(Ljava/lang/String;B)V" />
+		<method name="putByteArray(Ljava/lang/String;[B)V" />
+		<method name="putChar(Ljava/lang/String;C)V" />
+		<method name="putCharArray(Ljava/lang/String;[C)V" />
+		<method name="putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V" />
+		<method name="putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V" since="8" />
+		<method name="putCharSequenceArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" since="8" />
+		<method name="putDouble(Ljava/lang/String;D)V" />
+		<method name="putDoubleArray(Ljava/lang/String;[D)V" />
+		<method name="putFloat(Ljava/lang/String;F)V" />
+		<method name="putFloatArray(Ljava/lang/String;[F)V" />
+		<method name="putInt(Ljava/lang/String;I)V" />
+		<method name="putIntArray(Ljava/lang/String;[I)V" />
+		<method name="putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" />
+		<method name="putLong(Ljava/lang/String;J)V" />
+		<method name="putLongArray(Ljava/lang/String;[J)V" />
+		<method name="putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V" />
+		<method name="putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V" />
+		<method name="putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" />
+		<method name="putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V" />
+		<method name="putShort(Ljava/lang/String;S)V" />
+		<method name="putShortArray(Ljava/lang/String;[S)V" />
+		<method name="putSparseParcelableArray(Ljava/lang/String;Landroid/util/SparseArray;)V" />
+		<method name="putString(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="putStringArray(Ljava/lang/String;[Ljava/lang/String;)V" />
+		<method name="putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="remove(Ljava/lang/String;)V" />
+		<method name="setClassLoader(Ljava/lang/ClassLoader;)V" />
+		<method name="size()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="EMPTY" />
+	</class>
+	<class name="android/os/ConditionVariable" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="block()V" />
+		<method name="block(J)Z" />
+		<method name="close()V" />
+		<method name="open()V" />
+	</class>
+	<class name="android/os/CountDownTimer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(JJ)V" />
+		<method name="cancel()V" />
+		<method name="onFinish()V" />
+		<method name="onTick(J)V" />
+		<method name="start()Landroid/os/CountDownTimer;" />
+	</class>
+	<class name="android/os/DeadObjectException" since="1">
+		<extends name="android/os/RemoteException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/os/Debug" since="1">
+		<extends name="java/lang/Object" />
+		<method name="changeDebugPort(I)V" />
+		<method name="dumpHprofData(Ljava/lang/String;)V" since="3" />
+		<method name="dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;[Ljava/lang/String;)Z" since="8" />
+		<method name="enableEmulatorTraceOutput()V" />
+		<method name="getBinderDeathObjectCount()I" />
+		<method name="getBinderLocalObjectCount()I" />
+		<method name="getBinderProxyObjectCount()I" />
+		<method name="getBinderReceivedTransactions()I" />
+		<method name="getBinderSentTransactions()I" />
+		<method name="getGlobalAllocCount()I" />
+		<method name="getGlobalAllocSize()I" />
+		<method name="getGlobalClassInitCount()I" since="8" />
+		<method name="getGlobalClassInitTime()I" since="8" />
+		<method name="getGlobalExternalAllocCount()I" />
+		<method name="getGlobalExternalAllocSize()I" />
+		<method name="getGlobalExternalFreedCount()I" />
+		<method name="getGlobalExternalFreedSize()I" />
+		<method name="getGlobalFreedCount()I" />
+		<method name="getGlobalFreedSize()I" />
+		<method name="getGlobalGcInvocationCount()I" />
+		<method name="getLoadedClassCount()I" />
+		<method name="getMemoryInfo(Landroid/os/Debug$MemoryInfo;)V" />
+		<method name="getNativeHeapAllocatedSize()J" />
+		<method name="getNativeHeapFreeSize()J" />
+		<method name="getNativeHeapSize()J" />
+		<method name="getPss()J" since="14" />
+		<method name="getThreadAllocCount()I" />
+		<method name="getThreadAllocSize()I" />
+		<method name="getThreadExternalAllocCount()I" />
+		<method name="getThreadExternalAllocSize()I" />
+		<method name="getThreadGcInvocationCount()I" />
+		<method name="isDebuggerConnected()Z" />
+		<method name="printLoadedClasses(I)V" />
+		<method name="resetAllCounts()V" />
+		<method name="resetGlobalAllocCount()V" />
+		<method name="resetGlobalAllocSize()V" />
+		<method name="resetGlobalClassInitCount()V" since="8" />
+		<method name="resetGlobalClassInitTime()V" since="8" />
+		<method name="resetGlobalExternalAllocCount()V" />
+		<method name="resetGlobalExternalAllocSize()V" />
+		<method name="resetGlobalExternalFreedCount()V" />
+		<method name="resetGlobalExternalFreedSize()V" />
+		<method name="resetGlobalFreedCount()V" />
+		<method name="resetGlobalFreedSize()V" />
+		<method name="resetGlobalGcInvocationCount()V" />
+		<method name="resetThreadAllocCount()V" />
+		<method name="resetThreadAllocSize()V" />
+		<method name="resetThreadExternalAllocCount()V" />
+		<method name="resetThreadExternalAllocSize()V" />
+		<method name="resetThreadGcInvocationCount()V" />
+		<method name="setAllocationLimit(I)I" />
+		<method name="setGlobalAllocationLimit(I)I" />
+		<method name="startAllocCounting()V" />
+		<method name="startMethodTracing()V" />
+		<method name="startMethodTracing(Ljava/lang/String;)V" />
+		<method name="startMethodTracing(Ljava/lang/String;I)V" />
+		<method name="startMethodTracing(Ljava/lang/String;II)V" />
+		<method name="startNativeTracing()V" />
+		<method name="stopAllocCounting()V" />
+		<method name="stopMethodTracing()V" />
+		<method name="stopNativeTracing()V" />
+		<method name="threadCpuTimeNanos()J" />
+		<method name="waitForDebugger()V" />
+		<method name="waitingForDebugger()Z" />
+		<field name="SHOW_CLASSLOADER" />
+		<field name="SHOW_FULL_DETAIL" />
+		<field name="SHOW_INITIALIZED" />
+		<field name="TRACE_COUNT_ALLOCS" />
+	</class>
+	<class name="android/os/Debug$InstructionCount" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="collect()Z" />
+		<method name="globalMethodInvocations()I" />
+		<method name="globalTotal()I" />
+		<method name="resetAndStart()Z" />
+	</class>
+	<class name="android/os/Debug$MemoryInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" since="5" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" since="5" />
+		<method name="getOtherLabel(I)Ljava/lang/String;" since="14" />
+		<method name="getOtherPrivateDirty(I)I" since="14" />
+		<method name="getOtherPss(I)I" since="14" />
+		<method name="getOtherSharedDirty(I)I" since="14" />
+		<method name="getTotalPrivateDirty()I" since="5" />
+		<method name="getTotalPss()I" since="5" />
+		<method name="getTotalSharedDirty()I" since="5" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" since="5" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="5" />
+		<field name="CREATOR" since="5" />
+		<field name="dalvikPrivateDirty" />
+		<field name="dalvikPss" />
+		<field name="dalvikSharedDirty" />
+		<field name="nativePrivateDirty" />
+		<field name="nativePss" />
+		<field name="nativeSharedDirty" />
+		<field name="otherPrivateDirty" />
+		<field name="otherPss" />
+		<field name="otherSharedDirty" />
+	</class>
+	<class name="android/os/DropBoxManager" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addData(Ljava/lang/String;[BI)V" />
+		<method name="addFile(Ljava/lang/String;Ljava/io/File;I)V" />
+		<method name="addText(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;" />
+		<method name="isTagEnabled(Ljava/lang/String;)Z" />
+		<field name="ACTION_DROPBOX_ENTRY_ADDED" since="11" />
+		<field name="EXTRA_TAG" since="11" />
+		<field name="EXTRA_TIME" since="11" />
+		<field name="IS_EMPTY" />
+		<field name="IS_GZIPPED" />
+		<field name="IS_TEXT" />
+	</class>
+	<class name="android/os/DropBoxManager$Entry" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<implements name="java/io/Closeable" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;J)V" />
+		<method name="&lt;init>(Ljava/lang/String;JLandroid/os/ParcelFileDescriptor;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;JLjava/io/File;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;JLjava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;J[BI)V" />
+		<method name="close()V" />
+		<method name="describeContents()I" />
+		<method name="getFlags()I" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getTag()Ljava/lang/String;" />
+		<method name="getText(I)Ljava/lang/String;" />
+		<method name="getTimeMillis()J" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/os/Environment" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getDataDirectory()Ljava/io/File;" />
+		<method name="getDownloadCacheDirectory()Ljava/io/File;" />
+		<method name="getExternalStorageDirectory()Ljava/io/File;" />
+		<method name="getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;" since="8" />
+		<method name="getExternalStorageState()Ljava/lang/String;" />
+		<method name="getRootDirectory()Ljava/io/File;" />
+		<method name="isExternalStorageEmulated()Z" since="11" />
+		<method name="isExternalStorageRemovable()Z" since="9" />
+		<field name="DIRECTORY_ALARMS" since="8" />
+		<field name="DIRECTORY_DCIM" since="8" />
+		<field name="DIRECTORY_DOWNLOADS" since="8" />
+		<field name="DIRECTORY_MOVIES" since="8" />
+		<field name="DIRECTORY_MUSIC" since="8" />
+		<field name="DIRECTORY_NOTIFICATIONS" since="8" />
+		<field name="DIRECTORY_PICTURES" since="8" />
+		<field name="DIRECTORY_PODCASTS" since="8" />
+		<field name="DIRECTORY_RINGTONES" since="8" />
+		<field name="MEDIA_BAD_REMOVAL" />
+		<field name="MEDIA_CHECKING" since="3" />
+		<field name="MEDIA_MOUNTED" />
+		<field name="MEDIA_MOUNTED_READ_ONLY" />
+		<field name="MEDIA_NOFS" since="3" />
+		<field name="MEDIA_REMOVED" />
+		<field name="MEDIA_SHARED" />
+		<field name="MEDIA_UNMOUNTABLE" />
+		<field name="MEDIA_UNMOUNTED" />
+	</class>
+	<class name="android/os/FileObserver" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="onEvent(ILjava/lang/String;)V" />
+		<method name="startWatching()V" />
+		<method name="stopWatching()V" />
+		<field name="ACCESS" />
+		<field name="ALL_EVENTS" />
+		<field name="ATTRIB" />
+		<field name="CLOSE_NOWRITE" />
+		<field name="CLOSE_WRITE" />
+		<field name="CREATE" />
+		<field name="DELETE" />
+		<field name="DELETE_SELF" />
+		<field name="MODIFY" />
+		<field name="MOVED_FROM" />
+		<field name="MOVED_TO" />
+		<field name="MOVE_SELF" />
+		<field name="OPEN" />
+	</class>
+	<class name="android/os/Handler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Handler$Callback;)V" since="3" />
+		<method name="&lt;init>(Landroid/os/Looper;)V" />
+		<method name="&lt;init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V" since="3" />
+		<method name="dispatchMessage(Landroid/os/Message;)V" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getLooper()Landroid/os/Looper;" />
+		<method name="getMessageName(Landroid/os/Message;)Ljava/lang/String;" since="14" />
+		<method name="handleMessage(Landroid/os/Message;)V" />
+		<method name="hasMessages(I)Z" />
+		<method name="hasMessages(ILjava/lang/Object;)Z" />
+		<method name="obtainMessage()Landroid/os/Message;" />
+		<method name="obtainMessage(I)Landroid/os/Message;" />
+		<method name="obtainMessage(III)Landroid/os/Message;" />
+		<method name="obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;" />
+		<method name="obtainMessage(ILjava/lang/Object;)Landroid/os/Message;" />
+		<method name="post(Ljava/lang/Runnable;)Z" />
+		<method name="postAtFrontOfQueue(Ljava/lang/Runnable;)Z" />
+		<method name="postAtTime(Ljava/lang/Runnable;J)Z" />
+		<method name="postAtTime(Ljava/lang/Runnable;Ljava/lang/Object;J)Z" />
+		<method name="postDelayed(Ljava/lang/Runnable;J)Z" />
+		<method name="removeCallbacks(Ljava/lang/Runnable;)V" />
+		<method name="removeCallbacks(Ljava/lang/Runnable;Ljava/lang/Object;)V" />
+		<method name="removeCallbacksAndMessages(Ljava/lang/Object;)V" />
+		<method name="removeMessages(I)V" />
+		<method name="removeMessages(ILjava/lang/Object;)V" />
+		<method name="sendEmptyMessage(I)Z" />
+		<method name="sendEmptyMessageAtTime(IJ)Z" />
+		<method name="sendEmptyMessageDelayed(IJ)Z" />
+		<method name="sendMessage(Landroid/os/Message;)Z" />
+		<method name="sendMessageAtFrontOfQueue(Landroid/os/Message;)Z" />
+		<method name="sendMessageAtTime(Landroid/os/Message;J)Z" />
+		<method name="sendMessageDelayed(Landroid/os/Message;J)Z" />
+	</class>
+	<class name="android/os/Handler$Callback" since="3">
+		<method name="handleMessage(Landroid/os/Message;)Z" />
+	</class>
+	<class name="android/os/HandlerThread" since="1">
+		<extends name="java/lang/Thread" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="getLooper()Landroid/os/Looper;" />
+		<method name="getThreadId()I" />
+		<method name="onLooperPrepared()V" />
+		<method name="quit()Z" since="5" />
+	</class>
+	<class name="android/os/IBinder" since="1">
+		<method name="dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="3" />
+		<method name="dumpAsync(Ljava/io/FileDescriptor;[Ljava/lang/String;)V" since="13" />
+		<method name="getInterfaceDescriptor()Ljava/lang/String;" />
+		<method name="isBinderAlive()Z" />
+		<method name="linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V" />
+		<method name="pingBinder()Z" />
+		<method name="queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;" />
+		<method name="transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z" />
+		<method name="unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z" />
+		<field name="DUMP_TRANSACTION" />
+		<field name="FIRST_CALL_TRANSACTION" />
+		<field name="FLAG_ONEWAY" />
+		<field name="INTERFACE_TRANSACTION" />
+		<field name="LAST_CALL_TRANSACTION" />
+		<field name="LIKE_TRANSACTION" since="15" />
+		<field name="PING_TRANSACTION" />
+		<field name="TWEET_TRANSACTION" since="13" />
+	</class>
+	<class name="android/os/IBinder$DeathRecipient" since="1">
+		<method name="binderDied()V" />
+	</class>
+	<class name="android/os/IInterface" since="1">
+		<method name="asBinder()Landroid/os/IBinder;" />
+	</class>
+	<class name="android/os/Looper" since="1">
+		<extends name="java/lang/Object" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getMainLooper()Landroid/os/Looper;" />
+		<method name="getThread()Ljava/lang/Thread;" since="3" />
+		<method name="loop()V" />
+		<method name="myLooper()Landroid/os/Looper;" />
+		<method name="myQueue()Landroid/os/MessageQueue;" />
+		<method name="prepare()V" />
+		<method name="prepareMainLooper()V" />
+		<method name="quit()V" />
+		<method name="setMessageLogging(Landroid/util/Printer;)V" />
+	</class>
+	<class name="android/os/MemoryFile" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="allowPurging(Z)Z" />
+		<method name="close()V" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="isPurgingAllowed()Z" />
+		<method name="length()I" />
+		<method name="readBytes([BIII)I" />
+		<method name="writeBytes([BIII)V" />
+	</class>
+	<class name="android/os/Message" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="copyFrom(Landroid/os/Message;)V" />
+		<method name="describeContents()I" />
+		<method name="getCallback()Ljava/lang/Runnable;" />
+		<method name="getData()Landroid/os/Bundle;" />
+		<method name="getTarget()Landroid/os/Handler;" />
+		<method name="getWhen()J" />
+		<method name="obtain()Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Handler;)Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Handler;I)Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Handler;III)Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Handler;ILjava/lang/Object;)Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/os/Message;" />
+		<method name="obtain(Landroid/os/Message;)Landroid/os/Message;" />
+		<method name="peekData()Landroid/os/Bundle;" />
+		<method name="recycle()V" />
+		<method name="sendToTarget()V" />
+		<method name="setData(Landroid/os/Bundle;)V" />
+		<method name="setTarget(Landroid/os/Handler;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="arg1" />
+		<field name="arg2" />
+		<field name="obj" />
+		<field name="replyTo" />
+		<field name="what" />
+	</class>
+	<class name="android/os/MessageQueue" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V" />
+		<method name="removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V" />
+	</class>
+	<class name="android/os/MessageQueue$IdleHandler" since="1">
+		<method name="queueIdle()Z" />
+	</class>
+	<class name="android/os/Messenger" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Handler;)V" />
+		<method name="&lt;init>(Landroid/os/IBinder;)V" />
+		<method name="describeContents()I" />
+		<method name="getBinder()Landroid/os/IBinder;" />
+		<method name="readMessengerOrNullFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger;" />
+		<method name="send(Landroid/os/Message;)V" />
+		<method name="writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/os/NetworkOnMainThreadException" since="11">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/os/Parcel" since="1">
+		<extends name="java/lang/Object" />
+		<method name="appendFrom(Landroid/os/Parcel;II)V" />
+		<method name="createBinderArray()[Landroid/os/IBinder;" />
+		<method name="createBinderArrayList()Ljava/util/ArrayList;" />
+		<method name="createBooleanArray()[Z" />
+		<method name="createByteArray()[B" />
+		<method name="createCharArray()[C" />
+		<method name="createDoubleArray()[D" />
+		<method name="createFloatArray()[F" />
+		<method name="createIntArray()[I" />
+		<method name="createLongArray()[J" />
+		<method name="createStringArray()[Ljava/lang/String;" />
+		<method name="createStringArrayList()Ljava/util/ArrayList;" />
+		<method name="createTypedArray(Landroid/os/Parcelable$Creator;)[LT;" />
+		<method name="createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;" />
+		<method name="dataAvail()I" />
+		<method name="dataCapacity()I" />
+		<method name="dataPosition()I" />
+		<method name="dataSize()I" />
+		<method name="enforceInterface(Ljava/lang/String;)V" />
+		<method name="hasFileDescriptors()Z" />
+		<method name="marshall()[B" />
+		<method name="obtain()Landroid/os/Parcel;" />
+		<method name="obtain(I)Landroid/os/Parcel;" />
+		<method name="readArray(Ljava/lang/ClassLoader;)[Ljava/lang/Object;" />
+		<method name="readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList;" />
+		<method name="readBinderArray([Landroid/os/IBinder;)V" />
+		<method name="readBinderList(Ljava/util/List;)V" />
+		<method name="readBooleanArray([Z)V" />
+		<method name="readBundle()Landroid/os/Bundle;" />
+		<method name="readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle;" />
+		<method name="readByte()B" />
+		<method name="readByteArray([B)V" />
+		<method name="readCharArray([C)V" />
+		<method name="readDouble()D" />
+		<method name="readDoubleArray([D)V" />
+		<method name="readException()V" />
+		<method name="readException(ILjava/lang/String;)V" />
+		<method name="readFileDescriptor()Landroid/os/ParcelFileDescriptor;" />
+		<method name="readFloat()F" />
+		<method name="readFloatArray([F)V" />
+		<method name="readHashMap(Ljava/lang/ClassLoader;)Ljava/util/HashMap;" />
+		<method name="readInt()I" />
+		<method name="readIntArray([I)V" />
+		<method name="readList(Ljava/util/List;Ljava/lang/ClassLoader;)V" />
+		<method name="readLong()J" />
+		<method name="readLongArray([J)V" />
+		<method name="readMap(Ljava/util/Map;Ljava/lang/ClassLoader;)V" />
+		<method name="readParcelable(Ljava/lang/ClassLoader;)LT;" />
+		<method name="readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os/Parcelable;" />
+		<method name="readSerializable()Ljava/io/Serializable;" />
+		<method name="readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;" />
+		<method name="readSparseBooleanArray()Landroid/util/SparseBooleanArray;" />
+		<method name="readString()Ljava/lang/String;" />
+		<method name="readStringArray([Ljava/lang/String;)V" />
+		<method name="readStringList(Ljava/util/List;)V" />
+		<method name="readStrongBinder()Landroid/os/IBinder;" />
+		<method name="readTypedArray([LT;Landroid/os/Parcelable$Creator;)V" />
+		<method name="readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V" />
+		<method name="readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;" />
+		<method name="recycle()V" />
+		<method name="setDataCapacity(I)V" />
+		<method name="setDataPosition(I)V" />
+		<method name="setDataSize(I)V" />
+		<method name="unmarshall([BII)V" />
+		<method name="writeArray([Ljava/lang/Object;)V" />
+		<method name="writeBinderArray([Landroid/os/IBinder;)V" />
+		<method name="writeBinderList(Ljava/util/List;)V" />
+		<method name="writeBooleanArray([Z)V" />
+		<method name="writeBundle(Landroid/os/Bundle;)V" />
+		<method name="writeByte(B)V" />
+		<method name="writeByteArray([B)V" />
+		<method name="writeByteArray([BII)V" />
+		<method name="writeCharArray([C)V" />
+		<method name="writeDouble(D)V" />
+		<method name="writeDoubleArray([D)V" />
+		<method name="writeException(Ljava/lang/Exception;)V" />
+		<method name="writeFileDescriptor(Ljava/io/FileDescriptor;)V" />
+		<method name="writeFloat(F)V" />
+		<method name="writeFloatArray([F)V" />
+		<method name="writeInt(I)V" />
+		<method name="writeIntArray([I)V" />
+		<method name="writeInterfaceToken(Ljava/lang/String;)V" />
+		<method name="writeList(Ljava/util/List;)V" />
+		<method name="writeLong(J)V" />
+		<method name="writeLongArray([J)V" />
+		<method name="writeMap(Ljava/util/Map;)V" />
+		<method name="writeNoException()V" />
+		<method name="writeParcelable(Landroid/os/Parcelable;I)V" />
+		<method name="writeParcelableArray([LT;I)V" />
+		<method name="writeSerializable(Ljava/io/Serializable;)V" />
+		<method name="writeSparseArray(Landroid/util/SparseArray;)V" />
+		<method name="writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V" />
+		<method name="writeString(Ljava/lang/String;)V" />
+		<method name="writeStringArray([Ljava/lang/String;)V" />
+		<method name="writeStringList(Ljava/util/List;)V" />
+		<method name="writeStrongBinder(Landroid/os/IBinder;)V" />
+		<method name="writeStrongInterface(Landroid/os/IInterface;)V" />
+		<method name="writeTypedArray([LT;I)V" />
+		<method name="writeTypedList(Ljava/util/List;)V" />
+		<method name="writeValue(Ljava/lang/Object;)V" />
+		<field name="STRING_CREATOR" />
+	</class>
+	<class name="android/os/ParcelFileDescriptor" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
+		<method name="adoptFd(I)Landroid/os/ParcelFileDescriptor;" since="13" />
+		<method name="close()V" />
+		<method name="createPipe()[Landroid/os/ParcelFileDescriptor;" since="9" />
+		<method name="describeContents()I" />
+		<method name="detachFd()I" since="12" />
+		<method name="dup()Landroid/os/ParcelFileDescriptor;" since="14" />
+		<method name="dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor;" since="13" />
+		<method name="fromDatagramSocket(Ljava/net/DatagramSocket;)Landroid/os/ParcelFileDescriptor;" since="14" />
+		<method name="fromFd(I)Landroid/os/ParcelFileDescriptor;" since="13" />
+		<method name="fromSocket(Ljava/net/Socket;)Landroid/os/ParcelFileDescriptor;" />
+		<method name="getFd()I" since="12" />
+		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
+		<method name="getStatSize()J" since="3" />
+		<method name="open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="MODE_APPEND" since="3" />
+		<field name="MODE_CREATE" />
+		<field name="MODE_READ_ONLY" />
+		<field name="MODE_READ_WRITE" />
+		<field name="MODE_TRUNCATE" />
+		<field name="MODE_WORLD_READABLE" />
+		<field name="MODE_WORLD_WRITEABLE" />
+		<field name="MODE_WRITE_ONLY" />
+	</class>
+	<class name="android/os/ParcelFileDescriptor$AutoCloseInputStream" since="1">
+		<extends name="java/io/FileInputStream" />
+		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
+	</class>
+	<class name="android/os/ParcelFileDescriptor$AutoCloseOutputStream" since="1">
+		<extends name="java/io/FileOutputStream" />
+		<method name="&lt;init>(Landroid/os/ParcelFileDescriptor;)V" />
+	</class>
+	<class name="android/os/ParcelFormatException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/os/ParcelUuid" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Ljava/util/UUID;)V" />
+		<method name="describeContents()I" />
+		<method name="fromString(Ljava/lang/String;)Landroid/os/ParcelUuid;" />
+		<method name="getUuid()Ljava/util/UUID;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/os/Parcelable" since="1">
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CONTENTS_FILE_DESCRIPTOR" />
+		<field name="PARCELABLE_WRITE_RETURN_VALUE" />
+	</class>
+	<class name="android/os/Parcelable$ClassLoaderCreator" since="13">
+		<implements name="android/os/Parcelable$Creator" />
+		<method name="createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)LT;" />
+	</class>
+	<class name="android/os/Parcelable$Creator" since="1">
+		<method name="createFromParcel(Landroid/os/Parcel;)LT;" />
+		<method name="newArray(I)[LT;" />
+	</class>
+	<class name="android/os/PatternMatcher" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="describeContents()I" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getType()I" />
+		<method name="match(Ljava/lang/String;)Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="PATTERN_LITERAL" />
+		<field name="PATTERN_PREFIX" />
+		<field name="PATTERN_SIMPLE_GLOB" />
+	</class>
+	<class name="android/os/PowerManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="goToSleep(J)V" />
+		<method name="isScreenOn()Z" since="7" />
+		<method name="newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;" />
+		<method name="reboot(Ljava/lang/String;)V" since="8" />
+		<method name="userActivity(JZ)V" />
+		<field name="ACQUIRE_CAUSES_WAKEUP" />
+		<field name="FULL_WAKE_LOCK" />
+		<field name="ON_AFTER_RELEASE" />
+		<field name="PARTIAL_WAKE_LOCK" />
+		<field name="SCREEN_BRIGHT_WAKE_LOCK" />
+		<field name="SCREEN_DIM_WAKE_LOCK" />
+	</class>
+	<class name="android/os/PowerManager$WakeLock" since="1">
+		<extends name="java/lang/Object" />
+		<method name="acquire()V" />
+		<method name="acquire(J)V" />
+		<method name="isHeld()Z" />
+		<method name="release()V" />
+		<method name="setReferenceCounted(Z)V" />
+		<method name="setWorkSource(Landroid/os/WorkSource;)V" since="9" />
+	</class>
+	<class name="android/os/Process" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getElapsedCpuTime()J" />
+		<method name="getGidForName(Ljava/lang/String;)I" />
+		<method name="getThreadPriority(I)I" />
+		<method name="getUidForName(Ljava/lang/String;)I" />
+		<method name="killProcess(I)V" />
+		<method name="myPid()I" />
+		<method name="myTid()I" />
+		<method name="myUid()I" since="2" />
+		<method name="sendSignal(II)V" />
+		<method name="setThreadPriority(I)V" />
+		<method name="setThreadPriority(II)V" />
+		<method name="supportsProcesses()Z" />
+		<field name="BLUETOOTH_GID" />
+		<field name="FIRST_APPLICATION_UID" />
+		<field name="LAST_APPLICATION_UID" />
+		<field name="PHONE_UID" />
+		<field name="SIGNAL_KILL" />
+		<field name="SIGNAL_QUIT" />
+		<field name="SIGNAL_USR1" />
+		<field name="SYSTEM_UID" />
+		<field name="THREAD_PRIORITY_AUDIO" />
+		<field name="THREAD_PRIORITY_BACKGROUND" />
+		<field name="THREAD_PRIORITY_DEFAULT" />
+		<field name="THREAD_PRIORITY_DISPLAY" />
+		<field name="THREAD_PRIORITY_FOREGROUND" />
+		<field name="THREAD_PRIORITY_LESS_FAVORABLE" />
+		<field name="THREAD_PRIORITY_LOWEST" />
+		<field name="THREAD_PRIORITY_MORE_FAVORABLE" />
+		<field name="THREAD_PRIORITY_URGENT_AUDIO" />
+		<field name="THREAD_PRIORITY_URGENT_DISPLAY" />
+	</class>
+	<class name="android/os/RecoverySystem" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="installPackage(Landroid/content/Context;Ljava/io/File;)V" />
+		<method name="rebootWipeCache(Landroid/content/Context;)V" since="14" />
+		<method name="rebootWipeUserData(Landroid/content/Context;)V" />
+		<method name="verifyPackage(Ljava/io/File;Landroid/os/RecoverySystem$ProgressListener;Ljava/io/File;)V" />
+	</class>
+	<class name="android/os/RecoverySystem$ProgressListener" since="8">
+		<method name="onProgress(I)V" />
+	</class>
+	<class name="android/os/RemoteCallbackList" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="beginBroadcast()I" />
+		<method name="finishBroadcast()V" />
+		<method name="getBroadcastCookie(I)Ljava/lang/Object;" since="4" />
+		<method name="getBroadcastItem(I)LE;" />
+		<method name="kill()V" />
+		<method name="onCallbackDied(LE;)V" />
+		<method name="onCallbackDied(LE;Ljava/lang/Object;)V" since="4" />
+		<method name="register(LE;)Z" />
+		<method name="register(LE;Ljava/lang/Object;)Z" since="4" />
+		<method name="unregister(LE;)Z" />
+	</class>
+	<class name="android/os/RemoteException" since="1">
+		<extends name="android/util/AndroidException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" since="15" />
+	</class>
+	<class name="android/os/ResultReceiver" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Handler;)V" />
+		<method name="describeContents()I" />
+		<method name="onReceiveResult(ILandroid/os/Bundle;)V" />
+		<method name="send(ILandroid/os/Bundle;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/os/StatFs" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getAvailableBlocks()I" />
+		<method name="getBlockCount()I" />
+		<method name="getBlockSize()I" />
+		<method name="getFreeBlocks()I" />
+		<method name="restat(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/os/StrictMode" since="9">
+		<extends name="java/lang/Object" />
+		<method name="allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;" />
+		<method name="allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy;" />
+		<method name="enableDefaults()V" />
+		<method name="getThreadPolicy()Landroid/os/StrictMode$ThreadPolicy;" />
+		<method name="getVmPolicy()Landroid/os/StrictMode$VmPolicy;" />
+		<method name="noteSlowCall(Ljava/lang/String;)V" since="11" />
+		<method name="setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V" />
+		<method name="setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V" />
+	</class>
+	<class name="android/os/StrictMode$ThreadPolicy" since="9">
+		<extends name="java/lang/Object" />
+		<field name="LAX" />
+	</class>
+	<class name="android/os/StrictMode$ThreadPolicy$Builder" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/StrictMode$ThreadPolicy;)V" />
+		<method name="build()Landroid/os/StrictMode$ThreadPolicy;" />
+		<method name="detectAll()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="detectCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
+		<method name="detectDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="detectDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="detectNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="penaltyDeath()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="penaltyDeathOnNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
+		<method name="penaltyDialog()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="penaltyDropBox()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="penaltyFlashScreen()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
+		<method name="penaltyLog()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="permitAll()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="permitCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;" since="11" />
+		<method name="permitDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="permitDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+		<method name="permitNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;" />
+	</class>
+	<class name="android/os/StrictMode$VmPolicy" since="9">
+		<extends name="java/lang/Object" />
+		<field name="LAX" />
+	</class>
+	<class name="android/os/StrictMode$VmPolicy$Builder" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/StrictMode$VmPolicy;)V" since="11" />
+		<method name="build()Landroid/os/StrictMode$VmPolicy;" />
+		<method name="detectActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
+		<method name="detectAll()Landroid/os/StrictMode$VmPolicy$Builder;" />
+		<method name="detectLeakedClosableObjects()Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
+		<method name="detectLeakedSqlLiteObjects()Landroid/os/StrictMode$VmPolicy$Builder;" />
+		<method name="penaltyDeath()Landroid/os/StrictMode$VmPolicy$Builder;" />
+		<method name="penaltyDropBox()Landroid/os/StrictMode$VmPolicy$Builder;" />
+		<method name="penaltyLog()Landroid/os/StrictMode$VmPolicy$Builder;" />
+		<method name="setClassInstanceLimit(Ljava/lang/Class;I)Landroid/os/StrictMode$VmPolicy$Builder;" since="11" />
+	</class>
+	<class name="android/os/SystemClock" since="1">
+		<extends name="java/lang/Object" />
+		<method name="currentThreadTimeMillis()J" />
+		<method name="elapsedRealtime()J" />
+		<method name="setCurrentTimeMillis(J)Z" />
+		<method name="sleep(J)V" />
+		<method name="uptimeMillis()J" />
+	</class>
+	<class name="android/os/TokenWatcher" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/os/Handler;Ljava/lang/String;)V" />
+		<method name="acquire(Landroid/os/IBinder;Ljava/lang/String;)V" />
+		<method name="acquired()V" />
+		<method name="cleanup(Landroid/os/IBinder;Z)V" />
+		<method name="dump()V" />
+		<method name="isAcquired()Z" />
+		<method name="release(Landroid/os/IBinder;)V" />
+		<method name="released()V" />
+	</class>
+	<class name="android/os/TransactionTooLargeException" since="15">
+		<extends name="android/os/RemoteException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/os/Vibrator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="cancel()V" />
+		<method name="hasVibrator()Z" since="11" />
+		<method name="vibrate(J)V" />
+		<method name="vibrate([JI)V" />
+	</class>
+	<class name="android/os/WorkSource" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/WorkSource;)V" />
+		<method name="add(Landroid/os/WorkSource;)Z" />
+		<method name="clear()V" />
+		<method name="describeContents()I" />
+		<method name="diff(Landroid/os/WorkSource;)Z" />
+		<method name="remove(Landroid/os/WorkSource;)Z" />
+		<method name="set(Landroid/os/WorkSource;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/os/storage/OnObbStateChangeListener" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="onObbStateChange(Ljava/lang/String;I)V" />
+		<field name="ERROR_ALREADY_MOUNTED" />
+		<field name="ERROR_COULD_NOT_MOUNT" />
+		<field name="ERROR_COULD_NOT_UNMOUNT" />
+		<field name="ERROR_INTERNAL" />
+		<field name="ERROR_NOT_MOUNTED" />
+		<field name="ERROR_PERMISSION_DENIED" />
+		<field name="MOUNTED" />
+		<field name="UNMOUNTED" />
+	</class>
+	<class name="android/os/storage/StorageManager" since="9">
+		<extends name="java/lang/Object" />
+		<method name="getMountedObbPath(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="isObbMounted(Ljava/lang/String;)Z" />
+		<method name="mountObb(Ljava/lang/String;Ljava/lang/String;Landroid/os/storage/OnObbStateChangeListener;)Z" />
+		<method name="unmountObb(Ljava/lang/String;ZLandroid/os/storage/OnObbStateChangeListener;)Z" />
+	</class>
+	<class name="android/preference/CheckBoxPreference" since="1">
+		<extends name="android/preference/Preference" />
+		<extends name="android/preference/TwoStatePreference" since="14" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getDisableDependentsState()Z" />
+		<method name="getSummaryOff()Ljava/lang/CharSequence;" />
+		<method name="getSummaryOn()Ljava/lang/CharSequence;" />
+		<method name="isChecked()Z" />
+		<method name="setChecked(Z)V" />
+		<method name="setDisableDependentsState(Z)V" />
+		<method name="setSummaryOff(I)V" />
+		<method name="setSummaryOff(Ljava/lang/CharSequence;)V" />
+		<method name="setSummaryOn(I)V" />
+		<method name="setSummaryOn(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/preference/DialogPreference" since="1">
+		<extends name="android/preference/Preference" />
+		<implements name="android/content/DialogInterface$OnClickListener" />
+		<implements name="android/content/DialogInterface$OnDismissListener" />
+		<implements name="android/preference/PreferenceManager$OnActivityDestroyListener" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getDialog()Landroid/app/Dialog;" since="3" />
+		<method name="getDialogIcon()Landroid/graphics/drawable/Drawable;" />
+		<method name="getDialogLayoutResource()I" />
+		<method name="getDialogMessage()Ljava/lang/CharSequence;" />
+		<method name="getDialogTitle()Ljava/lang/CharSequence;" />
+		<method name="getNegativeButtonText()Ljava/lang/CharSequence;" />
+		<method name="getPositiveButtonText()Ljava/lang/CharSequence;" />
+		<method name="onActivityDestroy()V" />
+		<method name="onBindDialogView(Landroid/view/View;)V" />
+		<method name="onClick(Landroid/content/DialogInterface;I)V" />
+		<method name="onCreateDialogView()Landroid/view/View;" />
+		<method name="onDialogClosed(Z)V" />
+		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
+		<method name="onPrepareDialogBuilder(Landroid/app/AlertDialog$Builder;)V" />
+		<method name="setDialogIcon(I)V" />
+		<method name="setDialogIcon(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setDialogLayoutResource(I)V" />
+		<method name="setDialogMessage(I)V" />
+		<method name="setDialogMessage(Ljava/lang/CharSequence;)V" />
+		<method name="setDialogTitle(I)V" />
+		<method name="setDialogTitle(Ljava/lang/CharSequence;)V" />
+		<method name="setNegativeButtonText(I)V" />
+		<method name="setNegativeButtonText(Ljava/lang/CharSequence;)V" />
+		<method name="setPositiveButtonText(I)V" />
+		<method name="setPositiveButtonText(Ljava/lang/CharSequence;)V" />
+		<method name="showDialog(Landroid/os/Bundle;)V" />
+	</class>
+	<class name="android/preference/EditTextPreference" since="1">
+		<extends name="android/preference/DialogPreference" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getEditText()Landroid/widget/EditText;" />
+		<method name="getText()Ljava/lang/String;" />
+		<method name="onAddEditTextToDialogView(Landroid/view/View;Landroid/widget/EditText;)V" />
+		<method name="setText(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/preference/ListPreference" since="1">
+		<extends name="android/preference/DialogPreference" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="findIndexOfValue(Ljava/lang/String;)I" />
+		<method name="getEntries()[Ljava/lang/CharSequence;" />
+		<method name="getEntry()Ljava/lang/CharSequence;" />
+		<method name="getEntryValues()[Ljava/lang/CharSequence;" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="setEntries(I)V" />
+		<method name="setEntries([Ljava/lang/CharSequence;)V" />
+		<method name="setEntryValues(I)V" />
+		<method name="setEntryValues([Ljava/lang/CharSequence;)V" />
+		<method name="setValue(Ljava/lang/String;)V" />
+		<method name="setValueIndex(I)V" />
+	</class>
+	<class name="android/preference/MultiSelectListPreference" since="11">
+		<extends name="android/preference/DialogPreference" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="findIndexOfValue(Ljava/lang/String;)I" />
+		<method name="getEntries()[Ljava/lang/CharSequence;" />
+		<method name="getEntryValues()[Ljava/lang/CharSequence;" />
+		<method name="getValues()Ljava/util/Set;" />
+		<method name="setEntries(I)V" />
+		<method name="setEntries([Ljava/lang/CharSequence;)V" />
+		<method name="setEntryValues(I)V" />
+		<method name="setEntryValues([Ljava/lang/CharSequence;)V" />
+		<method name="setValues(Ljava/util/Set;)V" />
+	</class>
+	<class name="android/preference/Preference" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="callChangeListener(Ljava/lang/Object;)Z" />
+		<method name="compareTo(Landroid/preference/Preference;)I" />
+		<method name="findPreferenceInHierarchy(Ljava/lang/String;)Landroid/preference/Preference;" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getDependency()Ljava/lang/String;" />
+		<method name="getEditor()Landroid/content/SharedPreferences$Editor;" />
+		<method name="getExtras()Landroid/os/Bundle;" since="11" />
+		<method name="getFragment()Ljava/lang/String;" since="11" />
+		<method name="getIcon()Landroid/graphics/drawable/Drawable;" since="11" />
+		<method name="getIntent()Landroid/content/Intent;" />
+		<method name="getKey()Ljava/lang/String;" />
+		<method name="getLayoutResource()I" />
+		<method name="getOnPreferenceChangeListener()Landroid/preference/Preference$OnPreferenceChangeListener;" />
+		<method name="getOnPreferenceClickListener()Landroid/preference/Preference$OnPreferenceClickListener;" />
+		<method name="getOrder()I" />
+		<method name="getPersistedBoolean(Z)Z" />
+		<method name="getPersistedFloat(F)F" />
+		<method name="getPersistedInt(I)I" />
+		<method name="getPersistedLong(J)J" />
+		<method name="getPersistedString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getPreferenceManager()Landroid/preference/PreferenceManager;" />
+		<method name="getSharedPreferences()Landroid/content/SharedPreferences;" />
+		<method name="getShouldDisableView()Z" />
+		<method name="getSummary()Ljava/lang/CharSequence;" />
+		<method name="getTitle()Ljava/lang/CharSequence;" />
+		<method name="getTitleRes()I" since="14" />
+		<method name="getView(Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getWidgetLayoutResource()I" />
+		<method name="hasKey()Z" />
+		<method name="isEnabled()Z" />
+		<method name="isPersistent()Z" />
+		<method name="isSelectable()Z" />
+		<method name="notifyChanged()V" />
+		<method name="notifyDependencyChange(Z)V" />
+		<method name="notifyHierarchyChanged()V" />
+		<method name="onAttachedToActivity()V" />
+		<method name="onAttachedToHierarchy(Landroid/preference/PreferenceManager;)V" />
+		<method name="onBindView(Landroid/view/View;)V" />
+		<method name="onClick()V" />
+		<method name="onCreateView(Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="onDependencyChanged(Landroid/preference/Preference;Z)V" />
+		<method name="onGetDefaultValue(Landroid/content/res/TypedArray;I)Ljava/lang/Object;" />
+		<method name="onPrepareForRemoval()V" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
+		<method name="onSetInitialValue(ZLjava/lang/Object;)V" />
+		<method name="peekExtras()Landroid/os/Bundle;" since="11" />
+		<method name="persistBoolean(Z)Z" />
+		<method name="persistFloat(F)Z" />
+		<method name="persistInt(I)Z" />
+		<method name="persistLong(J)Z" />
+		<method name="persistString(Ljava/lang/String;)Z" />
+		<method name="restoreHierarchyState(Landroid/os/Bundle;)V" />
+		<method name="saveHierarchyState(Landroid/os/Bundle;)V" />
+		<method name="setDefaultValue(Ljava/lang/Object;)V" />
+		<method name="setDependency(Ljava/lang/String;)V" />
+		<method name="setEnabled(Z)V" />
+		<method name="setFragment(Ljava/lang/String;)V" since="11" />
+		<method name="setIcon(I)V" since="11" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)V" since="11" />
+		<method name="setIntent(Landroid/content/Intent;)V" />
+		<method name="setKey(Ljava/lang/String;)V" />
+		<method name="setLayoutResource(I)V" />
+		<method name="setOnPreferenceChangeListener(Landroid/preference/Preference$OnPreferenceChangeListener;)V" />
+		<method name="setOnPreferenceClickListener(Landroid/preference/Preference$OnPreferenceClickListener;)V" />
+		<method name="setOrder(I)V" />
+		<method name="setPersistent(Z)V" />
+		<method name="setSelectable(Z)V" />
+		<method name="setShouldDisableView(Z)V" />
+		<method name="setSummary(I)V" />
+		<method name="setSummary(Ljava/lang/CharSequence;)V" />
+		<method name="setTitle(I)V" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+		<method name="setWidgetLayoutResource(I)V" />
+		<method name="shouldCommit()Z" />
+		<method name="shouldDisableDependents()Z" />
+		<method name="shouldPersist()Z" />
+		<field name="DEFAULT_ORDER" />
+	</class>
+	<class name="android/preference/Preference$BaseSavedState" since="1">
+		<extends name="android/view/AbsSavedState" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/preference/Preference$OnPreferenceChangeListener" since="1">
+		<method name="onPreferenceChange(Landroid/preference/Preference;Ljava/lang/Object;)Z" />
+	</class>
+	<class name="android/preference/Preference$OnPreferenceClickListener" since="1">
+		<method name="onPreferenceClick(Landroid/preference/Preference;)Z" />
+	</class>
+	<class name="android/preference/PreferenceActivity" since="1">
+		<extends name="android/app/ListActivity" />
+		<implements name="android/preference/PreferenceFragment$OnPreferenceStartFragmentCallback" since="11" />
+		<method name="&lt;init>()V" />
+		<method name="addPreferencesFromIntent(Landroid/content/Intent;)V" />
+		<method name="addPreferencesFromResource(I)V" />
+		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
+		<method name="finishPreferencePanel(Landroid/app/Fragment;ILandroid/content/Intent;)V" since="11" />
+		<method name="getPreferenceManager()Landroid/preference/PreferenceManager;" />
+		<method name="getPreferenceScreen()Landroid/preference/PreferenceScreen;" />
+		<method name="hasHeaders()Z" since="11" />
+		<method name="invalidateHeaders()V" since="11" />
+		<method name="isMultiPane()Z" since="11" />
+		<method name="loadHeadersFromResource(ILjava/util/List;)V" since="11" />
+		<method name="onBuildHeaders(Ljava/util/List;)V" since="11" />
+		<method name="onBuildStartFragmentIntent(Ljava/lang/String;Landroid/os/Bundle;II)Landroid/content/Intent;" since="14" />
+		<method name="onGetInitialHeader()Landroid/preference/PreferenceActivity$Header;" since="11" />
+		<method name="onGetNewHeader()Landroid/preference/PreferenceActivity$Header;" since="11" />
+		<method name="onHeaderClick(Landroid/preference/PreferenceActivity$Header;I)V" since="11" />
+		<method name="onIsHidingHeaders()Z" since="11" />
+		<method name="onIsMultiPane()Z" since="11" />
+		<method name="onPreferenceStartFragment(Landroid/preference/PreferenceFragment;Landroid/preference/Preference;)Z" since="11" />
+		<method name="onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z" />
+		<method name="setListFooter(Landroid/view/View;)V" since="11" />
+		<method name="setParentTitle(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/View$OnClickListener;)V" since="11" />
+		<method name="setPreferenceScreen(Landroid/preference/PreferenceScreen;)V" />
+		<method name="showBreadCrumbs(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V" since="11" />
+		<method name="startPreferenceFragment(Landroid/app/Fragment;Z)V" since="11" />
+		<method name="startPreferencePanel(Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/CharSequence;Landroid/app/Fragment;I)V" since="11" />
+		<method name="startWithFragment(Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Fragment;I)V" since="11" />
+		<method name="startWithFragment(Ljava/lang/String;Landroid/os/Bundle;Landroid/app/Fragment;III)V" since="14" />
+		<method name="switchToHeader(Landroid/preference/PreferenceActivity$Header;)V" since="11" />
+		<method name="switchToHeader(Ljava/lang/String;Landroid/os/Bundle;)V" since="11" />
+		<field name="EXTRA_NO_HEADERS" since="11" />
+		<field name="EXTRA_SHOW_FRAGMENT" since="11" />
+		<field name="EXTRA_SHOW_FRAGMENT_ARGUMENTS" since="11" />
+		<field name="EXTRA_SHOW_FRAGMENT_SHORT_TITLE" since="14" />
+		<field name="EXTRA_SHOW_FRAGMENT_TITLE" since="14" />
+		<field name="HEADER_ID_UNDEFINED" since="11" />
+	</class>
+	<class name="android/preference/PreferenceActivity$Header" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="getBreadCrumbShortTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
+		<method name="getBreadCrumbTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
+		<method name="getSummary(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
+		<method name="getTitle(Landroid/content/res/Resources;)Ljava/lang/CharSequence;" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="breadCrumbShortTitle" />
+		<field name="breadCrumbShortTitleRes" />
+		<field name="breadCrumbTitle" />
+		<field name="breadCrumbTitleRes" />
+		<field name="extras" />
+		<field name="fragment" />
+		<field name="fragmentArguments" />
+		<field name="iconRes" />
+		<field name="id" />
+		<field name="intent" />
+		<field name="summary" />
+		<field name="summaryRes" />
+		<field name="title" />
+		<field name="titleRes" />
+	</class>
+	<class name="android/preference/PreferenceCategory" since="1">
+		<extends name="android/preference/PreferenceGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/preference/PreferenceFragment" since="11">
+		<extends name="android/app/Fragment" />
+		<method name="&lt;init>()V" />
+		<method name="addPreferencesFromIntent(Landroid/content/Intent;)V" />
+		<method name="addPreferencesFromResource(I)V" />
+		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
+		<method name="getPreferenceManager()Landroid/preference/PreferenceManager;" />
+		<method name="getPreferenceScreen()Landroid/preference/PreferenceScreen;" />
+		<method name="onPreferenceTreeClick(Landroid/preference/PreferenceScreen;Landroid/preference/Preference;)Z" />
+		<method name="setPreferenceScreen(Landroid/preference/PreferenceScreen;)V" />
+	</class>
+	<class name="android/preference/PreferenceFragment$OnPreferenceStartFragmentCallback" since="11">
+		<method name="onPreferenceStartFragment(Landroid/preference/PreferenceFragment;Landroid/preference/Preference;)Z" />
+	</class>
+	<class name="android/preference/PreferenceGroup" since="1">
+		<extends name="android/preference/Preference" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="addItemFromInflater(Landroid/preference/Preference;)V" />
+		<method name="addPreference(Landroid/preference/Preference;)Z" />
+		<method name="dispatchRestoreInstanceState(Landroid/os/Bundle;)V" />
+		<method name="dispatchSaveInstanceState(Landroid/os/Bundle;)V" />
+		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
+		<method name="getPreference(I)Landroid/preference/Preference;" />
+		<method name="getPreferenceCount()I" />
+		<method name="isOnSameScreenAsChildren()Z" />
+		<method name="isOrderingAsAdded()Z" />
+		<method name="onPrepareAddPreference(Landroid/preference/Preference;)Z" />
+		<method name="removeAll()V" />
+		<method name="removePreference(Landroid/preference/Preference;)Z" />
+		<method name="setOrderingAsAdded(Z)V" />
+	</class>
+	<class name="android/preference/PreferenceManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="createPreferenceScreen(Landroid/content/Context;)Landroid/preference/PreferenceScreen;" />
+		<method name="findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;" />
+		<method name="getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;" />
+		<method name="getSharedPreferences()Landroid/content/SharedPreferences;" />
+		<method name="getSharedPreferencesMode()I" />
+		<method name="getSharedPreferencesName()Ljava/lang/String;" />
+		<method name="setDefaultValues(Landroid/content/Context;IZ)V" />
+		<method name="setDefaultValues(Landroid/content/Context;Ljava/lang/String;IIZ)V" />
+		<method name="setSharedPreferencesMode(I)V" />
+		<method name="setSharedPreferencesName(Ljava/lang/String;)V" />
+		<field name="KEY_HAS_SET_DEFAULT_VALUES" />
+		<field name="METADATA_KEY_PREFERENCES" />
+	</class>
+	<class name="android/preference/PreferenceManager$OnActivityDestroyListener" since="1">
+		<method name="onActivityDestroy()V" />
+	</class>
+	<class name="android/preference/PreferenceManager$OnActivityResultListener" since="1">
+		<method name="onActivityResult(IILandroid/content/Intent;)Z" />
+	</class>
+	<class name="android/preference/PreferenceManager$OnActivityStopListener" since="1">
+		<method name="onActivityStop()V" />
+	</class>
+	<class name="android/preference/PreferenceScreen" since="1">
+		<extends name="android/preference/PreferenceGroup" />
+		<implements name="android/widget/AdapterView$OnItemClickListener" />
+		<implements name="android/content/DialogInterface$OnDismissListener" />
+		<method name="bind(Landroid/widget/ListView;)V" />
+		<method name="getDialog()Landroid/app/Dialog;" />
+		<method name="getRootAdapter()Landroid/widget/ListAdapter;" />
+		<method name="onCreateRootAdapter()Landroid/widget/ListAdapter;" />
+		<method name="onDismiss(Landroid/content/DialogInterface;)V" />
+		<method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
+	</class>
+	<class name="android/preference/RingtonePreference" since="1">
+		<extends name="android/preference/Preference" />
+		<implements name="android/preference/PreferenceManager$OnActivityResultListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getRingtoneType()I" />
+		<method name="getShowDefault()Z" />
+		<method name="getShowSilent()Z" />
+		<method name="onActivityResult(IILandroid/content/Intent;)Z" />
+		<method name="onPrepareRingtonePickerIntent(Landroid/content/Intent;)V" />
+		<method name="onRestoreRingtone()Landroid/net/Uri;" />
+		<method name="onSaveRingtone(Landroid/net/Uri;)V" />
+		<method name="setRingtoneType(I)V" />
+		<method name="setShowDefault(Z)V" />
+		<method name="setShowSilent(Z)V" />
+	</class>
+	<class name="android/preference/SwitchPreference" since="14">
+		<extends name="android/preference/TwoStatePreference" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getSwitchTextOff()Ljava/lang/CharSequence;" />
+		<method name="getSwitchTextOn()Ljava/lang/CharSequence;" />
+		<method name="setSwitchTextOff(I)V" />
+		<method name="setSwitchTextOff(Ljava/lang/CharSequence;)V" />
+		<method name="setSwitchTextOn(I)V" />
+		<method name="setSwitchTextOn(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/preference/TwoStatePreference" since="14">
+		<extends name="android/preference/Preference" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getDisableDependentsState()Z" />
+		<method name="getSummaryOff()Ljava/lang/CharSequence;" />
+		<method name="getSummaryOn()Ljava/lang/CharSequence;" />
+		<method name="isChecked()Z" />
+		<method name="setChecked(Z)V" />
+		<method name="setDisableDependentsState(Z)V" />
+		<method name="setSummaryOff(I)V" />
+		<method name="setSummaryOff(Ljava/lang/CharSequence;)V" />
+		<method name="setSummaryOn(I)V" />
+		<method name="setSummaryOn(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/provider/AlarmClock" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACTION_SET_ALARM" />
+		<field name="EXTRA_HOUR" />
+		<field name="EXTRA_MESSAGE" />
+		<field name="EXTRA_MINUTES" />
+		<field name="EXTRA_SKIP_UI" since="11" />
+	</class>
+	<class name="android/provider/BaseColumns" since="1">
+		<field name="_COUNT" />
+		<field name="_ID" />
+	</class>
+	<class name="android/provider/Browser" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addSearchUrl(Landroid/content/ContentResolver;Ljava/lang/String;)V" />
+		<method name="canClearHistory(Landroid/content/ContentResolver;)Z" />
+		<method name="clearHistory(Landroid/content/ContentResolver;)V" />
+		<method name="clearSearches(Landroid/content/ContentResolver;)V" />
+		<method name="deleteFromHistory(Landroid/content/ContentResolver;Ljava/lang/String;)V" />
+		<method name="deleteHistoryTimeFrame(Landroid/content/ContentResolver;JJ)V" />
+		<method name="getAllBookmarks(Landroid/content/ContentResolver;)Landroid/database/Cursor;" />
+		<method name="getAllVisitedUrls(Landroid/content/ContentResolver;)Landroid/database/Cursor;" />
+		<method name="requestAllIcons(Landroid/content/ContentResolver;Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V" />
+		<method name="saveBookmark(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="sendString(Landroid/content/Context;Ljava/lang/String;)V" />
+		<method name="truncateHistory(Landroid/content/ContentResolver;)V" />
+		<method name="updateVisitedHistory(Landroid/content/ContentResolver;Ljava/lang/String;Z)V" />
+		<field name="BOOKMARKS_URI" />
+		<field name="EXTRA_APPLICATION_ID" since="3" />
+		<field name="EXTRA_CREATE_NEW_TAB" since="12" />
+		<field name="EXTRA_HEADERS" since="8" />
+		<field name="HISTORY_PROJECTION" />
+		<field name="HISTORY_PROJECTION_BOOKMARK_INDEX" />
+		<field name="HISTORY_PROJECTION_DATE_INDEX" />
+		<field name="HISTORY_PROJECTION_FAVICON_INDEX" />
+		<field name="HISTORY_PROJECTION_ID_INDEX" />
+		<field name="HISTORY_PROJECTION_TITLE_INDEX" />
+		<field name="HISTORY_PROJECTION_URL_INDEX" />
+		<field name="HISTORY_PROJECTION_VISITS_INDEX" />
+		<field name="INITIAL_ZOOM_LEVEL" />
+		<field name="SEARCHES_PROJECTION" />
+		<field name="SEARCHES_PROJECTION_DATE_INDEX" />
+		<field name="SEARCHES_PROJECTION_SEARCH_INDEX" />
+		<field name="SEARCHES_URI" />
+		<field name="TRUNCATE_HISTORY_PROJECTION" />
+		<field name="TRUNCATE_HISTORY_PROJECTION_ID_INDEX" />
+		<field name="TRUNCATE_N_OLDEST" />
+	</class>
+	<class name="android/provider/Browser$BookmarkColumns" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<field name="BOOKMARK" />
+		<field name="CREATED" />
+		<field name="DATE" />
+		<field name="FAVICON" />
+		<field name="TITLE" />
+		<field name="URL" />
+		<field name="VISITS" />
+	</class>
+	<class name="android/provider/Browser$SearchColumns" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<field name="DATE" />
+		<field name="SEARCH" />
+		<field name="URL" />
+	</class>
+	<class name="android/provider/CalendarContract" since="14">
+		<field name="ACCOUNT_TYPE_LOCAL" />
+		<field name="ACTION_EVENT_REMINDER" />
+		<field name="AUTHORITY" />
+		<field name="CALLER_IS_SYNCADAPTER" />
+		<field name="CONTENT_URI" />
+		<field name="EXTRA_EVENT_ALL_DAY" />
+		<field name="EXTRA_EVENT_BEGIN_TIME" />
+		<field name="EXTRA_EVENT_END_TIME" />
+	</class>
+	<class name="android/provider/CalendarContract$Attendees" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$AttendeesColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<method name="query(Landroid/content/ContentResolver;J[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$AttendeesColumns" since="14">
+		<field name="ATTENDEE_EMAIL" />
+		<field name="ATTENDEE_NAME" />
+		<field name="ATTENDEE_RELATIONSHIP" />
+		<field name="ATTENDEE_STATUS" />
+		<field name="ATTENDEE_STATUS_ACCEPTED" />
+		<field name="ATTENDEE_STATUS_DECLINED" />
+		<field name="ATTENDEE_STATUS_INVITED" />
+		<field name="ATTENDEE_STATUS_NONE" />
+		<field name="ATTENDEE_STATUS_TENTATIVE" />
+		<field name="ATTENDEE_TYPE" />
+		<field name="EVENT_ID" />
+		<field name="RELATIONSHIP_ATTENDEE" />
+		<field name="RELATIONSHIP_NONE" />
+		<field name="RELATIONSHIP_ORGANIZER" />
+		<field name="RELATIONSHIP_PERFORMER" />
+		<field name="RELATIONSHIP_SPEAKER" />
+		<field name="TYPE_NONE" />
+		<field name="TYPE_OPTIONAL" />
+		<field name="TYPE_REQUIRED" />
+		<field name="TYPE_RESOURCE" since="15" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarAlerts" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$CalendarAlertsColumns" />
+		<implements name="android/provider/CalendarContract$CalendarColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<field name="CONTENT_URI" />
+		<field name="CONTENT_URI_BY_INSTANCE" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarAlertsColumns" since="14">
+		<field name="ALARM_TIME" />
+		<field name="BEGIN" />
+		<field name="CREATION_TIME" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="END" />
+		<field name="EVENT_ID" />
+		<field name="MINUTES" />
+		<field name="NOTIFY_TIME" />
+		<field name="RECEIVED_TIME" />
+		<field name="STATE" />
+		<field name="STATE_DISMISSED" />
+		<field name="STATE_FIRED" />
+		<field name="STATE_SCHEDULED" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarCache" since="14">
+		<implements name="android/provider/CalendarContract$CalendarCacheColumns" />
+		<field name="KEY_TIMEZONE_INSTANCES" />
+		<field name="KEY_TIMEZONE_INSTANCES_PREVIOUS" />
+		<field name="KEY_TIMEZONE_TYPE" />
+		<field name="TIMEZONE_TYPE_AUTO" />
+		<field name="TIMEZONE_TYPE_HOME" />
+		<field name="URI" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarCacheColumns" since="14">
+		<field name="KEY" />
+		<field name="VALUE" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarColumns" since="14">
+		<field name="ALLOWED_ATTENDEE_TYPES" since="15" />
+		<field name="ALLOWED_AVAILABILITY" since="15" />
+		<field name="ALLOWED_REMINDERS" />
+		<field name="CALENDAR_ACCESS_LEVEL" />
+		<field name="CALENDAR_COLOR" />
+		<field name="CALENDAR_COLOR_KEY" since="15" />
+		<field name="CALENDAR_DISPLAY_NAME" />
+		<field name="CALENDAR_TIME_ZONE" />
+		<field name="CAL_ACCESS_CONTRIBUTOR" />
+		<field name="CAL_ACCESS_EDITOR" />
+		<field name="CAL_ACCESS_FREEBUSY" />
+		<field name="CAL_ACCESS_NONE" />
+		<field name="CAL_ACCESS_OVERRIDE" />
+		<field name="CAL_ACCESS_OWNER" />
+		<field name="CAL_ACCESS_READ" />
+		<field name="CAL_ACCESS_RESPOND" />
+		<field name="CAL_ACCESS_ROOT" />
+		<field name="CAN_MODIFY_TIME_ZONE" />
+		<field name="CAN_ORGANIZER_RESPOND" />
+		<field name="MAX_REMINDERS" />
+		<field name="OWNER_ACCOUNT" />
+		<field name="SYNC_EVENTS" />
+		<field name="VISIBLE" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarEntity" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$CalendarColumns" />
+		<implements name="android/provider/CalendarContract$SyncColumns" />
+		<method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$CalendarSyncColumns" since="14">
+		<field name="CAL_SYNC1" />
+		<field name="CAL_SYNC10" />
+		<field name="CAL_SYNC2" />
+		<field name="CAL_SYNC3" />
+		<field name="CAL_SYNC4" />
+		<field name="CAL_SYNC5" />
+		<field name="CAL_SYNC6" />
+		<field name="CAL_SYNC7" />
+		<field name="CAL_SYNC8" />
+		<field name="CAL_SYNC9" />
+	</class>
+	<class name="android/provider/CalendarContract$Calendars" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$CalendarColumns" />
+		<implements name="android/provider/CalendarContract$SyncColumns" />
+		<field name="CALENDAR_LOCATION" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="NAME" />
+	</class>
+	<class name="android/provider/CalendarContract$Colors" since="15">
+		<implements name="android/provider/CalendarContract$ColorsColumns" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$ColorsColumns" since="15">
+		<implements name="android/provider/SyncStateContract$Columns" />
+		<field name="COLOR" />
+		<field name="COLOR_KEY" />
+		<field name="COLOR_TYPE" />
+		<field name="TYPE_CALENDAR" />
+		<field name="TYPE_EVENT" />
+	</class>
+	<class name="android/provider/CalendarContract$EventDays" since="14">
+		<implements name="android/provider/CalendarContract$EventDaysColumns" />
+		<method name="query(Landroid/content/ContentResolver;II[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$EventDaysColumns" since="14">
+		<field name="ENDDAY" />
+		<field name="STARTDAY" />
+	</class>
+	<class name="android/provider/CalendarContract$Events" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$CalendarColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<implements name="android/provider/CalendarContract$SyncColumns" />
+		<field name="CONTENT_EXCEPTION_URI" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$EventsColumns" since="14">
+		<field name="ACCESS_CONFIDENTIAL" />
+		<field name="ACCESS_DEFAULT" />
+		<field name="ACCESS_LEVEL" />
+		<field name="ACCESS_PRIVATE" />
+		<field name="ACCESS_PUBLIC" />
+		<field name="ALL_DAY" />
+		<field name="AVAILABILITY" />
+		<field name="AVAILABILITY_BUSY" />
+		<field name="AVAILABILITY_FREE" />
+		<field name="AVAILABILITY_TENTATIVE" since="15" />
+		<field name="CALENDAR_ID" />
+		<field name="CAN_INVITE_OTHERS" />
+		<field name="DESCRIPTION" />
+		<field name="DTEND" />
+		<field name="DTSTART" />
+		<field name="DURATION" />
+		<field name="EVENT_COLOR" />
+		<field name="EVENT_COLOR_KEY" since="15" />
+		<field name="EVENT_END_TIMEZONE" />
+		<field name="EVENT_LOCATION" />
+		<field name="EVENT_TIMEZONE" />
+		<field name="EXDATE" />
+		<field name="EXRULE" />
+		<field name="GUESTS_CAN_INVITE_OTHERS" />
+		<field name="GUESTS_CAN_MODIFY" />
+		<field name="GUESTS_CAN_SEE_GUESTS" />
+		<field name="HAS_ALARM" />
+		<field name="HAS_ATTENDEE_DATA" />
+		<field name="HAS_EXTENDED_PROPERTIES" />
+		<field name="LAST_DATE" />
+		<field name="LAST_SYNCED" />
+		<field name="ORGANIZER" />
+		<field name="ORIGINAL_ALL_DAY" />
+		<field name="ORIGINAL_ID" />
+		<field name="ORIGINAL_INSTANCE_TIME" />
+		<field name="ORIGINAL_SYNC_ID" />
+		<field name="RDATE" />
+		<field name="RRULE" />
+		<field name="SELF_ATTENDEE_STATUS" />
+		<field name="STATUS" />
+		<field name="STATUS_CANCELED" />
+		<field name="STATUS_CONFIRMED" />
+		<field name="STATUS_TENTATIVE" />
+		<field name="SYNC_DATA1" />
+		<field name="SYNC_DATA10" />
+		<field name="SYNC_DATA2" />
+		<field name="SYNC_DATA3" />
+		<field name="SYNC_DATA4" />
+		<field name="SYNC_DATA5" />
+		<field name="SYNC_DATA6" />
+		<field name="SYNC_DATA7" />
+		<field name="SYNC_DATA8" />
+		<field name="SYNC_DATA9" />
+		<field name="TITLE" />
+	</class>
+	<class name="android/provider/CalendarContract$EventsEntity" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<implements name="android/provider/CalendarContract$SyncColumns" />
+		<method name="newEntityIterator(Landroid/database/Cursor;Landroid/content/ContentProviderClient;)Landroid/content/EntityIterator;" />
+		<method name="newEntityIterator(Landroid/database/Cursor;Landroid/content/ContentResolver;)Landroid/content/EntityIterator;" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$ExtendedProperties" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<implements name="android/provider/CalendarContract$ExtendedPropertiesColumns" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$ExtendedPropertiesColumns" since="14">
+		<field name="EVENT_ID" />
+		<field name="NAME" />
+		<field name="VALUE" />
+	</class>
+	<class name="android/provider/CalendarContract$Instances" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$CalendarColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<method name="query(Landroid/content/ContentResolver;[Ljava/lang/String;JJ)Landroid/database/Cursor;" />
+		<method name="query(Landroid/content/ContentResolver;[Ljava/lang/String;JJLjava/lang/String;)Landroid/database/Cursor;" />
+		<field name="BEGIN" />
+		<field name="CONTENT_BY_DAY_URI" />
+		<field name="CONTENT_SEARCH_BY_DAY_URI" />
+		<field name="CONTENT_SEARCH_URI" />
+		<field name="CONTENT_URI" />
+		<field name="END" />
+		<field name="END_DAY" />
+		<field name="END_MINUTE" />
+		<field name="EVENT_ID" />
+		<field name="START_DAY" />
+		<field name="START_MINUTE" />
+	</class>
+	<class name="android/provider/CalendarContract$Reminders" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/CalendarContract$EventsColumns" />
+		<implements name="android/provider/CalendarContract$RemindersColumns" />
+		<method name="query(Landroid/content/ContentResolver;J[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CalendarContract$RemindersColumns" since="14">
+		<field name="EVENT_ID" />
+		<field name="METHOD" />
+		<field name="METHOD_ALERT" />
+		<field name="METHOD_DEFAULT" />
+		<field name="METHOD_EMAIL" />
+		<field name="METHOD_SMS" />
+		<field name="MINUTES" />
+		<field name="MINUTES_DEFAULT" />
+	</class>
+	<class name="android/provider/CalendarContract$SyncColumns" since="14">
+		<implements name="android/provider/CalendarContract$CalendarSyncColumns" />
+		<field name="ACCOUNT_NAME" />
+		<field name="ACCOUNT_TYPE" />
+		<field name="CAN_PARTIALLY_UPDATE" />
+		<field name="DELETED" />
+		<field name="DIRTY" />
+		<field name="_SYNC_ID" />
+	</class>
+	<class name="android/provider/CalendarContract$SyncState" since="14">
+		<implements name="android/provider/SyncStateContract$Columns" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CallLog" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="AUTHORITY" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/CallLog$Calls" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getLastOutgoingCall(Landroid/content/Context;)Ljava/lang/String;" since="8" />
+		<field name="CACHED_NAME" />
+		<field name="CACHED_NUMBER_LABEL" />
+		<field name="CACHED_NUMBER_TYPE" />
+		<field name="CONTENT_FILTER_URI" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DATE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="DURATION" />
+		<field name="INCOMING_TYPE" />
+		<field name="IS_READ" since="14" />
+		<field name="MISSED_TYPE" />
+		<field name="NEW" />
+		<field name="NUMBER" />
+		<field name="OUTGOING_TYPE" />
+		<field name="TYPE" />
+	</class>
+	<class name="android/provider/Contacts" since="1">
+		<extends name="java/lang/Object" />
+		<field name="AUTHORITY" />
+		<field name="CONTENT_URI" />
+		<field name="KIND_EMAIL" />
+		<field name="KIND_IM" />
+		<field name="KIND_ORGANIZATION" />
+		<field name="KIND_PHONE" />
+		<field name="KIND_POSTAL" />
+	</class>
+	<class name="android/provider/Contacts$ContactMethods" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$ContactMethodsColumns" />
+		<implements name="android/provider/Contacts$PeopleColumns" />
+		<method name="addPostalLocation(Landroid/content/Context;JDD)V" />
+		<method name="decodeImProtocol(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="encodeCustomImProtocol(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="encodePredefinedImProtocol(I)Ljava/lang/String;" />
+		<method name="getDisplayLabel(Landroid/content/Context;IILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<field name="CONTENT_EMAIL_ITEM_TYPE" />
+		<field name="CONTENT_EMAIL_TYPE" />
+		<field name="CONTENT_EMAIL_URI" />
+		<field name="CONTENT_IM_ITEM_TYPE" />
+		<field name="CONTENT_POSTAL_ITEM_TYPE" />
+		<field name="CONTENT_POSTAL_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="PERSON_ID" />
+		<field name="POSTAL_LOCATION_LATITUDE" />
+		<field name="POSTAL_LOCATION_LONGITUDE" />
+		<field name="PROTOCOL_AIM" />
+		<field name="PROTOCOL_GOOGLE_TALK" />
+		<field name="PROTOCOL_ICQ" />
+		<field name="PROTOCOL_JABBER" />
+		<field name="PROTOCOL_MSN" />
+		<field name="PROTOCOL_QQ" />
+		<field name="PROTOCOL_SKYPE" />
+		<field name="PROTOCOL_YAHOO" />
+	</class>
+	<class name="android/provider/Contacts$ContactMethodsColumns" since="1">
+		<field name="AUX_DATA" />
+		<field name="DATA" />
+		<field name="ISPRIMARY" />
+		<field name="KIND" />
+		<field name="LABEL" />
+		<field name="TYPE" />
+		<field name="TYPE_CUSTOM" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/Contacts$Extensions" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$ExtensionsColumns" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="PERSON_ID" />
+	</class>
+	<class name="android/provider/Contacts$ExtensionsColumns" since="1">
+		<field name="NAME" />
+		<field name="VALUE" />
+	</class>
+	<class name="android/provider/Contacts$GroupMembership" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$GroupsColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="GROUP_ID" />
+		<field name="GROUP_SYNC_ACCOUNT" />
+		<field name="GROUP_SYNC_ACCOUNT_TYPE" since="5" />
+		<field name="GROUP_SYNC_ID" />
+		<field name="PERSON_ID" />
+		<field name="RAW_CONTENT_URI" />
+	</class>
+	<class name="android/provider/Contacts$Groups" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$GroupsColumns" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="DELETED_CONTENT_URI" />
+		<field name="GROUP_ANDROID_STARRED" />
+		<field name="GROUP_MY_CONTACTS" />
+	</class>
+	<class name="android/provider/Contacts$GroupsColumns" since="1">
+		<field name="NAME" />
+		<field name="NOTES" />
+		<field name="SHOULD_SYNC" />
+		<field name="SYSTEM_ID" />
+	</class>
+	<class name="android/provider/Contacts$Intents" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ATTACH_IMAGE" />
+		<field name="EXTRA_CREATE_DESCRIPTION" since="3" />
+		<field name="EXTRA_FORCE_CREATE" since="3" />
+		<field name="SEARCH_SUGGESTION_CLICKED" />
+		<field name="SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED" />
+		<field name="SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED" />
+		<field name="SHOW_OR_CREATE_CONTACT" since="3" />
+	</class>
+	<class name="android/provider/Contacts$Intents$Insert" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACTION" />
+		<field name="COMPANY" />
+		<field name="EMAIL" />
+		<field name="EMAIL_ISPRIMARY" />
+		<field name="EMAIL_TYPE" />
+		<field name="FULL_MODE" />
+		<field name="IM_HANDLE" />
+		<field name="IM_ISPRIMARY" />
+		<field name="IM_PROTOCOL" />
+		<field name="JOB_TITLE" />
+		<field name="NAME" />
+		<field name="NOTES" />
+		<field name="PHONE" />
+		<field name="PHONETIC_NAME" since="3" />
+		<field name="PHONE_ISPRIMARY" />
+		<field name="PHONE_TYPE" />
+		<field name="POSTAL" />
+		<field name="POSTAL_ISPRIMARY" />
+		<field name="POSTAL_TYPE" />
+		<field name="SECONDARY_EMAIL" since="3" />
+		<field name="SECONDARY_EMAIL_TYPE" since="3" />
+		<field name="SECONDARY_PHONE" since="3" />
+		<field name="SECONDARY_PHONE_TYPE" since="3" />
+		<field name="TERTIARY_EMAIL" since="3" />
+		<field name="TERTIARY_EMAIL_TYPE" since="3" />
+		<field name="TERTIARY_PHONE" since="3" />
+		<field name="TERTIARY_PHONE_TYPE" since="3" />
+	</class>
+	<class name="android/provider/Contacts$Intents$UI" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="FILTER_CONTACTS_ACTION" />
+		<field name="FILTER_TEXT_EXTRA_KEY" />
+		<field name="GROUP_NAME_EXTRA_KEY" />
+		<field name="LIST_ALL_CONTACTS_ACTION" />
+		<field name="LIST_CONTACTS_WITH_PHONES_ACTION" />
+		<field name="LIST_DEFAULT" />
+		<field name="LIST_FREQUENT_ACTION" />
+		<field name="LIST_GROUP_ACTION" />
+		<field name="LIST_STARRED_ACTION" />
+		<field name="LIST_STREQUENT_ACTION" />
+		<field name="TITLE_EXTRA_KEY" />
+	</class>
+	<class name="android/provider/Contacts$OrganizationColumns" since="1">
+		<field name="COMPANY" />
+		<field name="ISPRIMARY" />
+		<field name="LABEL" />
+		<field name="PERSON_ID" />
+		<field name="TITLE" />
+		<field name="TYPE" />
+		<field name="TYPE_CUSTOM" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/Contacts$Organizations" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$OrganizationColumns" />
+		<method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+	</class>
+	<class name="android/provider/Contacts$People" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$PeopleColumns" />
+		<implements name="android/provider/Contacts$PhonesColumns" />
+		<implements name="android/provider/Contacts$PresenceColumns" />
+		<method name="addToGroup(Landroid/content/ContentResolver;JJ)Landroid/net/Uri;" />
+		<method name="addToGroup(Landroid/content/ContentResolver;JLjava/lang/String;)Landroid/net/Uri;" />
+		<method name="addToMyContactsGroup(Landroid/content/ContentResolver;J)Landroid/net/Uri;" />
+		<method name="createPersonInMyContactsGroup(Landroid/content/ContentResolver;Landroid/content/ContentValues;)Landroid/net/Uri;" />
+		<method name="loadContactPhoto(Landroid/content/Context;Landroid/net/Uri;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="markAsContacted(Landroid/content/ContentResolver;J)V" />
+		<method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/io/InputStream;" />
+		<method name="queryGroups(Landroid/content/ContentResolver;J)Landroid/database/Cursor;" />
+		<method name="setPhotoData(Landroid/content/ContentResolver;Landroid/net/Uri;[B)V" />
+		<field name="CONTENT_FILTER_URI" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="DELETED_CONTENT_URI" />
+		<field name="PRIMARY_EMAIL_ID" />
+		<field name="PRIMARY_ORGANIZATION_ID" />
+		<field name="PRIMARY_PHONE_ID" />
+	</class>
+	<class name="android/provider/Contacts$People$ContactMethods" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$ContactMethodsColumns" />
+		<implements name="android/provider/Contacts$PeopleColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DEFAULT_SORT_ORDER" />
+	</class>
+	<class name="android/provider/Contacts$People$Extensions" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$ExtensionsColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="PERSON_ID" />
+	</class>
+	<class name="android/provider/Contacts$People$Phones" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$PeopleColumns" />
+		<implements name="android/provider/Contacts$PhonesColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DEFAULT_SORT_ORDER" />
+	</class>
+	<class name="android/provider/Contacts$PeopleColumns" since="1">
+		<field name="CUSTOM_RINGTONE" />
+		<field name="DISPLAY_NAME" />
+		<field name="LAST_TIME_CONTACTED" />
+		<field name="NAME" />
+		<field name="NOTES" />
+		<field name="PHONETIC_NAME" since="3" />
+		<field name="PHOTO_VERSION" />
+		<field name="SEND_TO_VOICEMAIL" />
+		<field name="STARRED" />
+		<field name="TIMES_CONTACTED" />
+	</class>
+	<class name="android/provider/Contacts$Phones" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$PeopleColumns" />
+		<implements name="android/provider/Contacts$PhonesColumns" />
+		<method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<field name="CONTENT_FILTER_URL" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="PERSON_ID" />
+	</class>
+	<class name="android/provider/Contacts$PhonesColumns" since="1">
+		<field name="ISPRIMARY" />
+		<field name="LABEL" />
+		<field name="NUMBER" />
+		<field name="NUMBER_KEY" />
+		<field name="TYPE" />
+		<field name="TYPE_CUSTOM" />
+		<field name="TYPE_FAX_HOME" />
+		<field name="TYPE_FAX_WORK" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_MOBILE" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_PAGER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/Contacts$Photos" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$PhotosColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+	</class>
+	<class name="android/provider/Contacts$PhotosColumns" since="1">
+		<field name="DATA" />
+		<field name="DOWNLOAD_REQUIRED" />
+		<field name="EXISTS_ON_SERVER" />
+		<field name="LOCAL_VERSION" />
+		<field name="PERSON_ID" />
+		<field name="SYNC_ERROR" />
+	</class>
+	<class name="android/provider/Contacts$PresenceColumns" since="1">
+		<field name="AVAILABLE" since="8" />
+		<field name="AWAY" since="8" />
+		<field name="DO_NOT_DISTURB" since="8" />
+		<field name="IDLE" since="8" />
+		<field name="IM_ACCOUNT" />
+		<field name="IM_HANDLE" />
+		<field name="IM_PROTOCOL" />
+		<field name="INVISIBLE" since="8" />
+		<field name="OFFLINE" since="8" />
+		<field name="PRESENCE_CUSTOM_STATUS" since="8" />
+		<field name="PRESENCE_STATUS" since="8" />
+		<field name="PRIORITY" since="8" />
+	</class>
+	<class name="android/provider/Contacts$Settings" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/Contacts$SettingsColumns" />
+		<method name="getSetting(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="setSetting(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="SYNC_EVERYTHING" />
+	</class>
+	<class name="android/provider/Contacts$SettingsColumns" since="1">
+		<field name="KEY" />
+		<field name="VALUE" />
+		<field name="_SYNC_ACCOUNT" />
+		<field name="_SYNC_ACCOUNT_TYPE" since="5" />
+	</class>
+	<class name="android/provider/ContactsContract" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="isProfileId(J)Z" since="14" />
+		<field name="AUTHORITY" />
+		<field name="AUTHORITY_URI" />
+		<field name="CALLER_IS_SYNCADAPTER" />
+		<field name="DIRECTORY_PARAM_KEY" since="11" />
+		<field name="LIMIT_PARAM_KEY" since="11" />
+		<field name="PRIMARY_ACCOUNT_NAME" since="14" />
+		<field name="PRIMARY_ACCOUNT_TYPE" since="14" />
+	</class>
+	<class name="android/provider/ContactsContract$AggregationExceptions" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="RAW_CONTACT_ID1" />
+		<field name="RAW_CONTACT_ID2" />
+		<field name="TYPE" />
+		<field name="TYPE_AUTOMATIC" />
+		<field name="TYPE_KEEP_SEPARATE" />
+		<field name="TYPE_KEEP_TOGETHER" />
+	</class>
+	<class name="android/provider/ContactsContract$BaseSyncColumns" since="5">
+		<field name="SYNC1" />
+		<field name="SYNC2" />
+		<field name="SYNC3" />
+		<field name="SYNC4" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds" since="5">
+		<extends name="java/lang/Object" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$BaseTypes" since="5">
+		<field name="TYPE_CUSTOM" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" since="5">
+		<implements name="android/provider/ContactsContract$CommonDataKinds$BaseTypes" />
+		<field name="DATA" />
+		<field name="LABEL" />
+		<field name="TYPE" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Email" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTypeLabelResource(I)I" />
+		<field name="ADDRESS" since="11" />
+		<field name="CONTENT_FILTER_URI" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_LOOKUP_URI" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DISPLAY_NAME" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_MOBILE" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Event" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeResource(Ljava/lang/Integer;)I" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="START_DATE" />
+		<field name="TYPE_ANNIVERSARY" />
+		<field name="TYPE_BIRTHDAY" />
+		<field name="TYPE_OTHER" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$GroupMembership" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="GROUP_ROW_ID" />
+		<field name="GROUP_SOURCE_ID" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Identity" since="14">
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="IDENTITY" />
+		<field name="NAMESPACE" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Im" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getProtocolLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getProtocolLabelResource(I)I" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTypeLabelResource(I)I" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CUSTOM_PROTOCOL" />
+		<field name="PROTOCOL" />
+		<field name="PROTOCOL_AIM" />
+		<field name="PROTOCOL_CUSTOM" />
+		<field name="PROTOCOL_GOOGLE_TALK" />
+		<field name="PROTOCOL_ICQ" />
+		<field name="PROTOCOL_JABBER" />
+		<field name="PROTOCOL_MSN" />
+		<field name="PROTOCOL_NETMEETING" />
+		<field name="PROTOCOL_QQ" />
+		<field name="PROTOCOL_SKYPE" />
+		<field name="PROTOCOL_YAHOO" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Nickname" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="NAME" />
+		<field name="TYPE_DEFAULT" />
+		<field name="TYPE_INITIALS" />
+		<field name="TYPE_MAIDEN_NAME" since="9" />
+		<field name="TYPE_MAINDEN_NAME" />
+		<field name="TYPE_OTHER_NAME" />
+		<field name="TYPE_SHORT_NAME" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Note" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="NOTE" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Organization" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTypeLabelResource(I)I" />
+		<field name="COMPANY" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="DEPARTMENT" />
+		<field name="JOB_DESCRIPTION" />
+		<field name="OFFICE_LOCATION" />
+		<field name="PHONETIC_NAME" />
+		<field name="SYMBOL" />
+		<field name="TITLE" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Phone" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTypeLabelResource(I)I" />
+		<field name="CONTENT_FILTER_URI" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="NUMBER" />
+		<field name="TYPE_ASSISTANT" />
+		<field name="TYPE_CALLBACK" />
+		<field name="TYPE_CAR" />
+		<field name="TYPE_COMPANY_MAIN" />
+		<field name="TYPE_FAX_HOME" />
+		<field name="TYPE_FAX_WORK" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_ISDN" />
+		<field name="TYPE_MAIN" />
+		<field name="TYPE_MMS" />
+		<field name="TYPE_MOBILE" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_OTHER_FAX" />
+		<field name="TYPE_PAGER" />
+		<field name="TYPE_RADIO" />
+		<field name="TYPE_TELEX" />
+		<field name="TYPE_TTY_TDD" />
+		<field name="TYPE_WORK" />
+		<field name="TYPE_WORK_MOBILE" />
+		<field name="TYPE_WORK_PAGER" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Photo" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="PHOTO" />
+		<field name="PHOTO_FILE_ID" since="14" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Relation" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" since="11" />
+		<method name="getTypeLabelResource(I)I" since="11" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="NAME" />
+		<field name="TYPE_ASSISTANT" />
+		<field name="TYPE_BROTHER" />
+		<field name="TYPE_CHILD" />
+		<field name="TYPE_DOMESTIC_PARTNER" />
+		<field name="TYPE_FATHER" />
+		<field name="TYPE_FRIEND" />
+		<field name="TYPE_MANAGER" />
+		<field name="TYPE_MOTHER" />
+		<field name="TYPE_PARENT" />
+		<field name="TYPE_PARTNER" />
+		<field name="TYPE_REFERRED_BY" />
+		<field name="TYPE_RELATIVE" />
+		<field name="TYPE_SISTER" />
+		<field name="TYPE_SPOUSE" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$SipAddress" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTypeLabelResource(I)I" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="SIP_ADDRESS" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$StructuredName" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="DISPLAY_NAME" />
+		<field name="FAMILY_NAME" />
+		<field name="GIVEN_NAME" />
+		<field name="MIDDLE_NAME" />
+		<field name="PHONETIC_FAMILY_NAME" />
+		<field name="PHONETIC_GIVEN_NAME" />
+		<field name="PHONETIC_MIDDLE_NAME" />
+		<field name="PREFIX" />
+		<field name="SUFFIX" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$StructuredPostal" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getTypeLabelResource(I)I" />
+		<field name="CITY" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="COUNTRY" />
+		<field name="FORMATTED_ADDRESS" />
+		<field name="NEIGHBORHOOD" />
+		<field name="POBOX" />
+		<field name="POSTCODE" />
+		<field name="REGION" />
+		<field name="STREET" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_WORK" />
+	</class>
+	<class name="android/provider/ContactsContract$CommonDataKinds$Website" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$CommonDataKinds$CommonColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="TYPE_BLOG" />
+		<field name="TYPE_FTP" />
+		<field name="TYPE_HOME" />
+		<field name="TYPE_HOMEPAGE" />
+		<field name="TYPE_OTHER" />
+		<field name="TYPE_PROFILE" />
+		<field name="TYPE_WORK" />
+		<field name="URL" />
+	</class>
+	<class name="android/provider/ContactsContract$ContactNameColumns" since="11">
+		<field name="DISPLAY_NAME_ALTERNATIVE" />
+		<field name="DISPLAY_NAME_PRIMARY" />
+		<field name="DISPLAY_NAME_SOURCE" />
+		<field name="PHONETIC_NAME" />
+		<field name="PHONETIC_NAME_STYLE" />
+		<field name="SORT_KEY_ALTERNATIVE" />
+		<field name="SORT_KEY_PRIMARY" />
+	</class>
+	<class name="android/provider/ContactsContract$ContactOptionsColumns" since="5">
+		<field name="CUSTOM_RINGTONE" />
+		<field name="LAST_TIME_CONTACTED" />
+		<field name="SEND_TO_VOICEMAIL" />
+		<field name="STARRED" />
+		<field name="TIMES_CONTACTED" />
+	</class>
+	<class name="android/provider/ContactsContract$ContactStatusColumns" since="5">
+		<field name="CONTACT_CHAT_CAPABILITY" since="11" />
+		<field name="CONTACT_PRESENCE" />
+		<field name="CONTACT_STATUS" />
+		<field name="CONTACT_STATUS_ICON" />
+		<field name="CONTACT_STATUS_LABEL" />
+		<field name="CONTACT_STATUS_RES_PACKAGE" />
+		<field name="CONTACT_STATUS_TIMESTAMP" />
+	</class>
+	<class name="android/provider/ContactsContract$Contacts" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
+		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
+		<implements name="android/provider/ContactsContract$ContactsColumns" />
+		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
+		<method name="getLookupUri(JLjava/lang/String;)Landroid/net/Uri;" />
+		<method name="getLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
+		<method name="lookupContact(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
+		<method name="markAsContacted(Landroid/content/ContentResolver;J)V" />
+		<method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/io/InputStream;" />
+		<method name="openContactPhotoInputStream(Landroid/content/ContentResolver;Landroid/net/Uri;Z)Ljava/io/InputStream;" since="14" />
+		<field name="CONTENT_FILTER_URI" />
+		<field name="CONTENT_GROUP_URI" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_LOOKUP_URI" />
+		<field name="CONTENT_STREQUENT_FILTER_URI" />
+		<field name="CONTENT_STREQUENT_URI" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="CONTENT_VCARD_TYPE" />
+		<field name="CONTENT_VCARD_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$Contacts$AggregationSuggestions" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$ContactsColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" since="11" />
+		<implements name="android/provider/ContactsContract$ContactStatusColumns" since="11" />
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/ContactsContract$Contacts$Data" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/ContactsContract$Contacts$Entity" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$BaseSyncColumns" />
+		<implements name="android/provider/ContactsContract$ContactNameColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
+		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
+		<implements name="android/provider/ContactsContract$ContactsColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<implements name="android/provider/ContactsContract$RawContactsColumns" />
+		<implements name="android/provider/ContactsContract$StatusColumns" />
+		<implements name="android/provider/ContactsContract$SyncColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DATA_ID" />
+		<field name="RAW_CONTACT_ID" />
+	</class>
+	<class name="android/provider/ContactsContract$Contacts$Photo" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" since="11" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DISPLAY_PHOTO" since="14" />
+		<field name="PHOTO" since="11" />
+		<field name="PHOTO_FILE_ID" since="14" />
+	</class>
+	<class name="android/provider/ContactsContract$Contacts$StreamItems" since="15">
+		<implements name="android/provider/ContactsContract$StreamItemsColumns" />
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/ContactsContract$ContactsColumns" since="5">
+		<field name="DISPLAY_NAME" />
+		<field name="HAS_PHONE_NUMBER" />
+		<field name="IN_VISIBLE_GROUP" />
+		<field name="IS_USER_PROFILE" since="14" />
+		<field name="LOOKUP_KEY" />
+		<field name="PHOTO_FILE_ID" since="14" />
+		<field name="PHOTO_ID" />
+		<field name="PHOTO_THUMBNAIL_URI" since="11" />
+		<field name="PHOTO_URI" since="11" />
+	</class>
+	<class name="android/provider/ContactsContract$Data" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$DataColumnsWithJoins" />
+		<method name="getContactLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$DataColumns" since="5">
+		<field name="DATA1" />
+		<field name="DATA10" />
+		<field name="DATA11" />
+		<field name="DATA12" />
+		<field name="DATA13" />
+		<field name="DATA14" />
+		<field name="DATA15" />
+		<field name="DATA2" />
+		<field name="DATA3" />
+		<field name="DATA4" />
+		<field name="DATA5" />
+		<field name="DATA6" />
+		<field name="DATA7" />
+		<field name="DATA8" />
+		<field name="DATA9" />
+		<field name="DATA_VERSION" />
+		<field name="IS_PRIMARY" />
+		<field name="IS_READ_ONLY" since="11" />
+		<field name="IS_SUPER_PRIMARY" />
+		<field name="MIMETYPE" />
+		<field name="RAW_CONTACT_ID" />
+		<field name="SYNC1" />
+		<field name="SYNC2" />
+		<field name="SYNC3" />
+		<field name="SYNC4" />
+	</class>
+	<class name="android/provider/ContactsContract$DataColumnsWithJoins" since="5">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
+		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
+		<implements name="android/provider/ContactsContract$ContactsColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<implements name="android/provider/ContactsContract$RawContactsColumns" />
+		<implements name="android/provider/ContactsContract$StatusColumns" />
+		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
+	</class>
+	<class name="android/provider/ContactsContract$DataUsageFeedback" since="14">
+		<method name="&lt;init>()V" />
+		<field name="FEEDBACK_URI" />
+		<field name="USAGE_TYPE" />
+		<field name="USAGE_TYPE_CALL" />
+		<field name="USAGE_TYPE_LONG_TEXT" />
+		<field name="USAGE_TYPE_SHORT_TEXT" />
+	</class>
+	<class name="android/provider/ContactsContract$Directory" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="notifyDirectoryChange(Landroid/content/ContentResolver;)V" />
+		<field name="ACCOUNT_NAME" />
+		<field name="ACCOUNT_TYPE" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT" />
+		<field name="DIRECTORY_AUTHORITY" />
+		<field name="DISPLAY_NAME" />
+		<field name="EXPORT_SUPPORT" />
+		<field name="EXPORT_SUPPORT_ANY_ACCOUNT" />
+		<field name="EXPORT_SUPPORT_NONE" />
+		<field name="EXPORT_SUPPORT_SAME_ACCOUNT_ONLY" />
+		<field name="LOCAL_INVISIBLE" />
+		<field name="PACKAGE_NAME" />
+		<field name="PHOTO_SUPPORT" />
+		<field name="PHOTO_SUPPORT_FULL" />
+		<field name="PHOTO_SUPPORT_FULL_SIZE_ONLY" />
+		<field name="PHOTO_SUPPORT_NONE" />
+		<field name="PHOTO_SUPPORT_THUMBNAIL_ONLY" />
+		<field name="SHORTCUT_SUPPORT" />
+		<field name="SHORTCUT_SUPPORT_DATA_ITEMS_ONLY" />
+		<field name="SHORTCUT_SUPPORT_FULL" />
+		<field name="SHORTCUT_SUPPORT_NONE" />
+		<field name="TYPE_RESOURCE_ID" />
+	</class>
+	<class name="android/provider/ContactsContract$DisplayNameSources" since="11">
+		<field name="EMAIL" />
+		<field name="NICKNAME" />
+		<field name="ORGANIZATION" />
+		<field name="PHONE" />
+		<field name="STRUCTURED_NAME" />
+		<field name="UNDEFINED" />
+	</class>
+	<class name="android/provider/ContactsContract$DisplayPhoto" since="14">
+		<field name="CONTENT_MAX_DIMENSIONS_URI" />
+		<field name="CONTENT_URI" />
+		<field name="DISPLAY_MAX_DIM" />
+		<field name="THUMBNAIL_MAX_DIM" />
+	</class>
+	<class name="android/provider/ContactsContract$FullNameStyle" since="11">
+		<field name="CHINESE" />
+		<field name="CJK" />
+		<field name="JAPANESE" />
+		<field name="KOREAN" />
+		<field name="UNDEFINED" />
+		<field name="WESTERN" />
+	</class>
+	<class name="android/provider/ContactsContract$Groups" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$GroupsColumns" />
+		<implements name="android/provider/ContactsContract$SyncColumns" />
+		<method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" since="8" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_SUMMARY_URI" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$GroupsColumns" since="5">
+		<field name="AUTO_ADD" since="11" />
+		<field name="DATA_SET" since="14" />
+		<field name="DELETED" />
+		<field name="FAVORITES" since="11" />
+		<field name="GROUP_IS_READ_ONLY" since="11" />
+		<field name="GROUP_VISIBLE" />
+		<field name="NOTES" />
+		<field name="SHOULD_SYNC" />
+		<field name="SUMMARY_COUNT" />
+		<field name="SUMMARY_WITH_PHONES" />
+		<field name="SYSTEM_ID" />
+		<field name="TITLE" />
+	</class>
+	<class name="android/provider/ContactsContract$Intents" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ATTACH_IMAGE" />
+		<field name="EXTRA_CREATE_DESCRIPTION" />
+		<field name="EXTRA_FORCE_CREATE" />
+		<field name="INVITE_CONTACT" since="14" />
+		<field name="SEARCH_SUGGESTION_CLICKED" />
+		<field name="SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED" />
+		<field name="SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED" />
+		<field name="SHOW_OR_CREATE_CONTACT" />
+	</class>
+	<class name="android/provider/ContactsContract$Intents$Insert" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACTION" />
+		<field name="COMPANY" />
+		<field name="DATA" since="11" />
+		<field name="EMAIL" />
+		<field name="EMAIL_ISPRIMARY" />
+		<field name="EMAIL_TYPE" />
+		<field name="FULL_MODE" />
+		<field name="IM_HANDLE" />
+		<field name="IM_ISPRIMARY" />
+		<field name="IM_PROTOCOL" />
+		<field name="JOB_TITLE" />
+		<field name="NAME" />
+		<field name="NOTES" />
+		<field name="PHONE" />
+		<field name="PHONETIC_NAME" />
+		<field name="PHONE_ISPRIMARY" />
+		<field name="PHONE_TYPE" />
+		<field name="POSTAL" />
+		<field name="POSTAL_ISPRIMARY" />
+		<field name="POSTAL_TYPE" />
+		<field name="SECONDARY_EMAIL" />
+		<field name="SECONDARY_EMAIL_TYPE" />
+		<field name="SECONDARY_PHONE" />
+		<field name="SECONDARY_PHONE_TYPE" />
+		<field name="TERTIARY_EMAIL" />
+		<field name="TERTIARY_EMAIL_TYPE" />
+		<field name="TERTIARY_PHONE" />
+		<field name="TERTIARY_PHONE_TYPE" />
+	</class>
+	<class name="android/provider/ContactsContract$PhoneLookup" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
+		<implements name="android/provider/ContactsContract$ContactsColumns" />
+		<implements name="android/provider/ContactsContract$PhoneLookupColumns" />
+		<field name="CONTENT_FILTER_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$PhoneLookupColumns" since="5">
+		<field name="LABEL" />
+		<field name="NUMBER" />
+		<field name="TYPE" />
+	</class>
+	<class name="android/provider/ContactsContract$PhoneticNameStyle" since="11">
+		<field name="JAPANESE" />
+		<field name="KOREAN" />
+		<field name="PINYIN" />
+		<field name="UNDEFINED" />
+	</class>
+	<class name="android/provider/ContactsContract$Presence" since="5">
+		<extends name="android/provider/ContactsContract$StatusUpdates" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/provider/ContactsContract$PresenceColumns" since="5">
+		<field name="CUSTOM_PROTOCOL" />
+		<field name="DATA_ID" />
+		<field name="IM_ACCOUNT" />
+		<field name="IM_HANDLE" />
+		<field name="PROTOCOL" />
+	</class>
+	<class name="android/provider/ContactsContract$Profile" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$ContactNameColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
+		<implements name="android/provider/ContactsContract$ContactStatusColumns" />
+		<implements name="android/provider/ContactsContract$ContactsColumns" />
+		<field name="CONTENT_RAW_CONTACTS_URI" />
+		<field name="CONTENT_URI" />
+		<field name="CONTENT_VCARD_URI" />
+		<field name="MIN_ID" />
+	</class>
+	<class name="android/provider/ContactsContract$ProfileSyncState" since="14">
+		<implements name="android/provider/SyncStateContract$Columns" />
+		<method name="get(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)[B" />
+		<method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;" />
+		<method name="newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;" />
+		<method name="set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$QuickContact" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="showQuickContact(Landroid/content/Context;Landroid/graphics/Rect;Landroid/net/Uri;I[Ljava/lang/String;)V" />
+		<method name="showQuickContact(Landroid/content/Context;Landroid/view/View;Landroid/net/Uri;I[Ljava/lang/String;)V" />
+		<field name="MODE_LARGE" />
+		<field name="MODE_MEDIUM" />
+		<field name="MODE_SMALL" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContacts" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$ContactOptionsColumns" />
+		<implements name="android/provider/ContactsContract$RawContactsColumns" />
+		<implements name="android/provider/ContactsContract$SyncColumns" />
+		<implements name="android/provider/ContactsContract$ContactNameColumns" since="11" />
+		<method name="getContactLookupUri(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/net/Uri;" />
+		<method name="newEntityIterator(Landroid/database/Cursor;)Landroid/content/EntityIterator;" since="8" />
+		<field name="AGGREGATION_MODE_DEFAULT" />
+		<field name="AGGREGATION_MODE_DISABLED" />
+		<field name="AGGREGATION_MODE_IMMEDIATE" />
+		<field name="AGGREGATION_MODE_SUSPENDED" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContacts$Data" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContacts$DisplayPhoto" since="14">
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContacts$Entity" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DATA_ID" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContacts$StreamItems" since="15">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$StreamItemsColumns" />
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContactsColumns" since="5">
+		<field name="AGGREGATION_MODE" />
+		<field name="CONTACT_ID" />
+		<field name="DATA_SET" since="14" />
+		<field name="DELETED" />
+		<field name="RAW_CONTACT_IS_READ_ONLY" since="11" />
+		<field name="RAW_CONTACT_IS_USER_PROFILE" since="14" />
+	</class>
+	<class name="android/provider/ContactsContract$RawContactsEntity" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$DataColumns" />
+		<implements name="android/provider/ContactsContract$RawContactsColumns" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DATA_ID" />
+		<field name="PROFILE_CONTENT_URI" since="14" />
+	</class>
+	<class name="android/provider/ContactsContract$Settings" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$SettingsColumns" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/ContactsContract$SettingsColumns" since="5">
+		<field name="ACCOUNT_NAME" />
+		<field name="ACCOUNT_TYPE" />
+		<field name="ANY_UNSYNCED" />
+		<field name="DATA_SET" since="14" />
+		<field name="SHOULD_SYNC" />
+		<field name="UNGROUPED_COUNT" />
+		<field name="UNGROUPED_VISIBLE" />
+		<field name="UNGROUPED_WITH_PHONES" />
+	</class>
+	<class name="android/provider/ContactsContract$StatusColumns" since="5">
+		<field name="AVAILABLE" since="8" />
+		<field name="AWAY" since="8" />
+		<field name="CAPABILITY_HAS_CAMERA" since="11" />
+		<field name="CAPABILITY_HAS_VIDEO" since="11" />
+		<field name="CAPABILITY_HAS_VOICE" since="11" />
+		<field name="CHAT_CAPABILITY" since="11" />
+		<field name="DO_NOT_DISTURB" since="8" />
+		<field name="IDLE" since="8" />
+		<field name="INVISIBLE" since="8" />
+		<field name="OFFLINE" since="8" />
+		<field name="PRESENCE" />
+		<field name="PRESENCE_CUSTOM_STATUS" since="8" />
+		<field name="PRESENCE_STATUS" since="8" />
+		<field name="STATUS" />
+		<field name="STATUS_ICON" />
+		<field name="STATUS_LABEL" />
+		<field name="STATUS_RES_PACKAGE" />
+		<field name="STATUS_TIMESTAMP" />
+	</class>
+	<class name="android/provider/ContactsContract$StatusUpdates" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/ContactsContract$PresenceColumns" />
+		<implements name="android/provider/ContactsContract$StatusColumns" />
+		<method name="getPresenceIconResourceId(I)I" />
+		<method name="getPresencePrecedence(I)I" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="PROFILE_CONTENT_URI" since="14" />
+	</class>
+	<class name="android/provider/ContactsContract$StreamItemPhotos" since="15">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$StreamItemPhotosColumns" />
+		<field name="PHOTO" />
+	</class>
+	<class name="android/provider/ContactsContract$StreamItemPhotosColumns" since="15">
+		<field name="PHOTO_FILE_ID" />
+		<field name="PHOTO_URI" />
+		<field name="SORT_INDEX" />
+		<field name="STREAM_ITEM_ID" />
+		<field name="SYNC1" />
+		<field name="SYNC2" />
+		<field name="SYNC3" />
+		<field name="SYNC4" />
+	</class>
+	<class name="android/provider/ContactsContract$StreamItems" since="15">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$StreamItemsColumns" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_LIMIT_URI" />
+		<field name="CONTENT_PHOTO_URI" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="MAX_ITEMS" />
+	</class>
+	<class name="android/provider/ContactsContract$StreamItems$StreamItemPhotos" since="15">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/ContactsContract$StreamItemPhotosColumns" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+	</class>
+	<class name="android/provider/ContactsContract$StreamItemsColumns" since="15">
+		<field name="ACCOUNT_NAME" />
+		<field name="ACCOUNT_TYPE" />
+		<field name="COMMENTS" />
+		<field name="CONTACT_ID" />
+		<field name="CONTACT_LOOKUP_KEY" />
+		<field name="DATA_SET" />
+		<field name="RAW_CONTACT_ID" />
+		<field name="RAW_CONTACT_SOURCE_ID" />
+		<field name="RES_ICON" />
+		<field name="RES_LABEL" />
+		<field name="RES_PACKAGE" />
+		<field name="SYNC1" />
+		<field name="SYNC2" />
+		<field name="SYNC3" />
+		<field name="SYNC4" />
+		<field name="TEXT" />
+		<field name="TIMESTAMP" />
+	</class>
+	<class name="android/provider/ContactsContract$SyncColumns" since="5">
+		<implements name="android/provider/ContactsContract$BaseSyncColumns" />
+		<field name="ACCOUNT_NAME" />
+		<field name="ACCOUNT_TYPE" />
+		<field name="DIRTY" />
+		<field name="SOURCE_ID" />
+		<field name="VERSION" />
+	</class>
+	<class name="android/provider/ContactsContract$SyncState" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/SyncStateContract$Columns" />
+		<method name="get(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)[B" />
+		<method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/accounts/Account;)Landroid/util/Pair;" />
+		<method name="newSetOperation(Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;" />
+		<method name="set(Landroid/content/ContentProviderClient;Landroid/accounts/Account;[B)V" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/LiveFolders" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<field name="ACTION_CREATE_LIVE_FOLDER" />
+		<field name="DESCRIPTION" />
+		<field name="DISPLAY_MODE_GRID" />
+		<field name="DISPLAY_MODE_LIST" />
+		<field name="EXTRA_LIVE_FOLDER_BASE_INTENT" />
+		<field name="EXTRA_LIVE_FOLDER_DISPLAY_MODE" />
+		<field name="EXTRA_LIVE_FOLDER_ICON" />
+		<field name="EXTRA_LIVE_FOLDER_NAME" />
+		<field name="ICON_BITMAP" />
+		<field name="ICON_PACKAGE" />
+		<field name="ICON_RESOURCE" />
+		<field name="INTENT" />
+		<field name="NAME" />
+	</class>
+	<class name="android/provider/MediaStore" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getMediaScannerUri()Landroid/net/Uri;" />
+		<method name="getVersion(Landroid/content/Context;)Ljava/lang/String;" since="12" />
+		<field name="ACTION_IMAGE_CAPTURE" since="3" />
+		<field name="ACTION_VIDEO_CAPTURE" since="3" />
+		<field name="AUTHORITY" />
+		<field name="EXTRA_DURATION_LIMIT" since="8" />
+		<field name="EXTRA_FINISH_ON_COMPLETION" since="3" />
+		<field name="EXTRA_FULL_SCREEN" since="8" />
+		<field name="EXTRA_MEDIA_ALBUM" since="3" />
+		<field name="EXTRA_MEDIA_ARTIST" since="3" />
+		<field name="EXTRA_MEDIA_FOCUS" since="3" />
+		<field name="EXTRA_MEDIA_TITLE" since="3" />
+		<field name="EXTRA_OUTPUT" since="3" />
+		<field name="EXTRA_SCREEN_ORIENTATION" since="3" />
+		<field name="EXTRA_SHOW_ACTION_ICONS" since="8" />
+		<field name="EXTRA_SIZE_LIMIT" since="8" />
+		<field name="EXTRA_VIDEO_QUALITY" since="3" />
+		<field name="INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH" since="9" />
+		<field name="INTENT_ACTION_MEDIA_SEARCH" since="3" />
+		<field name="INTENT_ACTION_MUSIC_PLAYER" since="8" />
+		<field name="INTENT_ACTION_STILL_IMAGE_CAMERA" since="3" />
+		<field name="INTENT_ACTION_VIDEO_CAMERA" since="3" />
+		<field name="MEDIA_IGNORE_FILENAME" since="9" />
+		<field name="MEDIA_SCANNER_VOLUME" />
+		<field name="UNKNOWN_STRING" since="8" />
+	</class>
+	<class name="android/provider/MediaStore$Audio" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="keyFor(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$AlbumColumns" since="1">
+		<field name="ALBUM" />
+		<field name="ALBUM_ART" />
+		<field name="ALBUM_ID" />
+		<field name="ALBUM_KEY" />
+		<field name="ARTIST" />
+		<field name="FIRST_YEAR" />
+		<field name="LAST_YEAR" />
+		<field name="NUMBER_OF_SONGS" />
+		<field name="NUMBER_OF_SONGS_FOR_ARTIST" since="3" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Albums" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/MediaStore$Audio$AlbumColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="ENTRY_CONTENT_TYPE" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="INTERNAL_CONTENT_URI" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$ArtistColumns" since="1">
+		<field name="ARTIST" />
+		<field name="ARTIST_KEY" />
+		<field name="NUMBER_OF_ALBUMS" />
+		<field name="NUMBER_OF_TRACKS" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Artists" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/MediaStore$Audio$ArtistColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="ENTRY_CONTENT_TYPE" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="INTERNAL_CONTENT_URI" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Artists$Albums" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/MediaStore$Audio$AlbumColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$AudioColumns" since="1">
+		<implements name="android/provider/MediaStore$MediaColumns" />
+		<field name="ALBUM" />
+		<field name="ALBUM_ART" />
+		<field name="ALBUM_ID" />
+		<field name="ALBUM_KEY" />
+		<field name="ARTIST" />
+		<field name="ARTIST_ID" />
+		<field name="ARTIST_KEY" />
+		<field name="BOOKMARK" since="8" />
+		<field name="COMPOSER" />
+		<field name="DURATION" />
+		<field name="IS_ALARM" />
+		<field name="IS_MUSIC" />
+		<field name="IS_NOTIFICATION" />
+		<field name="IS_PODCAST" since="8" />
+		<field name="IS_RINGTONE" />
+		<field name="TITLE_KEY" />
+		<field name="TRACK" />
+		<field name="YEAR" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Genres" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/MediaStore$Audio$GenresColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="getContentUriForAudioId(Ljava/lang/String;I)Landroid/net/Uri;" since="11" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="ENTRY_CONTENT_TYPE" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="INTERNAL_CONTENT_URI" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Genres$Members" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/MediaStore$Audio$AudioColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
+		<field name="AUDIO_ID" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="GENRE_ID" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$GenresColumns" since="1">
+		<field name="NAME" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Media" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/MediaStore$Audio$AudioColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="getContentUriForPath(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="EXTRA_MAX_BYTES" since="3" />
+		<field name="INTERNAL_CONTENT_URI" />
+		<field name="RECORD_SOUND_ACTION" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Playlists" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/MediaStore$Audio$PlaylistsColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="ENTRY_CONTENT_TYPE" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="INTERNAL_CONTENT_URI" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$Playlists$Members" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/MediaStore$Audio$AudioColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
+		<method name="moveItem(Landroid/content/ContentResolver;JII)Z" since="8" />
+		<field name="AUDIO_ID" />
+		<field name="CONTENT_DIRECTORY" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="PLAYLIST_ID" />
+		<field name="PLAY_ORDER" />
+		<field name="_ID" />
+	</class>
+	<class name="android/provider/MediaStore$Audio$PlaylistsColumns" since="1">
+		<field name="DATA" />
+		<field name="DATE_ADDED" />
+		<field name="DATE_MODIFIED" />
+		<field name="NAME" />
+	</class>
+	<class name="android/provider/MediaStore$Files" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="getContentUri(Ljava/lang/String;J)Landroid/net/Uri;" />
+	</class>
+	<class name="android/provider/MediaStore$Files$FileColumns" since="11">
+		<implements name="android/provider/MediaStore$MediaColumns" />
+		<field name="MEDIA_TYPE" />
+		<field name="MEDIA_TYPE_AUDIO" />
+		<field name="MEDIA_TYPE_IMAGE" />
+		<field name="MEDIA_TYPE_NONE" />
+		<field name="MEDIA_TYPE_PLAYLIST" />
+		<field name="MEDIA_TYPE_VIDEO" />
+		<field name="MIME_TYPE" />
+		<field name="PARENT" />
+		<field name="TITLE" />
+	</class>
+	<class name="android/provider/MediaStore$Images" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/provider/MediaStore$Images$ImageColumns" since="1">
+		<implements name="android/provider/MediaStore$MediaColumns" />
+		<field name="BUCKET_DISPLAY_NAME" />
+		<field name="BUCKET_ID" />
+		<field name="DATE_TAKEN" />
+		<field name="DESCRIPTION" />
+		<field name="IS_PRIVATE" />
+		<field name="LATITUDE" />
+		<field name="LONGITUDE" />
+		<field name="MINI_THUMB_MAGIC" />
+		<field name="ORIENTATION" />
+		<field name="PICASA_ID" />
+	</class>
+	<class name="android/provider/MediaStore$Images$Media" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/MediaStore$Images$ImageColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getBitmap(Landroid/content/ContentResolver;Landroid/net/Uri;)Landroid/graphics/Bitmap;" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="insertImage(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="insertImage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="INTERNAL_CONTENT_URI" />
+	</class>
+	<class name="android/provider/MediaStore$Images$Thumbnails" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;J)V" since="5" />
+		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;JJ)V" since="8" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="getThumbnail(Landroid/content/ContentResolver;JILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="5" />
+		<method name="getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="8" />
+		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="queryMiniThumbnail(Landroid/content/ContentResolver;JI[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="queryMiniThumbnails(Landroid/content/ContentResolver;Landroid/net/Uri;I[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<field name="DATA" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="FULL_SCREEN_KIND" />
+		<field name="HEIGHT" />
+		<field name="IMAGE_ID" />
+		<field name="INTERNAL_CONTENT_URI" />
+		<field name="KIND" />
+		<field name="MICRO_KIND" />
+		<field name="MINI_KIND" />
+		<field name="THUMB_DATA" since="5" />
+		<field name="WIDTH" />
+	</class>
+	<class name="android/provider/MediaStore$MediaColumns" since="1">
+		<implements name="android/provider/BaseColumns" />
+		<field name="DATA" />
+		<field name="DATE_ADDED" />
+		<field name="DATE_MODIFIED" />
+		<field name="DISPLAY_NAME" />
+		<field name="MIME_TYPE" />
+		<field name="SIZE" />
+		<field name="TITLE" />
+	</class>
+	<class name="android/provider/MediaStore$Video" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="query(Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;)Landroid/database/Cursor;" />
+		<field name="DEFAULT_SORT_ORDER" />
+	</class>
+	<class name="android/provider/MediaStore$Video$Media" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/MediaStore$Video$VideoColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONTENT_TYPE" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="INTERNAL_CONTENT_URI" />
+	</class>
+	<class name="android/provider/MediaStore$Video$Thumbnails" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;J)V" />
+		<method name="cancelThumbnailRequest(Landroid/content/ContentResolver;JJ)V" since="8" />
+		<method name="getContentUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="getThumbnail(Landroid/content/ContentResolver;JILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" />
+		<method name="getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;" since="8" />
+		<field name="DATA" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="EXTERNAL_CONTENT_URI" />
+		<field name="FULL_SCREEN_KIND" />
+		<field name="HEIGHT" />
+		<field name="INTERNAL_CONTENT_URI" />
+		<field name="KIND" />
+		<field name="MICRO_KIND" />
+		<field name="MINI_KIND" />
+		<field name="VIDEO_ID" />
+		<field name="WIDTH" />
+	</class>
+	<class name="android/provider/MediaStore$Video$VideoColumns" since="1">
+		<implements name="android/provider/MediaStore$MediaColumns" />
+		<field name="ALBUM" />
+		<field name="ARTIST" />
+		<field name="BOOKMARK" since="3" />
+		<field name="BUCKET_DISPLAY_NAME" since="3" />
+		<field name="BUCKET_ID" since="3" />
+		<field name="CATEGORY" />
+		<field name="DATE_TAKEN" />
+		<field name="DESCRIPTION" />
+		<field name="DURATION" />
+		<field name="IS_PRIVATE" />
+		<field name="LANGUAGE" />
+		<field name="LATITUDE" />
+		<field name="LONGITUDE" />
+		<field name="MINI_THUMB_MAGIC" />
+		<field name="RESOLUTION" />
+		<field name="TAGS" />
+	</class>
+	<class name="android/provider/OpenableColumns" since="1">
+		<field name="DISPLAY_NAME" />
+		<field name="SIZE" />
+	</class>
+	<class name="android/provider/SearchRecentSuggestions" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;I)V" />
+		<method name="clearHistory()V" />
+		<method name="saveRecentQuery(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="truncateHistory(Landroid/content/ContentResolver;I)V" />
+		<field name="QUERIES_PROJECTION_1LINE" />
+		<field name="QUERIES_PROJECTION_2LINE" />
+		<field name="QUERIES_PROJECTION_DATE_INDEX" />
+		<field name="QUERIES_PROJECTION_DISPLAY1_INDEX" />
+		<field name="QUERIES_PROJECTION_DISPLAY2_INDEX" />
+		<field name="QUERIES_PROJECTION_QUERY_INDEX" />
+	</class>
+	<class name="android/provider/Settings" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACTION_ACCESSIBILITY_SETTINGS" since="5" />
+		<field name="ACTION_ADD_ACCOUNT" since="8" />
+		<field name="ACTION_AIRPLANE_MODE_SETTINGS" since="3" />
+		<field name="ACTION_APN_SETTINGS" />
+		<field name="ACTION_APPLICATION_DETAILS_SETTINGS" since="9" />
+		<field name="ACTION_APPLICATION_DEVELOPMENT_SETTINGS" since="3" />
+		<field name="ACTION_APPLICATION_SETTINGS" />
+		<field name="ACTION_BLUETOOTH_SETTINGS" />
+		<field name="ACTION_DATA_ROAMING_SETTINGS" since="3" />
+		<field name="ACTION_DATE_SETTINGS" />
+		<field name="ACTION_DEVICE_INFO_SETTINGS" since="8" />
+		<field name="ACTION_DISPLAY_SETTINGS" />
+		<field name="ACTION_INPUT_METHOD_SETTINGS" since="3" />
+		<field name="ACTION_INPUT_METHOD_SUBTYPE_SETTINGS" since="11" />
+		<field name="ACTION_INTERNAL_STORAGE_SETTINGS" since="3" />
+		<field name="ACTION_LOCALE_SETTINGS" />
+		<field name="ACTION_LOCATION_SOURCE_SETTINGS" />
+		<field name="ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS" since="9" />
+		<field name="ACTION_MANAGE_APPLICATIONS_SETTINGS" since="3" />
+		<field name="ACTION_MEMORY_CARD_SETTINGS" since="3" />
+		<field name="ACTION_NETWORK_OPERATOR_SETTINGS" since="3" />
+		<field name="ACTION_NFCSHARING_SETTINGS" since="14" />
+		<field name="ACTION_PRIVACY_SETTINGS" since="5" />
+		<field name="ACTION_QUICK_LAUNCH_SETTINGS" since="3" />
+		<field name="ACTION_SEARCH_SETTINGS" since="8" />
+		<field name="ACTION_SECURITY_SETTINGS" />
+		<field name="ACTION_SETTINGS" />
+		<field name="ACTION_SOUND_SETTINGS" />
+		<field name="ACTION_SYNC_SETTINGS" since="3" />
+		<field name="ACTION_USER_DICTIONARY_SETTINGS" since="3" />
+		<field name="ACTION_WIFI_IP_SETTINGS" since="3" />
+		<field name="ACTION_WIFI_SETTINGS" />
+		<field name="ACTION_WIRELESS_SETTINGS" />
+		<field name="AUTHORITY" />
+		<field name="EXTRA_AUTHORITIES" since="8" />
+		<field name="EXTRA_INPUT_METHOD_ID" since="11" />
+	</class>
+	<class name="android/provider/Settings$NameValueTable" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<method name="getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="putString(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)Z" />
+		<field name="NAME" />
+		<field name="VALUE" />
+	</class>
+	<class name="android/provider/Settings$Secure" since="3">
+		<extends name="android/provider/Settings$NameValueTable" />
+		<method name="&lt;init>()V" />
+		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F" />
+		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F" />
+		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I" />
+		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I" />
+		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J" />
+		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J" />
+		<method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z" since="8" />
+		<method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z" />
+		<method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z" />
+		<method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z" />
+		<method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="setLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;Z)V" since="8" />
+		<field name="ACCESSIBILITY_ENABLED" since="4" />
+		<field name="ACCESSIBILITY_SPEAK_PASSWORD" since="15" />
+		<field name="ADB_ENABLED" />
+		<field name="ALLOWED_GEOLOCATION_ORIGINS" since="8" />
+		<field name="ALLOW_MOCK_LOCATION" />
+		<field name="ANDROID_ID" />
+		<field name="BACKGROUND_DATA" />
+		<field name="BLUETOOTH_ON" />
+		<field name="CONTENT_URI" />
+		<field name="DATA_ROAMING" />
+		<field name="DEFAULT_INPUT_METHOD" />
+		<field name="DEVICE_PROVISIONED" />
+		<field name="ENABLED_ACCESSIBILITY_SERVICES" since="4" />
+		<field name="ENABLED_INPUT_METHODS" />
+		<field name="HTTP_PROXY" />
+		<field name="INPUT_METHOD_SELECTOR_VISIBILITY" since="11" />
+		<field name="INSTALL_NON_MARKET_APPS" />
+		<field name="LOCATION_PROVIDERS_ALLOWED" />
+		<field name="LOCK_PATTERN_ENABLED" since="8" />
+		<field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" since="8" />
+		<field name="LOCK_PATTERN_VISIBLE" since="8" />
+		<field name="LOGGING_ID" />
+		<field name="NETWORK_PREFERENCE" />
+		<field name="PARENTAL_CONTROL_ENABLED" />
+		<field name="PARENTAL_CONTROL_LAST_UPDATE" />
+		<field name="PARENTAL_CONTROL_REDIRECT_URL" />
+		<field name="SELECTED_INPUT_METHOD_SUBTYPE" since="11" />
+		<field name="SETTINGS_CLASSNAME" />
+		<field name="SYS_PROP_SETTING_VERSION" />
+		<field name="TOUCH_EXPLORATION_ENABLED" since="14" />
+		<field name="TTS_DEFAULT_COUNTRY" since="4" />
+		<field name="TTS_DEFAULT_LANG" since="4" />
+		<field name="TTS_DEFAULT_PITCH" since="4" />
+		<field name="TTS_DEFAULT_RATE" since="4" />
+		<field name="TTS_DEFAULT_SYNTH" since="4" />
+		<field name="TTS_DEFAULT_VARIANT" since="4" />
+		<field name="TTS_ENABLED_PLUGINS" since="8" />
+		<field name="TTS_USE_DEFAULTS" since="4" />
+		<field name="USB_MASS_STORAGE_ENABLED" />
+		<field name="USE_GOOGLE_MAIL" />
+		<field name="WIFI_MAX_DHCP_RETRY_COUNT" />
+		<field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" />
+		<field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" />
+		<field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" />
+		<field name="WIFI_NUM_OPEN_NETWORKS_KEPT" />
+		<field name="WIFI_ON" />
+		<field name="WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE" />
+		<field name="WIFI_WATCHDOG_AP_COUNT" />
+		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS" />
+		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED" />
+		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS" />
+		<field name="WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT" />
+		<field name="WIFI_WATCHDOG_MAX_AP_CHECKS" />
+		<field name="WIFI_WATCHDOG_ON" />
+		<field name="WIFI_WATCHDOG_PING_COUNT" />
+		<field name="WIFI_WATCHDOG_PING_DELAY_MS" />
+		<field name="WIFI_WATCHDOG_PING_TIMEOUT_MS" />
+		<field name="WIFI_WATCHDOG_WATCH_LIST" />
+	</class>
+	<class name="android/provider/Settings$SettingNotFoundException" since="1">
+		<extends name="android/util/AndroidException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/provider/Settings$System" since="1">
+		<extends name="android/provider/Settings$NameValueTable" />
+		<method name="&lt;init>()V" />
+		<method name="getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V" />
+		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F" />
+		<method name="getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F" />
+		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I" />
+		<method name="getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I" />
+		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;)J" since="3" />
+		<method name="getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J" since="3" />
+		<method name="getShowGTalkServiceStatus(Landroid/content/ContentResolver;)Z" />
+		<method name="getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getUriFor(Ljava/lang/String;)Landroid/net/Uri;" />
+		<method name="putConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)Z" />
+		<method name="putFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)Z" />
+		<method name="putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z" />
+		<method name="putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z" since="3" />
+		<method name="putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="setShowGTalkServiceStatus(Landroid/content/ContentResolver;Z)V" />
+		<field name="ACCELEROMETER_ROTATION" since="3" />
+		<field name="ADB_ENABLED" />
+		<field name="AIRPLANE_MODE_ON" />
+		<field name="AIRPLANE_MODE_RADIOS" />
+		<field name="ALARM_ALERT" since="5" />
+		<field name="ALWAYS_FINISH_ACTIVITIES" />
+		<field name="ANDROID_ID" />
+		<field name="APPEND_FOR_LAST_AUDIBLE" />
+		<field name="AUTO_TIME" />
+		<field name="AUTO_TIME_ZONE" since="11" />
+		<field name="BLUETOOTH_DISCOVERABILITY" />
+		<field name="BLUETOOTH_DISCOVERABILITY_TIMEOUT" />
+		<field name="BLUETOOTH_ON" />
+		<field name="CONTENT_URI" />
+		<field name="DATA_ROAMING" />
+		<field name="DATE_FORMAT" />
+		<field name="DEBUG_APP" />
+		<field name="DEFAULT_ALARM_ALERT_URI" since="5" />
+		<field name="DEFAULT_NOTIFICATION_URI" />
+		<field name="DEFAULT_RINGTONE_URI" />
+		<field name="DEVICE_PROVISIONED" />
+		<field name="DIM_SCREEN" />
+		<field name="DTMF_TONE_WHEN_DIALING" />
+		<field name="END_BUTTON_BEHAVIOR" />
+		<field name="FONT_SCALE" />
+		<field name="HAPTIC_FEEDBACK_ENABLED" since="3" />
+		<field name="HTTP_PROXY" />
+		<field name="INSTALL_NON_MARKET_APPS" />
+		<field name="LOCATION_PROVIDERS_ALLOWED" />
+		<field name="LOCK_PATTERN_ENABLED" />
+		<field name="LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED" since="3" />
+		<field name="LOCK_PATTERN_VISIBLE" />
+		<field name="LOGGING_ID" />
+		<field name="MODE_RINGER" />
+		<field name="MODE_RINGER_STREAMS_AFFECTED" />
+		<field name="MUTE_STREAMS_AFFECTED" />
+		<field name="NETWORK_PREFERENCE" />
+		<field name="NEXT_ALARM_FORMATTED" />
+		<field name="NOTIFICATION_SOUND" />
+		<field name="PARENTAL_CONTROL_ENABLED" />
+		<field name="PARENTAL_CONTROL_LAST_UPDATE" />
+		<field name="PARENTAL_CONTROL_REDIRECT_URL" />
+		<field name="RADIO_BLUETOOTH" />
+		<field name="RADIO_CELL" />
+		<field name="RADIO_NFC" since="14" />
+		<field name="RADIO_WIFI" />
+		<field name="RINGTONE" />
+		<field name="SCREEN_BRIGHTNESS" />
+		<field name="SCREEN_BRIGHTNESS_MODE" since="8" />
+		<field name="SCREEN_BRIGHTNESS_MODE_AUTOMATIC" since="8" />
+		<field name="SCREEN_BRIGHTNESS_MODE_MANUAL" since="8" />
+		<field name="SCREEN_OFF_TIMEOUT" />
+		<field name="SETTINGS_CLASSNAME" />
+		<field name="SETUP_WIZARD_HAS_RUN" />
+		<field name="SHOW_GTALK_SERVICE_STATUS" />
+		<field name="SHOW_PROCESSES" />
+		<field name="SHOW_WEB_SUGGESTIONS" since="4" />
+		<field name="SOUND_EFFECTS_ENABLED" />
+		<field name="STAY_ON_WHILE_PLUGGED_IN" />
+		<field name="SYS_PROP_SETTING_VERSION" />
+		<field name="TEXT_AUTO_CAPS" />
+		<field name="TEXT_AUTO_PUNCTUATE" />
+		<field name="TEXT_AUTO_REPLACE" />
+		<field name="TEXT_SHOW_PASSWORD" />
+		<field name="TIME_12_24" />
+		<field name="TRANSITION_ANIMATION_SCALE" />
+		<field name="USB_MASS_STORAGE_ENABLED" />
+		<field name="USER_ROTATION" since="11" />
+		<field name="USE_GOOGLE_MAIL" />
+		<field name="VIBRATE_ON" />
+		<field name="VOLUME_ALARM" />
+		<field name="VOLUME_BLUETOOTH_SCO" since="8" />
+		<field name="VOLUME_MUSIC" />
+		<field name="VOLUME_NOTIFICATION" since="3" />
+		<field name="VOLUME_RING" />
+		<field name="VOLUME_SETTINGS" />
+		<field name="VOLUME_SYSTEM" />
+		<field name="VOLUME_VOICE" />
+		<field name="WAIT_FOR_DEBUGGER" />
+		<field name="WALLPAPER_ACTIVITY" />
+		<field name="WIFI_MAX_DHCP_RETRY_COUNT" since="3" />
+		<field name="WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS" since="3" />
+		<field name="WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON" />
+		<field name="WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY" />
+		<field name="WIFI_NUM_OPEN_NETWORKS_KEPT" />
+		<field name="WIFI_ON" />
+		<field name="WIFI_SLEEP_POLICY" since="3" />
+		<field name="WIFI_SLEEP_POLICY_DEFAULT" since="3" />
+		<field name="WIFI_SLEEP_POLICY_NEVER" since="3" />
+		<field name="WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED" since="3" />
+		<field name="WIFI_STATIC_DNS1" />
+		<field name="WIFI_STATIC_DNS2" />
+		<field name="WIFI_STATIC_GATEWAY" />
+		<field name="WIFI_STATIC_IP" />
+		<field name="WIFI_STATIC_NETMASK" />
+		<field name="WIFI_USE_STATIC_IP" />
+		<field name="WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE" />
+		<field name="WIFI_WATCHDOG_AP_COUNT" />
+		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS" />
+		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED" />
+		<field name="WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS" />
+		<field name="WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT" />
+		<field name="WIFI_WATCHDOG_MAX_AP_CHECKS" />
+		<field name="WIFI_WATCHDOG_ON" />
+		<field name="WIFI_WATCHDOG_PING_COUNT" />
+		<field name="WIFI_WATCHDOG_PING_DELAY_MS" />
+		<field name="WIFI_WATCHDOG_PING_TIMEOUT_MS" />
+		<field name="WINDOW_ANIMATION_SCALE" />
+	</class>
+	<class name="android/provider/SyncStateContract" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/provider/SyncStateContract$Columns" since="5">
+		<implements name="android/provider/BaseColumns" />
+		<field name="ACCOUNT_NAME" />
+		<field name="ACCOUNT_TYPE" />
+		<field name="DATA" />
+	</class>
+	<class name="android/provider/SyncStateContract$Constants" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/SyncStateContract$Columns" />
+		<method name="&lt;init>()V" />
+		<field name="CONTENT_DIRECTORY" />
+	</class>
+	<class name="android/provider/SyncStateContract$Helpers" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="get(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;)[B" />
+		<method name="getWithUri(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;)Landroid/util/Pair;" />
+		<method name="insert(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;[B)Landroid/net/Uri;" />
+		<method name="newSetOperation(Landroid/net/Uri;Landroid/accounts/Account;[B)Landroid/content/ContentProviderOperation;" />
+		<method name="newUpdateOperation(Landroid/net/Uri;[B)Landroid/content/ContentProviderOperation;" />
+		<method name="set(Landroid/content/ContentProviderClient;Landroid/net/Uri;Landroid/accounts/Account;[B)V" />
+		<method name="update(Landroid/content/ContentProviderClient;Landroid/net/Uri;[B)V" />
+	</class>
+	<class name="android/provider/UserDictionary" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="AUTHORITY" />
+		<field name="CONTENT_URI" />
+	</class>
+	<class name="android/provider/UserDictionary$Words" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/provider/BaseColumns" />
+		<method name="&lt;init>()V" />
+		<method name="addWord(Landroid/content/Context;Ljava/lang/String;II)V" />
+		<field name="APP_ID" />
+		<field name="CONTENT_ITEM_TYPE" />
+		<field name="CONTENT_TYPE" />
+		<field name="CONTENT_URI" />
+		<field name="DEFAULT_SORT_ORDER" />
+		<field name="FREQUENCY" />
+		<field name="LOCALE" />
+		<field name="LOCALE_TYPE_ALL" />
+		<field name="LOCALE_TYPE_CURRENT" />
+		<field name="WORD" />
+		<field name="_ID" />
+	</class>
+	<class name="android/provider/VoicemailContract" since="14">
+		<field name="ACTION_FETCH_VOICEMAIL" />
+		<field name="ACTION_NEW_VOICEMAIL" />
+		<field name="AUTHORITY" />
+		<field name="EXTRA_SELF_CHANGE" />
+		<field name="PARAM_KEY_SOURCE_PACKAGE" />
+	</class>
+	<class name="android/provider/VoicemailContract$Status" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<method name="buildSourceUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONFIGURATION_STATE" />
+		<field name="CONFIGURATION_STATE_CAN_BE_CONFIGURED" />
+		<field name="CONFIGURATION_STATE_NOT_CONFIGURED" />
+		<field name="CONFIGURATION_STATE_OK" />
+		<field name="CONTENT_URI" />
+		<field name="DATA_CHANNEL_STATE" />
+		<field name="DATA_CHANNEL_STATE_NO_CONNECTION" />
+		<field name="DATA_CHANNEL_STATE_OK" />
+		<field name="DIR_TYPE" />
+		<field name="ITEM_TYPE" />
+		<field name="NOTIFICATION_CHANNEL_STATE" />
+		<field name="NOTIFICATION_CHANNEL_STATE_MESSAGE_WAITING" />
+		<field name="NOTIFICATION_CHANNEL_STATE_NO_CONNECTION" />
+		<field name="NOTIFICATION_CHANNEL_STATE_OK" />
+		<field name="SETTINGS_URI" />
+		<field name="SOURCE_PACKAGE" />
+		<field name="VOICEMAIL_ACCESS_URI" />
+	</class>
+	<class name="android/provider/VoicemailContract$Voicemails" since="14">
+		<implements name="android/provider/BaseColumns" />
+		<implements name="android/provider/OpenableColumns" />
+		<method name="buildSourceUri(Ljava/lang/String;)Landroid/net/Uri;" />
+		<field name="CONTENT_URI" />
+		<field name="DATE" />
+		<field name="DIR_TYPE" />
+		<field name="DURATION" />
+		<field name="HAS_CONTENT" />
+		<field name="IS_READ" />
+		<field name="ITEM_TYPE" />
+		<field name="MIME_TYPE" />
+		<field name="NUMBER" />
+		<field name="SOURCE_DATA" />
+		<field name="SOURCE_PACKAGE" />
+	</class>
+	<class name="android/renderscript/Allocation" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="copy1DRangeFrom(IILandroid/renderscript/Allocation;I)V" since="14" />
+		<method name="copy1DRangeFrom(II[B)V" />
+		<method name="copy1DRangeFrom(II[F)V" />
+		<method name="copy1DRangeFrom(II[I)V" />
+		<method name="copy1DRangeFrom(II[S)V" />
+		<method name="copy1DRangeFromUnchecked(II[B)V" />
+		<method name="copy1DRangeFromUnchecked(II[F)V" />
+		<method name="copy1DRangeFromUnchecked(II[I)V" />
+		<method name="copy1DRangeFromUnchecked(II[S)V" />
+		<method name="copy2DRangeFrom(IIIILandroid/renderscript/Allocation;II)V" since="14" />
+		<method name="copy2DRangeFrom(IIII[B)V" />
+		<method name="copy2DRangeFrom(IIII[F)V" />
+		<method name="copy2DRangeFrom(IIII[I)V" />
+		<method name="copy2DRangeFrom(IIII[S)V" />
+		<method name="copy2DRangeFrom(IILandroid/graphics/Bitmap;)V" />
+		<method name="copyFrom(Landroid/graphics/Bitmap;)V" />
+		<method name="copyFrom([B)V" />
+		<method name="copyFrom([F)V" />
+		<method name="copyFrom([I)V" />
+		<method name="copyFrom([Landroid/renderscript/BaseObj;)V" />
+		<method name="copyFrom([S)V" />
+		<method name="copyFromUnchecked([B)V" />
+		<method name="copyFromUnchecked([F)V" />
+		<method name="copyFromUnchecked([I)V" />
+		<method name="copyFromUnchecked([S)V" />
+		<method name="copyTo(Landroid/graphics/Bitmap;)V" />
+		<method name="copyTo([B)V" />
+		<method name="copyTo([F)V" />
+		<method name="copyTo([I)V" />
+		<method name="copyTo([S)V" />
+		<method name="createCubemapFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;" />
+		<method name="createCubemapFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
+		<method name="createCubemapFromCubeFaces(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;" />
+		<method name="createCubemapFromCubeFaces(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
+		<method name="createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;)Landroid/renderscript/Allocation;" />
+		<method name="createFromBitmap(Landroid/renderscript/RenderScript;Landroid/graphics/Bitmap;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
+		<method name="createFromBitmapResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)Landroid/renderscript/Allocation;" />
+		<method name="createFromBitmapResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;ILandroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
+		<method name="createFromString(Landroid/renderscript/RenderScript;Ljava/lang/String;I)Landroid/renderscript/Allocation;" />
+		<method name="createSized(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;I)Landroid/renderscript/Allocation;" />
+		<method name="createSized(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;II)Landroid/renderscript/Allocation;" />
+		<method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;)Landroid/renderscript/Allocation;" />
+		<method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;I)Landroid/renderscript/Allocation;" />
+		<method name="createTyped(Landroid/renderscript/RenderScript;Landroid/renderscript/Type;Landroid/renderscript/Allocation$MipmapControl;I)Landroid/renderscript/Allocation;" />
+		<method name="generateMipmaps()V" />
+		<method name="getType()Landroid/renderscript/Type;" />
+		<method name="resize(I)V" />
+		<method name="setFromFieldPacker(IILandroid/renderscript/FieldPacker;)V" />
+		<method name="setFromFieldPacker(ILandroid/renderscript/FieldPacker;)V" />
+		<method name="syncAll(I)V" />
+		<field name="USAGE_GRAPHICS_CONSTANTS" />
+		<field name="USAGE_GRAPHICS_RENDER_TARGET" since="14" />
+		<field name="USAGE_GRAPHICS_TEXTURE" />
+		<field name="USAGE_GRAPHICS_VERTEX" />
+		<field name="USAGE_SCRIPT" />
+	</class>
+	<class name="android/renderscript/Allocation$MipmapControl" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Allocation$MipmapControl;" />
+		<method name="values()[Landroid/renderscript/Allocation$MipmapControl;" />
+		<field name="MIPMAP_FULL" />
+		<field name="MIPMAP_NONE" />
+		<field name="MIPMAP_ON_SYNC_TO_TEXTURE" />
+	</class>
+	<class name="android/renderscript/AllocationAdapter" since="11">
+		<extends name="android/renderscript/Allocation" />
+		<method name="create1D(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;)Landroid/renderscript/AllocationAdapter;" since="14" />
+		<method name="create2D(Landroid/renderscript/RenderScript;Landroid/renderscript/Allocation;)Landroid/renderscript/AllocationAdapter;" />
+		<method name="readData([F)V" />
+		<method name="readData([I)V" />
+		<method name="setFace(Landroid/renderscript/Type$CubemapFace;)V" />
+		<method name="setLOD(I)V" />
+		<method name="setY(I)V" />
+		<method name="setZ(I)V" />
+		<method name="subData(ILandroid/renderscript/FieldPacker;)V" />
+		<method name="subData1D(II[B)V" />
+		<method name="subData1D(II[F)V" />
+		<method name="subData1D(II[I)V" />
+		<method name="subData1D(II[S)V" />
+		<method name="subData2D(IIII[F)V" />
+		<method name="subData2D(IIII[I)V" />
+		<method name="subElementData(IILandroid/renderscript/FieldPacker;)V" />
+	</class>
+	<class name="android/renderscript/BaseObj" since="11">
+		<extends name="java/lang/Object" />
+		<method name="destroy()V" />
+		<method name="getName()Ljava/lang/String;" since="14" />
+		<method name="setName(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/renderscript/Byte2" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(BB)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/renderscript/Byte3" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(BBB)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Byte4" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(BBBB)V" since="14" />
+		<field name="w" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Double2" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(DD)V" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/renderscript/Double3" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(DDD)V" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Double4" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(DDDD)V" />
+		<field name="w" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Element" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="ALLOCATION(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="A_8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="BOOLEAN(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="ELEMENT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="F32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="F32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="F32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="F32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="F64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="F64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="F64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="F64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="I16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="I32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="I64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="I8_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I8_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="I8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="MATRIX4X4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="MATRIX_2X2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="MATRIX_3X3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="MATRIX_4X4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="MESH(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="PROGRAM_FRAGMENT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="PROGRAM_RASTER(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="PROGRAM_STORE(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="PROGRAM_VERTEX(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="RGBA_4444(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="RGBA_5551(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="RGBA_8888(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="RGB_565(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="RGB_888(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="SAMPLER(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="SCRIPT(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="TYPE(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="U16(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="U16_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U16_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U16_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U32(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="U32_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U32_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U32_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U64(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="U64_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U64_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U64_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U8(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="U8_2(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U8_3(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" since="14" />
+		<method name="U8_4(Landroid/renderscript/RenderScript;)Landroid/renderscript/Element;" />
+		<method name="createPixel(Landroid/renderscript/RenderScript;Landroid/renderscript/Element$DataType;Landroid/renderscript/Element$DataKind;)Landroid/renderscript/Element;" />
+		<method name="createVector(Landroid/renderscript/RenderScript;Landroid/renderscript/Element$DataType;I)Landroid/renderscript/Element;" />
+		<method name="isCompatible(Landroid/renderscript/Element;)Z" since="14" />
+		<method name="isComplex()Z" />
+	</class>
+	<class name="android/renderscript/Element$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="add(Landroid/renderscript/Element;Ljava/lang/String;)Landroid/renderscript/Element$Builder;" />
+		<method name="add(Landroid/renderscript/Element;Ljava/lang/String;I)Landroid/renderscript/Element$Builder;" />
+		<method name="create()Landroid/renderscript/Element;" />
+	</class>
+	<class name="android/renderscript/Element$DataKind" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Element$DataKind;" />
+		<method name="values()[Landroid/renderscript/Element$DataKind;" />
+		<field name="PIXEL_A" />
+		<field name="PIXEL_DEPTH" since="14" />
+		<field name="PIXEL_L" />
+		<field name="PIXEL_LA" />
+		<field name="PIXEL_RGB" />
+		<field name="PIXEL_RGBA" />
+		<field name="USER" />
+	</class>
+	<class name="android/renderscript/Element$DataType" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Element$DataType;" />
+		<method name="values()[Landroid/renderscript/Element$DataType;" />
+		<field name="BOOLEAN" />
+		<field name="FLOAT_32" />
+		<field name="FLOAT_64" />
+		<field name="MATRIX_2X2" />
+		<field name="MATRIX_3X3" />
+		<field name="MATRIX_4X4" />
+		<field name="RS_ALLOCATION" />
+		<field name="RS_ELEMENT" />
+		<field name="RS_MESH" />
+		<field name="RS_PROGRAM_FRAGMENT" />
+		<field name="RS_PROGRAM_RASTER" />
+		<field name="RS_PROGRAM_STORE" />
+		<field name="RS_PROGRAM_VERTEX" />
+		<field name="RS_SAMPLER" />
+		<field name="RS_SCRIPT" />
+		<field name="RS_TYPE" />
+		<field name="SIGNED_16" />
+		<field name="SIGNED_32" />
+		<field name="SIGNED_64" />
+		<field name="SIGNED_8" />
+		<field name="UNSIGNED_16" />
+		<field name="UNSIGNED_32" />
+		<field name="UNSIGNED_4_4_4_4" />
+		<field name="UNSIGNED_5_5_5_1" />
+		<field name="UNSIGNED_5_6_5" />
+		<field name="UNSIGNED_64" />
+		<field name="UNSIGNED_8" />
+	</class>
+	<class name="android/renderscript/FieldPacker" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="addBoolean(Z)V" />
+		<method name="addF32(F)V" />
+		<method name="addF32(Landroid/renderscript/Float2;)V" />
+		<method name="addF32(Landroid/renderscript/Float3;)V" />
+		<method name="addF32(Landroid/renderscript/Float4;)V" />
+		<method name="addF64(D)V" />
+		<method name="addF64(Landroid/renderscript/Double2;)V" since="14" />
+		<method name="addF64(Landroid/renderscript/Double3;)V" since="14" />
+		<method name="addF64(Landroid/renderscript/Double4;)V" since="14" />
+		<method name="addI16(Landroid/renderscript/Short2;)V" />
+		<method name="addI16(Landroid/renderscript/Short3;)V" />
+		<method name="addI16(Landroid/renderscript/Short4;)V" />
+		<method name="addI16(S)V" />
+		<method name="addI32(I)V" />
+		<method name="addI32(Landroid/renderscript/Int2;)V" />
+		<method name="addI32(Landroid/renderscript/Int3;)V" />
+		<method name="addI32(Landroid/renderscript/Int4;)V" />
+		<method name="addI64(J)V" />
+		<method name="addI64(Landroid/renderscript/Long2;)V" since="14" />
+		<method name="addI64(Landroid/renderscript/Long3;)V" since="14" />
+		<method name="addI64(Landroid/renderscript/Long4;)V" since="14" />
+		<method name="addI8(B)V" />
+		<method name="addI8(Landroid/renderscript/Byte2;)V" />
+		<method name="addI8(Landroid/renderscript/Byte3;)V" />
+		<method name="addI8(Landroid/renderscript/Byte4;)V" />
+		<method name="addMatrix(Landroid/renderscript/Matrix2f;)V" />
+		<method name="addMatrix(Landroid/renderscript/Matrix3f;)V" />
+		<method name="addMatrix(Landroid/renderscript/Matrix4f;)V" />
+		<method name="addObj(Landroid/renderscript/BaseObj;)V" />
+		<method name="addU16(I)V" />
+		<method name="addU16(Landroid/renderscript/Int2;)V" />
+		<method name="addU16(Landroid/renderscript/Int3;)V" />
+		<method name="addU16(Landroid/renderscript/Int4;)V" />
+		<method name="addU32(J)V" />
+		<method name="addU32(Landroid/renderscript/Long2;)V" />
+		<method name="addU32(Landroid/renderscript/Long3;)V" />
+		<method name="addU32(Landroid/renderscript/Long4;)V" />
+		<method name="addU64(J)V" />
+		<method name="addU64(Landroid/renderscript/Long2;)V" since="14" />
+		<method name="addU64(Landroid/renderscript/Long3;)V" since="14" />
+		<method name="addU64(Landroid/renderscript/Long4;)V" since="14" />
+		<method name="addU8(Landroid/renderscript/Short2;)V" />
+		<method name="addU8(Landroid/renderscript/Short3;)V" />
+		<method name="addU8(Landroid/renderscript/Short4;)V" />
+		<method name="addU8(S)V" />
+		<method name="align(I)V" />
+		<method name="getData()[B" />
+		<method name="reset()V" />
+		<method name="reset(I)V" />
+		<method name="skip(I)V" />
+	</class>
+	<class name="android/renderscript/FileA3D" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/renderscript/FileA3D;" />
+		<method name="createFromFile(Landroid/renderscript/RenderScript;Ljava/io/File;)Landroid/renderscript/FileA3D;" />
+		<method name="createFromFile(Landroid/renderscript/RenderScript;Ljava/lang/String;)Landroid/renderscript/FileA3D;" />
+		<method name="createFromResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)Landroid/renderscript/FileA3D;" />
+		<method name="getIndexEntry(I)Landroid/renderscript/FileA3D$IndexEntry;" />
+		<method name="getIndexEntryCount()I" />
+	</class>
+	<class name="android/renderscript/FileA3D$EntryType" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/FileA3D$EntryType;" />
+		<method name="values()[Landroid/renderscript/FileA3D$EntryType;" />
+		<field name="MESH" />
+		<field name="UNKNOWN" />
+	</class>
+	<class name="android/renderscript/FileA3D$IndexEntry" since="11">
+		<extends name="java/lang/Object" />
+		<method name="getEntryType()Landroid/renderscript/FileA3D$EntryType;" />
+		<method name="getMesh()Landroid/renderscript/Mesh;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getObject()Landroid/renderscript/BaseObj;" />
+	</class>
+	<class name="android/renderscript/Float2" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(FF)V" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/renderscript/Float3" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(FFF)V" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Float4" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(FFFF)V" />
+		<field name="w" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Font" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="create(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;Landroid/renderscript/Font$Style;F)Landroid/renderscript/Font;" />
+		<method name="createFromAsset(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;" />
+		<method name="createFromFile(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/io/File;F)Landroid/renderscript/Font;" />
+		<method name="createFromFile(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;Ljava/lang/String;F)Landroid/renderscript/Font;" />
+		<method name="createFromResource(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;IF)Landroid/renderscript/Font;" />
+	</class>
+	<class name="android/renderscript/Font$Style" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Font$Style;" />
+		<method name="values()[Landroid/renderscript/Font$Style;" />
+		<field name="BOLD" />
+		<field name="BOLD_ITALIC" />
+		<field name="ITALIC" />
+		<field name="NORMAL" />
+	</class>
+	<class name="android/renderscript/Int2" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(II)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/renderscript/Int3" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(III)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Int4" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(IIII)V" since="14" />
+		<field name="w" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Long2" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(JJ)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/renderscript/Long3" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(JJJ)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Long4" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(JJJJ)V" since="14" />
+		<field name="w" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Matrix2f" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([F)V" />
+		<method name="get(II)F" />
+		<method name="getArray()[F" />
+		<method name="load(Landroid/renderscript/Matrix2f;)V" />
+		<method name="loadIdentity()V" />
+		<method name="loadMultiply(Landroid/renderscript/Matrix2f;Landroid/renderscript/Matrix2f;)V" />
+		<method name="loadRotate(F)V" />
+		<method name="loadScale(FF)V" />
+		<method name="multiply(Landroid/renderscript/Matrix2f;)V" />
+		<method name="rotate(F)V" />
+		<method name="scale(FF)V" />
+		<method name="set(IIF)V" />
+		<method name="transpose()V" />
+	</class>
+	<class name="android/renderscript/Matrix3f" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([F)V" />
+		<method name="get(II)F" />
+		<method name="getArray()[F" />
+		<method name="load(Landroid/renderscript/Matrix3f;)V" />
+		<method name="loadIdentity()V" />
+		<method name="loadMultiply(Landroid/renderscript/Matrix3f;Landroid/renderscript/Matrix3f;)V" />
+		<method name="loadRotate(F)V" />
+		<method name="loadRotate(FFFF)V" />
+		<method name="loadScale(FF)V" />
+		<method name="loadScale(FFF)V" />
+		<method name="loadTranslate(FF)V" />
+		<method name="multiply(Landroid/renderscript/Matrix3f;)V" />
+		<method name="rotate(F)V" />
+		<method name="rotate(FFFF)V" />
+		<method name="scale(FF)V" />
+		<method name="scale(FFF)V" />
+		<method name="set(IIF)V" />
+		<method name="translate(FF)V" />
+		<method name="transpose()V" />
+	</class>
+	<class name="android/renderscript/Matrix4f" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([F)V" />
+		<method name="get(II)F" />
+		<method name="getArray()[F" />
+		<method name="inverse()Z" />
+		<method name="inverseTranspose()Z" />
+		<method name="load(Landroid/renderscript/Matrix4f;)V" />
+		<method name="loadFrustum(FFFFFF)V" />
+		<method name="loadIdentity()V" />
+		<method name="loadMultiply(Landroid/renderscript/Matrix4f;Landroid/renderscript/Matrix4f;)V" />
+		<method name="loadOrtho(FFFFFF)V" />
+		<method name="loadOrthoWindow(II)V" />
+		<method name="loadPerspective(FFFF)V" />
+		<method name="loadProjectionNormalized(II)V" />
+		<method name="loadRotate(FFFF)V" />
+		<method name="loadScale(FFF)V" />
+		<method name="loadTranslate(FFF)V" />
+		<method name="multiply(Landroid/renderscript/Matrix4f;)V" />
+		<method name="rotate(FFFF)V" />
+		<method name="scale(FFF)V" />
+		<method name="set(IIF)V" />
+		<method name="translate(FFF)V" />
+		<method name="transpose()V" />
+	</class>
+	<class name="android/renderscript/Mesh" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="getIndexSetAllocation(I)Landroid/renderscript/Allocation;" />
+		<method name="getPrimitive(I)Landroid/renderscript/Mesh$Primitive;" />
+		<method name="getPrimitiveCount()I" />
+		<method name="getVertexAllocation(I)Landroid/renderscript/Allocation;" />
+		<method name="getVertexAllocationCount()I" />
+	</class>
+	<class name="android/renderscript/Mesh$AllocationBuilder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="addIndexSetAllocation(Landroid/renderscript/Allocation;Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$AllocationBuilder;" />
+		<method name="addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$AllocationBuilder;" />
+		<method name="addVertexAllocation(Landroid/renderscript/Allocation;)Landroid/renderscript/Mesh$AllocationBuilder;" />
+		<method name="create()Landroid/renderscript/Mesh;" />
+		<method name="getCurrentIndexSetIndex()I" />
+		<method name="getCurrentVertexTypeIndex()I" />
+	</class>
+	<class name="android/renderscript/Mesh$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;I)V" />
+		<method name="addIndexSetType(Landroid/renderscript/Element;ILandroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" />
+		<method name="addIndexSetType(Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" />
+		<method name="addIndexSetType(Landroid/renderscript/Type;Landroid/renderscript/Mesh$Primitive;)Landroid/renderscript/Mesh$Builder;" />
+		<method name="addVertexType(Landroid/renderscript/Element;I)Landroid/renderscript/Mesh$Builder;" />
+		<method name="addVertexType(Landroid/renderscript/Type;)Landroid/renderscript/Mesh$Builder;" />
+		<method name="create()Landroid/renderscript/Mesh;" />
+		<method name="getCurrentIndexSetIndex()I" />
+		<method name="getCurrentVertexTypeIndex()I" />
+	</class>
+	<class name="android/renderscript/Mesh$Primitive" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Mesh$Primitive;" />
+		<method name="values()[Landroid/renderscript/Mesh$Primitive;" />
+		<field name="LINE" />
+		<field name="LINE_STRIP" />
+		<field name="POINT" />
+		<field name="TRIANGLE" />
+		<field name="TRIANGLE_FAN" />
+		<field name="TRIANGLE_STRIP" />
+	</class>
+	<class name="android/renderscript/Mesh$TriangleMeshBuilder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;II)V" />
+		<method name="addTriangle(III)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
+		<method name="addVertex(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
+		<method name="addVertex(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
+		<method name="create(Z)Landroid/renderscript/Mesh;" />
+		<method name="setColor(FFFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
+		<method name="setNormal(FFF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
+		<method name="setTexture(FF)Landroid/renderscript/Mesh$TriangleMeshBuilder;" />
+		<field name="COLOR" />
+		<field name="NORMAL" />
+		<field name="TEXTURE_0" />
+	</class>
+	<class name="android/renderscript/Program" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="bindConstants(Landroid/renderscript/Allocation;I)V" />
+		<method name="bindSampler(Landroid/renderscript/Sampler;I)V" />
+		<method name="bindTexture(Landroid/renderscript/Allocation;I)V" />
+	</class>
+	<class name="android/renderscript/Program$BaseProgramBuilder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="addConstant(Landroid/renderscript/Type;)Landroid/renderscript/Program$BaseProgramBuilder;" />
+		<method name="addTexture(Landroid/renderscript/Program$TextureType;)Landroid/renderscript/Program$BaseProgramBuilder;" />
+		<method name="getCurrentConstantIndex()I" />
+		<method name="getCurrentTextureIndex()I" />
+		<method name="initProgram(Landroid/renderscript/Program;)V" />
+		<method name="setShader(Landroid/content/res/Resources;I)Landroid/renderscript/Program$BaseProgramBuilder;" />
+		<method name="setShader(Ljava/lang/String;)Landroid/renderscript/Program$BaseProgramBuilder;" />
+	</class>
+	<class name="android/renderscript/Program$TextureType" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Program$TextureType;" />
+		<method name="values()[Landroid/renderscript/Program$TextureType;" />
+		<field name="TEXTURE_2D" />
+		<field name="TEXTURE_CUBE" />
+	</class>
+	<class name="android/renderscript/ProgramFragment" since="11">
+		<extends name="android/renderscript/Program" />
+	</class>
+	<class name="android/renderscript/ProgramFragment$Builder" since="11">
+		<extends name="android/renderscript/Program$BaseProgramBuilder" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="create()Landroid/renderscript/ProgramFragment;" />
+	</class>
+	<class name="android/renderscript/ProgramFragmentFixedFunction" since="11">
+		<extends name="android/renderscript/ProgramFragment" />
+	</class>
+	<class name="android/renderscript/ProgramFragmentFixedFunction$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="create()Landroid/renderscript/ProgramFragmentFixedFunction;" />
+		<method name="setPointSpriteTexCoordinateReplacement(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" />
+		<method name="setTexture(Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;I)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" />
+		<method name="setVaryingColor(Z)Landroid/renderscript/ProgramFragmentFixedFunction$Builder;" />
+		<field name="MAX_TEXTURE" />
+	</class>
+	<class name="android/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;" />
+		<method name="values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$EnvMode;" />
+		<field name="DECAL" />
+		<field name="MODULATE" />
+		<field name="REPLACE" />
+	</class>
+	<class name="android/renderscript/ProgramFragmentFixedFunction$Builder$Format" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;" />
+		<method name="values()[Landroid/renderscript/ProgramFragmentFixedFunction$Builder$Format;" />
+		<field name="ALPHA" />
+		<field name="LUMINANCE_ALPHA" />
+		<field name="RGB" />
+		<field name="RGBA" />
+	</class>
+	<class name="android/renderscript/ProgramRaster" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="CULL_BACK(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" />
+		<method name="CULL_FRONT(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" />
+		<method name="CULL_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramRaster;" />
+	</class>
+	<class name="android/renderscript/ProgramRaster$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="create()Landroid/renderscript/ProgramRaster;" />
+		<method name="setCullMode(Landroid/renderscript/ProgramRaster$CullMode;)Landroid/renderscript/ProgramRaster$Builder;" />
+		<method name="setPointSpriteEnabled(Z)Landroid/renderscript/ProgramRaster$Builder;" />
+	</class>
+	<class name="android/renderscript/ProgramRaster$CullMode" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramRaster$CullMode;" />
+		<method name="values()[Landroid/renderscript/ProgramRaster$CullMode;" />
+		<field name="BACK" />
+		<field name="FRONT" />
+		<field name="NONE" />
+	</class>
+	<class name="android/renderscript/ProgramStore" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="BLEND_ALPHA_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
+		<method name="BLEND_ALPHA_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
+		<method name="BLEND_NONE_DEPTH_NONE(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
+		<method name="BLEND_NONE_DEPTH_TEST(Landroid/renderscript/RenderScript;)Landroid/renderscript/ProgramStore;" />
+	</class>
+	<class name="android/renderscript/ProgramStore$BlendDstFunc" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendDstFunc;" />
+		<method name="values()[Landroid/renderscript/ProgramStore$BlendDstFunc;" />
+		<field name="DST_ALPHA" />
+		<field name="ONE" />
+		<field name="ONE_MINUS_DST_ALPHA" />
+		<field name="ONE_MINUS_SRC_ALPHA" />
+		<field name="ONE_MINUS_SRC_COLOR" />
+		<field name="SRC_ALPHA" />
+		<field name="SRC_COLOR" />
+		<field name="ZERO" />
+	</class>
+	<class name="android/renderscript/ProgramStore$BlendSrcFunc" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$BlendSrcFunc;" />
+		<method name="values()[Landroid/renderscript/ProgramStore$BlendSrcFunc;" />
+		<field name="DST_ALPHA" />
+		<field name="DST_COLOR" />
+		<field name="ONE" />
+		<field name="ONE_MINUS_DST_ALPHA" />
+		<field name="ONE_MINUS_DST_COLOR" />
+		<field name="ONE_MINUS_SRC_ALPHA" />
+		<field name="SRC_ALPHA" />
+		<field name="SRC_ALPHA_SATURATE" />
+		<field name="ZERO" />
+	</class>
+	<class name="android/renderscript/ProgramStore$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="create()Landroid/renderscript/ProgramStore;" />
+		<method name="setBlendFunc(Landroid/renderscript/ProgramStore$BlendSrcFunc;Landroid/renderscript/ProgramStore$BlendDstFunc;)Landroid/renderscript/ProgramStore$Builder;" />
+		<method name="setColorMaskEnabled(ZZZZ)Landroid/renderscript/ProgramStore$Builder;" />
+		<method name="setDepthFunc(Landroid/renderscript/ProgramStore$DepthFunc;)Landroid/renderscript/ProgramStore$Builder;" />
+		<method name="setDepthMaskEnabled(Z)Landroid/renderscript/ProgramStore$Builder;" />
+		<method name="setDitherEnabled(Z)Landroid/renderscript/ProgramStore$Builder;" />
+	</class>
+	<class name="android/renderscript/ProgramStore$DepthFunc" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/ProgramStore$DepthFunc;" />
+		<method name="values()[Landroid/renderscript/ProgramStore$DepthFunc;" />
+		<field name="ALWAYS" />
+		<field name="EQUAL" />
+		<field name="GREATER" />
+		<field name="GREATER_OR_EQUAL" />
+		<field name="LESS" />
+		<field name="LESS_OR_EQUAL" />
+		<field name="NOT_EQUAL" />
+	</class>
+	<class name="android/renderscript/ProgramVertex" since="11">
+		<extends name="android/renderscript/Program" />
+	</class>
+	<class name="android/renderscript/ProgramVertex$Builder" since="11">
+		<extends name="android/renderscript/Program$BaseProgramBuilder" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="addInput(Landroid/renderscript/Element;)Landroid/renderscript/ProgramVertex$Builder;" />
+		<method name="create()Landroid/renderscript/ProgramVertex;" />
+	</class>
+	<class name="android/renderscript/ProgramVertexFixedFunction" since="11">
+		<extends name="android/renderscript/ProgramVertex" />
+		<method name="bindConstants(Landroid/renderscript/ProgramVertexFixedFunction$Constants;)V" />
+	</class>
+	<class name="android/renderscript/ProgramVertexFixedFunction$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="create()Landroid/renderscript/ProgramVertexFixedFunction;" />
+		<method name="setTextureMatrixEnable(Z)Landroid/renderscript/ProgramVertexFixedFunction$Builder;" />
+	</class>
+	<class name="android/renderscript/ProgramVertexFixedFunction$Constants" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="destroy()V" />
+		<method name="setModelview(Landroid/renderscript/Matrix4f;)V" />
+		<method name="setProjection(Landroid/renderscript/Matrix4f;)V" />
+		<method name="setTexture(Landroid/renderscript/Matrix4f;)V" />
+	</class>
+	<class name="android/renderscript/RSDriverException" since="11">
+		<extends name="android/renderscript/RSRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/renderscript/RSIllegalArgumentException" since="11">
+		<extends name="android/renderscript/RSRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/renderscript/RSInvalidStateException" since="11">
+		<extends name="android/renderscript/RSRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/renderscript/RSRuntimeException" since="11">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/renderscript/RSSurfaceView" since="11">
+		<extends name="android/view/SurfaceView" />
+		<implements name="android/view/SurfaceHolder$Callback" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" />
+		<method name="destroyRenderScriptGL()V" />
+		<method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" />
+		<method name="pause()V" />
+		<method name="resume()V" />
+		<method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" />
+		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
+		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
+		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
+	</class>
+	<class name="android/renderscript/RSTextureView" since="14">
+		<extends name="android/view/TextureView" />
+		<implements name="android/view/TextureView$SurfaceTextureListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="createRenderScriptGL(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)Landroid/renderscript/RenderScriptGL;" />
+		<method name="destroyRenderScriptGL()V" />
+		<method name="getRenderScriptGL()Landroid/renderscript/RenderScriptGL;" />
+		<method name="onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V" />
+		<method name="onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z" />
+		<method name="onSurfaceTextureSizeChanged(Landroid/graphics/SurfaceTexture;II)V" />
+		<method name="onSurfaceTextureUpdated(Landroid/graphics/SurfaceTexture;)V" />
+		<method name="pause()V" />
+		<method name="resume()V" />
+		<method name="setRenderScriptGL(Landroid/renderscript/RenderScriptGL;)V" />
+	</class>
+	<class name="android/renderscript/RenderScript" since="11">
+		<extends name="java/lang/Object" />
+		<method name="contextDump()V" />
+		<method name="create(Landroid/content/Context;)Landroid/renderscript/RenderScript;" />
+		<method name="destroy()V" />
+		<method name="finish()V" />
+		<method name="getApplicationContext()Landroid/content/Context;" />
+		<method name="getErrorHandler()Landroid/renderscript/RenderScript$RSErrorHandler;" />
+		<method name="getMessageHandler()Landroid/renderscript/RenderScript$RSMessageHandler;" />
+		<method name="setErrorHandler(Landroid/renderscript/RenderScript$RSErrorHandler;)V" />
+		<method name="setMessageHandler(Landroid/renderscript/RenderScript$RSMessageHandler;)V" />
+		<method name="setPriority(Landroid/renderscript/RenderScript$Priority;)V" />
+	</class>
+	<class name="android/renderscript/RenderScript$Priority" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/RenderScript$Priority;" />
+		<method name="values()[Landroid/renderscript/RenderScript$Priority;" />
+		<field name="LOW" />
+		<field name="NORMAL" />
+	</class>
+	<class name="android/renderscript/RenderScript$RSErrorHandler" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Runnable" />
+		<method name="&lt;init>()V" />
+		<method name="run()V" />
+		<field name="mErrorMessage" />
+		<field name="mErrorNum" />
+	</class>
+	<class name="android/renderscript/RenderScript$RSMessageHandler" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Runnable" />
+		<method name="&lt;init>()V" />
+		<method name="run()V" />
+		<field name="mData" />
+		<field name="mID" />
+		<field name="mLength" />
+	</class>
+	<class name="android/renderscript/RenderScriptGL" since="11">
+		<extends name="android/renderscript/RenderScript" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V" />
+		<method name="bindProgramFragment(Landroid/renderscript/ProgramFragment;)V" />
+		<method name="bindProgramRaster(Landroid/renderscript/ProgramRaster;)V" />
+		<method name="bindProgramStore(Landroid/renderscript/ProgramStore;)V" />
+		<method name="bindProgramVertex(Landroid/renderscript/ProgramVertex;)V" />
+		<method name="bindRootScript(Landroid/renderscript/Script;)V" />
+		<method name="getHeight()I" />
+		<method name="getWidth()I" />
+		<method name="pause()V" />
+		<method name="resume()V" />
+		<method name="setSurface(Landroid/view/SurfaceHolder;II)V" />
+		<method name="setSurfaceTexture(Landroid/graphics/SurfaceTexture;II)V" since="14" />
+	</class>
+	<class name="android/renderscript/RenderScriptGL$SurfaceConfig" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScriptGL$SurfaceConfig;)V" />
+		<method name="setAlpha(II)V" />
+		<method name="setColor(II)V" />
+		<method name="setDepth(II)V" />
+		<method name="setSamples(IIF)V" />
+	</class>
+	<class name="android/renderscript/Sampler" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="CLAMP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
+		<method name="CLAMP_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
+		<method name="CLAMP_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
+		<method name="WRAP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
+		<method name="WRAP_LINEAR_MIP_LINEAR(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
+		<method name="WRAP_NEAREST(Landroid/renderscript/RenderScript;)Landroid/renderscript/Sampler;" />
+	</class>
+	<class name="android/renderscript/Sampler$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;)V" />
+		<method name="create()Landroid/renderscript/Sampler;" />
+		<method name="setAnisotropy(F)V" />
+		<method name="setMagnification(Landroid/renderscript/Sampler$Value;)V" />
+		<method name="setMinification(Landroid/renderscript/Sampler$Value;)V" />
+		<method name="setWrapS(Landroid/renderscript/Sampler$Value;)V" />
+		<method name="setWrapT(Landroid/renderscript/Sampler$Value;)V" />
+	</class>
+	<class name="android/renderscript/Sampler$Value" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Sampler$Value;" />
+		<method name="values()[Landroid/renderscript/Sampler$Value;" />
+		<field name="CLAMP" />
+		<field name="LINEAR" />
+		<field name="LINEAR_MIP_LINEAR" />
+		<field name="LINEAR_MIP_NEAREST" />
+		<field name="NEAREST" />
+		<field name="WRAP" />
+	</class>
+	<class name="android/renderscript/Script" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="bindAllocation(Landroid/renderscript/Allocation;I)V" />
+		<method name="forEach(ILandroid/renderscript/Allocation;Landroid/renderscript/Allocation;Landroid/renderscript/FieldPacker;)V" since="14" />
+		<method name="invoke(I)V" />
+		<method name="invoke(ILandroid/renderscript/FieldPacker;)V" />
+		<method name="setTimeZone(Ljava/lang/String;)V" />
+		<method name="setVar(ID)V" />
+		<method name="setVar(IF)V" />
+		<method name="setVar(II)V" />
+		<method name="setVar(IJ)V" />
+		<method name="setVar(ILandroid/renderscript/BaseObj;)V" />
+		<method name="setVar(ILandroid/renderscript/FieldPacker;)V" />
+		<method name="setVar(IZ)V" />
+	</class>
+	<class name="android/renderscript/Script$Builder" since="11">
+		<extends name="java/lang/Object" />
+	</class>
+	<class name="android/renderscript/Script$FieldBase" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAllocation()Landroid/renderscript/Allocation;" />
+		<method name="getElement()Landroid/renderscript/Element;" />
+		<method name="getType()Landroid/renderscript/Type;" />
+		<method name="init(Landroid/renderscript/RenderScript;I)V" />
+		<method name="init(Landroid/renderscript/RenderScript;II)V" />
+		<method name="updateAllocation()V" />
+		<field name="mAllocation" />
+		<field name="mElement" />
+	</class>
+	<class name="android/renderscript/ScriptC" since="11">
+		<extends name="android/renderscript/Script" />
+		<method name="&lt;init>(ILandroid/renderscript/RenderScript;)V" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;Landroid/content/res/Resources;I)V" />
+	</class>
+	<class name="android/renderscript/Short2" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(SS)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/renderscript/Short3" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(SSS)V" since="14" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Short4" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(SSSS)V" since="14" />
+		<field name="w" />
+		<field name="x" />
+		<field name="y" />
+		<field name="z" />
+	</class>
+	<class name="android/renderscript/Type" since="11">
+		<extends name="android/renderscript/BaseObj" />
+		<method name="getCount()I" />
+		<method name="getElement()Landroid/renderscript/Element;" />
+		<method name="getX()I" />
+		<method name="getY()I" />
+		<method name="getZ()I" />
+		<method name="hasFaces()Z" />
+		<method name="hasMipmaps()Z" />
+	</class>
+	<class name="android/renderscript/Type$Builder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/renderscript/RenderScript;Landroid/renderscript/Element;)V" />
+		<method name="create()Landroid/renderscript/Type;" />
+		<method name="setFaces(Z)Landroid/renderscript/Type$Builder;" />
+		<method name="setMipmaps(Z)Landroid/renderscript/Type$Builder;" />
+		<method name="setX(I)Landroid/renderscript/Type$Builder;" />
+		<method name="setY(I)Landroid/renderscript/Type$Builder;" />
+	</class>
+	<class name="android/renderscript/Type$CubemapFace" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/renderscript/Type$CubemapFace;" />
+		<method name="values()[Landroid/renderscript/Type$CubemapFace;" />
+		<field name="NEGATIVE_X" />
+		<field name="NEGATIVE_Y" />
+		<field name="NEGATIVE_Z" />
+		<field name="POSITIVE_X" since="14" />
+		<field name="POSITIVE_Y" since="14" />
+		<field name="POSITIVE_Z" since="14" />
+		<field name="POSITVE_X" />
+		<field name="POSITVE_Y" />
+		<field name="POSITVE_Z" />
+	</class>
+	<class name="android/sax/Element" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getChild(Ljava/lang/String;)Landroid/sax/Element;" />
+		<method name="getChild(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;" />
+		<method name="requireChild(Ljava/lang/String;)Landroid/sax/Element;" />
+		<method name="requireChild(Ljava/lang/String;Ljava/lang/String;)Landroid/sax/Element;" />
+		<method name="setElementListener(Landroid/sax/ElementListener;)V" />
+		<method name="setEndElementListener(Landroid/sax/EndElementListener;)V" />
+		<method name="setEndTextElementListener(Landroid/sax/EndTextElementListener;)V" />
+		<method name="setStartElementListener(Landroid/sax/StartElementListener;)V" />
+		<method name="setTextElementListener(Landroid/sax/TextElementListener;)V" />
+	</class>
+	<class name="android/sax/ElementListener" since="1">
+		<implements name="android/sax/EndElementListener" />
+		<implements name="android/sax/StartElementListener" />
+	</class>
+	<class name="android/sax/EndElementListener" since="1">
+		<method name="end()V" />
+	</class>
+	<class name="android/sax/EndTextElementListener" since="1">
+		<method name="end(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/sax/RootElement" since="1">
+		<extends name="android/sax/Element" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
+	</class>
+	<class name="android/sax/StartElementListener" since="1">
+		<method name="start(Lorg/xml/sax/Attributes;)V" />
+	</class>
+	<class name="android/sax/TextElementListener" since="1">
+		<implements name="android/sax/EndTextElementListener" />
+		<implements name="android/sax/StartElementListener" />
+	</class>
+	<class name="android/security/KeyChain" since="14">
+		<method name="&lt;init>()V" />
+		<method name="choosePrivateKeyAlias(Landroid/app/Activity;Landroid/security/KeyChainAliasCallback;[Ljava/lang/String;[Ljava/security/Principal;Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="createInstallIntent()Landroid/content/Intent;" />
+		<method name="getCertificateChain(Landroid/content/Context;Ljava/lang/String;)[Ljava/security/cert/X509Certificate;" />
+		<method name="getPrivateKey(Landroid/content/Context;Ljava/lang/String;)Ljava/security/PrivateKey;" />
+		<field name="EXTRA_CERTIFICATE" />
+		<field name="EXTRA_NAME" />
+		<field name="EXTRA_PKCS12" />
+	</class>
+	<class name="android/security/KeyChainAliasCallback" since="14">
+		<method name="alias(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/security/KeyChainException" since="14">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/service/textservice/SpellCheckerService" since="14">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="createSession()Landroid/service/textservice/SpellCheckerService$Session;" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<field name="SERVICE_INTERFACE" />
+	</class>
+	<class name="android/service/textservice/SpellCheckerService$Session" since="14">
+		<method name="&lt;init>()V" />
+		<method name="getBundle()Landroid/os/Bundle;" />
+		<method name="getLocale()Ljava/lang/String;" />
+		<method name="onCancel()V" />
+		<method name="onClose()V" since="15" />
+		<method name="onCreate()V" />
+		<method name="onGetSuggestions(Landroid/view/textservice/TextInfo;I)Landroid/view/textservice/SuggestionsInfo;" />
+		<method name="onGetSuggestionsMultiple([Landroid/view/textservice/TextInfo;IZ)[Landroid/view/textservice/SuggestionsInfo;" />
+	</class>
+	<class name="android/service/wallpaper/WallpaperService" since="7">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onCreateEngine()Landroid/service/wallpaper/WallpaperService$Engine;" />
+		<field name="SERVICE_INTERFACE" />
+		<field name="SERVICE_META_DATA" />
+	</class>
+	<class name="android/service/wallpaper/WallpaperService$Engine" since="7">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V" since="14" />
+		<method name="getDesiredMinimumHeight()I" />
+		<method name="getDesiredMinimumWidth()I" />
+		<method name="getSurfaceHolder()Landroid/view/SurfaceHolder;" />
+		<method name="isPreview()Z" />
+		<method name="isVisible()Z" />
+		<method name="onCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;" />
+		<method name="onCreate(Landroid/view/SurfaceHolder;)V" />
+		<method name="onDesiredSizeChanged(II)V" />
+		<method name="onDestroy()V" />
+		<method name="onOffsetsChanged(FFFFII)V" />
+		<method name="onSurfaceChanged(Landroid/view/SurfaceHolder;III)V" />
+		<method name="onSurfaceCreated(Landroid/view/SurfaceHolder;)V" />
+		<method name="onSurfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
+		<method name="onSurfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" since="9" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)V" />
+		<method name="onVisibilityChanged(Z)V" />
+		<method name="setOffsetNotificationsEnabled(Z)V" since="15" />
+		<method name="setTouchEventsEnabled(Z)V" />
+	</class>
+	<class name="android/speech/RecognitionListener" since="8">
+		<method name="onBeginningOfSpeech()V" />
+		<method name="onBufferReceived([B)V" />
+		<method name="onEndOfSpeech()V" />
+		<method name="onError(I)V" />
+		<method name="onEvent(ILandroid/os/Bundle;)V" />
+		<method name="onPartialResults(Landroid/os/Bundle;)V" />
+		<method name="onReadyForSpeech(Landroid/os/Bundle;)V" />
+		<method name="onResults(Landroid/os/Bundle;)V" />
+		<method name="onRmsChanged(F)V" />
+	</class>
+	<class name="android/speech/RecognitionService" since="8">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onCancel(Landroid/speech/RecognitionService$Callback;)V" />
+		<method name="onStartListening(Landroid/content/Intent;Landroid/speech/RecognitionService$Callback;)V" />
+		<method name="onStopListening(Landroid/speech/RecognitionService$Callback;)V" />
+		<field name="SERVICE_INTERFACE" />
+		<field name="SERVICE_META_DATA" />
+	</class>
+	<class name="android/speech/RecognitionService$Callback" since="8">
+		<extends name="java/lang/Object" />
+		<method name="beginningOfSpeech()V" />
+		<method name="bufferReceived([B)V" />
+		<method name="endOfSpeech()V" />
+		<method name="error(I)V" />
+		<method name="partialResults(Landroid/os/Bundle;)V" />
+		<method name="readyForSpeech(Landroid/os/Bundle;)V" />
+		<method name="results(Landroid/os/Bundle;)V" />
+		<method name="rmsChanged(F)V" />
+	</class>
+	<class name="android/speech/RecognizerIntent" since="3">
+		<extends name="java/lang/Object" />
+		<method name="getVoiceDetailsIntent(Landroid/content/Context;)Landroid/content/Intent;" since="8" />
+		<field name="ACTION_GET_LANGUAGE_DETAILS" since="8" />
+		<field name="ACTION_RECOGNIZE_SPEECH" />
+		<field name="ACTION_WEB_SEARCH" />
+		<field name="DETAILS_META_DATA" since="8" />
+		<field name="EXTRA_CALLING_PACKAGE" since="8" />
+		<field name="EXTRA_CONFIDENCE_SCORES" since="14" />
+		<field name="EXTRA_LANGUAGE" />
+		<field name="EXTRA_LANGUAGE_MODEL" />
+		<field name="EXTRA_LANGUAGE_PREFERENCE" since="8" />
+		<field name="EXTRA_MAX_RESULTS" />
+		<field name="EXTRA_ONLY_RETURN_LANGUAGE_PREFERENCE" since="8" />
+		<field name="EXTRA_ORIGIN" since="14" />
+		<field name="EXTRA_PARTIAL_RESULTS" since="8" />
+		<field name="EXTRA_PROMPT" />
+		<field name="EXTRA_RESULTS" />
+		<field name="EXTRA_RESULTS_PENDINGINTENT" />
+		<field name="EXTRA_RESULTS_PENDINGINTENT_BUNDLE" />
+		<field name="EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS" since="8" />
+		<field name="EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS" since="8" />
+		<field name="EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS" since="8" />
+		<field name="EXTRA_SUPPORTED_LANGUAGES" since="8" />
+		<field name="EXTRA_WEB_SEARCH_ONLY" since="11" />
+		<field name="LANGUAGE_MODEL_FREE_FORM" />
+		<field name="LANGUAGE_MODEL_WEB_SEARCH" />
+		<field name="RESULT_AUDIO_ERROR" />
+		<field name="RESULT_CLIENT_ERROR" />
+		<field name="RESULT_NETWORK_ERROR" />
+		<field name="RESULT_NO_MATCH" />
+		<field name="RESULT_SERVER_ERROR" />
+	</class>
+	<class name="android/speech/RecognizerResultsIntent" since="10">
+		<extends name="java/lang/Object" />
+		<field name="ACTION_VOICE_SEARCH_RESULTS" />
+		<field name="EXTRA_VOICE_SEARCH_RESULT_HTML" />
+		<field name="EXTRA_VOICE_SEARCH_RESULT_HTML_BASE_URLS" />
+		<field name="EXTRA_VOICE_SEARCH_RESULT_HTTP_HEADERS" />
+		<field name="EXTRA_VOICE_SEARCH_RESULT_STRINGS" />
+		<field name="EXTRA_VOICE_SEARCH_RESULT_URLS" />
+		<field name="URI_SCHEME_INLINE" />
+	</class>
+	<class name="android/speech/SpeechRecognizer" since="8">
+		<extends name="java/lang/Object" />
+		<method name="cancel()V" />
+		<method name="createSpeechRecognizer(Landroid/content/Context;)Landroid/speech/SpeechRecognizer;" />
+		<method name="createSpeechRecognizer(Landroid/content/Context;Landroid/content/ComponentName;)Landroid/speech/SpeechRecognizer;" />
+		<method name="destroy()V" />
+		<method name="isRecognitionAvailable(Landroid/content/Context;)Z" />
+		<method name="setRecognitionListener(Landroid/speech/RecognitionListener;)V" />
+		<method name="startListening(Landroid/content/Intent;)V" />
+		<method name="stopListening()V" />
+		<field name="CONFIDENCE_SCORES" since="14" />
+		<field name="ERROR_AUDIO" />
+		<field name="ERROR_CLIENT" />
+		<field name="ERROR_INSUFFICIENT_PERMISSIONS" />
+		<field name="ERROR_NETWORK" />
+		<field name="ERROR_NETWORK_TIMEOUT" />
+		<field name="ERROR_NO_MATCH" />
+		<field name="ERROR_RECOGNIZER_BUSY" />
+		<field name="ERROR_SERVER" />
+		<field name="ERROR_SPEECH_TIMEOUT" />
+		<field name="RESULTS_RECOGNITION" />
+	</class>
+	<class name="android/speech/tts/SynthesisCallback" since="14">
+		<method name="audioAvailable([BII)I" />
+		<method name="done()I" />
+		<method name="error()V" />
+		<method name="getMaxBufferSize()I" />
+		<method name="start(III)I" />
+	</class>
+	<class name="android/speech/tts/SynthesisRequest" since="14">
+		<method name="&lt;init>(Ljava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="getCountry()Ljava/lang/String;" />
+		<method name="getLanguage()Ljava/lang/String;" />
+		<method name="getParams()Landroid/os/Bundle;" />
+		<method name="getPitch()I" />
+		<method name="getSpeechRate()I" />
+		<method name="getText()Ljava/lang/String;" />
+		<method name="getVariant()Ljava/lang/String;" />
+	</class>
+	<class name="android/speech/tts/TextToSpeech" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/speech/tts/TextToSpeech$OnInitListener;Ljava/lang/String;)V" since="14" />
+		<method name="addEarcon(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="addEarcon(Ljava/lang/String;Ljava/lang/String;I)I" />
+		<method name="addSpeech(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="addSpeech(Ljava/lang/String;Ljava/lang/String;I)I" />
+		<method name="areDefaultsEnforced()Z" since="8" />
+		<method name="getDefaultEngine()Ljava/lang/String;" since="8" />
+		<method name="getEngines()Ljava/util/List;" since="14" />
+		<method name="getFeatures(Ljava/util/Locale;)Ljava/util/Set;" since="15" />
+		<method name="getLanguage()Ljava/util/Locale;" />
+		<method name="isLanguageAvailable(Ljava/util/Locale;)I" />
+		<method name="isSpeaking()Z" />
+		<method name="playEarcon(Ljava/lang/String;ILjava/util/HashMap;)I" />
+		<method name="playSilence(JILjava/util/HashMap;)I" />
+		<method name="setEngineByPackageName(Ljava/lang/String;)I" since="8" />
+		<method name="setLanguage(Ljava/util/Locale;)I" />
+		<method name="setOnUtteranceCompletedListener(Landroid/speech/tts/TextToSpeech$OnUtteranceCompletedListener;)I" />
+		<method name="setOnUtteranceProgressListener(Landroid/speech/tts/UtteranceProgressListener;)I" since="15" />
+		<method name="setPitch(F)I" />
+		<method name="setSpeechRate(F)I" />
+		<method name="shutdown()V" />
+		<method name="speak(Ljava/lang/String;ILjava/util/HashMap;)I" />
+		<method name="stop()I" />
+		<method name="synthesizeToFile(Ljava/lang/String;Ljava/util/HashMap;Ljava/lang/String;)I" />
+		<field name="ACTION_TTS_QUEUE_PROCESSING_COMPLETED" />
+		<field name="ERROR" />
+		<field name="LANG_AVAILABLE" />
+		<field name="LANG_COUNTRY_AVAILABLE" />
+		<field name="LANG_COUNTRY_VAR_AVAILABLE" />
+		<field name="LANG_MISSING_DATA" />
+		<field name="LANG_NOT_SUPPORTED" />
+		<field name="QUEUE_ADD" />
+		<field name="QUEUE_FLUSH" />
+		<field name="SUCCESS" />
+	</class>
+	<class name="android/speech/tts/TextToSpeech$Engine" since="4">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="ACTION_CHECK_TTS_DATA" />
+		<field name="ACTION_INSTALL_TTS_DATA" />
+		<field name="ACTION_TTS_DATA_INSTALLED" />
+		<field name="CHECK_VOICE_DATA_BAD_DATA" />
+		<field name="CHECK_VOICE_DATA_FAIL" />
+		<field name="CHECK_VOICE_DATA_MISSING_DATA" />
+		<field name="CHECK_VOICE_DATA_MISSING_VOLUME" />
+		<field name="CHECK_VOICE_DATA_PASS" />
+		<field name="DEFAULT_STREAM" />
+		<field name="EXTRA_AVAILABLE_VOICES" since="8" />
+		<field name="EXTRA_CHECK_VOICE_DATA_FOR" since="8" />
+		<field name="EXTRA_TTS_DATA_INSTALLED" />
+		<field name="EXTRA_UNAVAILABLE_VOICES" since="8" />
+		<field name="EXTRA_VOICE_DATA_FILES" />
+		<field name="EXTRA_VOICE_DATA_FILES_INFO" />
+		<field name="EXTRA_VOICE_DATA_ROOT_DIRECTORY" />
+		<field name="INTENT_ACTION_TTS_SERVICE" since="14" />
+		<field name="KEY_FEATURE_EMBEDDED_SYNTHESIS" since="15" />
+		<field name="KEY_FEATURE_NETWORK_SYNTHESIS" since="15" />
+		<field name="KEY_PARAM_PAN" since="11" />
+		<field name="KEY_PARAM_STREAM" />
+		<field name="KEY_PARAM_UTTERANCE_ID" />
+		<field name="KEY_PARAM_VOLUME" since="11" />
+		<field name="SERVICE_META_DATA" since="14" />
+	</class>
+	<class name="android/speech/tts/TextToSpeech$EngineInfo" since="14">
+		<method name="&lt;init>()V" />
+		<field name="icon" />
+		<field name="label" />
+		<field name="name" />
+	</class>
+	<class name="android/speech/tts/TextToSpeech$OnInitListener" since="4">
+		<method name="onInit(I)V" />
+	</class>
+	<class name="android/speech/tts/TextToSpeech$OnUtteranceCompletedListener" since="4">
+		<method name="onUtteranceCompleted(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/speech/tts/TextToSpeechService" since="14">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onGetFeaturesForLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Set;" since="15" />
+		<method name="onGetLanguage()[Ljava/lang/String;" />
+		<method name="onIsLanguageAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="onLoadLanguage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="onStop()V" />
+		<method name="onSynthesizeText(Landroid/speech/tts/SynthesisRequest;Landroid/speech/tts/SynthesisCallback;)V" />
+	</class>
+	<class name="android/speech/tts/UtteranceProgressListener" since="15">
+		<method name="&lt;init>()V" />
+		<method name="onDone(Ljava/lang/String;)V" />
+		<method name="onError(Ljava/lang/String;)V" />
+		<method name="onStart(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/telephony/CellLocation" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getEmpty()Landroid/telephony/CellLocation;" />
+		<method name="requestLocationUpdate()V" />
+	</class>
+	<class name="android/telephony/NeighboringCellInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(ILjava/lang/String;I)V" since="7" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="describeContents()I" />
+		<method name="getCid()I" />
+		<method name="getLac()I" since="5" />
+		<method name="getNetworkType()I" since="5" />
+		<method name="getPsc()I" since="5" />
+		<method name="getRssi()I" />
+		<method name="setCid(I)V" />
+		<method name="setRssi(I)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="UNKNOWN_CID" />
+		<field name="UNKNOWN_RSSI" />
+	</class>
+	<class name="android/telephony/PhoneNumberFormattingTextWatcher" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/TextWatcher" />
+		<method name="&lt;init>()V" />
+		<method name="afterTextChanged(Landroid/text/Editable;)V" />
+		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
+		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
+	</class>
+	<class name="android/telephony/PhoneNumberUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="calledPartyBCDFragmentToString([BII)Ljava/lang/String;" />
+		<method name="calledPartyBCDToString([BII)Ljava/lang/String;" />
+		<method name="compare(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Z" since="5" />
+		<method name="compare(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="convertKeypadLettersToDigits(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="extractPostDialPortion(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="formatJapaneseNumber(Landroid/text/Editable;)V" since="3" />
+		<method name="formatNanpNumber(Landroid/text/Editable;)V" />
+		<method name="formatNumber(Landroid/text/Editable;I)V" />
+		<method name="formatNumber(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getFormatTypeForLocale(Ljava/util/Locale;)I" />
+		<method name="getNumberFromIntent(Landroid/content/Intent;Landroid/content/Context;)Ljava/lang/String;" />
+		<method name="getStrippedReversed(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="is12Key(C)Z" />
+		<method name="isDialable(C)Z" />
+		<method name="isEmergencyNumber(Ljava/lang/String;)Z" />
+		<method name="isGlobalPhoneNumber(Ljava/lang/String;)Z" />
+		<method name="isISODigit(C)Z" />
+		<method name="isNonSeparator(C)Z" />
+		<method name="isReallyDialable(C)Z" />
+		<method name="isStartsPostDial(C)Z" />
+		<method name="isWellFormedSmsAddress(Ljava/lang/String;)Z" />
+		<method name="networkPortionToCalledPartyBCD(Ljava/lang/String;)[B" />
+		<method name="networkPortionToCalledPartyBCDWithLength(Ljava/lang/String;)[B" />
+		<method name="numberToCalledPartyBCD(Ljava/lang/String;)[B" />
+		<method name="stringFromStringAndTOA(Ljava/lang/String;I)Ljava/lang/String;" />
+		<method name="stripSeparators(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="toCallerIDMinMatch(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="toaFromString(Ljava/lang/String;)I" />
+		<field name="FORMAT_JAPAN" since="3" />
+		<field name="FORMAT_NANP" />
+		<field name="FORMAT_UNKNOWN" />
+		<field name="PAUSE" />
+		<field name="TOA_International" />
+		<field name="TOA_Unknown" />
+		<field name="WAIT" />
+		<field name="WILD" />
+	</class>
+	<class name="android/telephony/PhoneStateListener" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="onCallForwardingIndicatorChanged(Z)V" />
+		<method name="onCallStateChanged(ILjava/lang/String;)V" />
+		<method name="onCellLocationChanged(Landroid/telephony/CellLocation;)V" />
+		<method name="onDataActivity(I)V" />
+		<method name="onDataConnectionStateChanged(I)V" />
+		<method name="onDataConnectionStateChanged(II)V" since="7" />
+		<method name="onMessageWaitingIndicatorChanged(Z)V" />
+		<method name="onServiceStateChanged(Landroid/telephony/ServiceState;)V" />
+		<method name="onSignalStrengthChanged(I)V" />
+		<method name="onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V" since="7" />
+		<field name="LISTEN_CALL_FORWARDING_INDICATOR" />
+		<field name="LISTEN_CALL_STATE" />
+		<field name="LISTEN_CELL_LOCATION" />
+		<field name="LISTEN_DATA_ACTIVITY" />
+		<field name="LISTEN_DATA_CONNECTION_STATE" />
+		<field name="LISTEN_MESSAGE_WAITING_INDICATOR" />
+		<field name="LISTEN_NONE" />
+		<field name="LISTEN_SERVICE_STATE" />
+		<field name="LISTEN_SIGNAL_STRENGTH" />
+		<field name="LISTEN_SIGNAL_STRENGTHS" since="7" />
+	</class>
+	<class name="android/telephony/ServiceState" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Landroid/telephony/ServiceState;)V" />
+		<method name="copyFrom(Landroid/telephony/ServiceState;)V" />
+		<method name="describeContents()I" />
+		<method name="getIsManualSelection()Z" />
+		<method name="getOperatorAlphaLong()Ljava/lang/String;" />
+		<method name="getOperatorAlphaShort()Ljava/lang/String;" />
+		<method name="getOperatorNumeric()Ljava/lang/String;" />
+		<method name="getRoaming()Z" />
+		<method name="getState()I" />
+		<method name="setIsManualSelection(Z)V" />
+		<method name="setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setRoaming(Z)V" />
+		<method name="setState(I)V" />
+		<method name="setStateOff()V" />
+		<method name="setStateOutOfService()V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="STATE_EMERGENCY_ONLY" />
+		<field name="STATE_IN_SERVICE" />
+		<field name="STATE_OUT_OF_SERVICE" />
+		<field name="STATE_POWER_OFF" />
+	</class>
+	<class name="android/telephony/SignalStrength" since="7">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getCdmaDbm()I" />
+		<method name="getCdmaEcio()I" />
+		<method name="getEvdoDbm()I" />
+		<method name="getEvdoEcio()I" />
+		<method name="getEvdoSnr()I" />
+		<method name="getGsmBitErrorRate()I" />
+		<method name="getGsmSignalStrength()I" />
+		<method name="isGsm()Z" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+	</class>
+	<class name="android/telephony/SmsManager" since="4">
+		<extends name="java/lang/Object" />
+		<method name="divideMessage(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getDefault()Landroid/telephony/SmsManager;" />
+		<method name="sendDataMessage(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
+		<method name="sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V" />
+		<method name="sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
+		<field name="RESULT_ERROR_GENERIC_FAILURE" />
+		<field name="RESULT_ERROR_NO_SERVICE" />
+		<field name="RESULT_ERROR_NULL_PDU" />
+		<field name="RESULT_ERROR_RADIO_OFF" />
+		<field name="STATUS_ON_ICC_FREE" />
+		<field name="STATUS_ON_ICC_READ" />
+		<field name="STATUS_ON_ICC_SENT" />
+		<field name="STATUS_ON_ICC_UNREAD" />
+		<field name="STATUS_ON_ICC_UNSENT" />
+	</class>
+	<class name="android/telephony/SmsMessage" since="4">
+		<extends name="java/lang/Object" />
+		<method name="calculateLength(Ljava/lang/CharSequence;Z)[I" />
+		<method name="calculateLength(Ljava/lang/String;Z)[I" />
+		<method name="createFromPdu([B)Landroid/telephony/SmsMessage;" />
+		<method name="getDisplayMessageBody()Ljava/lang/String;" />
+		<method name="getDisplayOriginatingAddress()Ljava/lang/String;" />
+		<method name="getEmailBody()Ljava/lang/String;" />
+		<method name="getEmailFrom()Ljava/lang/String;" />
+		<method name="getIndexOnIcc()I" />
+		<method name="getIndexOnSim()I" />
+		<method name="getMessageBody()Ljava/lang/String;" />
+		<method name="getMessageClass()Landroid/telephony/SmsMessage$MessageClass;" />
+		<method name="getOriginatingAddress()Ljava/lang/String;" />
+		<method name="getPdu()[B" />
+		<method name="getProtocolIdentifier()I" />
+		<method name="getPseudoSubject()Ljava/lang/String;" />
+		<method name="getServiceCenterAddress()Ljava/lang/String;" />
+		<method name="getStatus()I" />
+		<method name="getStatusOnIcc()I" />
+		<method name="getStatusOnSim()I" />
+		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/telephony/SmsMessage$SubmitPdu;" />
+		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;S[BZ)Landroid/telephony/SmsMessage$SubmitPdu;" />
+		<method name="getTPLayerLengthForPDU(Ljava/lang/String;)I" />
+		<method name="getTimestampMillis()J" />
+		<method name="getUserData()[B" />
+		<method name="isCphsMwiMessage()Z" />
+		<method name="isEmail()Z" />
+		<method name="isMWIClearMessage()Z" />
+		<method name="isMWISetMessage()Z" />
+		<method name="isMwiDontStore()Z" />
+		<method name="isReplace()Z" />
+		<method name="isReplyPathPresent()Z" />
+		<method name="isStatusReportMessage()Z" />
+		<field name="ENCODING_16BIT" />
+		<field name="ENCODING_7BIT" />
+		<field name="ENCODING_8BIT" />
+		<field name="ENCODING_UNKNOWN" />
+		<field name="MAX_USER_DATA_BYTES" />
+		<field name="MAX_USER_DATA_BYTES_WITH_HEADER" />
+		<field name="MAX_USER_DATA_SEPTETS" />
+		<field name="MAX_USER_DATA_SEPTETS_WITH_HEADER" />
+	</class>
+	<class name="android/telephony/SmsMessage$MessageClass" since="4">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/telephony/SmsMessage$MessageClass;" />
+		<method name="values()[Landroid/telephony/SmsMessage$MessageClass;" />
+		<field name="CLASS_0" />
+		<field name="CLASS_1" />
+		<field name="CLASS_2" />
+		<field name="CLASS_3" />
+		<field name="UNKNOWN" />
+	</class>
+	<class name="android/telephony/SmsMessage$SubmitPdu" since="4">
+		<extends name="java/lang/Object" />
+		<field name="encodedMessage" />
+		<field name="encodedScAddress" />
+	</class>
+	<class name="android/telephony/TelephonyManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getCallState()I" />
+		<method name="getCellLocation()Landroid/telephony/CellLocation;" />
+		<method name="getDataActivity()I" />
+		<method name="getDataState()I" />
+		<method name="getDeviceId()Ljava/lang/String;" />
+		<method name="getDeviceSoftwareVersion()Ljava/lang/String;" />
+		<method name="getLine1Number()Ljava/lang/String;" />
+		<method name="getNeighboringCellInfo()Ljava/util/List;" since="3" />
+		<method name="getNetworkCountryIso()Ljava/lang/String;" />
+		<method name="getNetworkOperator()Ljava/lang/String;" />
+		<method name="getNetworkOperatorName()Ljava/lang/String;" />
+		<method name="getNetworkType()I" />
+		<method name="getPhoneType()I" />
+		<method name="getSimCountryIso()Ljava/lang/String;" />
+		<method name="getSimOperator()Ljava/lang/String;" />
+		<method name="getSimOperatorName()Ljava/lang/String;" />
+		<method name="getSimSerialNumber()Ljava/lang/String;" />
+		<method name="getSimState()I" />
+		<method name="getSubscriberId()Ljava/lang/String;" />
+		<method name="getVoiceMailAlphaTag()Ljava/lang/String;" />
+		<method name="getVoiceMailNumber()Ljava/lang/String;" />
+		<method name="hasIccCard()Z" since="5" />
+		<method name="isNetworkRoaming()Z" />
+		<method name="listen(Landroid/telephony/PhoneStateListener;I)V" />
+		<field name="ACTION_PHONE_STATE_CHANGED" since="3" />
+		<field name="CALL_STATE_IDLE" />
+		<field name="CALL_STATE_OFFHOOK" />
+		<field name="CALL_STATE_RINGING" />
+		<field name="DATA_ACTIVITY_DORMANT" since="4" />
+		<field name="DATA_ACTIVITY_IN" />
+		<field name="DATA_ACTIVITY_INOUT" />
+		<field name="DATA_ACTIVITY_NONE" />
+		<field name="DATA_ACTIVITY_OUT" />
+		<field name="DATA_CONNECTED" />
+		<field name="DATA_CONNECTING" />
+		<field name="DATA_DISCONNECTED" />
+		<field name="DATA_SUSPENDED" />
+		<field name="EXTRA_INCOMING_NUMBER" since="3" />
+		<field name="EXTRA_STATE" since="3" />
+		<field name="EXTRA_STATE_IDLE" since="3" />
+		<field name="EXTRA_STATE_OFFHOOK" since="3" />
+		<field name="EXTRA_STATE_RINGING" since="3" />
+		<field name="NETWORK_TYPE_1xRTT" since="4" />
+		<field name="NETWORK_TYPE_CDMA" since="4" />
+		<field name="NETWORK_TYPE_EDGE" />
+		<field name="NETWORK_TYPE_EHRPD" since="11" />
+		<field name="NETWORK_TYPE_EVDO_0" since="4" />
+		<field name="NETWORK_TYPE_EVDO_A" since="4" />
+		<field name="NETWORK_TYPE_EVDO_B" since="9" />
+		<field name="NETWORK_TYPE_GPRS" />
+		<field name="NETWORK_TYPE_HSDPA" since="5" />
+		<field name="NETWORK_TYPE_HSPA" since="5" />
+		<field name="NETWORK_TYPE_HSPAP" since="13" />
+		<field name="NETWORK_TYPE_HSUPA" since="5" />
+		<field name="NETWORK_TYPE_IDEN" since="8" />
+		<field name="NETWORK_TYPE_LTE" since="11" />
+		<field name="NETWORK_TYPE_UMTS" />
+		<field name="NETWORK_TYPE_UNKNOWN" />
+		<field name="PHONE_TYPE_CDMA" since="4" />
+		<field name="PHONE_TYPE_GSM" />
+		<field name="PHONE_TYPE_NONE" />
+		<field name="PHONE_TYPE_SIP" since="11" />
+		<field name="SIM_STATE_ABSENT" />
+		<field name="SIM_STATE_NETWORK_LOCKED" />
+		<field name="SIM_STATE_PIN_REQUIRED" />
+		<field name="SIM_STATE_PUK_REQUIRED" />
+		<field name="SIM_STATE_READY" />
+		<field name="SIM_STATE_UNKNOWN" />
+	</class>
+	<class name="android/telephony/cdma/CdmaCellLocation" since="5">
+		<extends name="android/telephony/CellLocation" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Bundle;)V" />
+		<method name="fillInNotifierBundle(Landroid/os/Bundle;)V" />
+		<method name="getBaseStationId()I" />
+		<method name="getBaseStationLatitude()I" />
+		<method name="getBaseStationLongitude()I" />
+		<method name="getNetworkId()I" />
+		<method name="getSystemId()I" />
+		<method name="setCellLocationData(III)V" />
+		<method name="setCellLocationData(IIIII)V" />
+		<method name="setStateInvalid()V" />
+	</class>
+	<class name="android/telephony/gsm/GsmCellLocation" since="1">
+		<extends name="android/telephony/CellLocation" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Bundle;)V" />
+		<method name="fillInNotifierBundle(Landroid/os/Bundle;)V" />
+		<method name="getCid()I" />
+		<method name="getLac()I" />
+		<method name="getPsc()I" since="9" />
+		<method name="setLacAndCid(II)V" />
+		<method name="setStateInvalid()V" />
+	</class>
+	<class name="android/telephony/gsm/SmsManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="divideMessage(Ljava/lang/String;)Ljava/util/ArrayList;" />
+		<method name="getDefault()Landroid/telephony/gsm/SmsManager;" />
+		<method name="sendDataMessage(Ljava/lang/String;Ljava/lang/String;S[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
+		<method name="sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V" />
+		<method name="sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V" />
+		<field name="RESULT_ERROR_GENERIC_FAILURE" />
+		<field name="RESULT_ERROR_NO_SERVICE" />
+		<field name="RESULT_ERROR_NULL_PDU" />
+		<field name="RESULT_ERROR_RADIO_OFF" />
+		<field name="STATUS_ON_SIM_FREE" />
+		<field name="STATUS_ON_SIM_READ" />
+		<field name="STATUS_ON_SIM_SENT" />
+		<field name="STATUS_ON_SIM_UNREAD" />
+		<field name="STATUS_ON_SIM_UNSENT" />
+	</class>
+	<class name="android/telephony/gsm/SmsMessage" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="calculateLength(Ljava/lang/CharSequence;Z)[I" since="3" />
+		<method name="calculateLength(Ljava/lang/String;Z)[I" />
+		<method name="createFromPdu([B)Landroid/telephony/gsm/SmsMessage;" />
+		<method name="getDisplayMessageBody()Ljava/lang/String;" />
+		<method name="getDisplayOriginatingAddress()Ljava/lang/String;" />
+		<method name="getEmailBody()Ljava/lang/String;" />
+		<method name="getEmailFrom()Ljava/lang/String;" />
+		<method name="getIndexOnSim()I" />
+		<method name="getMessageBody()Ljava/lang/String;" />
+		<method name="getMessageClass()Landroid/telephony/gsm/SmsMessage$MessageClass;" />
+		<method name="getOriginatingAddress()Ljava/lang/String;" />
+		<method name="getPdu()[B" />
+		<method name="getProtocolIdentifier()I" />
+		<method name="getPseudoSubject()Ljava/lang/String;" />
+		<method name="getServiceCenterAddress()Ljava/lang/String;" />
+		<method name="getStatus()I" />
+		<method name="getStatusOnSim()I" />
+		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Landroid/telephony/gsm/SmsMessage$SubmitPdu;" />
+		<method name="getSubmitPdu(Ljava/lang/String;Ljava/lang/String;S[BZ)Landroid/telephony/gsm/SmsMessage$SubmitPdu;" />
+		<method name="getTPLayerLengthForPDU(Ljava/lang/String;)I" />
+		<method name="getTimestampMillis()J" />
+		<method name="getUserData()[B" />
+		<method name="isCphsMwiMessage()Z" />
+		<method name="isEmail()Z" />
+		<method name="isMWIClearMessage()Z" />
+		<method name="isMWISetMessage()Z" />
+		<method name="isMwiDontStore()Z" />
+		<method name="isReplace()Z" />
+		<method name="isReplyPathPresent()Z" />
+		<method name="isStatusReportMessage()Z" />
+		<field name="ENCODING_16BIT" />
+		<field name="ENCODING_7BIT" />
+		<field name="ENCODING_8BIT" />
+		<field name="ENCODING_UNKNOWN" />
+		<field name="MAX_USER_DATA_BYTES" />
+		<field name="MAX_USER_DATA_SEPTETS" />
+		<field name="MAX_USER_DATA_SEPTETS_WITH_HEADER" />
+	</class>
+	<class name="android/telephony/gsm/SmsMessage$MessageClass" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/telephony/gsm/SmsMessage$MessageClass;" />
+		<method name="values()[Landroid/telephony/gsm/SmsMessage$MessageClass;" />
+		<field name="CLASS_0" />
+		<field name="CLASS_1" />
+		<field name="CLASS_2" />
+		<field name="CLASS_3" />
+		<field name="UNKNOWN" />
+	</class>
+	<class name="android/telephony/gsm/SmsMessage$SubmitPdu" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="encodedMessage" />
+		<field name="encodedScAddress" />
+	</class>
+	<class name="android/test/ActivityInstrumentationTestCase" since="1">
+		<extends name="android/test/ActivityTestCase" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;Z)V" />
+		<method name="getActivity()LT;" />
+		<method name="testActivityTestCaseSetUpProperly()V" />
+	</class>
+	<class name="android/test/ActivityInstrumentationTestCase2" since="3">
+		<extends name="android/test/ActivityTestCase" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" since="8" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
+		<method name="getActivity()LT;" />
+		<method name="setActivityInitialTouchMode(Z)V" />
+		<method name="setActivityIntent(Landroid/content/Intent;)V" />
+	</class>
+	<class name="android/test/ActivityTestCase" since="1">
+		<extends name="android/test/InstrumentationTestCase" />
+		<method name="&lt;init>()V" />
+		<method name="getActivity()Landroid/app/Activity;" />
+		<method name="scrubClass(Ljava/lang/Class;)V" />
+		<method name="setActivity(Landroid/app/Activity;)V" />
+	</class>
+	<class name="android/test/ActivityUnitTestCase" since="1">
+		<extends name="android/test/ActivityTestCase" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" />
+		<method name="getActivity()LT;" />
+		<method name="getFinishedActivityRequest()I" />
+		<method name="getRequestedOrientation()I" />
+		<method name="getStartedActivityIntent()Landroid/content/Intent;" />
+		<method name="getStartedActivityRequest()I" />
+		<method name="isFinishCalled()Z" />
+		<method name="setActivityContext(Landroid/content/Context;)V" />
+		<method name="setApplication(Landroid/app/Application;)V" />
+		<method name="startActivity(Landroid/content/Intent;Landroid/os/Bundle;Ljava/lang/Object;)LT;" />
+	</class>
+	<class name="android/test/AndroidTestCase" since="1">
+		<extends name="junit/framework/TestCase" />
+		<method name="&lt;init>()V" />
+		<method name="assertActivityRequiresPermission(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="4" />
+		<method name="assertReadingContentUriRequiresPermission(Landroid/net/Uri;Ljava/lang/String;)V" since="4" />
+		<method name="assertWritingContentUriRequiresPermission(Landroid/net/Uri;Ljava/lang/String;)V" since="4" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="scrubClass(Ljava/lang/Class;)V" />
+		<method name="setContext(Landroid/content/Context;)V" />
+		<method name="testAndroidTestCaseSetupProperly()V" />
+		<field name="mContext" />
+	</class>
+	<class name="android/test/AndroidTestRunner" since="1">
+		<extends name="junit/runner/BaseTestRunner" />
+		<method name="&lt;init>()V" />
+		<method name="addTestListener(Ljunit/framework/TestListener;)V" />
+		<method name="clearTestListeners()V" />
+		<method name="createTestResult()Ljunit/framework/TestResult;" />
+		<method name="getTestCases()Ljava/util/List;" />
+		<method name="getTestClassName()Ljava/lang/String;" />
+		<method name="getTestResult()Ljunit/framework/TestResult;" />
+		<method name="runFailed(Ljava/lang/String;)V" />
+		<method name="runTest()V" />
+		<method name="runTest(Ljunit/framework/TestResult;)V" />
+		<method name="setContext(Landroid/content/Context;)V" />
+		<method name="setInstrumentaiton(Landroid/app/Instrumentation;)V" />
+		<method name="setInstrumentation(Landroid/app/Instrumentation;)V" since="5" />
+		<method name="setTest(Ljunit/framework/Test;)V" />
+		<method name="setTestClassName(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="testEnded(Ljava/lang/String;)V" />
+		<method name="testFailed(ILjunit/framework/Test;Ljava/lang/Throwable;)V" />
+		<method name="testStarted(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/test/ApplicationTestCase" since="1">
+		<extends name="android/test/AndroidTestCase" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" />
+		<method name="createApplication()V" />
+		<method name="getApplication()LT;" />
+		<method name="getSystemContext()Landroid/content/Context;" />
+		<method name="terminateApplication()V" />
+		<method name="testApplicationTestCaseSetUpProperly()V" />
+	</class>
+	<class name="android/test/AssertionFailedError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/test/ComparisonFailure" since="1">
+		<extends name="android/test/AssertionFailedError" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/test/FlakyTest" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/test/InstrumentationTestCase" since="1">
+		<extends name="junit/framework/TestCase" />
+		<method name="&lt;init>()V" />
+		<method name="getInstrumentation()Landroid/app/Instrumentation;" />
+		<method name="injectInsrumentation(Landroid/app/Instrumentation;)V" />
+		<method name="injectInstrumentation(Landroid/app/Instrumentation;)V" since="5" />
+		<method name="launchActivity(Ljava/lang/String;Ljava/lang/Class;Landroid/os/Bundle;)LT;" />
+		<method name="launchActivityWithIntent(Ljava/lang/String;Ljava/lang/Class;Landroid/content/Intent;)LT;" since="3" />
+		<method name="runTestOnUiThread(Ljava/lang/Runnable;)V" since="3" />
+		<method name="sendKeys(Ljava/lang/String;)V" />
+		<method name="sendKeys([I)V" />
+		<method name="sendRepeatedKeys([I)V" />
+	</class>
+	<class name="android/test/InstrumentationTestRunner" since="1">
+		<extends name="android/app/Instrumentation" />
+		<implements name="android/test/TestSuiteProvider" />
+		<method name="&lt;init>()V" />
+		<method name="getAllTests()Ljunit/framework/TestSuite;" />
+		<method name="getAndroidTestRunner()Landroid/test/AndroidTestRunner;" />
+		<method name="getLoader()Ljava/lang/ClassLoader;" />
+		<method name="getTestSuite()Ljunit/framework/TestSuite;" />
+		<field name="REPORT_KEY_NAME_CLASS" />
+		<field name="REPORT_KEY_NAME_TEST" />
+		<field name="REPORT_KEY_NUM_CURRENT" />
+		<field name="REPORT_KEY_NUM_TOTAL" />
+		<field name="REPORT_KEY_STACK" />
+		<field name="REPORT_VALUE_ID" />
+		<field name="REPORT_VALUE_RESULT_ERROR" />
+		<field name="REPORT_VALUE_RESULT_FAILURE" />
+		<field name="REPORT_VALUE_RESULT_OK" />
+		<field name="REPORT_VALUE_RESULT_START" />
+	</class>
+	<class name="android/test/InstrumentationTestSuite" since="1">
+		<extends name="junit/framework/TestSuite" />
+		<method name="&lt;init>(Landroid/app/Instrumentation;)V" />
+		<method name="&lt;init>(Ljava/lang/Class;Landroid/app/Instrumentation;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Landroid/app/Instrumentation;)V" />
+	</class>
+	<class name="android/test/IsolatedContext" since="1">
+		<extends name="android/content/ContextWrapper" />
+		<method name="&lt;init>(Landroid/content/ContentResolver;Landroid/content/Context;)V" />
+		<method name="getAndClearBroadcastIntents()Ljava/util/List;" />
+	</class>
+	<class name="android/test/LoaderTestCase" since="11">
+		<extends name="android/test/AndroidTestCase" />
+		<method name="&lt;init>()V" />
+		<method name="getLoaderResultSynchronously(Landroid/content/Loader;)LT;" />
+	</class>
+	<class name="android/test/MoreAsserts" since="1">
+		<extends name="java/lang/Object" />
+		<method name="assertAssignableFrom(Ljava/lang/Class;Ljava/lang/Class;)V" />
+		<method name="assertAssignableFrom(Ljava/lang/Class;Ljava/lang/Object;)V" />
+		<method name="assertContainsRegex(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
+		<method name="assertContainsRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
+		<method name="assertContentsInAnyOrder(Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
+		<method name="assertContentsInAnyOrder(Ljava/lang/String;Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
+		<method name="assertContentsInOrder(Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
+		<method name="assertContentsInOrder(Ljava/lang/String;Ljava/lang/Iterable;[Ljava/lang/Object;)V" />
+		<method name="assertEmpty(Ljava/lang/Iterable;)V" />
+		<method name="assertEmpty(Ljava/lang/String;Ljava/lang/Iterable;)V" />
+		<method name="assertEmpty(Ljava/lang/String;Ljava/util/Map;)V" />
+		<method name="assertEmpty(Ljava/util/Map;)V" />
+		<method name="assertEquals(Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;)V" />
+		<method name="assertEquals(Ljava/lang/String;[B[B)V" />
+		<method name="assertEquals(Ljava/lang/String;[D[D)V" />
+		<method name="assertEquals(Ljava/lang/String;[I[I)V" />
+		<method name="assertEquals(Ljava/lang/String;[Ljava/lang/Object;[Ljava/lang/Object;)V" />
+		<method name="assertEquals(Ljava/util/Set;Ljava/util/Set;)V" />
+		<method name="assertEquals([B[B)V" />
+		<method name="assertEquals([D[D)V" />
+		<method name="assertEquals([I[I)V" />
+		<method name="assertEquals([Ljava/lang/Object;[Ljava/lang/Object;)V" />
+		<method name="assertMatchesRegex(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
+		<method name="assertMatchesRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/MatchResult;" />
+		<method name="assertNotContainsRegex(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="assertNotContainsRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="assertNotEmpty(Ljava/lang/Iterable;)V" />
+		<method name="assertNotEmpty(Ljava/lang/String;Ljava/lang/Iterable;)V" />
+		<method name="assertNotEmpty(Ljava/lang/String;Ljava/util/Map;)V" />
+		<method name="assertNotEmpty(Ljava/util/Map;)V" />
+		<method name="assertNotEqual(Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertNotEqual(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertNotMatchesRegex(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="assertNotMatchesRegex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="checkEqualsAndHashCodeMethods(Ljava/lang/Object;Ljava/lang/Object;Z)V" />
+		<method name="checkEqualsAndHashCodeMethods(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Z)V" />
+	</class>
+	<class name="android/test/PerformanceTestCase" since="1">
+		<method name="isPerformanceOnly()Z" />
+		<method name="startPerformance(Landroid/test/PerformanceTestCase$Intermediates;)I" />
+	</class>
+	<class name="android/test/PerformanceTestCase$Intermediates" since="1">
+		<method name="addIntermediate(Ljava/lang/String;)V" />
+		<method name="addIntermediate(Ljava/lang/String;J)V" />
+		<method name="finishTiming(Z)V" />
+		<method name="setInternalIterations(I)V" />
+		<method name="startTiming(Z)V" />
+	</class>
+	<class name="android/test/ProviderTestCase" since="1">
+		<extends name="android/test/InstrumentationTestCase" />
+		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
+		<method name="getMockContentResolver()Landroid/test/mock/MockContentResolver;" />
+		<method name="getMockContext()Landroid/test/IsolatedContext;" />
+		<method name="getProvider()LT;" />
+		<method name="newResolverWithContentProviderFromSql(Landroid/content/Context;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/ContentResolver;" />
+	</class>
+	<class name="android/test/ProviderTestCase2" since="3">
+		<extends name="android/test/AndroidTestCase" />
+		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
+		<method name="getMockContentResolver()Landroid/test/mock/MockContentResolver;" />
+		<method name="getMockContext()Landroid/test/IsolatedContext;" />
+		<method name="getProvider()LT;" />
+		<method name="newResolverWithContentProviderFromSql(Landroid/content/Context;Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/content/ContentResolver;" />
+	</class>
+	<class name="android/test/RenamingDelegatingContext" since="1">
+		<extends name="android/content/ContextWrapper" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/content/Context;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
+		<method name="getDatabasePrefix()Ljava/lang/String;" />
+		<method name="makeExistingFilesAndDbsAccessible()V" />
+		<method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;)LT;" />
+		<method name="providerWithRenamedContext(Ljava/lang/Class;Landroid/content/Context;Ljava/lang/String;Z)LT;" />
+	</class>
+	<class name="android/test/ServiceTestCase" since="1">
+		<extends name="android/test/AndroidTestCase" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" />
+		<method name="bindService(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="getApplication()Landroid/app/Application;" />
+		<method name="getService()LT;" />
+		<method name="getSystemContext()Landroid/content/Context;" />
+		<method name="setApplication(Landroid/app/Application;)V" />
+		<method name="setupService()V" />
+		<method name="shutdownService()V" />
+		<method name="startService(Landroid/content/Intent;)V" />
+		<method name="testServiceTestCaseSetUpProperly()V" />
+	</class>
+	<class name="android/test/SingleLaunchActivityTestCase" since="1">
+		<extends name="android/test/InstrumentationTestCase" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
+		<method name="getActivity()LT;" />
+		<method name="testActivityTestCaseSetUpProperly()V" />
+	</class>
+	<class name="android/test/SyncBaseInstrumentation" since="1">
+		<extends name="android/test/InstrumentationTestCase" />
+		<method name="&lt;init>()V" />
+		<method name="cancelSyncsandDisableAutoSync()V" />
+		<method name="syncProvider(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/test/TestSuiteProvider" since="1">
+		<method name="getTestSuite()Ljunit/framework/TestSuite;" />
+	</class>
+	<class name="android/test/TouchUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clickView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" />
+		<method name="drag(Landroid/test/ActivityInstrumentationTestCase;FFFFI)V" />
+		<method name="drag(Landroid/test/InstrumentationTestCase;FFFFI)V" since="3" />
+		<method name="dragQuarterScreenDown(Landroid/test/ActivityInstrumentationTestCase;)V" />
+		<method name="dragQuarterScreenDown(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;)V" since="3" />
+		<method name="dragQuarterScreenUp(Landroid/test/ActivityInstrumentationTestCase;)V" />
+		<method name="dragQuarterScreenUp(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;)V" since="3" />
+		<method name="dragViewBy(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;III)I" />
+		<method name="dragViewBy(Landroid/test/InstrumentationTestCase;Landroid/view/View;III)I" since="3" />
+		<method name="dragViewTo(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;III)I" />
+		<method name="dragViewTo(Landroid/test/InstrumentationTestCase;Landroid/view/View;III)I" since="3" />
+		<method name="dragViewToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" />
+		<method name="dragViewToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;I)V" />
+		<method name="dragViewToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/View;)V" since="3" />
+		<method name="dragViewToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/View;I)V" since="3" />
+		<method name="dragViewToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" />
+		<method name="dragViewToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;I)V" />
+		<method name="dragViewToTop(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" since="3" />
+		<method name="dragViewToTop(Landroid/test/InstrumentationTestCase;Landroid/view/View;I)V" since="3" />
+		<method name="dragViewToX(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;II)I" />
+		<method name="dragViewToX(Landroid/test/InstrumentationTestCase;Landroid/view/View;II)I" since="3" />
+		<method name="dragViewToY(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;II)I" />
+		<method name="dragViewToY(Landroid/test/InstrumentationTestCase;Landroid/view/View;II)I" since="3" />
+		<method name="longClickView(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/View;)V" />
+		<method name="longClickView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" since="3" />
+		<method name="scrollToBottom(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/ViewGroup;)V" />
+		<method name="scrollToBottom(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/ViewGroup;)V" since="3" />
+		<method name="scrollToTop(Landroid/test/ActivityInstrumentationTestCase;Landroid/view/ViewGroup;)V" />
+		<method name="scrollToTop(Landroid/test/InstrumentationTestCase;Landroid/app/Activity;Landroid/view/ViewGroup;)V" since="3" />
+		<method name="tapView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" />
+		<method name="touchAndCancelView(Landroid/test/InstrumentationTestCase;Landroid/view/View;)V" />
+	</class>
+	<class name="android/test/UiThreadTest" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/test/ViewAsserts" since="1">
+		<extends name="java/lang/Object" />
+		<method name="assertBaselineAligned(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertBottomAligned(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertBottomAligned(Landroid/view/View;Landroid/view/View;I)V" />
+		<method name="assertGroupContains(Landroid/view/ViewGroup;Landroid/view/View;)V" />
+		<method name="assertGroupIntegrity(Landroid/view/ViewGroup;)V" />
+		<method name="assertGroupNotContains(Landroid/view/ViewGroup;Landroid/view/View;)V" />
+		<method name="assertHasScreenCoordinates(Landroid/view/View;Landroid/view/View;II)V" />
+		<method name="assertHorizontalCenterAligned(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertLeftAligned(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertLeftAligned(Landroid/view/View;Landroid/view/View;I)V" />
+		<method name="assertOffScreenAbove(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertOffScreenBelow(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertOnScreen(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertRightAligned(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertRightAligned(Landroid/view/View;Landroid/view/View;I)V" />
+		<method name="assertTopAligned(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="assertTopAligned(Landroid/view/View;Landroid/view/View;I)V" />
+		<method name="assertVerticalCenterAligned(Landroid/view/View;Landroid/view/View;)V" />
+	</class>
+	<class name="android/test/mock/MockApplication" since="1">
+		<extends name="android/app/Application" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/test/mock/MockContentProvider" since="8">
+		<extends name="android/content/ContentProvider" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;[Landroid/content/pm/PathPermission;)V" />
+		<method name="delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="getType(Landroid/net/Uri;)Ljava/lang/String;" />
+		<method name="insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;" />
+		<method name="onCreate()Z" />
+		<method name="query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;" />
+		<method name="update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I" />
+	</class>
+	<class name="android/test/mock/MockContentResolver" since="1">
+		<extends name="android/content/ContentResolver" />
+		<method name="&lt;init>()V" />
+		<method name="addProvider(Ljava/lang/String;Landroid/content/ContentProvider;)V" />
+	</class>
+	<class name="android/test/mock/MockContext" since="1">
+		<extends name="android/content/Context" />
+		<method name="&lt;init>()V" />
+		<method name="bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z" />
+		<method name="checkCallingOrSelfPermission(Ljava/lang/String;)I" />
+		<method name="checkCallingOrSelfUriPermission(Landroid/net/Uri;I)I" />
+		<method name="checkCallingPermission(Ljava/lang/String;)I" />
+		<method name="checkCallingUriPermission(Landroid/net/Uri;I)I" />
+		<method name="checkPermission(Ljava/lang/String;II)I" />
+		<method name="checkUriPermission(Landroid/net/Uri;III)I" />
+		<method name="checkUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;III)I" />
+		<method name="clearWallpaper()V" />
+		<method name="createPackageContext(Ljava/lang/String;I)Landroid/content/Context;" />
+		<method name="databaseList()[Ljava/lang/String;" />
+		<method name="deleteDatabase(Ljava/lang/String;)Z" />
+		<method name="deleteFile(Ljava/lang/String;)Z" />
+		<method name="enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="enforceCallingOrSelfUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
+		<method name="enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="enforceCallingUriPermission(Landroid/net/Uri;ILjava/lang/String;)V" />
+		<method name="enforcePermission(Ljava/lang/String;IILjava/lang/String;)V" />
+		<method name="enforceUriPermission(Landroid/net/Uri;IIILjava/lang/String;)V" />
+		<method name="enforceUriPermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V" />
+		<method name="fileList()[Ljava/lang/String;" />
+		<method name="getApplicationContext()Landroid/content/Context;" />
+		<method name="getApplicationInfo()Landroid/content/pm/ApplicationInfo;" since="4" />
+		<method name="getAssets()Landroid/content/res/AssetManager;" />
+		<method name="getCacheDir()Ljava/io/File;" />
+		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getContentResolver()Landroid/content/ContentResolver;" />
+		<method name="getDatabasePath(Ljava/lang/String;)Ljava/io/File;" />
+		<method name="getDir(Ljava/lang/String;I)Ljava/io/File;" />
+		<method name="getExternalCacheDir()Ljava/io/File;" since="8" />
+		<method name="getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;" since="8" />
+		<method name="getFileStreamPath(Ljava/lang/String;)Ljava/io/File;" />
+		<method name="getFilesDir()Ljava/io/File;" />
+		<method name="getMainLooper()Landroid/os/Looper;" />
+		<method name="getObbDir()Ljava/io/File;" since="11" />
+		<method name="getPackageCodePath()Ljava/lang/String;" />
+		<method name="getPackageManager()Landroid/content/pm/PackageManager;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getPackageResourcePath()Ljava/lang/String;" />
+		<method name="getResources()Landroid/content/res/Resources;" />
+		<method name="getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;" />
+		<method name="getSystemService(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getTheme()Landroid/content/res/Resources$Theme;" />
+		<method name="getWallpaper()Landroid/graphics/drawable/Drawable;" />
+		<method name="getWallpaperDesiredMinimumHeight()I" />
+		<method name="getWallpaperDesiredMinimumWidth()I" />
+		<method name="grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V" />
+		<method name="openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;" />
+		<method name="openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;" />
+		<method name="openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;" since="11" />
+		<method name="peekWallpaper()Landroid/graphics/drawable/Drawable;" />
+		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;" />
+		<method name="registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;" />
+		<method name="removeStickyBroadcast(Landroid/content/Intent;)V" />
+		<method name="revokeUriPermission(Landroid/net/Uri;I)V" />
+		<method name="sendBroadcast(Landroid/content/Intent;)V" />
+		<method name="sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
+		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;)V" />
+		<method name="sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="sendStickyBroadcast(Landroid/content/Intent;)V" />
+		<method name="sendStickyOrderedBroadcast(Landroid/content/Intent;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V" since="5" />
+		<method name="setTheme(I)V" />
+		<method name="setWallpaper(Landroid/graphics/Bitmap;)V" />
+		<method name="setWallpaper(Ljava/io/InputStream;)V" />
+		<method name="startActivities([Landroid/content/Intent;)V" since="11" />
+		<method name="startActivity(Landroid/content/Intent;)V" />
+		<method name="startInstrumentation(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;III)V" since="5" />
+		<method name="startService(Landroid/content/Intent;)Landroid/content/ComponentName;" />
+		<method name="stopService(Landroid/content/Intent;)Z" />
+		<method name="unbindService(Landroid/content/ServiceConnection;)V" />
+		<method name="unregisterReceiver(Landroid/content/BroadcastReceiver;)V" />
+	</class>
+	<class name="android/test/mock/MockCursor" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/database/Cursor" />
+		<method name="&lt;init>()V" />
+		<method name="abortUpdates()V" />
+		<method name="close()V" />
+		<method name="commitUpdates()Z" />
+		<method name="commitUpdates(Ljava/util/Map;)Z" />
+		<method name="copyStringToBuffer(ILandroid/database/CharArrayBuffer;)V" />
+		<method name="deactivate()V" />
+		<method name="deleteRow()Z" />
+		<method name="getBlob(I)[B" />
+		<method name="getColumnCount()I" />
+		<method name="getColumnIndex(Ljava/lang/String;)I" />
+		<method name="getColumnIndexOrThrow(Ljava/lang/String;)I" />
+		<method name="getColumnName(I)Ljava/lang/String;" />
+		<method name="getColumnNames()[Ljava/lang/String;" />
+		<method name="getCount()I" />
+		<method name="getDouble(I)D" />
+		<method name="getExtras()Landroid/os/Bundle;" />
+		<method name="getFloat(I)F" />
+		<method name="getInt(I)I" />
+		<method name="getLong(I)J" />
+		<method name="getPosition()I" />
+		<method name="getShort(I)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getType(I)I" since="11" />
+		<method name="getWantsAllOnMoveCalls()Z" />
+		<method name="hasUpdates()Z" />
+		<method name="isAfterLast()Z" />
+		<method name="isBeforeFirst()Z" />
+		<method name="isClosed()Z" />
+		<method name="isFirst()Z" />
+		<method name="isLast()Z" />
+		<method name="isNull(I)Z" />
+		<method name="move(I)Z" />
+		<method name="moveToFirst()Z" />
+		<method name="moveToLast()Z" />
+		<method name="moveToNext()Z" />
+		<method name="moveToPosition(I)Z" />
+		<method name="moveToPrevious()Z" />
+		<method name="registerContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="requery()Z" />
+		<method name="respond(Landroid/os/Bundle;)Landroid/os/Bundle;" />
+		<method name="setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V" />
+		<method name="supportsUpdates()Z" />
+		<method name="unregisterContentObserver(Landroid/database/ContentObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="updateBlob(I[B)Z" />
+		<method name="updateDouble(ID)Z" />
+		<method name="updateFloat(IF)Z" />
+		<method name="updateInt(II)Z" />
+		<method name="updateLong(IJ)Z" />
+		<method name="updateShort(IS)Z" />
+		<method name="updateString(ILjava/lang/String;)Z" />
+		<method name="updateToNull(I)Z" />
+	</class>
+	<class name="android/test/mock/MockDialogInterface" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/content/DialogInterface" />
+		<method name="&lt;init>()V" />
+		<method name="cancel()V" />
+		<method name="dismiss()V" />
+	</class>
+	<class name="android/test/mock/MockPackageManager" since="1">
+		<extends name="android/content/pm/PackageManager" />
+		<method name="&lt;init>()V" />
+		<method name="addPackageToPreferred(Ljava/lang/String;)V" />
+		<method name="addPermission(Landroid/content/pm/PermissionInfo;)Z" />
+		<method name="addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z" since="8" />
+		<method name="addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;)V" />
+		<method name="canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8" />
+		<method name="checkPermission(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="checkSignatures(II)I" since="5" />
+		<method name="checkSignatures(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="clearPackagePreferredActivities(Ljava/lang/String;)V" />
+		<method name="currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String;" since="8" />
+		<method name="getActivityIcon(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getActivityIcon(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;" />
+		<method name="getActivityLogo(Landroid/content/ComponentName;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getActivityLogo(Landroid/content/Intent;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getAllPermissionGroups(I)Ljava/util/List;" />
+		<method name="getApplicationEnabledSetting(Ljava/lang/String;)I" />
+		<method name="getApplicationIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getApplicationIcon(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;" />
+		<method name="getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
+		<method name="getApplicationLogo(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getApplicationLogo(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getComponentEnabledSetting(Landroid/content/ComponentName;)I" />
+		<method name="getDefaultActivityIcon()Landroid/graphics/drawable/Drawable;" />
+		<method name="getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;" />
+		<method name="getInstalledApplications(I)Ljava/util/List;" />
+		<method name="getInstalledPackages(I)Ljava/util/List;" />
+		<method name="getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;" since="5" />
+		<method name="getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;" />
+		<method name="getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;" since="3" />
+		<method name="getNameForUid(I)Ljava/lang/String;" />
+		<method name="getPackageGids(Ljava/lang/String;)[I" />
+		<method name="getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;" />
+		<method name="getPackagesForUid(I)[Ljava/lang/String;" />
+		<method name="getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;" />
+		<method name="getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;" />
+		<method name="getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I" />
+		<method name="getPreferredPackages(I)Ljava/util/List;" />
+		<method name="getProviderInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ProviderInfo;" since="9" />
+		<method name="getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;" />
+		<method name="getResourcesForActivity(Landroid/content/ComponentName;)Landroid/content/res/Resources;" />
+		<method name="getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;" />
+		<method name="getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;" />
+		<method name="getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;" />
+		<method name="getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo;" since="5" />
+		<method name="getSystemSharedLibraryNames()[Ljava/lang/String;" since="3" />
+		<method name="getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
+		<method name="getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser;" />
+		<method name="hasSystemFeature(Ljava/lang/String;)Z" since="5" />
+		<method name="installPackage(Landroid/net/Uri;Landroid/content/pm/IPackageInstallObserver;I)V" />
+		<method name="isSafeMode()Z" since="3" />
+		<method name="queryBroadcastReceivers(Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryContentProviders(Ljava/lang/String;II)Ljava/util/List;" />
+		<method name="queryInstrumentation(Ljava/lang/String;I)Ljava/util/List;" />
+		<method name="queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;" />
+		<method name="queryPermissionsByGroup(Ljava/lang/String;I)Ljava/util/List;" />
+		<method name="removePackageFromPreferred(Ljava/lang/String;)V" />
+		<method name="removePermission(Ljava/lang/String;)V" />
+		<method name="resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;" />
+		<method name="resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo;" />
+		<method name="resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;" />
+		<method name="setApplicationEnabledSetting(Ljava/lang/String;II)V" />
+		<method name="setComponentEnabledSetting(Landroid/content/ComponentName;II)V" />
+		<method name="setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V" since="11" />
+		<method name="verifyPendingInstall(II)V" since="14" />
+	</class>
+	<class name="android/test/mock/MockResources" since="1">
+		<extends name="android/content/res/Resources" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/test/suitebuilder/TestMethod" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" since="3" />
+		<method name="&lt;init>(Ljava/lang/reflect/Method;Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Ljunit/framework/TestCase;)V" since="3" />
+		<method name="createTest()Ljunit/framework/TestCase;" />
+		<method name="getAnnotation(Ljava/lang/Class;)LT;" />
+		<method name="getEnclosingClass()Ljava/lang/Class;" />
+		<method name="getEnclosingClassname()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+	</class>
+	<class name="android/test/suitebuilder/TestSuiteBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
+		<method name="addRequirements(Ljava/util/List;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
+		<method name="addRequirements([Lcom/android/internal/util/Predicate;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
+		<method name="build()Ljunit/framework/TestSuite;" />
+		<method name="excludePackages([Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
+		<method name="getSuiteName()Ljava/lang/String;" />
+		<method name="includeAllPackagesUnderHere()Landroid/test/suitebuilder/TestSuiteBuilder;" />
+		<method name="includePackages([Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
+		<method name="named(Ljava/lang/String;)Landroid/test/suitebuilder/TestSuiteBuilder;" />
+	</class>
+	<class name="android/test/suitebuilder/TestSuiteBuilder$FailedToCreateTests" since="1">
+		<extends name="junit/framework/TestCase" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="testSuiteConstructionFailed()V" />
+	</class>
+	<class name="android/test/suitebuilder/annotation/LargeTest" since="2">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/test/suitebuilder/annotation/MediumTest" since="2">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/test/suitebuilder/annotation/SmallTest" since="2">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/test/suitebuilder/annotation/Smoke" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/test/suitebuilder/annotation/Suppress" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/text/AlteredCharSequence" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="android/text/GetChars" />
+		<method name="charAt(I)C" />
+		<method name="getChars(II[CI)V" />
+		<method name="length()I" />
+		<method name="make(Ljava/lang/CharSequence;[CII)Landroid/text/AlteredCharSequence;" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/text/AndroidCharacter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getDirectionalities([C[BI)V" />
+		<method name="getEastAsianWidth(C)I" since="8" />
+		<method name="getEastAsianWidths([CII[B)V" since="8" />
+		<method name="getMirror(C)C" />
+		<method name="mirror([CII)Z" />
+		<field name="EAST_ASIAN_WIDTH_AMBIGUOUS" since="8" />
+		<field name="EAST_ASIAN_WIDTH_FULL_WIDTH" since="8" />
+		<field name="EAST_ASIAN_WIDTH_HALF_WIDTH" since="8" />
+		<field name="EAST_ASIAN_WIDTH_NARROW" since="8" />
+		<field name="EAST_ASIAN_WIDTH_NEUTRAL" since="8" />
+		<field name="EAST_ASIAN_WIDTH_WIDE" since="8" />
+	</class>
+	<class name="android/text/Annotation" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="describeContents()I" since="3" />
+		<method name="getKey()Ljava/lang/String;" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/AutoText" since="1">
+		<extends name="java/lang/Object" />
+		<method name="get(Ljava/lang/CharSequence;IILandroid/view/View;)Ljava/lang/String;" />
+		<method name="getSize(Landroid/view/View;)I" since="3" />
+	</class>
+	<class name="android/text/BoringLayout" since="1">
+		<extends name="android/text/Layout" />
+		<implements name="android/text/TextUtils$EllipsizeCallback" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V" />
+		<method name="ellipsized(II)V" />
+		<method name="getBottomPadding()I" />
+		<method name="getEllipsisCount(I)I" />
+		<method name="getEllipsisStart(I)I" />
+		<method name="getLineContainsTab(I)Z" />
+		<method name="getLineCount()I" />
+		<method name="getLineDescent(I)I" />
+		<method name="getLineDirections(I)Landroid/text/Layout$Directions;" />
+		<method name="getLineStart(I)I" />
+		<method name="getLineTop(I)I" />
+		<method name="getParagraphDirection(I)I" />
+		<method name="getTopPadding()I" />
+		<method name="isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;)Landroid/text/BoringLayout$Metrics;" />
+		<method name="isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;" />
+		<method name="make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;" />
+		<method name="make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;" />
+		<method name="replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;" />
+		<method name="replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;" />
+	</class>
+	<class name="android/text/BoringLayout$Metrics" since="1">
+		<extends name="android/graphics/Paint$FontMetricsInt" />
+		<method name="&lt;init>()V" />
+		<field name="width" />
+	</class>
+	<class name="android/text/ClipboardManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" since="11" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="hasText()Z" />
+		<method name="setText(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/text/DynamicLayout" since="1">
+		<extends name="android/text/Layout" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V" />
+		<method name="getBottomPadding()I" />
+		<method name="getEllipsisCount(I)I" />
+		<method name="getEllipsisStart(I)I" />
+		<method name="getLineContainsTab(I)Z" />
+		<method name="getLineCount()I" />
+		<method name="getLineDescent(I)I" />
+		<method name="getLineDirections(I)Landroid/text/Layout$Directions;" />
+		<method name="getLineStart(I)I" />
+		<method name="getLineTop(I)I" />
+		<method name="getParagraphDirection(I)I" />
+		<method name="getTopPadding()I" />
+	</class>
+	<class name="android/text/Editable" since="1">
+		<implements name="java/lang/Appendable" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="android/text/GetChars" />
+		<implements name="android/text/Spannable" />
+		<method name="append(C)Landroid/text/Editable;" />
+		<method name="append(Ljava/lang/CharSequence;)Landroid/text/Editable;" />
+		<method name="append(Ljava/lang/CharSequence;II)Landroid/text/Editable;" />
+		<method name="clear()V" />
+		<method name="clearSpans()V" />
+		<method name="delete(II)Landroid/text/Editable;" />
+		<method name="getFilters()[Landroid/text/InputFilter;" />
+		<method name="insert(ILjava/lang/CharSequence;)Landroid/text/Editable;" />
+		<method name="insert(ILjava/lang/CharSequence;II)Landroid/text/Editable;" />
+		<method name="replace(IILjava/lang/CharSequence;)Landroid/text/Editable;" />
+		<method name="replace(IILjava/lang/CharSequence;II)Landroid/text/Editable;" />
+		<method name="setFilters([Landroid/text/InputFilter;)V" />
+	</class>
+	<class name="android/text/Editable$Factory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getInstance()Landroid/text/Editable$Factory;" />
+		<method name="newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable;" />
+	</class>
+	<class name="android/text/GetChars" since="1">
+		<implements name="java/lang/CharSequence" />
+		<method name="getChars(II[CI)V" />
+	</class>
+	<class name="android/text/Html" since="1">
+		<extends name="java/lang/Object" />
+		<method name="fromHtml(Ljava/lang/String;)Landroid/text/Spanned;" />
+		<method name="fromHtml(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;" />
+		<method name="toHtml(Landroid/text/Spanned;)Ljava/lang/String;" />
+	</class>
+	<class name="android/text/Html$ImageGetter" since="1">
+		<method name="getDrawable(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;" />
+	</class>
+	<class name="android/text/Html$TagHandler" since="1">
+		<method name="handleTag(ZLjava/lang/String;Landroid/text/Editable;Lorg/xml/sax/XMLReader;)V" />
+	</class>
+	<class name="android/text/InputFilter" since="1">
+		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/text/InputFilter$AllCaps" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/InputFilter" />
+		<method name="&lt;init>()V" />
+		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/text/InputFilter$LengthFilter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/InputFilter" />
+		<method name="&lt;init>(I)V" />
+		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/text/InputType" since="3">
+		<field name="TYPE_CLASS_DATETIME" />
+		<field name="TYPE_CLASS_NUMBER" />
+		<field name="TYPE_CLASS_PHONE" />
+		<field name="TYPE_CLASS_TEXT" />
+		<field name="TYPE_DATETIME_VARIATION_DATE" />
+		<field name="TYPE_DATETIME_VARIATION_NORMAL" />
+		<field name="TYPE_DATETIME_VARIATION_TIME" />
+		<field name="TYPE_MASK_CLASS" />
+		<field name="TYPE_MASK_FLAGS" />
+		<field name="TYPE_MASK_VARIATION" />
+		<field name="TYPE_NULL" />
+		<field name="TYPE_NUMBER_FLAG_DECIMAL" />
+		<field name="TYPE_NUMBER_FLAG_SIGNED" />
+		<field name="TYPE_NUMBER_VARIATION_NORMAL" since="11" />
+		<field name="TYPE_NUMBER_VARIATION_PASSWORD" since="11" />
+		<field name="TYPE_TEXT_FLAG_AUTO_COMPLETE" />
+		<field name="TYPE_TEXT_FLAG_AUTO_CORRECT" />
+		<field name="TYPE_TEXT_FLAG_CAP_CHARACTERS" />
+		<field name="TYPE_TEXT_FLAG_CAP_SENTENCES" />
+		<field name="TYPE_TEXT_FLAG_CAP_WORDS" />
+		<field name="TYPE_TEXT_FLAG_IME_MULTI_LINE" />
+		<field name="TYPE_TEXT_FLAG_MULTI_LINE" />
+		<field name="TYPE_TEXT_FLAG_NO_SUGGESTIONS" since="5" />
+		<field name="TYPE_TEXT_VARIATION_EMAIL_ADDRESS" />
+		<field name="TYPE_TEXT_VARIATION_EMAIL_SUBJECT" />
+		<field name="TYPE_TEXT_VARIATION_FILTER" />
+		<field name="TYPE_TEXT_VARIATION_LONG_MESSAGE" />
+		<field name="TYPE_TEXT_VARIATION_NORMAL" />
+		<field name="TYPE_TEXT_VARIATION_PASSWORD" />
+		<field name="TYPE_TEXT_VARIATION_PERSON_NAME" />
+		<field name="TYPE_TEXT_VARIATION_PHONETIC" />
+		<field name="TYPE_TEXT_VARIATION_POSTAL_ADDRESS" />
+		<field name="TYPE_TEXT_VARIATION_SHORT_MESSAGE" />
+		<field name="TYPE_TEXT_VARIATION_URI" />
+		<field name="TYPE_TEXT_VARIATION_VISIBLE_PASSWORD" />
+		<field name="TYPE_TEXT_VARIATION_WEB_EDIT_TEXT" />
+		<field name="TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS" since="11" />
+		<field name="TYPE_TEXT_VARIATION_WEB_PASSWORD" since="11" />
+	</class>
+	<class name="android/text/Layout" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V" />
+		<method name="getAlignment()Landroid/text/Layout$Alignment;" />
+		<method name="getBottomPadding()I" />
+		<method name="getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V" />
+		<method name="getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;)F" />
+		<method name="getDesiredWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F" />
+		<method name="getEllipsisCount(I)I" />
+		<method name="getEllipsisStart(I)I" />
+		<method name="getEllipsizedWidth()I" />
+		<method name="getHeight()I" />
+		<method name="getLineAscent(I)I" />
+		<method name="getLineBaseline(I)I" />
+		<method name="getLineBottom(I)I" />
+		<method name="getLineBounds(ILandroid/graphics/Rect;)I" />
+		<method name="getLineContainsTab(I)Z" />
+		<method name="getLineCount()I" />
+		<method name="getLineDescent(I)I" />
+		<method name="getLineDirections(I)Landroid/text/Layout$Directions;" />
+		<method name="getLineEnd(I)I" />
+		<method name="getLineForOffset(I)I" />
+		<method name="getLineForVertical(I)I" />
+		<method name="getLineLeft(I)F" />
+		<method name="getLineMax(I)F" />
+		<method name="getLineRight(I)F" />
+		<method name="getLineStart(I)I" />
+		<method name="getLineTop(I)I" />
+		<method name="getLineVisibleEnd(I)I" />
+		<method name="getLineWidth(I)F" />
+		<method name="getOffsetForHorizontal(IF)I" />
+		<method name="getOffsetToLeftOf(I)I" />
+		<method name="getOffsetToRightOf(I)I" />
+		<method name="getPaint()Landroid/text/TextPaint;" />
+		<method name="getParagraphAlignment(I)Landroid/text/Layout$Alignment;" />
+		<method name="getParagraphDirection(I)I" />
+		<method name="getParagraphLeft(I)I" />
+		<method name="getParagraphRight(I)I" />
+		<method name="getPrimaryHorizontal(I)F" />
+		<method name="getSecondaryHorizontal(I)F" />
+		<method name="getSelectionPath(IILandroid/graphics/Path;)V" />
+		<method name="getSpacingAdd()F" />
+		<method name="getSpacingMultiplier()F" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="getTopPadding()I" />
+		<method name="getWidth()I" />
+		<method name="increaseWidthTo(I)V" />
+		<method name="isRtlCharAt(I)Z" since="14" />
+		<method name="isSpanned()Z" />
+		<field name="DIR_LEFT_TO_RIGHT" />
+		<field name="DIR_RIGHT_TO_LEFT" />
+	</class>
+	<class name="android/text/Layout$Alignment" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/text/Layout$Alignment;" />
+		<method name="values()[Landroid/text/Layout$Alignment;" />
+		<field name="ALIGN_CENTER" />
+		<field name="ALIGN_NORMAL" />
+		<field name="ALIGN_OPPOSITE" />
+	</class>
+	<class name="android/text/Layout$Directions" since="1">
+		<extends name="java/lang/Object" />
+	</class>
+	<class name="android/text/LoginFilter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/InputFilter" />
+		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
+		<method name="isAllowed(C)Z" />
+		<method name="onInvalidCharacter(C)V" />
+		<method name="onStart()V" />
+		<method name="onStop()V" />
+	</class>
+	<class name="android/text/LoginFilter$PasswordFilterGMail" since="1">
+		<extends name="android/text/LoginFilter" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="isAllowed(C)Z" />
+	</class>
+	<class name="android/text/LoginFilter$UsernameFilterGMail" since="1">
+		<extends name="android/text/LoginFilter" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="isAllowed(C)Z" />
+	</class>
+	<class name="android/text/LoginFilter$UsernameFilterGeneric" since="1">
+		<extends name="android/text/LoginFilter" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="isAllowed(C)Z" />
+	</class>
+	<class name="android/text/NoCopySpan" since="3">
+	</class>
+	<class name="android/text/NoCopySpan$Concrete" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/NoCopySpan" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="android/text/ParcelableSpan" since="3">
+		<implements name="android/os/Parcelable" />
+		<method name="getSpanTypeId()I" />
+	</class>
+	<class name="android/text/Selection" since="1">
+		<extends name="java/lang/Object" />
+		<method name="extendDown(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="extendLeft(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="extendRight(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="extendSelection(Landroid/text/Spannable;I)V" />
+		<method name="extendToLeftEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="extendToRightEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="extendUp(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="getSelectionEnd(Ljava/lang/CharSequence;)I" />
+		<method name="getSelectionStart(Ljava/lang/CharSequence;)I" />
+		<method name="moveDown(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="moveLeft(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="moveRight(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="moveToLeftEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="moveToRightEdge(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="moveUp(Landroid/text/Spannable;Landroid/text/Layout;)Z" />
+		<method name="removeSelection(Landroid/text/Spannable;)V" />
+		<method name="selectAll(Landroid/text/Spannable;)V" />
+		<method name="setSelection(Landroid/text/Spannable;I)V" />
+		<method name="setSelection(Landroid/text/Spannable;II)V" />
+		<field name="SELECTION_END" />
+		<field name="SELECTION_START" />
+	</class>
+	<class name="android/text/SpanWatcher" since="1">
+		<implements name="android/text/NoCopySpan" since="3" />
+		<method name="onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
+		<method name="onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V" />
+		<method name="onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
+	</class>
+	<class name="android/text/Spannable" since="1">
+		<implements name="android/text/Spanned" />
+		<method name="removeSpan(Ljava/lang/Object;)V" />
+		<method name="setSpan(Ljava/lang/Object;III)V" />
+	</class>
+	<class name="android/text/Spannable$Factory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getInstance()Landroid/text/Spannable$Factory;" />
+		<method name="newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable;" />
+	</class>
+	<class name="android/text/SpannableString" since="1">
+		<extends name="android/text/SpannableStringInternal" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="android/text/GetChars" />
+		<implements name="android/text/Spannable" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
+		<method name="removeSpan(Ljava/lang/Object;)V" />
+		<method name="setSpan(Ljava/lang/Object;III)V" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableString;" />
+	</class>
+	<class name="android/text/SpannableStringBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Appendable" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="android/text/Editable" />
+		<implements name="android/text/GetChars" />
+		<implements name="android/text/Spannable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;II)V" />
+		<method name="append(C)Landroid/text/SpannableStringBuilder;" />
+		<method name="append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
+		<method name="append(Ljava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
+		<method name="charAt(I)C" />
+		<method name="clear()V" />
+		<method name="clearSpans()V" />
+		<method name="delete(II)Landroid/text/SpannableStringBuilder;" />
+		<method name="getChars(II[CI)V" />
+		<method name="getFilters()[Landroid/text/InputFilter;" />
+		<method name="getSpanEnd(Ljava/lang/Object;)I" />
+		<method name="getSpanFlags(Ljava/lang/Object;)I" />
+		<method name="getSpanStart(Ljava/lang/Object;)I" />
+		<method name="getSpans(IILjava/lang/Class;)[LT;" />
+		<method name="getTextRunCursor(IIIIILandroid/graphics/Paint;)I" since="11" />
+		<method name="insert(ILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
+		<method name="insert(ILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
+		<method name="length()I" />
+		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
+		<method name="removeSpan(Ljava/lang/Object;)V" />
+		<method name="replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
+		<method name="replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;" />
+		<method name="setFilters([Landroid/text/InputFilter;)V" />
+		<method name="setSpan(Ljava/lang/Object;III)V" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;" />
+	</class>
+	<class name="android/text/SpannableStringInternal" since="1">
+		<extends name="java/lang/Object" />
+		<method name="charAt(I)C" />
+		<method name="getChars(II[CI)V" />
+		<method name="getSpanEnd(Ljava/lang/Object;)I" />
+		<method name="getSpanFlags(Ljava/lang/Object;)I" />
+		<method name="getSpanStart(Ljava/lang/Object;)I" />
+		<method name="getSpans(IILjava/lang/Class;)[LT;" />
+		<method name="length()I" />
+		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="android/text/Spanned" since="1">
+		<implements name="java/lang/CharSequence" />
+		<method name="getSpanEnd(Ljava/lang/Object;)I" />
+		<method name="getSpanFlags(Ljava/lang/Object;)I" />
+		<method name="getSpanStart(Ljava/lang/Object;)I" />
+		<method name="getSpans(IILjava/lang/Class;)[LT;" />
+		<method name="nextSpanTransition(IILjava/lang/Class;)I" />
+		<field name="SPAN_COMPOSING" since="3" />
+		<field name="SPAN_EXCLUSIVE_EXCLUSIVE" />
+		<field name="SPAN_EXCLUSIVE_INCLUSIVE" />
+		<field name="SPAN_INCLUSIVE_EXCLUSIVE" />
+		<field name="SPAN_INCLUSIVE_INCLUSIVE" />
+		<field name="SPAN_INTERMEDIATE" since="3" />
+		<field name="SPAN_MARK_MARK" />
+		<field name="SPAN_MARK_POINT" />
+		<field name="SPAN_PARAGRAPH" />
+		<field name="SPAN_POINT_MARK" />
+		<field name="SPAN_POINT_MARK_MASK" since="3" />
+		<field name="SPAN_POINT_POINT" />
+		<field name="SPAN_PRIORITY" />
+		<field name="SPAN_PRIORITY_SHIFT" />
+		<field name="SPAN_USER" />
+		<field name="SPAN_USER_SHIFT" />
+	</class>
+	<class name="android/text/SpannedString" since="1">
+		<extends name="android/text/SpannableStringInternal" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="android/text/GetChars" />
+		<implements name="android/text/Spanned" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="valueOf(Ljava/lang/CharSequence;)Landroid/text/SpannedString;" />
+	</class>
+	<class name="android/text/StaticLayout" since="1">
+		<extends name="android/text/Layout" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZLandroid/text/TextUtils$TruncateAt;I)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFZ)V" />
+		<method name="getBottomPadding()I" />
+		<method name="getEllipsisCount(I)I" />
+		<method name="getEllipsisStart(I)I" />
+		<method name="getLineContainsTab(I)Z" />
+		<method name="getLineCount()I" />
+		<method name="getLineDescent(I)I" />
+		<method name="getLineDirections(I)Landroid/text/Layout$Directions;" />
+		<method name="getLineStart(I)I" />
+		<method name="getLineTop(I)I" />
+		<method name="getParagraphDirection(I)I" />
+		<method name="getTopPadding()I" />
+	</class>
+	<class name="android/text/TextPaint" since="1">
+		<extends name="android/graphics/Paint" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/graphics/Paint;)V" />
+		<method name="set(Landroid/text/TextPaint;)V" />
+		<field name="baselineShift" />
+		<field name="bgColor" />
+		<field name="density" since="5" />
+		<field name="drawableState" />
+		<field name="linkColor" />
+	</class>
+	<class name="android/text/TextUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="commaEllipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLjava/lang/String;Ljava/lang/String;)Ljava/lang/CharSequence;" />
+		<method name="concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V" />
+		<method name="dumpSpans(Ljava/lang/CharSequence;Landroid/util/Printer;Ljava/lang/String;)V" since="3" />
+		<method name="ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence;" />
+		<method name="ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;)Ljava/lang/CharSequence;" />
+		<method name="equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z" />
+		<method name="expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="getCapsMode(Ljava/lang/CharSequence;II)I" since="3" />
+		<method name="getChars(Ljava/lang/CharSequence;II[CI)V" />
+		<method name="getOffsetAfter(Ljava/lang/CharSequence;I)I" />
+		<method name="getOffsetBefore(Ljava/lang/CharSequence;I)I" />
+		<method name="getReverse(Ljava/lang/CharSequence;II)Ljava/lang/CharSequence;" />
+		<method name="getTrimmedLength(Ljava/lang/CharSequence;)I" />
+		<method name="htmlEncode(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="indexOf(Ljava/lang/CharSequence;C)I" />
+		<method name="indexOf(Ljava/lang/CharSequence;CI)I" />
+		<method name="indexOf(Ljava/lang/CharSequence;CII)I" />
+		<method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I" />
+		<method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I" />
+		<method name="indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I" />
+		<method name="isDigitsOnly(Ljava/lang/CharSequence;)Z" />
+		<method name="isEmpty(Ljava/lang/CharSequence;)Z" />
+		<method name="isGraphic(C)Z" />
+		<method name="isGraphic(Ljava/lang/CharSequence;)Z" />
+		<method name="join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;" />
+		<method name="join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="lastIndexOf(Ljava/lang/CharSequence;C)I" />
+		<method name="lastIndexOf(Ljava/lang/CharSequence;CI)I" />
+		<method name="lastIndexOf(Ljava/lang/CharSequence;CII)I" />
+		<method name="regionMatches(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z" />
+		<method name="replace(Ljava/lang/CharSequence;[Ljava/lang/String;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="split(Ljava/lang/String;Ljava/util/regex/Pattern;)[Ljava/lang/String;" />
+		<method name="stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="substring(Ljava/lang/CharSequence;II)Ljava/lang/String;" />
+		<method name="writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V" />
+		<field name="CAP_MODE_CHARACTERS" since="3" />
+		<field name="CAP_MODE_SENTENCES" since="3" />
+		<field name="CAP_MODE_WORDS" since="3" />
+		<field name="CHAR_SEQUENCE_CREATOR" />
+	</class>
+	<class name="android/text/TextUtils$EllipsizeCallback" since="1">
+		<method name="ellipsized(II)V" />
+	</class>
+	<class name="android/text/TextUtils$SimpleStringSplitter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Iterator" />
+		<implements name="android/text/TextUtils$StringSplitter" />
+		<method name="&lt;init>(C)V" />
+		<method name="hasNext()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="next()Ljava/lang/String;" />
+		<method name="remove()V" />
+		<method name="setString(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/text/TextUtils$StringSplitter" since="1">
+		<implements name="java/lang/Iterable" />
+		<method name="setString(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/text/TextUtils$TruncateAt" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/text/TextUtils$TruncateAt;" />
+		<method name="values()[Landroid/text/TextUtils$TruncateAt;" />
+		<field name="END" />
+		<field name="MARQUEE" since="2" />
+		<field name="MIDDLE" />
+		<field name="START" />
+	</class>
+	<class name="android/text/TextWatcher" since="1">
+		<implements name="android/text/NoCopySpan" since="3" />
+		<method name="afterTextChanged(Landroid/text/Editable;)V" />
+		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
+		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
+	</class>
+	<class name="android/text/format/DateFormat" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence;" />
+		<method name="format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence;" />
+		<method name="format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence;" />
+		<method name="getDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
+		<method name="getDateFormatOrder(Landroid/content/Context;)[C" />
+		<method name="getLongDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
+		<method name="getMediumDateFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
+		<method name="getTimeFormat(Landroid/content/Context;)Ljava/text/DateFormat;" />
+		<method name="is24HourFormat(Landroid/content/Context;)Z" />
+		<field name="AM_PM" />
+		<field name="CAPITAL_AM_PM" />
+		<field name="DATE" />
+		<field name="DAY" />
+		<field name="HOUR" />
+		<field name="HOUR_OF_DAY" />
+		<field name="MINUTE" />
+		<field name="MONTH" />
+		<field name="QUOTE" />
+		<field name="SECONDS" />
+		<field name="TIME_ZONE" />
+		<field name="YEAR" />
+	</class>
+	<class name="android/text/format/DateUtils" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String;" />
+		<method name="formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJI)Ljava/util/Formatter;" since="5" />
+		<method name="formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter;" since="9" />
+		<method name="formatDateTime(Landroid/content/Context;JI)Ljava/lang/String;" />
+		<method name="formatElapsedTime(J)Ljava/lang/String;" />
+		<method name="formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String;" />
+		<method name="formatSameDayTime(JJII)Ljava/lang/CharSequence;" />
+		<method name="getAMPMString(I)Ljava/lang/String;" />
+		<method name="getDayOfWeekString(II)Ljava/lang/String;" />
+		<method name="getMonthString(II)Ljava/lang/String;" />
+		<method name="getRelativeDateTimeString(Landroid/content/Context;JJJI)Ljava/lang/CharSequence;" />
+		<method name="getRelativeTimeSpanString(J)Ljava/lang/CharSequence;" />
+		<method name="getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence;" />
+		<method name="getRelativeTimeSpanString(JJJI)Ljava/lang/CharSequence;" />
+		<method name="getRelativeTimeSpanString(Landroid/content/Context;J)Ljava/lang/CharSequence;" />
+		<method name="getRelativeTimeSpanString(Landroid/content/Context;JZ)Ljava/lang/CharSequence;" />
+		<method name="isToday(J)Z" />
+		<field name="ABBREV_MONTH_FORMAT" />
+		<field name="ABBREV_WEEKDAY_FORMAT" />
+		<field name="DAY_IN_MILLIS" />
+		<field name="FORMAT_12HOUR" />
+		<field name="FORMAT_24HOUR" />
+		<field name="FORMAT_ABBREV_ALL" />
+		<field name="FORMAT_ABBREV_MONTH" />
+		<field name="FORMAT_ABBREV_RELATIVE" />
+		<field name="FORMAT_ABBREV_TIME" />
+		<field name="FORMAT_ABBREV_WEEKDAY" />
+		<field name="FORMAT_CAP_AMPM" />
+		<field name="FORMAT_CAP_MIDNIGHT" />
+		<field name="FORMAT_CAP_NOON" />
+		<field name="FORMAT_CAP_NOON_MIDNIGHT" />
+		<field name="FORMAT_NO_MIDNIGHT" />
+		<field name="FORMAT_NO_MONTH_DAY" />
+		<field name="FORMAT_NO_NOON" />
+		<field name="FORMAT_NO_NOON_MIDNIGHT" />
+		<field name="FORMAT_NO_YEAR" />
+		<field name="FORMAT_NUMERIC_DATE" />
+		<field name="FORMAT_SHOW_DATE" />
+		<field name="FORMAT_SHOW_TIME" />
+		<field name="FORMAT_SHOW_WEEKDAY" />
+		<field name="FORMAT_SHOW_YEAR" />
+		<field name="FORMAT_UTC" />
+		<field name="HOUR_IN_MILLIS" />
+		<field name="HOUR_MINUTE_24" />
+		<field name="LENGTH_LONG" />
+		<field name="LENGTH_MEDIUM" />
+		<field name="LENGTH_SHORT" />
+		<field name="LENGTH_SHORTER" />
+		<field name="LENGTH_SHORTEST" />
+		<field name="MINUTE_IN_MILLIS" />
+		<field name="MONTH_DAY_FORMAT" />
+		<field name="MONTH_FORMAT" />
+		<field name="NUMERIC_MONTH_FORMAT" />
+		<field name="SECOND_IN_MILLIS" />
+		<field name="WEEKDAY_FORMAT" />
+		<field name="WEEK_IN_MILLIS" />
+		<field name="YEAR_FORMAT" />
+		<field name="YEAR_FORMAT_TWO_DIGITS" />
+		<field name="YEAR_IN_MILLIS" />
+		<field name="sameMonthTable" />
+		<field name="sameYearTable" />
+	</class>
+	<class name="android/text/format/Formatter" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="formatFileSize(Landroid/content/Context;J)Ljava/lang/String;" />
+		<method name="formatIpAddress(I)Ljava/lang/String;" />
+		<method name="formatShortFileSize(Landroid/content/Context;J)Ljava/lang/String;" since="5" />
+	</class>
+	<class name="android/text/format/Time" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/text/format/Time;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="after(Landroid/text/format/Time;)Z" />
+		<method name="before(Landroid/text/format/Time;)Z" />
+		<method name="clear(Ljava/lang/String;)V" />
+		<method name="compare(Landroid/text/format/Time;Landroid/text/format/Time;)I" />
+		<method name="format(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="format2445()Ljava/lang/String;" />
+		<method name="format3339(Z)Ljava/lang/String;" />
+		<method name="getActualMaximum(I)I" />
+		<method name="getCurrentTimezone()Ljava/lang/String;" />
+		<method name="getJulianDay(JJ)I" />
+		<method name="getJulianMondayFromWeeksSinceEpoch(I)I" since="11" />
+		<method name="getWeekNumber()I" />
+		<method name="getWeeksSinceEpochFromJulianDay(II)I" since="11" />
+		<method name="isEpoch(Landroid/text/format/Time;)Z" />
+		<method name="normalize(Z)J" />
+		<method name="parse(Ljava/lang/String;)Z" />
+		<method name="parse3339(Ljava/lang/String;)Z" />
+		<method name="set(III)V" />
+		<method name="set(IIIIII)V" />
+		<method name="set(J)V" />
+		<method name="set(Landroid/text/format/Time;)V" />
+		<method name="setJulianDay(I)J" />
+		<method name="setToNow()V" />
+		<method name="switchTimezone(Ljava/lang/String;)V" />
+		<method name="toMillis(Z)J" />
+		<field name="EPOCH_JULIAN_DAY" />
+		<field name="FRIDAY" />
+		<field name="HOUR" />
+		<field name="MINUTE" />
+		<field name="MONDAY" />
+		<field name="MONDAY_BEFORE_JULIAN_EPOCH" since="11" />
+		<field name="MONTH" />
+		<field name="MONTH_DAY" />
+		<field name="SATURDAY" />
+		<field name="SECOND" />
+		<field name="SUNDAY" />
+		<field name="THURSDAY" />
+		<field name="TIMEZONE_UTC" />
+		<field name="TUESDAY" />
+		<field name="WEDNESDAY" />
+		<field name="WEEK_DAY" />
+		<field name="WEEK_NUM" />
+		<field name="YEAR" />
+		<field name="YEAR_DAY" />
+		<field name="allDay" />
+		<field name="gmtoff" />
+		<field name="hour" />
+		<field name="isDst" />
+		<field name="minute" />
+		<field name="month" />
+		<field name="monthDay" />
+		<field name="second" />
+		<field name="timezone" />
+		<field name="weekDay" />
+		<field name="year" />
+		<field name="yearDay" />
+	</class>
+	<class name="android/text/method/ArrowKeyMovementMethod" since="1">
+		<extends name="java/lang/Object" />
+		<extends name="android/text/method/BaseMovementMethod" since="11" />
+		<implements name="android/text/method/MovementMethod" />
+		<method name="&lt;init>()V" />
+		<method name="canSelectArbitrarily()Z" />
+		<method name="getInstance()Landroid/text/method/MovementMethod;" />
+		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
+		<method name="onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z" since="3" />
+		<method name="onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V" />
+		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/text/method/BaseKeyListener" since="1">
+		<extends name="android/text/method/MetaKeyKeyListener" />
+		<implements name="android/text/method/KeyListener" />
+		<method name="&lt;init>()V" />
+		<method name="backspace(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
+		<method name="forwardDelete(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" since="11" />
+		<method name="onKeyOther(Landroid/view/View;Landroid/text/Editable;Landroid/view/KeyEvent;)Z" since="3" />
+	</class>
+	<class name="android/text/method/BaseMovementMethod" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/method/MovementMethod" />
+		<method name="&lt;init>()V" />
+		<method name="bottom(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="canSelectArbitrarily()Z" />
+		<method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="end(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="getMovementMetaState(Landroid/text/Spannable;Landroid/view/KeyEvent;)I" />
+		<method name="handleMovementKey(Landroid/widget/TextView;Landroid/text/Spannable;IILandroid/view/KeyEvent;)Z" />
+		<method name="home(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
+		<method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="lineEnd(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="lineStart(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="onGenericMotionEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z" />
+		<method name="onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V" />
+		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="pageDown(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="pageUp(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="top(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+	</class>
+	<class name="android/text/method/CharacterPickerDialog" since="1">
+		<extends name="android/app/Dialog" />
+		<implements name="android/widget/AdapterView$OnItemClickListener" />
+		<implements name="android/view/View$OnClickListener" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/View;Landroid/text/Editable;Ljava/lang/String;Z)V" />
+		<method name="onClick(Landroid/view/View;)V" />
+		<method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
+	</class>
+	<class name="android/text/method/DateKeyListener" since="1">
+		<extends name="android/text/method/NumberKeyListener" />
+		<method name="&lt;init>()V" />
+		<method name="getAcceptedChars()[C" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance()Landroid/text/method/DateKeyListener;" />
+		<field name="CHARACTERS" />
+	</class>
+	<class name="android/text/method/DateTimeKeyListener" since="1">
+		<extends name="android/text/method/NumberKeyListener" />
+		<method name="&lt;init>()V" />
+		<method name="getAcceptedChars()[C" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance()Landroid/text/method/DateTimeKeyListener;" />
+		<field name="CHARACTERS" />
+	</class>
+	<class name="android/text/method/DialerKeyListener" since="1">
+		<extends name="android/text/method/NumberKeyListener" />
+		<method name="&lt;init>()V" />
+		<method name="getAcceptedChars()[C" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance()Landroid/text/method/DialerKeyListener;" />
+		<field name="CHARACTERS" />
+	</class>
+	<class name="android/text/method/DigitsKeyListener" since="1">
+		<extends name="android/text/method/NumberKeyListener" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(ZZ)V" />
+		<method name="getAcceptedChars()[C" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance()Landroid/text/method/DigitsKeyListener;" />
+		<method name="getInstance(Ljava/lang/String;)Landroid/text/method/DigitsKeyListener;" />
+		<method name="getInstance(ZZ)Landroid/text/method/DigitsKeyListener;" />
+	</class>
+	<class name="android/text/method/HideReturnsTransformationMethod" since="1">
+		<extends name="android/text/method/ReplacementTransformationMethod" />
+		<method name="&lt;init>()V" />
+		<method name="getInstance()Landroid/text/method/HideReturnsTransformationMethod;" />
+		<method name="getOriginal()[C" />
+		<method name="getReplacement()[C" />
+	</class>
+	<class name="android/text/method/KeyListener" since="1">
+		<method name="clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V" since="3" />
+		<method name="getInputType()I" since="3" />
+		<method name="onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyOther(Landroid/view/View;Landroid/text/Editable;Landroid/view/KeyEvent;)Z" since="3" />
+		<method name="onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
+	</class>
+	<class name="android/text/method/LinkMovementMethod" since="1">
+		<extends name="android/text/method/ScrollingMovementMethod" />
+		<method name="&lt;init>()V" />
+		<method name="getInstance()Landroid/text/method/MovementMethod;" />
+	</class>
+	<class name="android/text/method/MetaKeyKeyListener" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="adjustMetaAfterKeypress(J)J" since="3" />
+		<method name="adjustMetaAfterKeypress(Landroid/text/Spannable;)V" />
+		<method name="clearMetaKeyState(JI)J" since="3" />
+		<method name="clearMetaKeyState(Landroid/text/Editable;I)V" since="3" />
+		<method name="clearMetaKeyState(Landroid/view/View;Landroid/text/Editable;I)V" since="3" />
+		<method name="getMetaState(J)I" since="3" />
+		<method name="getMetaState(JI)I" since="3" />
+		<method name="getMetaState(Ljava/lang/CharSequence;)I" />
+		<method name="getMetaState(Ljava/lang/CharSequence;I)I" />
+		<method name="handleKeyDown(JILandroid/view/KeyEvent;)J" since="3" />
+		<method name="handleKeyUp(JILandroid/view/KeyEvent;)J" since="3" />
+		<method name="isMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z" />
+		<method name="isSelectingMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z" since="3" />
+		<method name="onKeyDown(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyUp(Landroid/view/View;Landroid/text/Editable;ILandroid/view/KeyEvent;)Z" />
+		<method name="resetLockedMeta(J)J" since="3" />
+		<method name="resetLockedMeta(Landroid/text/Spannable;)V" />
+		<method name="resetMetaState(Landroid/text/Spannable;)V" />
+		<field name="META_ALT_LOCKED" />
+		<field name="META_ALT_ON" />
+		<field name="META_CAP_LOCKED" />
+		<field name="META_SHIFT_ON" />
+		<field name="META_SYM_LOCKED" />
+		<field name="META_SYM_ON" />
+	</class>
+	<class name="android/text/method/MovementMethod" since="1">
+		<method name="canSelectArbitrarily()Z" />
+		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
+		<method name="onGenericMotionEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z" since="3" />
+		<method name="onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V" />
+		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/text/method/MultiTapKeyListener" since="1">
+		<extends name="android/text/method/BaseKeyListener" />
+		<implements name="android/text/SpanWatcher" />
+		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/MultiTapKeyListener;" />
+		<method name="onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
+		<method name="onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V" />
+		<method name="onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
+	</class>
+	<class name="android/text/method/NumberKeyListener" since="1">
+		<extends name="android/text/method/BaseKeyListener" />
+		<implements name="android/text/InputFilter" />
+		<method name="&lt;init>()V" />
+		<method name="filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;" />
+		<method name="getAcceptedChars()[C" />
+		<method name="lookup(Landroid/view/KeyEvent;Landroid/text/Spannable;)I" />
+		<method name="ok([CC)Z" />
+	</class>
+	<class name="android/text/method/PasswordTransformationMethod" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/TextWatcher" />
+		<implements name="android/text/method/TransformationMethod" />
+		<method name="&lt;init>()V" />
+		<method name="afterTextChanged(Landroid/text/Editable;)V" />
+		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
+		<method name="getInstance()Landroid/text/method/PasswordTransformationMethod;" />
+		<method name="getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;" />
+		<method name="onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V" />
+		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
+	</class>
+	<class name="android/text/method/QwertyKeyListener" since="1">
+		<extends name="android/text/method/BaseKeyListener" />
+		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/QwertyKeyListener;" />
+		<method name="getInstanceForFullKeyboard()Landroid/text/method/QwertyKeyListener;" since="11" />
+		<method name="markAsReplaced(Landroid/text/Spannable;IILjava/lang/String;)V" />
+	</class>
+	<class name="android/text/method/ReplacementTransformationMethod" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/method/TransformationMethod" />
+		<method name="&lt;init>()V" />
+		<method name="getOriginal()[C" />
+		<method name="getReplacement()[C" />
+		<method name="getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;" />
+		<method name="onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V" />
+	</class>
+	<class name="android/text/method/ScrollingMovementMethod" since="1">
+		<extends name="java/lang/Object" />
+		<extends name="android/text/method/BaseMovementMethod" since="11" />
+		<implements name="android/text/method/MovementMethod" />
+		<method name="&lt;init>()V" />
+		<method name="canSelectArbitrarily()Z" />
+		<method name="down(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="getInstance()Landroid/text/method/MovementMethod;" />
+		<method name="initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V" />
+		<method name="left(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="onKeyDown(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyOther(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/KeyEvent;)Z" since="3" />
+		<method name="onKeyUp(Landroid/widget/TextView;Landroid/text/Spannable;ILandroid/view/KeyEvent;)Z" />
+		<method name="onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V" />
+		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="right(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+		<method name="up(Landroid/widget/TextView;Landroid/text/Spannable;)Z" />
+	</class>
+	<class name="android/text/method/SingleLineTransformationMethod" since="1">
+		<extends name="android/text/method/ReplacementTransformationMethod" />
+		<method name="&lt;init>()V" />
+		<method name="getInstance()Landroid/text/method/SingleLineTransformationMethod;" />
+		<method name="getOriginal()[C" />
+		<method name="getReplacement()[C" />
+	</class>
+	<class name="android/text/method/TextKeyListener" since="1">
+		<extends name="android/text/method/BaseKeyListener" />
+		<implements name="android/text/SpanWatcher" />
+		<method name="&lt;init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V" />
+		<method name="clear(Landroid/text/Editable;)V" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance()Landroid/text/method/TextKeyListener;" />
+		<method name="getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/TextKeyListener;" />
+		<method name="onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
+		<method name="onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V" />
+		<method name="onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V" />
+		<method name="release()V" />
+		<method name="shouldCap(Landroid/text/method/TextKeyListener$Capitalize;Ljava/lang/CharSequence;I)Z" />
+	</class>
+	<class name="android/text/method/TextKeyListener$Capitalize" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/text/method/TextKeyListener$Capitalize;" />
+		<method name="values()[Landroid/text/method/TextKeyListener$Capitalize;" />
+		<field name="CHARACTERS" />
+		<field name="NONE" />
+		<field name="SENTENCES" />
+		<field name="WORDS" />
+	</class>
+	<class name="android/text/method/TimeKeyListener" since="1">
+		<extends name="android/text/method/NumberKeyListener" />
+		<method name="&lt;init>()V" />
+		<method name="getAcceptedChars()[C" />
+		<method name="getInputType()I" since="3" />
+		<method name="getInstance()Landroid/text/method/TimeKeyListener;" />
+		<field name="CHARACTERS" />
+	</class>
+	<class name="android/text/method/Touch" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getInitialScrollX(Landroid/widget/TextView;Landroid/text/Spannable;)I" since="3" />
+		<method name="getInitialScrollY(Landroid/widget/TextView;Landroid/text/Spannable;)I" since="3" />
+		<method name="onTouchEvent(Landroid/widget/TextView;Landroid/text/Spannable;Landroid/view/MotionEvent;)Z" />
+		<method name="scrollTo(Landroid/widget/TextView;Landroid/text/Layout;II)V" />
+	</class>
+	<class name="android/text/method/TransformationMethod" since="1">
+		<method name="getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;" />
+		<method name="onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V" />
+	</class>
+	<class name="android/text/style/AbsoluteSizeSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IZ)V" since="5" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getDip()Z" since="5" />
+		<method name="getSize()I" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/AlignmentSpan" since="1">
+		<implements name="android/text/style/ParagraphStyle" />
+		<method name="getAlignment()Landroid/text/Layout$Alignment;" />
+	</class>
+	<class name="android/text/style/AlignmentSpan$Standard" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/AlignmentSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="&lt;init>(Landroid/text/Layout$Alignment;)V" />
+		<method name="describeContents()I" since="3" />
+		<method name="getAlignment()Landroid/text/Layout$Alignment;" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/BackgroundColorSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getBackgroundColor()I" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/BulletSpan" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/LeadingMarginSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
+		<method name="getLeadingMargin(Z)I" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+		<field name="STANDARD_GAP_WIDTH" />
+	</class>
+	<class name="android/text/style/CharacterStyle" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getUnderlying()Landroid/text/style/CharacterStyle;" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="wrap(Landroid/text/style/CharacterStyle;)Landroid/text/style/CharacterStyle;" />
+	</class>
+	<class name="android/text/style/ClickableSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="onClick(Landroid/view/View;)V" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+	</class>
+	<class name="android/text/style/DrawableMarginSpan" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/LeadingMarginSpan" />
+		<implements name="android/text/style/LineHeightSpan" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;I)V" />
+		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V" />
+		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
+		<method name="getLeadingMargin(Z)I" />
+	</class>
+	<class name="android/text/style/DynamicDrawableSpan" since="1">
+		<extends name="android/text/style/ReplacementSpan" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" since="3" />
+		<method name="draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V" />
+		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I" />
+		<method name="getVerticalAlignment()I" since="3" />
+		<field name="ALIGN_BASELINE" since="3" />
+		<field name="ALIGN_BOTTOM" since="3" />
+		<field name="mVerticalAlignment" since="3" />
+	</class>
+	<class name="android/text/style/EasyEditSpan" since="14">
+		<implements name="android/text/ParcelableSpan" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="getSpanTypeId()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+	</class>
+	<class name="android/text/style/ForegroundColorSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getForegroundColor()I" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/IconMarginSpan" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/LeadingMarginSpan" />
+		<implements name="android/text/style/LineHeightSpan" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;I)V" />
+		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V" />
+		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
+		<method name="getLeadingMargin(Z)I" />
+	</class>
+	<class name="android/text/style/ImageSpan" since="1">
+		<extends name="android/text/style/DynamicDrawableSpan" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;II)V" since="3" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/graphics/Bitmap;)V" since="4" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/graphics/Bitmap;I)V" since="4" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/net/Uri;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/net/Uri;I)V" since="3" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;)V" />
+		<method name="&lt;init>(Landroid/graphics/Bitmap;I)V" since="3" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;I)V" since="3" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Landroid/graphics/drawable/Drawable;Ljava/lang/String;I)V" since="3" />
+		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getSource()Ljava/lang/String;" />
+	</class>
+	<class name="android/text/style/LeadingMarginSpan" since="1">
+		<implements name="android/text/style/ParagraphStyle" />
+		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
+		<method name="getLeadingMargin(Z)I" />
+	</class>
+	<class name="android/text/style/LeadingMarginSpan$LeadingMarginSpan2" since="8">
+		<implements name="android/text/style/LeadingMarginSpan" />
+		<implements name="android/text/style/WrapTogetherSpan" />
+		<method name="getLeadingMarginLineCount()I" />
+	</class>
+	<class name="android/text/style/LeadingMarginSpan$Standard" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/LeadingMarginSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
+		<method name="getLeadingMargin(Z)I" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/LineBackgroundSpan" since="1">
+		<implements name="android/text/style/ParagraphStyle" />
+		<method name="drawBackground(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;III)V" />
+	</class>
+	<class name="android/text/style/LineHeightSpan" since="1">
+		<implements name="android/text/style/ParagraphStyle" />
+		<implements name="android/text/style/WrapTogetherSpan" />
+		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;)V" />
+	</class>
+	<class name="android/text/style/LineHeightSpan$WithDensity" since="5">
+		<implements name="android/text/style/LineHeightSpan" />
+		<method name="chooseHeight(Ljava/lang/CharSequence;IIIILandroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V" />
+	</class>
+	<class name="android/text/style/MaskFilterSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>(Landroid/graphics/MaskFilter;)V" />
+		<method name="getMaskFilter()Landroid/graphics/MaskFilter;" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+	</class>
+	<class name="android/text/style/MetricAffectingSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/style/UpdateLayout" />
+		<method name="&lt;init>()V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+	</class>
+	<class name="android/text/style/ParagraphStyle" since="1">
+	</class>
+	<class name="android/text/style/QuoteSpan" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/LeadingMarginSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="drawLeadingMargin(Landroid/graphics/Canvas;Landroid/graphics/Paint;IIIIILjava/lang/CharSequence;IIZLandroid/text/Layout;)V" />
+		<method name="getColor()I" />
+		<method name="getLeadingMargin(Z)I" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/RasterizerSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>(Landroid/graphics/Rasterizer;)V" />
+		<method name="getRasterizer()Landroid/graphics/Rasterizer;" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+	</class>
+	<class name="android/text/style/RelativeSizeSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSizeChange()F" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/ReplacementSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<method name="&lt;init>()V" />
+		<method name="draw(Landroid/graphics/Canvas;Ljava/lang/CharSequence;IIFIIILandroid/graphics/Paint;)V" />
+		<method name="getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+	</class>
+	<class name="android/text/style/ScaleXSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getScaleX()F" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/StrikethroughSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/StyleSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="getStyle()I" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/SubscriptSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/SuggestionSpan" since="14">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/ParcelableSpan" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/util/Locale;[Ljava/lang/String;ILjava/lang/Class;)V" />
+		<method name="&lt;init>(Landroid/content/Context;[Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/util/Locale;[Ljava/lang/String;I)V" />
+		<method name="describeContents()I" />
+		<method name="getFlags()I" />
+		<method name="getLocale()Ljava/lang/String;" />
+		<method name="getSpanTypeId()I" />
+		<method name="getSuggestions()[Ljava/lang/String;" />
+		<method name="setFlags(I)V" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_SUGGESTION_PICKED" />
+		<field name="CREATOR" />
+		<field name="FLAG_AUTO_CORRECTION" since="15" />
+		<field name="FLAG_EASY_CORRECT" />
+		<field name="FLAG_MISSPELLED" />
+		<field name="SUGGESTIONS_MAX_SIZE" />
+		<field name="SUGGESTION_SPAN_PICKED_AFTER" />
+		<field name="SUGGESTION_SPAN_PICKED_BEFORE" />
+		<field name="SUGGESTION_SPAN_PICKED_HASHCODE" />
+	</class>
+	<class name="android/text/style/SuperscriptSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/TabStopSpan" since="1">
+		<implements name="android/text/style/ParagraphStyle" />
+		<method name="getTabStop()I" />
+	</class>
+	<class name="android/text/style/TabStopSpan$Standard" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/style/TabStopSpan" />
+		<method name="&lt;init>(I)V" />
+		<method name="getTabStop()I" />
+	</class>
+	<class name="android/text/style/TextAppearanceSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;II)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="&lt;init>(Ljava/lang/String;IILandroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;)V" />
+		<method name="describeContents()I" since="3" />
+		<method name="getFamily()Ljava/lang/String;" />
+		<method name="getLinkTextColor()Landroid/content/res/ColorStateList;" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="getTextColor()Landroid/content/res/ColorStateList;" />
+		<method name="getTextSize()I" />
+		<method name="getTextStyle()I" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/TypefaceSpan" since="1">
+		<extends name="android/text/style/MetricAffectingSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="describeContents()I" since="3" />
+		<method name="getFamily()Ljava/lang/String;" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="updateMeasureState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/URLSpan" since="1">
+		<extends name="android/text/style/ClickableSpan" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="getURL()Ljava/lang/String;" />
+		<method name="onClick(Landroid/view/View;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/UnderlineSpan" since="1">
+		<extends name="android/text/style/CharacterStyle" />
+		<implements name="android/text/ParcelableSpan" since="3" />
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" since="3" />
+		<method name="describeContents()I" since="3" />
+		<method name="getSpanTypeId()I" since="3" />
+		<method name="updateDrawState(Landroid/text/TextPaint;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" since="3" />
+	</class>
+	<class name="android/text/style/UpdateAppearance" since="3">
+	</class>
+	<class name="android/text/style/UpdateLayout" since="1">
+		<implements name="android/text/style/UpdateAppearance" since="3" />
+	</class>
+	<class name="android/text/style/WrapTogetherSpan" since="1">
+		<implements name="android/text/style/ParagraphStyle" />
+	</class>
+	<class name="android/text/util/Linkify" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addLinks(Landroid/text/Spannable;I)Z" />
+		<method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;)Z" />
+		<method name="addLinks(Landroid/text/Spannable;Ljava/util/regex/Pattern;Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)Z" />
+		<method name="addLinks(Landroid/widget/TextView;I)Z" />
+		<method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;)V" />
+		<method name="addLinks(Landroid/widget/TextView;Ljava/util/regex/Pattern;Ljava/lang/String;Landroid/text/util/Linkify$MatchFilter;Landroid/text/util/Linkify$TransformFilter;)V" />
+		<field name="ALL" />
+		<field name="EMAIL_ADDRESSES" />
+		<field name="MAP_ADDRESSES" />
+		<field name="PHONE_NUMBERS" />
+		<field name="WEB_URLS" />
+		<field name="sPhoneNumberMatchFilter" />
+		<field name="sPhoneNumberTransformFilter" />
+		<field name="sUrlMatchFilter" />
+	</class>
+	<class name="android/text/util/Linkify$MatchFilter" since="1">
+		<method name="acceptMatch(Ljava/lang/CharSequence;II)Z" />
+	</class>
+	<class name="android/text/util/Linkify$TransformFilter" since="1">
+		<method name="transformUrl(Ljava/util/regex/Matcher;Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="android/text/util/Rfc822Token" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getAddress()Ljava/lang/String;" />
+		<method name="getComment()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="quoteComment(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="quoteName(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="quoteNameIfNecessary(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="setAddress(Ljava/lang/String;)V" />
+		<method name="setComment(Ljava/lang/String;)V" />
+		<method name="setName(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/text/util/Rfc822Tokenizer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/widget/MultiAutoCompleteTextView$Tokenizer" />
+		<method name="&lt;init>()V" />
+		<method name="findTokenEnd(Ljava/lang/CharSequence;I)I" />
+		<method name="findTokenStart(Ljava/lang/CharSequence;I)I" />
+		<method name="terminateToken(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="tokenize(Ljava/lang/CharSequence;)[Landroid/text/util/Rfc822Token;" />
+		<method name="tokenize(Ljava/lang/CharSequence;Ljava/util/Collection;)V" since="8" />
+	</class>
+	<class name="android/util/AndroidException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11" />
+	</class>
+	<class name="android/util/AndroidRuntimeException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="11" />
+	</class>
+	<class name="android/util/AttributeSet" since="1">
+		<method name="getAttributeBooleanValue(IZ)Z" />
+		<method name="getAttributeBooleanValue(Ljava/lang/String;Ljava/lang/String;Z)Z" />
+		<method name="getAttributeCount()I" />
+		<method name="getAttributeFloatValue(IF)F" />
+		<method name="getAttributeFloatValue(Ljava/lang/String;Ljava/lang/String;F)F" />
+		<method name="getAttributeIntValue(II)I" />
+		<method name="getAttributeIntValue(Ljava/lang/String;Ljava/lang/String;I)I" />
+		<method name="getAttributeListValue(I[Ljava/lang/String;I)I" />
+		<method name="getAttributeListValue(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;I)I" />
+		<method name="getAttributeName(I)Ljava/lang/String;" />
+		<method name="getAttributeNameResource(I)I" />
+		<method name="getAttributeResourceValue(II)I" />
+		<method name="getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I" />
+		<method name="getAttributeUnsignedIntValue(II)I" />
+		<method name="getAttributeUnsignedIntValue(Ljava/lang/String;Ljava/lang/String;I)I" />
+		<method name="getAttributeValue(I)Ljava/lang/String;" />
+		<method name="getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getClassAttribute()Ljava/lang/String;" />
+		<method name="getIdAttribute()Ljava/lang/String;" />
+		<method name="getIdAttributeResourceValue(I)I" />
+		<method name="getPositionDescription()Ljava/lang/String;" />
+		<method name="getStyleAttribute()I" />
+	</class>
+	<class name="android/util/Base64" since="8">
+		<extends name="java/lang/Object" />
+		<method name="decode(Ljava/lang/String;I)[B" />
+		<method name="decode([BI)[B" />
+		<method name="decode([BIII)[B" />
+		<method name="encode([BI)[B" />
+		<method name="encode([BIII)[B" />
+		<method name="encodeToString([BI)Ljava/lang/String;" />
+		<method name="encodeToString([BIII)Ljava/lang/String;" />
+		<field name="CRLF" />
+		<field name="DEFAULT" />
+		<field name="NO_CLOSE" />
+		<field name="NO_PADDING" />
+		<field name="NO_WRAP" />
+		<field name="URL_SAFE" />
+	</class>
+	<class name="android/util/Base64DataException" since="11">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/Base64InputStream" since="8">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
+	</class>
+	<class name="android/util/Base64OutputStream" since="8">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;I)V" />
+	</class>
+	<class name="android/util/Config" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="DEBUG" />
+		<field name="LOGD" />
+		<field name="LOGV" />
+		<field name="PROFILE" />
+		<field name="RELEASE" />
+	</class>
+	<class name="android/util/DebugUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="isObjectSelected(Ljava/lang/Object;)Z" />
+	</class>
+	<class name="android/util/DisplayMetrics" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="setTo(Landroid/util/DisplayMetrics;)V" />
+		<method name="setToDefaults()V" />
+		<field name="DENSITY_DEFAULT" since="4" />
+		<field name="DENSITY_HIGH" since="4" />
+		<field name="DENSITY_LOW" since="4" />
+		<field name="DENSITY_MEDIUM" since="4" />
+		<field name="DENSITY_TV" since="13" />
+		<field name="DENSITY_XHIGH" since="9" />
+		<field name="density" />
+		<field name="densityDpi" since="4" />
+		<field name="heightPixels" />
+		<field name="scaledDensity" />
+		<field name="widthPixels" />
+		<field name="xdpi" />
+		<field name="ydpi" />
+	</class>
+	<class name="android/util/EventLog" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getTagCode(Ljava/lang/String;)I" />
+		<method name="getTagName(I)Ljava/lang/String;" />
+		<method name="readEvents([ILjava/util/Collection;)V" />
+		<method name="writeEvent(II)I" />
+		<method name="writeEvent(IJ)I" />
+		<method name="writeEvent(ILjava/lang/String;)I" />
+		<method name="writeEvent(I[Ljava/lang/Object;)I" />
+	</class>
+	<class name="android/util/EventLog$Event" since="8">
+		<extends name="java/lang/Object" />
+		<method name="getData()Ljava/lang/Object;" />
+		<method name="getProcessId()I" />
+		<method name="getTag()I" />
+		<method name="getThreadId()I" />
+		<method name="getTimeNanos()J" />
+	</class>
+	<class name="android/util/EventLogTags" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/BufferedReader;)V" />
+		<method name="get(I)Landroid/util/EventLogTags$Description;" />
+		<method name="get(Ljava/lang/String;)Landroid/util/EventLogTags$Description;" />
+	</class>
+	<class name="android/util/EventLogTags$Description" since="1">
+		<extends name="java/lang/Object" />
+		<field name="mName" />
+		<field name="mTag" />
+	</class>
+	<class name="android/util/FloatMath" since="1">
+		<extends name="java/lang/Object" />
+		<method name="ceil(F)F" />
+		<method name="cos(F)F" />
+		<method name="floor(F)F" />
+		<method name="sin(F)F" />
+		<method name="sqrt(F)F" />
+	</class>
+	<class name="android/util/JsonReader" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="beginArray()V" />
+		<method name="beginObject()V" />
+		<method name="close()V" />
+		<method name="endArray()V" />
+		<method name="endObject()V" />
+		<method name="hasNext()Z" />
+		<method name="isLenient()Z" />
+		<method name="nextBoolean()Z" />
+		<method name="nextDouble()D" />
+		<method name="nextInt()I" />
+		<method name="nextLong()J" />
+		<method name="nextName()Ljava/lang/String;" />
+		<method name="nextNull()V" />
+		<method name="nextString()Ljava/lang/String;" />
+		<method name="peek()Landroid/util/JsonToken;" />
+		<method name="setLenient(Z)V" />
+		<method name="skipValue()V" />
+	</class>
+	<class name="android/util/JsonToken" since="11">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/util/JsonToken;" />
+		<method name="values()[Landroid/util/JsonToken;" />
+		<field name="BEGIN_ARRAY" />
+		<field name="BEGIN_OBJECT" />
+		<field name="BOOLEAN" />
+		<field name="END_ARRAY" />
+		<field name="END_DOCUMENT" />
+		<field name="END_OBJECT" />
+		<field name="NAME" />
+		<field name="NULL" />
+		<field name="NUMBER" />
+		<field name="STRING" />
+	</class>
+	<class name="android/util/JsonWriter" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<method name="&lt;init>(Ljava/io/Writer;)V" />
+		<method name="beginArray()Landroid/util/JsonWriter;" />
+		<method name="beginObject()Landroid/util/JsonWriter;" />
+		<method name="close()V" />
+		<method name="endArray()Landroid/util/JsonWriter;" />
+		<method name="endObject()Landroid/util/JsonWriter;" />
+		<method name="flush()V" />
+		<method name="isLenient()Z" />
+		<method name="name(Ljava/lang/String;)Landroid/util/JsonWriter;" />
+		<method name="nullValue()Landroid/util/JsonWriter;" />
+		<method name="setIndent(Ljava/lang/String;)V" />
+		<method name="setLenient(Z)V" />
+		<method name="value(D)Landroid/util/JsonWriter;" />
+		<method name="value(J)Landroid/util/JsonWriter;" />
+		<method name="value(Ljava/lang/Number;)Landroid/util/JsonWriter;" />
+		<method name="value(Ljava/lang/String;)Landroid/util/JsonWriter;" />
+		<method name="value(Z)Landroid/util/JsonWriter;" />
+	</class>
+	<class name="android/util/Log" since="1">
+		<extends name="java/lang/Object" />
+		<method name="d(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
+		<method name="e(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
+		<method name="getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;" />
+		<method name="i(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
+		<method name="isLoggable(Ljava/lang/String;I)Z" />
+		<method name="println(ILjava/lang/String;Ljava/lang/String;)I" />
+		<method name="v(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
+		<method name="w(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" />
+		<method name="w(Ljava/lang/String;Ljava/lang/Throwable;)I" />
+		<method name="wtf(Ljava/lang/String;Ljava/lang/String;)I" since="8" />
+		<method name="wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I" since="8" />
+		<method name="wtf(Ljava/lang/String;Ljava/lang/Throwable;)I" since="8" />
+		<field name="ASSERT" />
+		<field name="DEBUG" />
+		<field name="ERROR" />
+		<field name="INFO" />
+		<field name="VERBOSE" />
+		<field name="WARN" />
+	</class>
+	<class name="android/util/LogPrinter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/util/Printer" />
+		<method name="&lt;init>(ILjava/lang/String;)V" />
+		<method name="println(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/LruCache" since="12">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="create(LK;)LV;" />
+		<method name="createCount()I" />
+		<method name="entryRemoved(ZLK;LV;LV;)V" />
+		<method name="evictAll()V" />
+		<method name="evictionCount()I" />
+		<method name="get(LK;)LV;" />
+		<method name="hitCount()I" />
+		<method name="maxSize()I" />
+		<method name="missCount()I" />
+		<method name="put(LK;LV;)LV;" />
+		<method name="putCount()I" />
+		<method name="remove(LK;)LV;" />
+		<method name="size()I" />
+		<method name="sizeOf(LK;LV;)I" />
+		<method name="snapshot()Ljava/util/Map;" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="android/util/MalformedJsonException" since="11">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/MonthDisplayHelper" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(III)V" />
+		<method name="getColumnOf(I)I" />
+		<method name="getDayAt(II)I" />
+		<method name="getDigitsForRow(I)[I" />
+		<method name="getFirstDayOfMonth()I" />
+		<method name="getMonth()I" />
+		<method name="getNumberOfDaysInMonth()I" />
+		<method name="getOffset()I" />
+		<method name="getRowOf(I)I" />
+		<method name="getWeekStartDay()I" />
+		<method name="getYear()I" />
+		<method name="isWithinCurrentMonth(II)Z" />
+		<method name="nextMonth()V" />
+		<method name="previousMonth()V" />
+	</class>
+	<class name="android/util/NoSuchPropertyException" since="14">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/Pair" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(LF;LS;)V" />
+		<method name="create(LA;LB;)Landroid/util/Pair;" />
+		<field name="first" />
+		<field name="second" />
+	</class>
+	<class name="android/util/Patterns" since="8">
+		<extends name="java/lang/Object" />
+		<method name="concatGroups(Ljava/util/regex/Matcher;)Ljava/lang/String;" />
+		<method name="digitsAndPlusOnly(Ljava/util/regex/Matcher;)Ljava/lang/String;" />
+		<field name="DOMAIN_NAME" />
+		<field name="EMAIL_ADDRESS" />
+		<field name="GOOD_IRI_CHAR" />
+		<field name="IP_ADDRESS" />
+		<field name="PHONE" />
+		<field name="TOP_LEVEL_DOMAIN" />
+		<field name="TOP_LEVEL_DOMAIN_STR" />
+		<field name="TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL" />
+		<field name="WEB_URL" />
+	</class>
+	<class name="android/util/PrintStreamPrinter" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/util/Printer" />
+		<method name="&lt;init>(Ljava/io/PrintStream;)V" />
+		<method name="println(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/PrintWriterPrinter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/util/Printer" />
+		<method name="&lt;init>(Ljava/io/PrintWriter;)V" />
+		<method name="println(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/Printer" since="1">
+		<method name="println(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/Property" since="14">
+		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
+		<method name="get(LT;)LV;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getType()Ljava/lang/Class;" />
+		<method name="isReadOnly()Z" />
+		<method name="of(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Landroid/util/Property;" />
+		<method name="set(LT;LV;)V" />
+	</class>
+	<class name="android/util/SparseArray" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="append(ILE;)V" />
+		<method name="clear()V" />
+		<method name="clone()Landroid/util/SparseArray;" since="14" />
+		<method name="delete(I)V" />
+		<method name="get(I)LE;" />
+		<method name="get(ILE;)LE;" />
+		<method name="indexOfKey(I)I" />
+		<method name="indexOfValue(LE;)I" />
+		<method name="keyAt(I)I" />
+		<method name="put(ILE;)V" />
+		<method name="remove(I)V" />
+		<method name="removeAt(I)V" since="11" />
+		<method name="setValueAt(ILE;)V" />
+		<method name="size()I" />
+		<method name="valueAt(I)LE;" />
+	</class>
+	<class name="android/util/SparseBooleanArray" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="append(IZ)V" />
+		<method name="clear()V" />
+		<method name="clone()Landroid/util/SparseBooleanArray;" since="14" />
+		<method name="delete(I)V" />
+		<method name="get(I)Z" />
+		<method name="get(IZ)Z" />
+		<method name="indexOfKey(I)I" />
+		<method name="indexOfValue(Z)I" />
+		<method name="keyAt(I)I" />
+		<method name="put(IZ)V" />
+		<method name="size()I" />
+		<method name="valueAt(I)Z" />
+	</class>
+	<class name="android/util/SparseIntArray" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" since="14" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="append(II)V" />
+		<method name="clear()V" />
+		<method name="clone()Landroid/util/SparseIntArray;" since="14" />
+		<method name="delete(I)V" />
+		<method name="get(I)I" />
+		<method name="get(II)I" />
+		<method name="indexOfKey(I)I" />
+		<method name="indexOfValue(I)I" />
+		<method name="keyAt(I)I" />
+		<method name="put(II)V" />
+		<method name="removeAt(I)V" since="3" />
+		<method name="size()I" />
+		<method name="valueAt(I)I" />
+	</class>
+	<class name="android/util/StateSet" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="dump([I)Ljava/lang/String;" />
+		<method name="isWildCard([I)Z" />
+		<method name="stateSetMatches([II)Z" />
+		<method name="stateSetMatches([I[I)Z" />
+		<method name="trimStateSet([II)[I" />
+		<field name="NOTHING" since="11" />
+		<field name="WILD_CARD" />
+	</class>
+	<class name="android/util/StringBuilderPrinter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/util/Printer" />
+		<method name="&lt;init>(Ljava/lang/StringBuilder;)V" />
+		<method name="println(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/TimeFormatException" since="1">
+		<extends name="java/lang/RuntimeException" />
+	</class>
+	<class name="android/util/TimeUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getTimeZone(IZJLjava/lang/String;)Ljava/util/TimeZone;" />
+		<method name="getTimeZoneDatabaseVersion()Ljava/lang/String;" since="3" />
+	</class>
+	<class name="android/util/TimingLogger" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="addSplit(Ljava/lang/String;)V" />
+		<method name="dumpToLog()V" />
+		<method name="reset()V" />
+		<method name="reset(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/util/TypedValue" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="applyDimension(IFLandroid/util/DisplayMetrics;)F" />
+		<method name="coerceToString()Ljava/lang/CharSequence;" />
+		<method name="coerceToString(II)Ljava/lang/String;" />
+		<method name="complexToDimension(ILandroid/util/DisplayMetrics;)F" />
+		<method name="complexToDimensionNoisy(ILandroid/util/DisplayMetrics;)F" />
+		<method name="complexToDimensionPixelOffset(ILandroid/util/DisplayMetrics;)I" />
+		<method name="complexToDimensionPixelSize(ILandroid/util/DisplayMetrics;)I" />
+		<method name="complexToFloat(I)F" />
+		<method name="complexToFraction(IFF)F" />
+		<method name="getDimension(Landroid/util/DisplayMetrics;)F" />
+		<method name="getFloat()F" />
+		<method name="getFraction(FF)F" />
+		<method name="setTo(Landroid/util/TypedValue;)V" />
+		<field name="COMPLEX_MANTISSA_MASK" />
+		<field name="COMPLEX_MANTISSA_SHIFT" />
+		<field name="COMPLEX_RADIX_0p23" />
+		<field name="COMPLEX_RADIX_16p7" />
+		<field name="COMPLEX_RADIX_23p0" />
+		<field name="COMPLEX_RADIX_8p15" />
+		<field name="COMPLEX_RADIX_MASK" />
+		<field name="COMPLEX_RADIX_SHIFT" />
+		<field name="COMPLEX_UNIT_DIP" />
+		<field name="COMPLEX_UNIT_FRACTION" />
+		<field name="COMPLEX_UNIT_FRACTION_PARENT" />
+		<field name="COMPLEX_UNIT_IN" />
+		<field name="COMPLEX_UNIT_MASK" />
+		<field name="COMPLEX_UNIT_MM" />
+		<field name="COMPLEX_UNIT_PT" />
+		<field name="COMPLEX_UNIT_PX" />
+		<field name="COMPLEX_UNIT_SHIFT" />
+		<field name="COMPLEX_UNIT_SP" />
+		<field name="DENSITY_DEFAULT" since="4" />
+		<field name="DENSITY_NONE" since="4" />
+		<field name="TYPE_ATTRIBUTE" />
+		<field name="TYPE_DIMENSION" />
+		<field name="TYPE_FIRST_COLOR_INT" />
+		<field name="TYPE_FIRST_INT" />
+		<field name="TYPE_FLOAT" />
+		<field name="TYPE_FRACTION" />
+		<field name="TYPE_INT_BOOLEAN" />
+		<field name="TYPE_INT_COLOR_ARGB4" />
+		<field name="TYPE_INT_COLOR_ARGB8" />
+		<field name="TYPE_INT_COLOR_RGB4" />
+		<field name="TYPE_INT_COLOR_RGB8" />
+		<field name="TYPE_INT_DEC" />
+		<field name="TYPE_INT_HEX" />
+		<field name="TYPE_LAST_COLOR_INT" />
+		<field name="TYPE_LAST_INT" />
+		<field name="TYPE_NULL" />
+		<field name="TYPE_REFERENCE" />
+		<field name="TYPE_STRING" />
+		<field name="assetCookie" />
+		<field name="changingConfigurations" />
+		<field name="data" />
+		<field name="density" since="4" />
+		<field name="resourceId" />
+		<field name="string" />
+		<field name="type" />
+	</class>
+	<class name="android/util/Xml" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="asAttributeSet(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/AttributeSet;" />
+		<method name="findEncodingByName(Ljava/lang/String;)Landroid/util/Xml$Encoding;" />
+		<method name="newPullParser()Lorg/xmlpull/v1/XmlPullParser;" />
+		<method name="newSerializer()Lorg/xmlpull/v1/XmlSerializer;" />
+		<method name="parse(Ljava/io/InputStream;Landroid/util/Xml$Encoding;Lorg/xml/sax/ContentHandler;)V" />
+		<method name="parse(Ljava/io/Reader;Lorg/xml/sax/ContentHandler;)V" />
+		<method name="parse(Ljava/lang/String;Lorg/xml/sax/ContentHandler;)V" />
+		<field name="FEATURE_RELAXED" />
+	</class>
+	<class name="android/util/Xml$Encoding" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/util/Xml$Encoding;" />
+		<method name="values()[Landroid/util/Xml$Encoding;" />
+		<field name="ISO_8859_1" />
+		<field name="US_ASCII" />
+		<field name="UTF_16" />
+		<field name="UTF_8" />
+	</class>
+	<class name="android/view/AbsSavedState" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
+		<method name="describeContents()I" />
+		<method name="getSuperState()Landroid/os/Parcelable;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="EMPTY_STATE" />
+	</class>
+	<class name="android/view/ActionMode" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="finish()V" />
+		<method name="getCustomView()Landroid/view/View;" />
+		<method name="getMenu()Landroid/view/Menu;" />
+		<method name="getMenuInflater()Landroid/view/MenuInflater;" />
+		<method name="getSubtitle()Ljava/lang/CharSequence;" />
+		<method name="getTag()Ljava/lang/Object;" since="14" />
+		<method name="getTitle()Ljava/lang/CharSequence;" />
+		<method name="invalidate()V" />
+		<method name="setCustomView(Landroid/view/View;)V" />
+		<method name="setSubtitle(I)V" />
+		<method name="setSubtitle(Ljava/lang/CharSequence;)V" />
+		<method name="setTag(Ljava/lang/Object;)V" since="14" />
+		<method name="setTitle(I)V" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/view/ActionMode$Callback" since="11">
+		<method name="onActionItemClicked(Landroid/view/ActionMode;Landroid/view/MenuItem;)Z" />
+		<method name="onCreateActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z" />
+		<method name="onDestroyActionMode(Landroid/view/ActionMode;)V" />
+		<method name="onPrepareActionMode(Landroid/view/ActionMode;Landroid/view/Menu;)Z" />
+	</class>
+	<class name="android/view/ActionProvider" since="14">
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="hasSubMenu()Z" />
+		<method name="onCreateActionView()Landroid/view/View;" />
+		<method name="onPerformDefaultAction()Z" />
+		<method name="onPrepareSubMenu(Landroid/view/SubMenu;)V" />
+	</class>
+	<class name="android/view/CollapsibleActionView" since="14">
+		<method name="onActionViewCollapsed()V" />
+		<method name="onActionViewExpanded()V" />
+	</class>
+	<class name="android/view/ContextMenu" since="1">
+		<implements name="android/view/Menu" />
+		<method name="clearHeader()V" />
+		<method name="setHeaderIcon(I)Landroid/view/ContextMenu;" />
+		<method name="setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/ContextMenu;" />
+		<method name="setHeaderTitle(I)Landroid/view/ContextMenu;" />
+		<method name="setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/ContextMenu;" />
+		<method name="setHeaderView(Landroid/view/View;)Landroid/view/ContextMenu;" />
+	</class>
+	<class name="android/view/ContextMenu$ContextMenuInfo" since="1">
+	</class>
+	<class name="android/view/ContextThemeWrapper" since="1">
+		<extends name="android/content/ContextWrapper" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V" />
+	</class>
+	<class name="android/view/Display" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getDisplayId()I" />
+		<method name="getHeight()I" />
+		<method name="getMetrics(Landroid/util/DisplayMetrics;)V" />
+		<method name="getOrientation()I" />
+		<method name="getPixelFormat()I" />
+		<method name="getRectSize(Landroid/graphics/Rect;)V" since="13" />
+		<method name="getRefreshRate()F" />
+		<method name="getRotation()I" since="8" />
+		<method name="getSize(Landroid/graphics/Point;)V" since="13" />
+		<method name="getWidth()I" />
+		<field name="DEFAULT_DISPLAY" />
+	</class>
+	<class name="android/view/DragEvent" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getAction()I" />
+		<method name="getClipData()Landroid/content/ClipData;" />
+		<method name="getClipDescription()Landroid/content/ClipDescription;" />
+		<method name="getLocalState()Ljava/lang/Object;" />
+		<method name="getResult()Z" />
+		<method name="getX()F" />
+		<method name="getY()F" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_DRAG_ENDED" />
+		<field name="ACTION_DRAG_ENTERED" />
+		<field name="ACTION_DRAG_EXITED" />
+		<field name="ACTION_DRAG_LOCATION" />
+		<field name="ACTION_DRAG_STARTED" />
+		<field name="ACTION_DROP" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/FocusFinder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="findNearestTouchable(Landroid/view/ViewGroup;III[I)Landroid/view/View;" />
+		<method name="findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View;" />
+		<method name="findNextFocusFromRect(Landroid/view/ViewGroup;Landroid/graphics/Rect;I)Landroid/view/View;" />
+		<method name="getInstance()Landroid/view/FocusFinder;" />
+	</class>
+	<class name="android/view/GestureDetector" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V" since="3" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V" since="3" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;Z)V" since="8" />
+		<method name="&lt;init>(Landroid/view/GestureDetector$OnGestureListener;)V" />
+		<method name="&lt;init>(Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V" />
+		<method name="isLongpressEnabled()Z" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="setIsLongpressEnabled(Z)V" />
+		<method name="setOnDoubleTapListener(Landroid/view/GestureDetector$OnDoubleTapListener;)V" since="3" />
+	</class>
+	<class name="android/view/GestureDetector$OnDoubleTapListener" since="3">
+		<method name="onDoubleTap(Landroid/view/MotionEvent;)Z" />
+		<method name="onDoubleTapEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onSingleTapConfirmed(Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/GestureDetector$OnGestureListener" since="1">
+		<method name="onDown(Landroid/view/MotionEvent;)Z" />
+		<method name="onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
+		<method name="onLongPress(Landroid/view/MotionEvent;)V" />
+		<method name="onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
+		<method name="onShowPress(Landroid/view/MotionEvent;)V" />
+		<method name="onSingleTapUp(Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/GestureDetector$SimpleOnGestureListener" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/GestureDetector$OnGestureListener" />
+		<implements name="android/view/GestureDetector$OnDoubleTapListener" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="onDoubleTap(Landroid/view/MotionEvent;)Z" since="3" />
+		<method name="onDoubleTapEvent(Landroid/view/MotionEvent;)Z" since="3" />
+		<method name="onDown(Landroid/view/MotionEvent;)Z" />
+		<method name="onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
+		<method name="onLongPress(Landroid/view/MotionEvent;)V" />
+		<method name="onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
+		<method name="onShowPress(Landroid/view/MotionEvent;)V" />
+		<method name="onSingleTapConfirmed(Landroid/view/MotionEvent;)Z" since="3" />
+		<method name="onSingleTapUp(Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/Gravity" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;)V" />
+		<method name="apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;)V" />
+		<method name="applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V" since="3" />
+		<method name="getAbsoluteGravity(II)I" since="14" />
+		<method name="isHorizontal(I)Z" />
+		<method name="isVertical(I)Z" />
+		<field name="AXIS_CLIP" since="3" />
+		<field name="AXIS_PULL_AFTER" />
+		<field name="AXIS_PULL_BEFORE" />
+		<field name="AXIS_SPECIFIED" />
+		<field name="AXIS_X_SHIFT" />
+		<field name="AXIS_Y_SHIFT" />
+		<field name="BOTTOM" />
+		<field name="CENTER" />
+		<field name="CENTER_HORIZONTAL" />
+		<field name="CENTER_VERTICAL" />
+		<field name="CLIP_HORIZONTAL" since="3" />
+		<field name="CLIP_VERTICAL" since="3" />
+		<field name="DISPLAY_CLIP_HORIZONTAL" since="3" />
+		<field name="DISPLAY_CLIP_VERTICAL" since="3" />
+		<field name="END" since="14" />
+		<field name="FILL" />
+		<field name="FILL_HORIZONTAL" />
+		<field name="FILL_VERTICAL" />
+		<field name="HORIZONTAL_GRAVITY_MASK" />
+		<field name="LEFT" />
+		<field name="NO_GRAVITY" />
+		<field name="RELATIVE_HORIZONTAL_GRAVITY_MASK" since="14" />
+		<field name="RELATIVE_LAYOUT_DIRECTION" since="14" />
+		<field name="RIGHT" />
+		<field name="START" since="14" />
+		<field name="TOP" />
+		<field name="VERTICAL_GRAVITY_MASK" />
+	</class>
+	<class name="android/view/HapticFeedbackConstants" since="3">
+		<extends name="java/lang/Object" />
+		<field name="FLAG_IGNORE_GLOBAL_SETTING" />
+		<field name="FLAG_IGNORE_VIEW_SETTING" />
+		<field name="KEYBOARD_TAP" since="8" />
+		<field name="LONG_PRESS" />
+		<field name="VIRTUAL_KEY" since="5" />
+	</class>
+	<class name="android/view/InflateException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="android/view/InputDevice" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getDevice(I)Landroid/view/InputDevice;" />
+		<method name="getDeviceIds()[I" />
+		<method name="getId()I" />
+		<method name="getKeyCharacterMap()Landroid/view/KeyCharacterMap;" />
+		<method name="getKeyboardType()I" />
+		<method name="getMotionRange(I)Landroid/view/InputDevice$MotionRange;" />
+		<method name="getMotionRange(II)Landroid/view/InputDevice$MotionRange;" since="12" />
+		<method name="getMotionRanges()Ljava/util/List;" since="12" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getSources()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="KEYBOARD_TYPE_ALPHABETIC" />
+		<field name="KEYBOARD_TYPE_NONE" />
+		<field name="KEYBOARD_TYPE_NON_ALPHABETIC" />
+		<field name="MOTION_RANGE_ORIENTATION" />
+		<field name="MOTION_RANGE_PRESSURE" />
+		<field name="MOTION_RANGE_SIZE" />
+		<field name="MOTION_RANGE_TOOL_MAJOR" />
+		<field name="MOTION_RANGE_TOOL_MINOR" />
+		<field name="MOTION_RANGE_TOUCH_MAJOR" />
+		<field name="MOTION_RANGE_TOUCH_MINOR" />
+		<field name="MOTION_RANGE_X" />
+		<field name="MOTION_RANGE_Y" />
+		<field name="SOURCE_ANY" />
+		<field name="SOURCE_CLASS_BUTTON" />
+		<field name="SOURCE_CLASS_JOYSTICK" since="12" />
+		<field name="SOURCE_CLASS_MASK" />
+		<field name="SOURCE_CLASS_POINTER" />
+		<field name="SOURCE_CLASS_POSITION" />
+		<field name="SOURCE_CLASS_TRACKBALL" />
+		<field name="SOURCE_DPAD" />
+		<field name="SOURCE_GAMEPAD" since="12" />
+		<field name="SOURCE_JOYSTICK" since="12" />
+		<field name="SOURCE_KEYBOARD" />
+		<field name="SOURCE_MOUSE" />
+		<field name="SOURCE_STYLUS" since="14" />
+		<field name="SOURCE_TOUCHPAD" />
+		<field name="SOURCE_TOUCHSCREEN" />
+		<field name="SOURCE_TRACKBALL" />
+		<field name="SOURCE_UNKNOWN" />
+	</class>
+	<class name="android/view/InputDevice$MotionRange" since="9">
+		<extends name="java/lang/Object" />
+		<method name="getAxis()I" since="12" />
+		<method name="getFlat()F" />
+		<method name="getFuzz()F" />
+		<method name="getMax()F" />
+		<method name="getMin()F" />
+		<method name="getRange()F" />
+		<method name="getSource()I" since="12" />
+	</class>
+	<class name="android/view/InputEvent" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getDevice()Landroid/view/InputDevice;" />
+		<method name="getDeviceId()I" />
+		<method name="getSource()I" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/InputQueue" since="9">
+		<extends name="java/lang/Object" />
+	</class>
+	<class name="android/view/InputQueue$Callback" since="9">
+		<method name="onInputQueueCreated(Landroid/view/InputQueue;)V" />
+		<method name="onInputQueueDestroyed(Landroid/view/InputQueue;)V" />
+	</class>
+	<class name="android/view/KeyCharacterMap" since="1">
+		<extends name="java/lang/Object" />
+		<method name="deviceHasKey(I)Z" since="3" />
+		<method name="deviceHasKeys([I)[Z" since="3" />
+		<method name="get(II)I" />
+		<method name="getDeadChar(II)I" />
+		<method name="getDisplayLabel(I)C" />
+		<method name="getEvents([C)[Landroid/view/KeyEvent;" />
+		<method name="getKeyData(ILandroid/view/KeyCharacterMap$KeyData;)Z" />
+		<method name="getKeyboardType()I" />
+		<method name="getMatch(I[C)C" />
+		<method name="getMatch(I[CI)C" />
+		<method name="getModifierBehavior()I" since="11" />
+		<method name="getNumber(I)C" />
+		<method name="isPrintingKey(I)Z" />
+		<method name="load(I)Landroid/view/KeyCharacterMap;" />
+		<field name="ALPHA" />
+		<field name="BUILT_IN_KEYBOARD" />
+		<field name="COMBINING_ACCENT" />
+		<field name="COMBINING_ACCENT_MASK" />
+		<field name="FULL" since="11" />
+		<field name="HEX_INPUT" />
+		<field name="MODIFIER_BEHAVIOR_CHORDED" since="11" />
+		<field name="MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED" since="11" />
+		<field name="NUMERIC" />
+		<field name="PICKER_DIALOG_INPUT" />
+		<field name="PREDICTIVE" />
+		<field name="SPECIAL_FUNCTION" since="11" />
+		<field name="VIRTUAL_KEYBOARD" since="11" />
+	</class>
+	<class name="android/view/KeyCharacterMap$KeyData" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="META_LENGTH" />
+		<field name="displayLabel" />
+		<field name="meta" />
+		<field name="number" />
+	</class>
+	<class name="android/view/KeyCharacterMap$UnavailableException" since="11">
+		<extends name="android/util/AndroidRuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/view/KeyEvent" since="1">
+		<extends name="java/lang/Object" />
+		<extends name="android/view/InputEvent" since="9" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(JJIII)V" />
+		<method name="&lt;init>(JJIIII)V" />
+		<method name="&lt;init>(JJIIIIII)V" />
+		<method name="&lt;init>(JJIIIIIII)V" />
+		<method name="&lt;init>(JJIIIIIIII)V" since="9" />
+		<method name="&lt;init>(JLjava/lang/String;II)V" since="3" />
+		<method name="&lt;init>(Landroid/view/KeyEvent;)V" since="3" />
+		<method name="&lt;init>(Landroid/view/KeyEvent;JI)V" />
+		<method name="changeAction(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;" since="3" />
+		<method name="changeFlags(Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;" since="3" />
+		<method name="changeTimeRepeat(Landroid/view/KeyEvent;JI)Landroid/view/KeyEvent;" since="3" />
+		<method name="changeTimeRepeat(Landroid/view/KeyEvent;JII)Landroid/view/KeyEvent;" since="5" />
+		<method name="describeContents()I" />
+		<method name="dispatch(Landroid/view/KeyEvent$Callback;)Z" />
+		<method name="dispatch(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z" since="5" />
+		<method name="getAction()I" />
+		<method name="getCharacters()Ljava/lang/String;" since="3" />
+		<method name="getDeadChar(II)I" />
+		<method name="getDeviceId()I" />
+		<method name="getDisplayLabel()C" />
+		<method name="getDownTime()J" />
+		<method name="getEventTime()J" />
+		<method name="getFlags()I" />
+		<method name="getKeyCharacterMap()Landroid/view/KeyCharacterMap;" since="11" />
+		<method name="getKeyCode()I" />
+		<method name="getKeyData(Landroid/view/KeyCharacterMap$KeyData;)Z" />
+		<method name="getMatch([C)C" />
+		<method name="getMatch([CI)C" />
+		<method name="getMaxKeyCode()I" since="3" />
+		<method name="getMetaState()I" />
+		<method name="getModifierMetaStateMask()I" since="11" />
+		<method name="getModifiers()I" since="13" />
+		<method name="getNumber()C" />
+		<method name="getRepeatCount()I" />
+		<method name="getScanCode()I" />
+		<method name="getSource()I" since="12" />
+		<method name="getUnicodeChar()I" />
+		<method name="getUnicodeChar(I)I" />
+		<method name="hasModifiers(I)Z" since="11" />
+		<method name="hasNoModifiers()Z" since="11" />
+		<method name="isAltPressed()Z" />
+		<method name="isCanceled()Z" since="5" />
+		<method name="isCapsLockOn()Z" since="11" />
+		<method name="isCtrlPressed()Z" since="11" />
+		<method name="isFunctionPressed()Z" since="11" />
+		<method name="isGamepadButton(I)Z" since="12" />
+		<method name="isLongPress()Z" since="5" />
+		<method name="isMetaPressed()Z" since="11" />
+		<method name="isModifierKey(I)Z" />
+		<method name="isNumLockOn()Z" since="11" />
+		<method name="isPrintingKey()Z" />
+		<method name="isScrollLockOn()Z" since="11" />
+		<method name="isShiftPressed()Z" />
+		<method name="isSymPressed()Z" />
+		<method name="isSystem()Z" />
+		<method name="isTracking()Z" since="5" />
+		<method name="keyCodeFromString(Ljava/lang/String;)I" since="12" />
+		<method name="keyCodeToString(I)Ljava/lang/String;" since="12" />
+		<method name="metaStateHasModifiers(II)Z" since="11" />
+		<method name="metaStateHasNoModifiers(I)Z" since="11" />
+		<method name="normalizeMetaState(I)I" since="11" />
+		<method name="setSource(I)V" since="12" />
+		<method name="startTracking()V" since="5" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_DOWN" />
+		<field name="ACTION_MULTIPLE" />
+		<field name="ACTION_UP" />
+		<field name="CREATOR" />
+		<field name="FLAG_CANCELED" since="5" />
+		<field name="FLAG_CANCELED_LONG_PRESS" since="5" />
+		<field name="FLAG_EDITOR_ACTION" since="3" />
+		<field name="FLAG_FALLBACK" since="11" />
+		<field name="FLAG_FROM_SYSTEM" since="3" />
+		<field name="FLAG_KEEP_TOUCH_MODE" since="3" />
+		<field name="FLAG_LONG_PRESS" since="5" />
+		<field name="FLAG_SOFT_KEYBOARD" since="3" />
+		<field name="FLAG_TRACKING" since="5" />
+		<field name="FLAG_VIRTUAL_HARD_KEY" since="5" />
+		<field name="FLAG_WOKE_HERE" />
+		<field name="KEYCODE_0" />
+		<field name="KEYCODE_1" />
+		<field name="KEYCODE_2" />
+		<field name="KEYCODE_3" />
+		<field name="KEYCODE_3D_MODE" since="14" />
+		<field name="KEYCODE_4" />
+		<field name="KEYCODE_5" />
+		<field name="KEYCODE_6" />
+		<field name="KEYCODE_7" />
+		<field name="KEYCODE_8" />
+		<field name="KEYCODE_9" />
+		<field name="KEYCODE_A" />
+		<field name="KEYCODE_ALT_LEFT" />
+		<field name="KEYCODE_ALT_RIGHT" />
+		<field name="KEYCODE_APOSTROPHE" />
+		<field name="KEYCODE_APP_SWITCH" since="11" />
+		<field name="KEYCODE_AT" />
+		<field name="KEYCODE_AVR_INPUT" since="11" />
+		<field name="KEYCODE_AVR_POWER" since="11" />
+		<field name="KEYCODE_B" />
+		<field name="KEYCODE_BACK" />
+		<field name="KEYCODE_BACKSLASH" />
+		<field name="KEYCODE_BOOKMARK" since="11" />
+		<field name="KEYCODE_BREAK" since="11" />
+		<field name="KEYCODE_BUTTON_1" since="12" />
+		<field name="KEYCODE_BUTTON_10" since="12" />
+		<field name="KEYCODE_BUTTON_11" since="12" />
+		<field name="KEYCODE_BUTTON_12" since="12" />
+		<field name="KEYCODE_BUTTON_13" since="12" />
+		<field name="KEYCODE_BUTTON_14" since="12" />
+		<field name="KEYCODE_BUTTON_15" since="12" />
+		<field name="KEYCODE_BUTTON_16" since="12" />
+		<field name="KEYCODE_BUTTON_2" since="12" />
+		<field name="KEYCODE_BUTTON_3" since="12" />
+		<field name="KEYCODE_BUTTON_4" since="12" />
+		<field name="KEYCODE_BUTTON_5" since="12" />
+		<field name="KEYCODE_BUTTON_6" since="12" />
+		<field name="KEYCODE_BUTTON_7" since="12" />
+		<field name="KEYCODE_BUTTON_8" since="12" />
+		<field name="KEYCODE_BUTTON_9" since="12" />
+		<field name="KEYCODE_BUTTON_A" since="9" />
+		<field name="KEYCODE_BUTTON_B" since="9" />
+		<field name="KEYCODE_BUTTON_C" since="9" />
+		<field name="KEYCODE_BUTTON_L1" since="9" />
+		<field name="KEYCODE_BUTTON_L2" since="9" />
+		<field name="KEYCODE_BUTTON_MODE" since="9" />
+		<field name="KEYCODE_BUTTON_R1" since="9" />
+		<field name="KEYCODE_BUTTON_R2" since="9" />
+		<field name="KEYCODE_BUTTON_SELECT" since="9" />
+		<field name="KEYCODE_BUTTON_START" since="9" />
+		<field name="KEYCODE_BUTTON_THUMBL" since="9" />
+		<field name="KEYCODE_BUTTON_THUMBR" since="9" />
+		<field name="KEYCODE_BUTTON_X" since="9" />
+		<field name="KEYCODE_BUTTON_Y" since="9" />
+		<field name="KEYCODE_BUTTON_Z" since="9" />
+		<field name="KEYCODE_C" />
+		<field name="KEYCODE_CALCULATOR" since="15" />
+		<field name="KEYCODE_CALENDAR" since="15" />
+		<field name="KEYCODE_CALL" />
+		<field name="KEYCODE_CAMERA" />
+		<field name="KEYCODE_CAPS_LOCK" since="11" />
+		<field name="KEYCODE_CAPTIONS" since="11" />
+		<field name="KEYCODE_CHANNEL_DOWN" since="11" />
+		<field name="KEYCODE_CHANNEL_UP" since="11" />
+		<field name="KEYCODE_CLEAR" />
+		<field name="KEYCODE_COMMA" />
+		<field name="KEYCODE_CONTACTS" since="15" />
+		<field name="KEYCODE_CTRL_LEFT" since="11" />
+		<field name="KEYCODE_CTRL_RIGHT" since="11" />
+		<field name="KEYCODE_D" />
+		<field name="KEYCODE_DEL" />
+		<field name="KEYCODE_DPAD_CENTER" />
+		<field name="KEYCODE_DPAD_DOWN" />
+		<field name="KEYCODE_DPAD_LEFT" />
+		<field name="KEYCODE_DPAD_RIGHT" />
+		<field name="KEYCODE_DPAD_UP" />
+		<field name="KEYCODE_DVR" since="11" />
+		<field name="KEYCODE_E" />
+		<field name="KEYCODE_ENDCALL" />
+		<field name="KEYCODE_ENTER" />
+		<field name="KEYCODE_ENVELOPE" />
+		<field name="KEYCODE_EQUALS" />
+		<field name="KEYCODE_ESCAPE" since="11" />
+		<field name="KEYCODE_EXPLORER" />
+		<field name="KEYCODE_F" />
+		<field name="KEYCODE_F1" since="11" />
+		<field name="KEYCODE_F10" since="11" />
+		<field name="KEYCODE_F11" since="11" />
+		<field name="KEYCODE_F12" since="11" />
+		<field name="KEYCODE_F2" since="11" />
+		<field name="KEYCODE_F3" since="11" />
+		<field name="KEYCODE_F4" since="11" />
+		<field name="KEYCODE_F5" since="11" />
+		<field name="KEYCODE_F6" since="11" />
+		<field name="KEYCODE_F7" since="11" />
+		<field name="KEYCODE_F8" since="11" />
+		<field name="KEYCODE_F9" since="11" />
+		<field name="KEYCODE_FOCUS" />
+		<field name="KEYCODE_FORWARD" since="11" />
+		<field name="KEYCODE_FORWARD_DEL" since="11" />
+		<field name="KEYCODE_FUNCTION" since="11" />
+		<field name="KEYCODE_G" />
+		<field name="KEYCODE_GRAVE" />
+		<field name="KEYCODE_GUIDE" since="11" />
+		<field name="KEYCODE_H" />
+		<field name="KEYCODE_HEADSETHOOK" />
+		<field name="KEYCODE_HOME" />
+		<field name="KEYCODE_I" />
+		<field name="KEYCODE_INFO" since="11" />
+		<field name="KEYCODE_INSERT" since="11" />
+		<field name="KEYCODE_J" />
+		<field name="KEYCODE_K" />
+		<field name="KEYCODE_L" />
+		<field name="KEYCODE_LANGUAGE_SWITCH" since="14" />
+		<field name="KEYCODE_LEFT_BRACKET" />
+		<field name="KEYCODE_M" />
+		<field name="KEYCODE_MANNER_MODE" since="14" />
+		<field name="KEYCODE_MEDIA_CLOSE" since="11" />
+		<field name="KEYCODE_MEDIA_EJECT" since="11" />
+		<field name="KEYCODE_MEDIA_FAST_FORWARD" since="3" />
+		<field name="KEYCODE_MEDIA_NEXT" since="3" />
+		<field name="KEYCODE_MEDIA_PAUSE" since="11" />
+		<field name="KEYCODE_MEDIA_PLAY" since="11" />
+		<field name="KEYCODE_MEDIA_PLAY_PAUSE" since="3" />
+		<field name="KEYCODE_MEDIA_PREVIOUS" since="3" />
+		<field name="KEYCODE_MEDIA_RECORD" since="11" />
+		<field name="KEYCODE_MEDIA_REWIND" since="3" />
+		<field name="KEYCODE_MEDIA_STOP" since="3" />
+		<field name="KEYCODE_MENU" />
+		<field name="KEYCODE_META_LEFT" since="11" />
+		<field name="KEYCODE_META_RIGHT" since="11" />
+		<field name="KEYCODE_MINUS" />
+		<field name="KEYCODE_MOVE_END" since="11" />
+		<field name="KEYCODE_MOVE_HOME" since="11" />
+		<field name="KEYCODE_MUSIC" since="15" />
+		<field name="KEYCODE_MUTE" since="3" />
+		<field name="KEYCODE_N" />
+		<field name="KEYCODE_NOTIFICATION" />
+		<field name="KEYCODE_NUM" />
+		<field name="KEYCODE_NUMPAD_0" since="11" />
+		<field name="KEYCODE_NUMPAD_1" since="11" />
+		<field name="KEYCODE_NUMPAD_2" since="11" />
+		<field name="KEYCODE_NUMPAD_3" since="11" />
+		<field name="KEYCODE_NUMPAD_4" since="11" />
+		<field name="KEYCODE_NUMPAD_5" since="11" />
+		<field name="KEYCODE_NUMPAD_6" since="11" />
+		<field name="KEYCODE_NUMPAD_7" since="11" />
+		<field name="KEYCODE_NUMPAD_8" since="11" />
+		<field name="KEYCODE_NUMPAD_9" since="11" />
+		<field name="KEYCODE_NUMPAD_ADD" since="11" />
+		<field name="KEYCODE_NUMPAD_COMMA" since="11" />
+		<field name="KEYCODE_NUMPAD_DIVIDE" since="11" />
+		<field name="KEYCODE_NUMPAD_DOT" since="11" />
+		<field name="KEYCODE_NUMPAD_ENTER" since="11" />
+		<field name="KEYCODE_NUMPAD_EQUALS" since="11" />
+		<field name="KEYCODE_NUMPAD_LEFT_PAREN" since="11" />
+		<field name="KEYCODE_NUMPAD_MULTIPLY" since="11" />
+		<field name="KEYCODE_NUMPAD_RIGHT_PAREN" since="11" />
+		<field name="KEYCODE_NUMPAD_SUBTRACT" since="11" />
+		<field name="KEYCODE_NUM_LOCK" since="11" />
+		<field name="KEYCODE_O" />
+		<field name="KEYCODE_P" />
+		<field name="KEYCODE_PAGE_DOWN" since="9" />
+		<field name="KEYCODE_PAGE_UP" since="9" />
+		<field name="KEYCODE_PERIOD" />
+		<field name="KEYCODE_PICTSYMBOLS" since="9" />
+		<field name="KEYCODE_PLUS" />
+		<field name="KEYCODE_POUND" />
+		<field name="KEYCODE_POWER" />
+		<field name="KEYCODE_PROG_BLUE" since="11" />
+		<field name="KEYCODE_PROG_GREEN" since="11" />
+		<field name="KEYCODE_PROG_RED" since="11" />
+		<field name="KEYCODE_PROG_YELLOW" since="11" />
+		<field name="KEYCODE_Q" />
+		<field name="KEYCODE_R" />
+		<field name="KEYCODE_RIGHT_BRACKET" />
+		<field name="KEYCODE_S" />
+		<field name="KEYCODE_SCROLL_LOCK" since="11" />
+		<field name="KEYCODE_SEARCH" />
+		<field name="KEYCODE_SEMICOLON" />
+		<field name="KEYCODE_SETTINGS" since="11" />
+		<field name="KEYCODE_SHIFT_LEFT" />
+		<field name="KEYCODE_SHIFT_RIGHT" />
+		<field name="KEYCODE_SLASH" />
+		<field name="KEYCODE_SOFT_LEFT" />
+		<field name="KEYCODE_SOFT_RIGHT" />
+		<field name="KEYCODE_SPACE" />
+		<field name="KEYCODE_STAR" />
+		<field name="KEYCODE_STB_INPUT" since="11" />
+		<field name="KEYCODE_STB_POWER" since="11" />
+		<field name="KEYCODE_SWITCH_CHARSET" since="9" />
+		<field name="KEYCODE_SYM" />
+		<field name="KEYCODE_SYSRQ" since="11" />
+		<field name="KEYCODE_T" />
+		<field name="KEYCODE_TAB" />
+		<field name="KEYCODE_TV" since="11" />
+		<field name="KEYCODE_TV_INPUT" since="11" />
+		<field name="KEYCODE_TV_POWER" since="11" />
+		<field name="KEYCODE_U" />
+		<field name="KEYCODE_UNKNOWN" />
+		<field name="KEYCODE_V" />
+		<field name="KEYCODE_VOLUME_DOWN" />
+		<field name="KEYCODE_VOLUME_MUTE" since="11" />
+		<field name="KEYCODE_VOLUME_UP" />
+		<field name="KEYCODE_W" />
+		<field name="KEYCODE_WINDOW" since="11" />
+		<field name="KEYCODE_X" />
+		<field name="KEYCODE_Y" />
+		<field name="KEYCODE_Z" />
+		<field name="KEYCODE_ZOOM_IN" since="11" />
+		<field name="KEYCODE_ZOOM_OUT" since="11" />
+		<field name="MAX_KEYCODE" />
+		<field name="META_ALT_LEFT_ON" />
+		<field name="META_ALT_MASK" since="11" />
+		<field name="META_ALT_ON" />
+		<field name="META_ALT_RIGHT_ON" />
+		<field name="META_CAPS_LOCK_ON" since="11" />
+		<field name="META_CTRL_LEFT_ON" since="11" />
+		<field name="META_CTRL_MASK" since="11" />
+		<field name="META_CTRL_ON" since="11" />
+		<field name="META_CTRL_RIGHT_ON" since="11" />
+		<field name="META_FUNCTION_ON" since="11" />
+		<field name="META_META_LEFT_ON" since="11" />
+		<field name="META_META_MASK" since="11" />
+		<field name="META_META_ON" since="11" />
+		<field name="META_META_RIGHT_ON" since="11" />
+		<field name="META_NUM_LOCK_ON" since="11" />
+		<field name="META_SCROLL_LOCK_ON" since="11" />
+		<field name="META_SHIFT_LEFT_ON" />
+		<field name="META_SHIFT_MASK" since="11" />
+		<field name="META_SHIFT_ON" />
+		<field name="META_SHIFT_RIGHT_ON" />
+		<field name="META_SYM_ON" />
+	</class>
+	<class name="android/view/KeyEvent$Callback" since="1">
+		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
+		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
+	</class>
+	<class name="android/view/KeyEvent$DispatcherState" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="handleUpEvent(Landroid/view/KeyEvent;)V" />
+		<method name="isTracking(Landroid/view/KeyEvent;)Z" />
+		<method name="performedLongPress(Landroid/view/KeyEvent;)V" />
+		<method name="reset()V" />
+		<method name="reset(Ljava/lang/Object;)V" />
+		<method name="startTracking(Landroid/view/KeyEvent;Ljava/lang/Object;)V" />
+	</class>
+	<class name="android/view/LayoutInflater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V" />
+		<method name="cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater;" />
+		<method name="createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" />
+		<method name="from(Landroid/content/Context;)Landroid/view/LayoutInflater;" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getFactory()Landroid/view/LayoutInflater$Factory;" />
+		<method name="getFactory2()Landroid/view/LayoutInflater$Factory2;" since="11" />
+		<method name="getFilter()Landroid/view/LayoutInflater$Filter;" />
+		<method name="inflate(ILandroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;" />
+		<method name="inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;" />
+		<method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" since="11" />
+		<method name="onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;" />
+		<method name="setFactory(Landroid/view/LayoutInflater$Factory;)V" />
+		<method name="setFactory2(Landroid/view/LayoutInflater$Factory2;)V" since="11" />
+		<method name="setFilter(Landroid/view/LayoutInflater$Filter;)V" />
+	</class>
+	<class name="android/view/LayoutInflater$Factory" since="1">
+		<method name="onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" />
+	</class>
+	<class name="android/view/LayoutInflater$Factory2" since="11">
+		<implements name="android/view/LayoutInflater$Factory" />
+		<method name="onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;" />
+	</class>
+	<class name="android/view/LayoutInflater$Filter" since="1">
+		<method name="onLoadClass(Ljava/lang/Class;)Z" />
+	</class>
+	<class name="android/view/Menu" since="1">
+		<method name="add(I)Landroid/view/MenuItem;" />
+		<method name="add(IIII)Landroid/view/MenuItem;" />
+		<method name="add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;" />
+		<method name="add(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" />
+		<method name="addIntentOptions(IIILandroid/content/ComponentName;[Landroid/content/Intent;Landroid/content/Intent;I[Landroid/view/MenuItem;)I" />
+		<method name="addSubMenu(I)Landroid/view/SubMenu;" />
+		<method name="addSubMenu(IIII)Landroid/view/SubMenu;" />
+		<method name="addSubMenu(IIILjava/lang/CharSequence;)Landroid/view/SubMenu;" />
+		<method name="addSubMenu(Ljava/lang/CharSequence;)Landroid/view/SubMenu;" />
+		<method name="clear()V" />
+		<method name="close()V" since="3" />
+		<method name="findItem(I)Landroid/view/MenuItem;" />
+		<method name="getItem(I)Landroid/view/MenuItem;" since="3" />
+		<method name="hasVisibleItems()Z" />
+		<method name="isShortcutKey(ILandroid/view/KeyEvent;)Z" />
+		<method name="performIdentifierAction(II)Z" />
+		<method name="performShortcut(ILandroid/view/KeyEvent;I)Z" />
+		<method name="removeGroup(I)V" />
+		<method name="removeItem(I)V" />
+		<method name="setGroupCheckable(IZZ)V" />
+		<method name="setGroupEnabled(IZ)V" />
+		<method name="setGroupVisible(IZ)V" />
+		<method name="setQwertyMode(Z)V" />
+		<method name="size()I" />
+		<field name="CATEGORY_ALTERNATIVE" />
+		<field name="CATEGORY_CONTAINER" />
+		<field name="CATEGORY_SECONDARY" />
+		<field name="CATEGORY_SYSTEM" />
+		<field name="FIRST" />
+		<field name="FLAG_ALWAYS_PERFORM_CLOSE" />
+		<field name="FLAG_APPEND_TO_GROUP" />
+		<field name="FLAG_PERFORM_NO_CLOSE" />
+		<field name="NONE" />
+	</class>
+	<class name="android/view/MenuInflater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="inflate(ILandroid/view/Menu;)V" />
+	</class>
+	<class name="android/view/MenuItem" since="1">
+		<method name="collapseActionView()Z" since="14" />
+		<method name="expandActionView()Z" since="14" />
+		<method name="getActionProvider()Landroid/view/ActionProvider;" since="14" />
+		<method name="getActionView()Landroid/view/View;" since="11" />
+		<method name="getAlphabeticShortcut()C" />
+		<method name="getGroupId()I" />
+		<method name="getIcon()Landroid/graphics/drawable/Drawable;" />
+		<method name="getIntent()Landroid/content/Intent;" />
+		<method name="getItemId()I" />
+		<method name="getMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;" />
+		<method name="getNumericShortcut()C" />
+		<method name="getOrder()I" />
+		<method name="getSubMenu()Landroid/view/SubMenu;" />
+		<method name="getTitle()Ljava/lang/CharSequence;" />
+		<method name="getTitleCondensed()Ljava/lang/CharSequence;" />
+		<method name="hasSubMenu()Z" />
+		<method name="isActionViewExpanded()Z" since="14" />
+		<method name="isCheckable()Z" />
+		<method name="isChecked()Z" />
+		<method name="isEnabled()Z" />
+		<method name="isVisible()Z" />
+		<method name="setActionProvider(Landroid/view/ActionProvider;)Landroid/view/MenuItem;" since="14" />
+		<method name="setActionView(I)Landroid/view/MenuItem;" since="11" />
+		<method name="setActionView(Landroid/view/View;)Landroid/view/MenuItem;" since="11" />
+		<method name="setAlphabeticShortcut(C)Landroid/view/MenuItem;" />
+		<method name="setCheckable(Z)Landroid/view/MenuItem;" />
+		<method name="setChecked(Z)Landroid/view/MenuItem;" />
+		<method name="setEnabled(Z)Landroid/view/MenuItem;" />
+		<method name="setIcon(I)Landroid/view/MenuItem;" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/MenuItem;" />
+		<method name="setIntent(Landroid/content/Intent;)Landroid/view/MenuItem;" />
+		<method name="setNumericShortcut(C)Landroid/view/MenuItem;" />
+		<method name="setOnActionExpandListener(Landroid/view/MenuItem$OnActionExpandListener;)Landroid/view/MenuItem;" since="14" />
+		<method name="setOnMenuItemClickListener(Landroid/view/MenuItem$OnMenuItemClickListener;)Landroid/view/MenuItem;" />
+		<method name="setShortcut(CC)Landroid/view/MenuItem;" />
+		<method name="setShowAsAction(I)V" since="11" />
+		<method name="setShowAsActionFlags(I)Landroid/view/MenuItem;" since="14" />
+		<method name="setTitle(I)Landroid/view/MenuItem;" />
+		<method name="setTitle(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" />
+		<method name="setTitleCondensed(Ljava/lang/CharSequence;)Landroid/view/MenuItem;" />
+		<method name="setVisible(Z)Landroid/view/MenuItem;" />
+		<field name="SHOW_AS_ACTION_ALWAYS" since="11" />
+		<field name="SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW" since="14" />
+		<field name="SHOW_AS_ACTION_IF_ROOM" since="11" />
+		<field name="SHOW_AS_ACTION_NEVER" since="11" />
+		<field name="SHOW_AS_ACTION_WITH_TEXT" since="11" />
+	</class>
+	<class name="android/view/MenuItem$OnActionExpandListener" since="14">
+		<method name="onMenuItemActionCollapse(Landroid/view/MenuItem;)Z" />
+		<method name="onMenuItemActionExpand(Landroid/view/MenuItem;)Z" />
+	</class>
+	<class name="android/view/MenuItem$OnMenuItemClickListener" since="1">
+		<method name="onMenuItemClick(Landroid/view/MenuItem;)Z" />
+	</class>
+	<class name="android/view/MotionEvent" since="1">
+		<extends name="java/lang/Object" />
+		<extends name="android/view/InputEvent" since="9" />
+		<implements name="android/os/Parcelable" />
+		<method name="addBatch(JFFFFI)V" />
+		<method name="addBatch(J[Landroid/view/MotionEvent$PointerCoords;I)V" since="9" />
+		<method name="axisFromString(Ljava/lang/String;)I" since="12" />
+		<method name="axisToString(I)Ljava/lang/String;" since="12" />
+		<method name="describeContents()I" />
+		<method name="findPointerIndex(I)I" since="5" />
+		<method name="getAction()I" />
+		<method name="getActionIndex()I" since="8" />
+		<method name="getActionMasked()I" since="8" />
+		<method name="getAxisValue(I)F" since="12" />
+		<method name="getAxisValue(II)F" since="12" />
+		<method name="getButtonState()I" since="14" />
+		<method name="getDeviceId()I" />
+		<method name="getDownTime()J" />
+		<method name="getEdgeFlags()I" />
+		<method name="getEventTime()J" />
+		<method name="getFlags()I" since="9" />
+		<method name="getHistoricalAxisValue(II)F" since="12" />
+		<method name="getHistoricalAxisValue(III)F" since="12" />
+		<method name="getHistoricalEventTime(I)J" />
+		<method name="getHistoricalOrientation(I)F" since="9" />
+		<method name="getHistoricalOrientation(II)F" since="9" />
+		<method name="getHistoricalPointerCoords(IILandroid/view/MotionEvent$PointerCoords;)V" since="9" />
+		<method name="getHistoricalPressure(I)F" />
+		<method name="getHistoricalPressure(II)F" since="5" />
+		<method name="getHistoricalSize(I)F" />
+		<method name="getHistoricalSize(II)F" since="5" />
+		<method name="getHistoricalToolMajor(I)F" since="9" />
+		<method name="getHistoricalToolMajor(II)F" since="9" />
+		<method name="getHistoricalToolMinor(I)F" since="9" />
+		<method name="getHistoricalToolMinor(II)F" since="9" />
+		<method name="getHistoricalTouchMajor(I)F" since="9" />
+		<method name="getHistoricalTouchMajor(II)F" since="9" />
+		<method name="getHistoricalTouchMinor(I)F" since="9" />
+		<method name="getHistoricalTouchMinor(II)F" since="9" />
+		<method name="getHistoricalX(I)F" />
+		<method name="getHistoricalX(II)F" since="5" />
+		<method name="getHistoricalY(I)F" />
+		<method name="getHistoricalY(II)F" since="5" />
+		<method name="getHistorySize()I" />
+		<method name="getMetaState()I" />
+		<method name="getOrientation()F" since="9" />
+		<method name="getOrientation(I)F" since="9" />
+		<method name="getPointerCoords(ILandroid/view/MotionEvent$PointerCoords;)V" since="9" />
+		<method name="getPointerCount()I" since="5" />
+		<method name="getPointerId(I)I" since="5" />
+		<method name="getPointerProperties(ILandroid/view/MotionEvent$PointerProperties;)V" since="14" />
+		<method name="getPressure()F" />
+		<method name="getPressure(I)F" since="5" />
+		<method name="getRawX()F" />
+		<method name="getRawY()F" />
+		<method name="getSize()F" />
+		<method name="getSize(I)F" since="5" />
+		<method name="getSource()I" since="12" />
+		<method name="getToolMajor()F" since="9" />
+		<method name="getToolMajor(I)F" since="9" />
+		<method name="getToolMinor()F" since="9" />
+		<method name="getToolMinor(I)F" since="9" />
+		<method name="getToolType(I)I" since="14" />
+		<method name="getTouchMajor()F" since="9" />
+		<method name="getTouchMajor(I)F" since="9" />
+		<method name="getTouchMinor()F" since="9" />
+		<method name="getTouchMinor(I)F" since="9" />
+		<method name="getX()F" />
+		<method name="getX(I)F" since="5" />
+		<method name="getXPrecision()F" />
+		<method name="getY()F" />
+		<method name="getY(I)F" since="5" />
+		<method name="getYPrecision()F" />
+		<method name="obtain(JJIFFFFIFFII)Landroid/view/MotionEvent;" />
+		<method name="obtain(JJIFFI)Landroid/view/MotionEvent;" />
+		<method name="obtain(JJIIFFFFIFFII)Landroid/view/MotionEvent;" since="5" />
+		<method name="obtain(JJII[I[Landroid/view/MotionEvent$PointerCoords;IFFIIII)Landroid/view/MotionEvent;" since="9" />
+		<method name="obtain(JJII[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;IIFFIIII)Landroid/view/MotionEvent;" since="14" />
+		<method name="obtain(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;" />
+		<method name="obtainNoHistory(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;" since="5" />
+		<method name="offsetLocation(FF)V" />
+		<method name="recycle()V" />
+		<method name="setAction(I)V" />
+		<method name="setEdgeFlags(I)V" />
+		<method name="setLocation(FF)V" />
+		<method name="setSource(I)V" since="12" />
+		<method name="transform(Landroid/graphics/Matrix;)V" since="11" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_CANCEL" />
+		<field name="ACTION_DOWN" />
+		<field name="ACTION_HOVER_ENTER" since="14" />
+		<field name="ACTION_HOVER_EXIT" since="14" />
+		<field name="ACTION_HOVER_MOVE" since="12" />
+		<field name="ACTION_MASK" since="5" />
+		<field name="ACTION_MOVE" />
+		<field name="ACTION_OUTSIDE" since="3" />
+		<field name="ACTION_POINTER_1_DOWN" since="5" />
+		<field name="ACTION_POINTER_1_UP" since="5" />
+		<field name="ACTION_POINTER_2_DOWN" since="5" />
+		<field name="ACTION_POINTER_2_UP" since="5" />
+		<field name="ACTION_POINTER_3_DOWN" since="5" />
+		<field name="ACTION_POINTER_3_UP" since="5" />
+		<field name="ACTION_POINTER_DOWN" since="5" />
+		<field name="ACTION_POINTER_ID_MASK" since="5" />
+		<field name="ACTION_POINTER_ID_SHIFT" since="5" />
+		<field name="ACTION_POINTER_INDEX_MASK" since="8" />
+		<field name="ACTION_POINTER_INDEX_SHIFT" since="8" />
+		<field name="ACTION_POINTER_UP" since="5" />
+		<field name="ACTION_SCROLL" since="12" />
+		<field name="ACTION_UP" />
+		<field name="AXIS_BRAKE" since="12" />
+		<field name="AXIS_DISTANCE" since="14" />
+		<field name="AXIS_GAS" since="12" />
+		<field name="AXIS_GENERIC_1" since="12" />
+		<field name="AXIS_GENERIC_10" since="12" />
+		<field name="AXIS_GENERIC_11" since="12" />
+		<field name="AXIS_GENERIC_12" since="12" />
+		<field name="AXIS_GENERIC_13" since="12" />
+		<field name="AXIS_GENERIC_14" since="12" />
+		<field name="AXIS_GENERIC_15" since="12" />
+		<field name="AXIS_GENERIC_16" since="12" />
+		<field name="AXIS_GENERIC_2" since="12" />
+		<field name="AXIS_GENERIC_3" since="12" />
+		<field name="AXIS_GENERIC_4" since="12" />
+		<field name="AXIS_GENERIC_5" since="12" />
+		<field name="AXIS_GENERIC_6" since="12" />
+		<field name="AXIS_GENERIC_7" since="12" />
+		<field name="AXIS_GENERIC_8" since="12" />
+		<field name="AXIS_GENERIC_9" since="12" />
+		<field name="AXIS_HAT_X" since="12" />
+		<field name="AXIS_HAT_Y" since="12" />
+		<field name="AXIS_HSCROLL" since="12" />
+		<field name="AXIS_LTRIGGER" since="12" />
+		<field name="AXIS_ORIENTATION" since="12" />
+		<field name="AXIS_PRESSURE" since="12" />
+		<field name="AXIS_RTRIGGER" since="12" />
+		<field name="AXIS_RUDDER" since="12" />
+		<field name="AXIS_RX" since="12" />
+		<field name="AXIS_RY" since="12" />
+		<field name="AXIS_RZ" since="12" />
+		<field name="AXIS_SIZE" since="12" />
+		<field name="AXIS_THROTTLE" since="12" />
+		<field name="AXIS_TILT" since="14" />
+		<field name="AXIS_TOOL_MAJOR" since="12" />
+		<field name="AXIS_TOOL_MINOR" since="12" />
+		<field name="AXIS_TOUCH_MAJOR" since="12" />
+		<field name="AXIS_TOUCH_MINOR" since="12" />
+		<field name="AXIS_VSCROLL" since="12" />
+		<field name="AXIS_WHEEL" since="12" />
+		<field name="AXIS_X" since="12" />
+		<field name="AXIS_Y" since="12" />
+		<field name="AXIS_Z" since="12" />
+		<field name="BUTTON_BACK" since="14" />
+		<field name="BUTTON_FORWARD" since="14" />
+		<field name="BUTTON_PRIMARY" since="14" />
+		<field name="BUTTON_SECONDARY" since="14" />
+		<field name="BUTTON_TERTIARY" since="14" />
+		<field name="CREATOR" />
+		<field name="EDGE_BOTTOM" />
+		<field name="EDGE_LEFT" />
+		<field name="EDGE_RIGHT" />
+		<field name="EDGE_TOP" />
+		<field name="FLAG_WINDOW_IS_OBSCURED" since="9" />
+		<field name="INVALID_POINTER_ID" since="14" />
+		<field name="TOOL_TYPE_ERASER" since="14" />
+		<field name="TOOL_TYPE_FINGER" since="14" />
+		<field name="TOOL_TYPE_MOUSE" since="14" />
+		<field name="TOOL_TYPE_STYLUS" since="14" />
+		<field name="TOOL_TYPE_UNKNOWN" since="14" />
+	</class>
+	<class name="android/view/MotionEvent$PointerCoords" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/view/MotionEvent$PointerCoords;)V" since="12" />
+		<method name="clear()V" since="12" />
+		<method name="copyFrom(Landroid/view/MotionEvent$PointerCoords;)V" since="12" />
+		<method name="getAxisValue(I)F" since="12" />
+		<method name="setAxisValue(IF)V" since="12" />
+		<field name="orientation" />
+		<field name="pressure" />
+		<field name="size" />
+		<field name="toolMajor" />
+		<field name="toolMinor" />
+		<field name="touchMajor" />
+		<field name="touchMinor" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/view/MotionEvent$PointerProperties" since="14">
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/view/MotionEvent$PointerProperties;)V" />
+		<method name="clear()V" />
+		<method name="copyFrom(Landroid/view/MotionEvent$PointerProperties;)V" />
+		<field name="id" />
+		<field name="toolType" />
+	</class>
+	<class name="android/view/OrientationEventListener" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="canDetectOrientation()Z" />
+		<method name="disable()V" />
+		<method name="enable()V" />
+		<method name="onOrientationChanged(I)V" />
+		<field name="ORIENTATION_UNKNOWN" />
+	</class>
+	<class name="android/view/OrientationListener" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/hardware/SensorListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" since="3" />
+		<method name="disable()V" />
+		<method name="enable()V" />
+		<method name="onAccuracyChanged(II)V" />
+		<method name="onOrientationChanged(I)V" />
+		<method name="onSensorChanged(I[F)V" />
+		<field name="ORIENTATION_UNKNOWN" />
+	</class>
+	<class name="android/view/ScaleGestureDetector" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V" />
+		<method name="getCurrentSpan()F" />
+		<method name="getCurrentSpanX()F" since="11" />
+		<method name="getCurrentSpanY()F" since="11" />
+		<method name="getEventTime()J" />
+		<method name="getFocusX()F" />
+		<method name="getFocusY()F" />
+		<method name="getPreviousSpan()F" />
+		<method name="getPreviousSpanX()F" since="11" />
+		<method name="getPreviousSpanY()F" since="11" />
+		<method name="getScaleFactor()F" />
+		<method name="getTimeDelta()J" />
+		<method name="isInProgress()Z" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/ScaleGestureDetector$OnScaleGestureListener" since="8">
+		<method name="onScale(Landroid/view/ScaleGestureDetector;)Z" />
+		<method name="onScaleBegin(Landroid/view/ScaleGestureDetector;)Z" />
+		<method name="onScaleEnd(Landroid/view/ScaleGestureDetector;)V" />
+	</class>
+	<class name="android/view/ScaleGestureDetector$SimpleOnScaleGestureListener" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/ScaleGestureDetector$OnScaleGestureListener" />
+		<method name="&lt;init>()V" />
+		<method name="onScale(Landroid/view/ScaleGestureDetector;)Z" />
+		<method name="onScaleBegin(Landroid/view/ScaleGestureDetector;)Z" />
+		<method name="onScaleEnd(Landroid/view/ScaleGestureDetector;)V" />
+	</class>
+	<class name="android/view/SoundEffectConstants" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getContantForFocusDirection(I)I" />
+		<field name="CLICK" />
+		<field name="NAVIGATION_DOWN" />
+		<field name="NAVIGATION_LEFT" />
+		<field name="NAVIGATION_RIGHT" />
+		<field name="NAVIGATION_UP" />
+	</class>
+	<class name="android/view/SubMenu" since="1">
+		<implements name="android/view/Menu" />
+		<method name="clearHeader()V" />
+		<method name="getItem()Landroid/view/MenuItem;" />
+		<method name="setHeaderIcon(I)Landroid/view/SubMenu;" />
+		<method name="setHeaderIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu;" />
+		<method name="setHeaderTitle(I)Landroid/view/SubMenu;" />
+		<method name="setHeaderTitle(Ljava/lang/CharSequence;)Landroid/view/SubMenu;" />
+		<method name="setHeaderView(Landroid/view/View;)Landroid/view/SubMenu;" />
+		<method name="setIcon(I)Landroid/view/SubMenu;" />
+		<method name="setIcon(Landroid/graphics/drawable/Drawable;)Landroid/view/SubMenu;" />
+	</class>
+	<class name="android/view/Surface" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/graphics/SurfaceTexture;)V" since="14" />
+		<method name="describeContents()I" />
+		<method name="freeze()V" />
+		<method name="hide()V" />
+		<method name="isValid()Z" />
+		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
+		<method name="readFromParcel(Landroid/os/Parcel;)V" />
+		<method name="release()V" since="14" />
+		<method name="setAlpha(F)V" />
+		<method name="setFlags(II)V" />
+		<method name="setFreezeTint(I)V" />
+		<method name="setLayer(I)V" />
+		<method name="setMatrix(FFFF)V" />
+		<method name="setOrientation(II)V" />
+		<method name="setPosition(II)V" />
+		<method name="setSize(II)V" />
+		<method name="setTransparentRegionHint(Landroid/graphics/Region;)V" />
+		<method name="show()V" />
+		<method name="unfreeze()V" />
+		<method name="unlockCanvas(Landroid/graphics/Canvas;)V" />
+		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="FX_SURFACE_BLUR" />
+		<field name="FX_SURFACE_DIM" />
+		<field name="FX_SURFACE_MASK" />
+		<field name="FX_SURFACE_NORMAL" />
+		<field name="GPU" />
+		<field name="HARDWARE" />
+		<field name="HIDDEN" />
+		<field name="NON_PREMULTIPLIED" />
+		<field name="PUSH_BUFFERS" />
+		<field name="ROTATION_0" />
+		<field name="ROTATION_180" />
+		<field name="ROTATION_270" />
+		<field name="ROTATION_90" />
+		<field name="SECURE" />
+		<field name="SURACE_FROZEN" />
+		<field name="SURFACE_BLUR_FREEZE" />
+		<field name="SURFACE_DITHER" />
+		<field name="SURFACE_FROZEN" since="4" />
+		<field name="SURFACE_HIDDEN" />
+	</class>
+	<class name="android/view/Surface$OutOfResourcesException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/view/SurfaceHolder" since="1">
+		<method name="addCallback(Landroid/view/SurfaceHolder$Callback;)V" />
+		<method name="getSurface()Landroid/view/Surface;" />
+		<method name="getSurfaceFrame()Landroid/graphics/Rect;" />
+		<method name="isCreating()Z" />
+		<method name="lockCanvas()Landroid/graphics/Canvas;" />
+		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
+		<method name="removeCallback(Landroid/view/SurfaceHolder$Callback;)V" />
+		<method name="setFixedSize(II)V" />
+		<method name="setFormat(I)V" />
+		<method name="setKeepScreenOn(Z)V" />
+		<method name="setSizeFromLayout()V" />
+		<method name="setType(I)V" />
+		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
+		<field name="SURFACE_TYPE_GPU" />
+		<field name="SURFACE_TYPE_HARDWARE" />
+		<field name="SURFACE_TYPE_NORMAL" />
+		<field name="SURFACE_TYPE_PUSH_BUFFERS" />
+	</class>
+	<class name="android/view/SurfaceHolder$BadSurfaceTypeException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/view/SurfaceHolder$Callback" since="1">
+		<method name="surfaceChanged(Landroid/view/SurfaceHolder;III)V" />
+		<method name="surfaceCreated(Landroid/view/SurfaceHolder;)V" />
+		<method name="surfaceDestroyed(Landroid/view/SurfaceHolder;)V" />
+	</class>
+	<class name="android/view/SurfaceHolder$Callback2" since="9">
+		<implements name="android/view/SurfaceHolder$Callback" />
+		<method name="surfaceRedrawNeeded(Landroid/view/SurfaceHolder;)V" />
+	</class>
+	<class name="android/view/SurfaceView" since="1">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="gatherTransparentRegion(Landroid/graphics/Region;)Z" />
+		<method name="getHolder()Landroid/view/SurfaceHolder;" />
+		<method name="setZOrderMediaOverlay(Z)V" since="5" />
+		<method name="setZOrderOnTop(Z)V" since="5" />
+	</class>
+	<class name="android/view/TextureView" since="14">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="getBitmap()Landroid/graphics/Bitmap;" />
+		<method name="getBitmap(II)Landroid/graphics/Bitmap;" />
+		<method name="getBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;" />
+		<method name="getSurfaceTexture()Landroid/graphics/SurfaceTexture;" />
+		<method name="getSurfaceTextureListener()Landroid/view/TextureView$SurfaceTextureListener;" />
+		<method name="getTransform(Landroid/graphics/Matrix;)Landroid/graphics/Matrix;" />
+		<method name="isAvailable()Z" />
+		<method name="lockCanvas()Landroid/graphics/Canvas;" />
+		<method name="lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;" />
+		<method name="onDraw(Landroid/graphics/Canvas;)V" />
+		<method name="setOpaque(Z)V" />
+		<method name="setSurfaceTextureListener(Landroid/view/TextureView$SurfaceTextureListener;)V" />
+		<method name="setTransform(Landroid/graphics/Matrix;)V" />
+		<method name="unlockCanvasAndPost(Landroid/graphics/Canvas;)V" />
+	</class>
+	<class name="android/view/TextureView$SurfaceTextureListener" since="14">
+		<method name="onSurfaceTextureAvailable(Landroid/graphics/SurfaceTexture;II)V" />
+		<method name="onSurfaceTextureDestroyed(Landroid/graphics/SurfaceTexture;)Z" />
+		<method name="onSurfaceTextureSizeChanged(Landroid/graphics/SurfaceTexture;II)V" />
+		<method name="onSurfaceTextureUpdated(Landroid/graphics/SurfaceTexture;)V" />
+	</class>
+	<class name="android/view/TouchDelegate" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/graphics/Rect;Landroid/view/View;)V" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<field name="ABOVE" />
+		<field name="BELOW" />
+		<field name="TO_LEFT" />
+		<field name="TO_RIGHT" />
+	</class>
+	<class name="android/view/VelocityTracker" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addMovement(Landroid/view/MotionEvent;)V" />
+		<method name="clear()V" />
+		<method name="computeCurrentVelocity(I)V" />
+		<method name="computeCurrentVelocity(IF)V" since="4" />
+		<method name="getXVelocity()F" />
+		<method name="getXVelocity(I)F" since="8" />
+		<method name="getYVelocity()F" />
+		<method name="getYVelocity(I)F" since="8" />
+		<method name="obtain()Landroid/view/VelocityTracker;" />
+		<method name="recycle()V" />
+	</class>
+	<class name="android/view/View" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/graphics/drawable/Drawable$Callback" />
+		<implements name="android/view/KeyEvent$Callback" />
+		<implements name="android/view/accessibility/AccessibilityEventSource" since="4" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="addFocusables(Ljava/util/ArrayList;I)V" />
+		<method name="addFocusables(Ljava/util/ArrayList;II)V" since="4" />
+		<method name="addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V" since="12" />
+		<method name="addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V" since="11" />
+		<method name="addTouchables(Ljava/util/ArrayList;)V" />
+		<method name="animate()Landroid/view/ViewPropertyAnimator;" since="12" />
+		<method name="awakenScrollBars()Z" since="5" />
+		<method name="awakenScrollBars(I)Z" since="5" />
+		<method name="awakenScrollBars(IZ)Z" since="5" />
+		<method name="bringToFront()V" />
+		<method name="buildDrawingCache()V" />
+		<method name="buildDrawingCache(Z)V" since="4" />
+		<method name="buildLayer()V" since="12" />
+		<method name="callOnClick()Z" since="15" />
+		<method name="canScrollHorizontally(I)Z" since="14" />
+		<method name="canScrollVertically(I)Z" since="14" />
+		<method name="cancelLongPress()V" />
+		<method name="checkInputConnectionProxy(Landroid/view/View;)Z" since="3" />
+		<method name="clearAnimation()V" />
+		<method name="clearFocus()V" />
+		<method name="combineMeasuredStates(II)I" since="11" />
+		<method name="computeHorizontalScrollExtent()I" />
+		<method name="computeHorizontalScrollOffset()I" />
+		<method name="computeHorizontalScrollRange()I" />
+		<method name="computeScroll()V" />
+		<method name="computeVerticalScrollExtent()I" />
+		<method name="computeVerticalScrollOffset()I" />
+		<method name="computeVerticalScrollRange()I" />
+		<method name="createAccessibilityNodeInfo()Landroid/view/accessibility/AccessibilityNodeInfo;" since="14" />
+		<method name="createContextMenu(Landroid/view/ContextMenu;)V" />
+		<method name="destroyDrawingCache()V" />
+		<method name="dispatchConfigurationChanged(Landroid/content/res/Configuration;)V" since="8" />
+		<method name="dispatchDisplayHint(I)V" since="8" />
+		<method name="dispatchDragEvent(Landroid/view/DragEvent;)Z" since="11" />
+		<method name="dispatchDraw(Landroid/graphics/Canvas;)V" />
+		<method name="dispatchGenericFocusedEvent(Landroid/view/MotionEvent;)Z" since="14" />
+		<method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="dispatchGenericPointerEvent(Landroid/view/MotionEvent;)Z" since="14" />
+		<method name="dispatchHoverEvent(Landroid/view/MotionEvent;)Z" since="14" />
+		<method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z" since="3" />
+		<method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4" />
+		<method name="dispatchRestoreInstanceState(Landroid/util/SparseArray;)V" />
+		<method name="dispatchSaveInstanceState(Landroid/util/SparseArray;)V" />
+		<method name="dispatchSetActivated(Z)V" since="11" />
+		<method name="dispatchSetPressed(Z)V" />
+		<method name="dispatchSetSelected(Z)V" />
+		<method name="dispatchSystemUiVisibilityChanged(I)V" since="11" />
+		<method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="dispatchUnhandledMove(Landroid/view/View;I)Z" />
+		<method name="dispatchVisibilityChanged(Landroid/view/View;I)V" since="8" />
+		<method name="dispatchWindowFocusChanged(Z)V" />
+		<method name="dispatchWindowVisibilityChanged(I)V" />
+		<method name="draw(Landroid/graphics/Canvas;)V" />
+		<method name="drawableStateChanged()V" />
+		<method name="findFocus()Landroid/view/View;" />
+		<method name="findViewById(I)Landroid/view/View;" />
+		<method name="findViewWithTag(Ljava/lang/Object;)Landroid/view/View;" />
+		<method name="findViewsWithText(Ljava/util/ArrayList;Ljava/lang/CharSequence;I)V" since="14" />
+		<method name="fitSystemWindows(Landroid/graphics/Rect;)Z" />
+		<method name="fitsSystemWindows()Z" since="14" />
+		<method name="focusSearch(I)Landroid/view/View;" />
+		<method name="forceLayout()V" />
+		<method name="getAlpha()F" since="11" />
+		<method name="getAnimation()Landroid/view/animation/Animation;" />
+		<method name="getApplicationWindowToken()Landroid/os/IBinder;" />
+		<method name="getBackground()Landroid/graphics/drawable/Drawable;" />
+		<method name="getBaseline()I" />
+		<method name="getBottom()I" />
+		<method name="getBottomFadingEdgeStrength()F" />
+		<method name="getBottomPaddingOffset()I" since="2" />
+		<method name="getContentDescription()Ljava/lang/CharSequence;" since="4" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getContextMenuInfo()Landroid/view/ContextMenu$ContextMenuInfo;" />
+		<method name="getDefaultSize(II)I" />
+		<method name="getDrawableState()[I" />
+		<method name="getDrawingCache()Landroid/graphics/Bitmap;" />
+		<method name="getDrawingCache(Z)Landroid/graphics/Bitmap;" since="4" />
+		<method name="getDrawingCacheBackgroundColor()I" />
+		<method name="getDrawingCacheQuality()I" />
+		<method name="getDrawingRect(Landroid/graphics/Rect;)V" />
+		<method name="getDrawingTime()J" />
+		<method name="getFilterTouchesWhenObscured()Z" since="9" />
+		<method name="getFocusables(I)Ljava/util/ArrayList;" />
+		<method name="getFocusedRect(Landroid/graphics/Rect;)V" />
+		<method name="getGlobalVisibleRect(Landroid/graphics/Rect;)Z" />
+		<method name="getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
+		<method name="getHandler()Landroid/os/Handler;" />
+		<method name="getHeight()I" />
+		<method name="getHitRect(Landroid/graphics/Rect;)V" />
+		<method name="getHorizontalFadingEdgeLength()I" />
+		<method name="getHorizontalScrollbarHeight()I" />
+		<method name="getId()I" />
+		<method name="getKeepScreenOn()Z" />
+		<method name="getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState;" since="5" />
+		<method name="getLayerType()I" since="11" />
+		<method name="getLayoutParams()Landroid/view/ViewGroup$LayoutParams;" />
+		<method name="getLeft()I" />
+		<method name="getLeftFadingEdgeStrength()F" />
+		<method name="getLeftPaddingOffset()I" since="2" />
+		<method name="getLocalVisibleRect(Landroid/graphics/Rect;)Z" />
+		<method name="getLocationInWindow([I)V" />
+		<method name="getLocationOnScreen([I)V" />
+		<method name="getMatrix()Landroid/graphics/Matrix;" since="11" />
+		<method name="getMeasuredHeight()I" />
+		<method name="getMeasuredHeightAndState()I" since="11" />
+		<method name="getMeasuredState()I" since="11" />
+		<method name="getMeasuredWidth()I" />
+		<method name="getMeasuredWidthAndState()I" since="11" />
+		<method name="getNextFocusDownId()I" />
+		<method name="getNextFocusForwardId()I" since="11" />
+		<method name="getNextFocusLeftId()I" />
+		<method name="getNextFocusRightId()I" />
+		<method name="getNextFocusUpId()I" />
+		<method name="getOnFocusChangeListener()Landroid/view/View$OnFocusChangeListener;" />
+		<method name="getOverScrollMode()I" since="9" />
+		<method name="getPaddingBottom()I" />
+		<method name="getPaddingLeft()I" />
+		<method name="getPaddingRight()I" />
+		<method name="getPaddingTop()I" />
+		<method name="getParent()Landroid/view/ViewParent;" />
+		<method name="getPivotX()F" since="11" />
+		<method name="getPivotY()F" since="11" />
+		<method name="getResources()Landroid/content/res/Resources;" />
+		<method name="getRight()I" />
+		<method name="getRightFadingEdgeStrength()F" />
+		<method name="getRightPaddingOffset()I" since="2" />
+		<method name="getRootView()Landroid/view/View;" />
+		<method name="getRotation()F" since="11" />
+		<method name="getRotationX()F" since="11" />
+		<method name="getRotationY()F" since="11" />
+		<method name="getScaleX()F" since="11" />
+		<method name="getScaleY()F" since="11" />
+		<method name="getScrollBarStyle()I" />
+		<method name="getScrollX()I" />
+		<method name="getScrollY()I" />
+		<method name="getSolidColor()I" />
+		<method name="getSuggestedMinimumHeight()I" />
+		<method name="getSuggestedMinimumWidth()I" />
+		<method name="getSystemUiVisibility()I" since="11" />
+		<method name="getTag()Ljava/lang/Object;" />
+		<method name="getTag(I)Ljava/lang/Object;" since="4" />
+		<method name="getTop()I" />
+		<method name="getTopFadingEdgeStrength()F" />
+		<method name="getTopPaddingOffset()I" since="2" />
+		<method name="getTouchDelegate()Landroid/view/TouchDelegate;" />
+		<method name="getTouchables()Ljava/util/ArrayList;" />
+		<method name="getTranslationX()F" since="11" />
+		<method name="getTranslationY()F" since="11" />
+		<method name="getVerticalFadingEdgeLength()I" />
+		<method name="getVerticalScrollbarPosition()I" since="11" />
+		<method name="getVerticalScrollbarWidth()I" />
+		<method name="getViewTreeObserver()Landroid/view/ViewTreeObserver;" />
+		<method name="getVisibility()I" />
+		<method name="getWidth()I" />
+		<method name="getWindowAttachCount()I" />
+		<method name="getWindowToken()Landroid/os/IBinder;" />
+		<method name="getWindowVisibility()I" />
+		<method name="getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V" since="3" />
+		<method name="getX()F" since="11" />
+		<method name="getY()F" since="11" />
+		<method name="hasFocus()Z" />
+		<method name="hasFocusable()Z" />
+		<method name="hasOnClickListeners()Z" since="15" />
+		<method name="hasWindowFocus()Z" />
+		<method name="inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="initializeFadingEdge(Landroid/content/res/TypedArray;)V" />
+		<method name="initializeScrollbars(Landroid/content/res/TypedArray;)V" />
+		<method name="invalidate()V" />
+		<method name="invalidate(IIII)V" />
+		<method name="invalidate(Landroid/graphics/Rect;)V" />
+		<method name="invalidateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="isActivated()Z" since="11" />
+		<method name="isClickable()Z" />
+		<method name="isDirty()Z" since="11" />
+		<method name="isDrawingCacheEnabled()Z" />
+		<method name="isDuplicateParentStateEnabled()Z" />
+		<method name="isEnabled()Z" />
+		<method name="isFocusable()Z" />
+		<method name="isFocusableInTouchMode()Z" />
+		<method name="isFocused()Z" />
+		<method name="isHapticFeedbackEnabled()Z" since="3" />
+		<method name="isHardwareAccelerated()Z" since="11" />
+		<method name="isHorizontalFadingEdgeEnabled()Z" />
+		<method name="isHorizontalScrollBarEnabled()Z" />
+		<method name="isHovered()Z" since="14" />
+		<method name="isInEditMode()Z" since="3" />
+		<method name="isInTouchMode()Z" />
+		<method name="isLayoutRequested()Z" />
+		<method name="isLongClickable()Z" />
+		<method name="isOpaque()Z" since="7" />
+		<method name="isPaddingOffsetRequired()Z" since="2" />
+		<method name="isPressed()Z" />
+		<method name="isSaveEnabled()Z" />
+		<method name="isSaveFromParentEnabled()Z" since="11" />
+		<method name="isScrollbarFadingEnabled()Z" since="5" />
+		<method name="isSelected()Z" />
+		<method name="isShown()Z" />
+		<method name="isSoundEffectsEnabled()Z" />
+		<method name="isVerticalFadingEdgeEnabled()Z" />
+		<method name="isVerticalScrollBarEnabled()Z" />
+		<method name="jumpDrawablesToCurrentState()V" since="11" />
+		<method name="layout(IIII)V" />
+		<method name="measure(II)V" />
+		<method name="mergeDrawableStates([I[I)[I" />
+		<method name="offsetLeftAndRight(I)V" />
+		<method name="offsetTopAndBottom(I)V" />
+		<method name="onAnimationEnd()V" />
+		<method name="onAnimationStart()V" />
+		<method name="onAttachedToWindow()V" />
+		<method name="onCheckIsTextEditor()Z" since="3" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" since="8" />
+		<method name="onCreateContextMenu(Landroid/view/ContextMenu;)V" />
+		<method name="onCreateDrawableState(I)[I" />
+		<method name="onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;" since="3" />
+		<method name="onDetachedFromWindow()V" />
+		<method name="onDisplayHint(I)V" since="8" />
+		<method name="onDragEvent(Landroid/view/DragEvent;)Z" since="11" />
+		<method name="onDraw(Landroid/graphics/Canvas;)V" />
+		<method name="onDrawScrollBars(Landroid/graphics/Canvas;)V" since="7" />
+		<method name="onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z" since="9" />
+		<method name="onFinishInflate()V" />
+		<method name="onFinishTemporaryDetach()V" since="3" />
+		<method name="onFocusChanged(ZILandroid/graphics/Rect;)V" />
+		<method name="onGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="onHoverChanged(Z)V" since="14" />
+		<method name="onHoverEvent(Landroid/view/MotionEvent;)Z" since="14" />
+		<method name="onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" since="14" />
+		<method name="onInitializeAccessibilityNodeInfo(Landroid/view/accessibility/AccessibilityNodeInfo;)V" since="14" />
+		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyLongPress(ILandroid/view/KeyEvent;)Z" since="5" />
+		<method name="onKeyMultiple(IILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z" since="3" />
+		<method name="onKeyShortcut(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="onMeasure(II)V" />
+		<method name="onOverScrolled(IIZZ)V" since="9" />
+		<method name="onPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" since="14" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
+		<method name="onScrollChanged(IIII)V" />
+		<method name="onSetAlpha(I)Z" />
+		<method name="onSizeChanged(IIII)V" />
+		<method name="onStartTemporaryDetach()V" since="3" />
+		<method name="onTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onVisibilityChanged(Landroid/view/View;I)V" since="8" />
+		<method name="onWindowFocusChanged(Z)V" />
+		<method name="onWindowVisibilityChanged(I)V" />
+		<method name="overScrollBy(IIIIIIIIZ)Z" since="9" />
+		<method name="performClick()Z" />
+		<method name="performHapticFeedback(I)Z" since="3" />
+		<method name="performHapticFeedback(II)Z" since="3" />
+		<method name="performLongClick()Z" />
+		<method name="playSoundEffect(I)V" />
+		<method name="post(Ljava/lang/Runnable;)Z" />
+		<method name="postDelayed(Ljava/lang/Runnable;J)Z" />
+		<method name="postInvalidate()V" />
+		<method name="postInvalidate(IIII)V" />
+		<method name="postInvalidateDelayed(J)V" />
+		<method name="postInvalidateDelayed(JIIII)V" />
+		<method name="refreshDrawableState()V" />
+		<method name="removeCallbacks(Ljava/lang/Runnable;)Z" />
+		<method name="removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V" since="12" />
+		<method name="removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V" since="11" />
+		<method name="requestFocus()Z" />
+		<method name="requestFocus(I)Z" />
+		<method name="requestFocus(ILandroid/graphics/Rect;)Z" />
+		<method name="requestFocusFromTouch()Z" />
+		<method name="requestLayout()V" />
+		<method name="requestRectangleOnScreen(Landroid/graphics/Rect;)Z" />
+		<method name="requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z" />
+		<method name="resolveSize(II)I" />
+		<method name="resolveSizeAndState(III)I" since="11" />
+		<method name="restoreHierarchyState(Landroid/util/SparseArray;)V" />
+		<method name="saveHierarchyState(Landroid/util/SparseArray;)V" />
+		<method name="scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V" />
+		<method name="scrollBy(II)V" />
+		<method name="scrollTo(II)V" />
+		<method name="sendAccessibilityEvent(I)V" since="4" />
+		<method name="sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V" since="4" />
+		<method name="setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V" since="14" />
+		<method name="setActivated(Z)V" since="11" />
+		<method name="setAlpha(F)V" since="11" />
+		<method name="setAnimation(Landroid/view/animation/Animation;)V" />
+		<method name="setBackgroundColor(I)V" />
+		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setBackgroundResource(I)V" />
+		<method name="setBottom(I)V" since="11" />
+		<method name="setCameraDistance(F)V" since="12" />
+		<method name="setClickable(Z)V" />
+		<method name="setContentDescription(Ljava/lang/CharSequence;)V" since="4" />
+		<method name="setDrawingCacheBackgroundColor(I)V" />
+		<method name="setDrawingCacheEnabled(Z)V" />
+		<method name="setDrawingCacheQuality(I)V" />
+		<method name="setDuplicateParentStateEnabled(Z)V" />
+		<method name="setEnabled(Z)V" />
+		<method name="setFadingEdgeLength(I)V" />
+		<method name="setFilterTouchesWhenObscured(Z)V" since="9" />
+		<method name="setFitsSystemWindows(Z)V" since="14" />
+		<method name="setFocusable(Z)V" />
+		<method name="setFocusableInTouchMode(Z)V" />
+		<method name="setHapticFeedbackEnabled(Z)V" since="3" />
+		<method name="setHorizontalFadingEdgeEnabled(Z)V" />
+		<method name="setHorizontalScrollBarEnabled(Z)V" />
+		<method name="setHovered(Z)V" since="14" />
+		<method name="setId(I)V" />
+		<method name="setKeepScreenOn(Z)V" />
+		<method name="setLayerType(ILandroid/graphics/Paint;)V" since="11" />
+		<method name="setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="setLeft(I)V" since="11" />
+		<method name="setLongClickable(Z)V" />
+		<method name="setMeasuredDimension(II)V" />
+		<method name="setMinimumHeight(I)V" />
+		<method name="setMinimumWidth(I)V" />
+		<method name="setNextFocusDownId(I)V" />
+		<method name="setNextFocusForwardId(I)V" since="11" />
+		<method name="setNextFocusLeftId(I)V" />
+		<method name="setNextFocusRightId(I)V" />
+		<method name="setNextFocusUpId(I)V" />
+		<method name="setOnClickListener(Landroid/view/View$OnClickListener;)V" />
+		<method name="setOnCreateContextMenuListener(Landroid/view/View$OnCreateContextMenuListener;)V" />
+		<method name="setOnDragListener(Landroid/view/View$OnDragListener;)V" since="11" />
+		<method name="setOnFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V" />
+		<method name="setOnGenericMotionListener(Landroid/view/View$OnGenericMotionListener;)V" since="12" />
+		<method name="setOnHoverListener(Landroid/view/View$OnHoverListener;)V" since="14" />
+		<method name="setOnKeyListener(Landroid/view/View$OnKeyListener;)V" />
+		<method name="setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V" />
+		<method name="setOnSystemUiVisibilityChangeListener(Landroid/view/View$OnSystemUiVisibilityChangeListener;)V" since="11" />
+		<method name="setOnTouchListener(Landroid/view/View$OnTouchListener;)V" />
+		<method name="setOverScrollMode(I)V" since="9" />
+		<method name="setPadding(IIII)V" />
+		<method name="setPivotX(F)V" since="11" />
+		<method name="setPivotY(F)V" since="11" />
+		<method name="setPressed(Z)V" />
+		<method name="setRight(I)V" since="11" />
+		<method name="setRotation(F)V" since="11" />
+		<method name="setRotationX(F)V" since="11" />
+		<method name="setRotationY(F)V" since="11" />
+		<method name="setSaveEnabled(Z)V" />
+		<method name="setSaveFromParentEnabled(Z)V" since="11" />
+		<method name="setScaleX(F)V" since="11" />
+		<method name="setScaleY(F)V" since="11" />
+		<method name="setScrollBarStyle(I)V" />
+		<method name="setScrollContainer(Z)V" since="3" />
+		<method name="setScrollX(I)V" since="14" />
+		<method name="setScrollY(I)V" since="14" />
+		<method name="setScrollbarFadingEnabled(Z)V" since="5" />
+		<method name="setSelected(Z)V" />
+		<method name="setSoundEffectsEnabled(Z)V" />
+		<method name="setSystemUiVisibility(I)V" since="11" />
+		<method name="setTag(ILjava/lang/Object;)V" since="4" />
+		<method name="setTag(Ljava/lang/Object;)V" />
+		<method name="setTop(I)V" since="11" />
+		<method name="setTouchDelegate(Landroid/view/TouchDelegate;)V" />
+		<method name="setTranslationX(F)V" since="11" />
+		<method name="setTranslationY(F)V" since="11" />
+		<method name="setVerticalFadingEdgeEnabled(Z)V" />
+		<method name="setVerticalScrollBarEnabled(Z)V" />
+		<method name="setVerticalScrollbarPosition(I)V" since="11" />
+		<method name="setVisibility(I)V" />
+		<method name="setWillNotCacheDrawing(Z)V" />
+		<method name="setWillNotDraw(Z)V" />
+		<method name="setX(F)V" since="11" />
+		<method name="setY(F)V" since="11" />
+		<method name="showContextMenu()Z" />
+		<method name="startActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+		<method name="startAnimation(Landroid/view/animation/Animation;)V" />
+		<method name="startDrag(Landroid/content/ClipData;Landroid/view/View$DragShadowBuilder;Ljava/lang/Object;I)Z" since="11" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V" />
+		<method name="verifyDrawable(Landroid/graphics/drawable/Drawable;)Z" />
+		<method name="willNotCacheDrawing()Z" />
+		<method name="willNotDraw()Z" />
+		<field name="ALPHA" since="14" />
+		<field name="DRAWING_CACHE_QUALITY_AUTO" />
+		<field name="DRAWING_CACHE_QUALITY_HIGH" />
+		<field name="DRAWING_CACHE_QUALITY_LOW" />
+		<field name="EMPTY_STATE_SET" />
+		<field name="ENABLED_FOCUSED_SELECTED_STATE_SET" />
+		<field name="ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="ENABLED_FOCUSED_STATE_SET" />
+		<field name="ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="ENABLED_SELECTED_STATE_SET" />
+		<field name="ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="ENABLED_STATE_SET" />
+		<field name="ENABLED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="FIND_VIEWS_WITH_CONTENT_DESCRIPTION" since="14" />
+		<field name="FIND_VIEWS_WITH_TEXT" since="14" />
+		<field name="FOCUSABLES_ALL" since="4" />
+		<field name="FOCUSABLES_TOUCH_MODE" since="4" />
+		<field name="FOCUSED_SELECTED_STATE_SET" />
+		<field name="FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="FOCUSED_STATE_SET" />
+		<field name="FOCUSED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="FOCUS_BACKWARD" />
+		<field name="FOCUS_DOWN" />
+		<field name="FOCUS_FORWARD" />
+		<field name="FOCUS_LEFT" />
+		<field name="FOCUS_RIGHT" />
+		<field name="FOCUS_UP" />
+		<field name="GONE" />
+		<field name="HAPTIC_FEEDBACK_ENABLED" since="3" />
+		<field name="INVISIBLE" />
+		<field name="KEEP_SCREEN_ON" />
+		<field name="LAYER_TYPE_HARDWARE" since="11" />
+		<field name="LAYER_TYPE_NONE" since="11" />
+		<field name="LAYER_TYPE_SOFTWARE" since="11" />
+		<field name="MEASURED_HEIGHT_STATE_SHIFT" since="11" />
+		<field name="MEASURED_SIZE_MASK" since="11" />
+		<field name="MEASURED_STATE_MASK" since="11" />
+		<field name="MEASURED_STATE_TOO_SMALL" since="11" />
+		<field name="NO_ID" />
+		<field name="OVER_SCROLL_ALWAYS" since="9" />
+		<field name="OVER_SCROLL_IF_CONTENT_SCROLLS" since="9" />
+		<field name="OVER_SCROLL_NEVER" since="9" />
+		<field name="PRESSED_ENABLED_FOCUSED_SELECTED_STATE_SET" />
+		<field name="PRESSED_ENABLED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_ENABLED_FOCUSED_STATE_SET" />
+		<field name="PRESSED_ENABLED_FOCUSED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_ENABLED_SELECTED_STATE_SET" />
+		<field name="PRESSED_ENABLED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_ENABLED_STATE_SET" />
+		<field name="PRESSED_ENABLED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_FOCUSED_SELECTED_STATE_SET" />
+		<field name="PRESSED_FOCUSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_FOCUSED_STATE_SET" />
+		<field name="PRESSED_FOCUSED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_SELECTED_STATE_SET" />
+		<field name="PRESSED_SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="PRESSED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="ROTATION" since="14" />
+		<field name="ROTATION_X" since="14" />
+		<field name="ROTATION_Y" since="14" />
+		<field name="SCALE_X" since="14" />
+		<field name="SCALE_Y" since="14" />
+		<field name="SCROLLBARS_INSIDE_INSET" />
+		<field name="SCROLLBARS_INSIDE_OVERLAY" />
+		<field name="SCROLLBARS_OUTSIDE_INSET" />
+		<field name="SCROLLBARS_OUTSIDE_OVERLAY" />
+		<field name="SCROLLBAR_POSITION_DEFAULT" since="11" />
+		<field name="SCROLLBAR_POSITION_LEFT" since="11" />
+		<field name="SCROLLBAR_POSITION_RIGHT" since="11" />
+		<field name="SELECTED_STATE_SET" />
+		<field name="SELECTED_WINDOW_FOCUSED_STATE_SET" />
+		<field name="SOUND_EFFECTS_ENABLED" />
+		<field name="STATUS_BAR_HIDDEN" since="11" />
+		<field name="STATUS_BAR_VISIBLE" since="11" />
+		<field name="SYSTEM_UI_FLAG_HIDE_NAVIGATION" since="14" />
+		<field name="SYSTEM_UI_FLAG_LOW_PROFILE" since="14" />
+		<field name="SYSTEM_UI_FLAG_VISIBLE" since="14" />
+		<field name="TRANSLATION_X" since="14" />
+		<field name="TRANSLATION_Y" since="14" />
+		<field name="VIEW_LOG_TAG" />
+		<field name="VISIBLE" />
+		<field name="WINDOW_FOCUSED_STATE_SET" />
+		<field name="X" since="14" />
+		<field name="Y" since="14" />
+	</class>
+	<class name="android/view/View$AccessibilityDelegate" since="14">
+		<method name="&lt;init>()V" />
+		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" />
+		<method name="onInitializeAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V" />
+		<method name="onInitializeAccessibilityNodeInfo(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V" />
+		<method name="onPopulateAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V" />
+		<method name="onRequestSendAccessibilityEvent(Landroid/view/ViewGroup;Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" />
+		<method name="sendAccessibilityEvent(Landroid/view/View;I)V" />
+		<method name="sendAccessibilityEventUnchecked(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)V" />
+	</class>
+	<class name="android/view/View$BaseSavedState" since="1">
+		<extends name="android/view/AbsSavedState" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Landroid/os/Parcelable;)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/View$DragShadowBuilder" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/view/View;)V" />
+		<method name="getView()Landroid/view/View;" />
+		<method name="onDrawShadow(Landroid/graphics/Canvas;)V" />
+		<method name="onProvideShadowMetrics(Landroid/graphics/Point;Landroid/graphics/Point;)V" />
+	</class>
+	<class name="android/view/View$MeasureSpec" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getMode(I)I" />
+		<method name="getSize(I)I" />
+		<method name="makeMeasureSpec(II)I" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<field name="AT_MOST" />
+		<field name="EXACTLY" />
+		<field name="UNSPECIFIED" />
+	</class>
+	<class name="android/view/View$OnAttachStateChangeListener" since="12">
+		<method name="onViewAttachedToWindow(Landroid/view/View;)V" />
+		<method name="onViewDetachedFromWindow(Landroid/view/View;)V" />
+	</class>
+	<class name="android/view/View$OnClickListener" since="1">
+		<method name="onClick(Landroid/view/View;)V" />
+	</class>
+	<class name="android/view/View$OnCreateContextMenuListener" since="1">
+		<method name="onCreateContextMenu(Landroid/view/ContextMenu;Landroid/view/View;Landroid/view/ContextMenu$ContextMenuInfo;)V" />
+	</class>
+	<class name="android/view/View$OnDragListener" since="11">
+		<method name="onDrag(Landroid/view/View;Landroid/view/DragEvent;)Z" />
+	</class>
+	<class name="android/view/View$OnFocusChangeListener" since="1">
+		<method name="onFocusChange(Landroid/view/View;Z)V" />
+	</class>
+	<class name="android/view/View$OnGenericMotionListener" since="12">
+		<method name="onGenericMotion(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/View$OnHoverListener" since="14">
+		<method name="onHover(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/View$OnKeyListener" since="1">
+		<method name="onKey(Landroid/view/View;ILandroid/view/KeyEvent;)Z" />
+	</class>
+	<class name="android/view/View$OnLayoutChangeListener" since="11">
+		<method name="onLayoutChange(Landroid/view/View;IIIIIIII)V" />
+	</class>
+	<class name="android/view/View$OnLongClickListener" since="1">
+		<method name="onLongClick(Landroid/view/View;)Z" />
+	</class>
+	<class name="android/view/View$OnSystemUiVisibilityChangeListener" since="11">
+		<method name="onSystemUiVisibilityChange(I)V" />
+	</class>
+	<class name="android/view/View$OnTouchListener" since="1">
+		<method name="onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
+	</class>
+	<class name="android/view/ViewConfiguration" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="get(Landroid/content/Context;)Landroid/view/ViewConfiguration;" since="3" />
+		<method name="getDoubleTapTimeout()I" since="3" />
+		<method name="getEdgeSlop()I" />
+		<method name="getFadingEdgeLength()I" />
+		<method name="getGlobalActionKeyTimeout()J" />
+		<method name="getJumpTapTimeout()I" />
+		<method name="getKeyRepeatDelay()I" since="12" />
+		<method name="getKeyRepeatTimeout()I" since="12" />
+		<method name="getLongPressTimeout()I" />
+		<method name="getMaximumDrawingCacheSize()I" />
+		<method name="getMaximumFlingVelocity()I" since="4" />
+		<method name="getMinimumFlingVelocity()I" />
+		<method name="getPressedStateDuration()I" />
+		<method name="getScaledDoubleTapSlop()I" since="3" />
+		<method name="getScaledEdgeSlop()I" since="3" />
+		<method name="getScaledFadingEdgeLength()I" since="3" />
+		<method name="getScaledMaximumDrawingCacheSize()I" since="3" />
+		<method name="getScaledMaximumFlingVelocity()I" since="4" />
+		<method name="getScaledMinimumFlingVelocity()I" since="3" />
+		<method name="getScaledOverflingDistance()I" since="9" />
+		<method name="getScaledOverscrollDistance()I" since="9" />
+		<method name="getScaledPagingTouchSlop()I" since="8" />
+		<method name="getScaledScrollBarSize()I" since="3" />
+		<method name="getScaledTouchSlop()I" since="3" />
+		<method name="getScaledWindowTouchSlop()I" since="3" />
+		<method name="getScrollBarFadeDuration()I" since="5" />
+		<method name="getScrollBarSize()I" />
+		<method name="getScrollDefaultDelay()I" since="5" />
+		<method name="getScrollFriction()F" />
+		<method name="getTapTimeout()I" />
+		<method name="getTouchSlop()I" />
+		<method name="getWindowTouchSlop()I" />
+		<method name="getZoomControlsTimeout()J" />
+		<method name="hasPermanentMenuKey()Z" since="14" />
+	</class>
+	<class name="android/view/ViewDebug" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="dumpCapturedView(Ljava/lang/String;Ljava/lang/Object;)V" since="3" />
+		<method name="startHierarchyTracing(Ljava/lang/String;Landroid/view/View;)V" />
+		<method name="startRecyclerTracing(Ljava/lang/String;Landroid/view/View;)V" />
+		<method name="stopHierarchyTracing()V" />
+		<method name="stopRecyclerTracing()V" />
+		<method name="trace(Landroid/view/View;Landroid/view/ViewDebug$HierarchyTraceType;)V" />
+		<method name="trace(Landroid/view/View;Landroid/view/ViewDebug$RecyclerTraceType;[I)V" />
+		<field name="TRACE_HIERARCHY" />
+		<field name="TRACE_RECYCLER" />
+	</class>
+	<class name="android/view/ViewDebug$CapturedViewProperty" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/view/ViewDebug$ExportedProperty" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/view/ViewDebug$FlagToString" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/view/ViewDebug$HierarchyTraceType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/view/ViewDebug$HierarchyTraceType;" />
+		<method name="values()[Landroid/view/ViewDebug$HierarchyTraceType;" />
+		<field name="BUILD_CACHE" />
+		<field name="DRAW" />
+		<field name="INVALIDATE" />
+		<field name="INVALIDATE_CHILD" />
+		<field name="INVALIDATE_CHILD_IN_PARENT" />
+		<field name="ON_LAYOUT" />
+		<field name="ON_MEASURE" />
+		<field name="REQUEST_LAYOUT" />
+	</class>
+	<class name="android/view/ViewDebug$IntToString" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/view/ViewDebug$RecyclerTraceType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/view/ViewDebug$RecyclerTraceType;" />
+		<method name="values()[Landroid/view/ViewDebug$RecyclerTraceType;" />
+		<field name="BIND_VIEW" />
+		<field name="MOVE_FROM_ACTIVE_TO_SCRAP_HEAP" />
+		<field name="MOVE_TO_ACTIVE_HEAP" />
+		<field name="MOVE_TO_SCRAP_HEAP" />
+		<field name="NEW_VIEW" />
+		<field name="RECYCLE_FROM_ACTIVE_HEAP" />
+		<field name="RECYCLE_FROM_SCRAP_HEAP" />
+	</class>
+	<class name="android/view/ViewGroup" since="1">
+		<extends name="android/view/View" />
+		<implements name="android/view/ViewManager" />
+		<implements name="android/view/ViewParent" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="addStatesFromChildren()Z" />
+		<method name="addView(Landroid/view/View;)V" />
+		<method name="addView(Landroid/view/View;I)V" />
+		<method name="addView(Landroid/view/View;II)V" />
+		<method name="addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z" />
+		<method name="addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z" />
+		<method name="attachLayoutAnimationParameters(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;II)V" />
+		<method name="attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="bringChildToFront(Landroid/view/View;)V" />
+		<method name="canAnimate()Z" />
+		<method name="checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z" />
+		<method name="childDrawableStateChanged(Landroid/view/View;)V" />
+		<method name="cleanupLayoutState(Landroid/view/View;)V" />
+		<method name="clearChildFocus(Landroid/view/View;)V" />
+		<method name="clearDisappearingChildren()V" />
+		<method name="debug(I)V" />
+		<method name="detachAllViewsFromParent()V" />
+		<method name="detachViewFromParent(I)V" />
+		<method name="detachViewFromParent(Landroid/view/View;)V" />
+		<method name="detachViewsFromParent(II)V" />
+		<method name="dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V" />
+		<method name="dispatchSetActivated(Z)V" since="11" />
+		<method name="dispatchSetSelected(Z)V" />
+		<method name="dispatchThawSelfOnly(Landroid/util/SparseArray;)V" />
+		<method name="drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z" />
+		<method name="endViewTransition(Landroid/view/View;)V" since="11" />
+		<method name="focusSearch(Landroid/view/View;I)Landroid/view/View;" />
+		<method name="focusableViewAvailable(Landroid/view/View;)V" />
+		<method name="gatherTransparentRegion(Landroid/graphics/Region;)Z" />
+		<method name="generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;" />
+		<method name="generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;" />
+		<method name="generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams;" />
+		<method name="getChildAt(I)Landroid/view/View;" />
+		<method name="getChildCount()I" />
+		<method name="getChildDrawingOrder(II)I" />
+		<method name="getChildMeasureSpec(III)I" />
+		<method name="getChildStaticTransformation(Landroid/view/View;Landroid/view/animation/Transformation;)Z" />
+		<method name="getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
+		<method name="getDescendantFocusability()I" />
+		<method name="getFocusedChild()Landroid/view/View;" />
+		<method name="getLayoutAnimation()Landroid/view/animation/LayoutAnimationController;" />
+		<method name="getLayoutAnimationListener()Landroid/view/animation/Animation$AnimationListener;" />
+		<method name="getLayoutTransition()Landroid/animation/LayoutTransition;" since="11" />
+		<method name="getPersistentDrawingCache()I" />
+		<method name="indexOfChild(Landroid/view/View;)I" />
+		<method name="invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V" />
+		<method name="invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;" />
+		<method name="isAlwaysDrawnWithCacheEnabled()Z" />
+		<method name="isAnimationCacheEnabled()Z" />
+		<method name="isChildrenDrawingOrderEnabled()Z" since="7" />
+		<method name="isChildrenDrawnWithCacheEnabled()Z" />
+		<method name="isMotionEventSplittingEnabled()Z" since="11" />
+		<method name="layout(IIII)V" since="11" />
+		<method name="measureChild(Landroid/view/View;II)V" />
+		<method name="measureChildWithMargins(Landroid/view/View;IIII)V" />
+		<method name="measureChildren(II)V" />
+		<method name="offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V" />
+		<method name="offsetRectIntoDescendantCoords(Landroid/view/View;Landroid/graphics/Rect;)V" />
+		<method name="onInterceptHoverEvent(Landroid/view/MotionEvent;)Z" since="14" />
+		<method name="onInterceptTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z" />
+		<method name="onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
+		<method name="recomputeViewAttributes(Landroid/view/View;)V" />
+		<method name="removeAllViews()V" />
+		<method name="removeAllViewsInLayout()V" />
+		<method name="removeDetachedView(Landroid/view/View;Z)V" />
+		<method name="removeView(Landroid/view/View;)V" />
+		<method name="removeViewAt(I)V" />
+		<method name="removeViewInLayout(Landroid/view/View;)V" />
+		<method name="removeViews(II)V" />
+		<method name="removeViewsInLayout(II)V" />
+		<method name="requestChildFocus(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z" />
+		<method name="requestDisallowInterceptTouchEvent(Z)V" />
+		<method name="requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
+		<method name="requestTransparentRegion(Landroid/view/View;)V" />
+		<method name="resetResolvedLayoutDirection()V" since="14" />
+		<method name="resetResolvedTextDirection()V" since="14" />
+		<method name="scheduleLayoutAnimation()V" />
+		<method name="setAddStatesFromChildren(Z)V" />
+		<method name="setAlwaysDrawnWithCacheEnabled(Z)V" />
+		<method name="setAnimationCacheEnabled(Z)V" />
+		<method name="setChildrenDrawingCacheEnabled(Z)V" />
+		<method name="setChildrenDrawingOrderEnabled(Z)V" since="7" />
+		<method name="setChildrenDrawnWithCacheEnabled(Z)V" />
+		<method name="setClipChildren(Z)V" />
+		<method name="setClipToPadding(Z)V" />
+		<method name="setDescendantFocusability(I)V" />
+		<method name="setLayoutAnimation(Landroid/view/animation/LayoutAnimationController;)V" />
+		<method name="setLayoutAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V" />
+		<method name="setLayoutTransition(Landroid/animation/LayoutTransition;)V" since="11" />
+		<method name="setMotionEventSplittingEnabled(Z)V" since="11" />
+		<method name="setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V" />
+		<method name="setPersistentDrawingCache(I)V" />
+		<method name="setStaticTransformationsEnabled(Z)V" since="3" />
+		<method name="shouldDelayChildPressedState()Z" since="14" />
+		<method name="showContextMenuForChild(Landroid/view/View;)Z" />
+		<method name="startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+		<method name="startLayoutAnimation()V" />
+		<method name="startViewTransition(Landroid/view/View;)V" since="11" />
+		<method name="updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<field name="CLIP_TO_PADDING_MASK" />
+		<field name="FLAG_USE_CHILD_DRAWING_ORDER" />
+		<field name="FOCUS_AFTER_DESCENDANTS" />
+		<field name="FOCUS_BEFORE_DESCENDANTS" />
+		<field name="FOCUS_BLOCK_DESCENDANTS" />
+		<field name="PERSISTENT_ALL_CACHES" />
+		<field name="PERSISTENT_ANIMATION_CACHE" />
+		<field name="PERSISTENT_NO_CACHE" />
+		<field name="PERSISTENT_SCROLLING_CACHE" />
+	</class>
+	<class name="android/view/ViewGroup$LayoutParams" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="setBaseAttributes(Landroid/content/res/TypedArray;II)V" />
+		<field name="FILL_PARENT" />
+		<field name="MATCH_PARENT" since="8" />
+		<field name="WRAP_CONTENT" />
+		<field name="height" />
+		<field name="layoutAnimationParameters" />
+		<field name="width" />
+	</class>
+	<class name="android/view/ViewGroup$MarginLayoutParams" since="1">
+		<extends name="android/view/ViewGroup$LayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+		<method name="setMargins(IIII)V" />
+		<field name="bottomMargin" />
+		<field name="leftMargin" />
+		<field name="rightMargin" />
+		<field name="topMargin" />
+	</class>
+	<class name="android/view/ViewGroup$OnHierarchyChangeListener" since="1">
+		<method name="onChildViewAdded(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V" />
+	</class>
+	<class name="android/view/ViewManager" since="1">
+		<method name="addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="removeView(Landroid/view/View;)V" />
+		<method name="updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+	</class>
+	<class name="android/view/ViewParent" since="1">
+		<method name="bringChildToFront(Landroid/view/View;)V" />
+		<method name="childDrawableStateChanged(Landroid/view/View;)V" />
+		<method name="clearChildFocus(Landroid/view/View;)V" />
+		<method name="createContextMenu(Landroid/view/ContextMenu;)V" />
+		<method name="focusSearch(Landroid/view/View;I)Landroid/view/View;" />
+		<method name="focusableViewAvailable(Landroid/view/View;)V" />
+		<method name="getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z" />
+		<method name="getParent()Landroid/view/ViewParent;" />
+		<method name="invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V" />
+		<method name="invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;" />
+		<method name="isLayoutRequested()Z" />
+		<method name="recomputeViewAttributes(Landroid/view/View;)V" />
+		<method name="requestChildFocus(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z" since="3" />
+		<method name="requestDisallowInterceptTouchEvent(Z)V" />
+		<method name="requestLayout()V" />
+		<method name="requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z" since="14" />
+		<method name="requestTransparentRegion(Landroid/view/View;)V" />
+		<method name="showContextMenuForChild(Landroid/view/View;)Z" />
+		<method name="startActionModeForChild(Landroid/view/View;Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+	</class>
+	<class name="android/view/ViewPropertyAnimator" since="12">
+		<extends name="java/lang/Object" />
+		<method name="alpha(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="alphaBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="cancel()V" since="14" />
+		<method name="getDuration()J" since="14" />
+		<method name="getStartDelay()J" since="14" />
+		<method name="rotation(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="rotationBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="rotationX(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="rotationXBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="rotationY(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="rotationYBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="scaleX(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="scaleXBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="scaleY(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="scaleYBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="setDuration(J)Landroid/view/ViewPropertyAnimator;" />
+		<method name="setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/view/ViewPropertyAnimator;" />
+		<method name="setListener(Landroid/animation/Animator$AnimatorListener;)Landroid/view/ViewPropertyAnimator;" />
+		<method name="setStartDelay(J)Landroid/view/ViewPropertyAnimator;" since="14" />
+		<method name="start()V" since="14" />
+		<method name="translationX(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="translationXBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="translationY(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="translationYBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="x(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="xBy(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="y(F)Landroid/view/ViewPropertyAnimator;" />
+		<method name="yBy(F)Landroid/view/ViewPropertyAnimator;" />
+	</class>
+	<class name="android/view/ViewStub" since="1">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getInflatedId()I" />
+		<method name="getLayoutResource()I" />
+		<method name="inflate()Landroid/view/View;" />
+		<method name="setInflatedId(I)V" />
+		<method name="setLayoutResource(I)V" />
+		<method name="setOnInflateListener(Landroid/view/ViewStub$OnInflateListener;)V" />
+	</class>
+	<class name="android/view/ViewStub$OnInflateListener" since="1">
+		<method name="onInflate(Landroid/view/ViewStub;Landroid/view/View;)V" />
+	</class>
+	<class name="android/view/ViewTreeObserver" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V" />
+		<method name="addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" />
+		<method name="addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V" />
+		<method name="addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V" since="3" />
+		<method name="addOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V" />
+		<method name="dispatchOnGlobalLayout()V" />
+		<method name="dispatchOnPreDraw()Z" />
+		<method name="isAlive()Z" />
+		<method name="removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V" />
+		<method name="removeOnGlobalFocusChangeListener(Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;)V" />
+		<method name="removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V" />
+		<method name="removeOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V" since="3" />
+		<method name="removeOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V" />
+	</class>
+	<class name="android/view/ViewTreeObserver$OnGlobalFocusChangeListener" since="1">
+		<method name="onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V" />
+	</class>
+	<class name="android/view/ViewTreeObserver$OnGlobalLayoutListener" since="1">
+		<method name="onGlobalLayout()V" />
+	</class>
+	<class name="android/view/ViewTreeObserver$OnPreDrawListener" since="1">
+		<method name="onPreDraw()Z" />
+	</class>
+	<class name="android/view/ViewTreeObserver$OnScrollChangedListener" since="3">
+		<method name="onScrollChanged()V" />
+	</class>
+	<class name="android/view/ViewTreeObserver$OnTouchModeChangeListener" since="1">
+		<method name="onTouchModeChanged(Z)V" />
+	</class>
+	<class name="android/view/Window" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="addContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="addFlags(I)V" />
+		<method name="clearFlags(I)V" />
+		<method name="closeAllPanels()V" />
+		<method name="closePanel(I)V" />
+		<method name="findViewById(I)Landroid/view/View;" />
+		<method name="getAttributes()Landroid/view/WindowManager$LayoutParams;" />
+		<method name="getCallback()Landroid/view/Window$Callback;" />
+		<method name="getContainer()Landroid/view/Window;" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getCurrentFocus()Landroid/view/View;" />
+		<method name="getDecorView()Landroid/view/View;" />
+		<method name="getFeatures()I" />
+		<method name="getForcedWindowFlags()I" />
+		<method name="getLayoutInflater()Landroid/view/LayoutInflater;" />
+		<method name="getLocalFeatures()I" />
+		<method name="getVolumeControlStream()I" />
+		<method name="getWindowManager()Landroid/view/WindowManager;" />
+		<method name="getWindowStyle()Landroid/content/res/TypedArray;" />
+		<method name="hasChildren()Z" />
+		<method name="hasFeature(I)Z" since="11" />
+		<method name="hasSoftInputMode()Z" since="3" />
+		<method name="invalidatePanelMenu(I)V" since="11" />
+		<method name="isActive()Z" />
+		<method name="isFloating()Z" />
+		<method name="isShortcutKey(ILandroid/view/KeyEvent;)Z" />
+		<method name="makeActive()V" />
+		<method name="onActive()V" />
+		<method name="onConfigurationChanged(Landroid/content/res/Configuration;)V" />
+		<method name="openPanel(ILandroid/view/KeyEvent;)V" />
+		<method name="peekDecorView()Landroid/view/View;" />
+		<method name="performContextMenuIdentifierAction(II)Z" />
+		<method name="performPanelIdentifierAction(III)Z" />
+		<method name="performPanelShortcut(IILandroid/view/KeyEvent;I)Z" />
+		<method name="requestFeature(I)Z" />
+		<method name="restoreHierarchyState(Landroid/os/Bundle;)V" />
+		<method name="saveHierarchyState()Landroid/os/Bundle;" />
+		<method name="setAttributes(Landroid/view/WindowManager$LayoutParams;)V" />
+		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setBackgroundDrawableResource(I)V" />
+		<method name="setCallback(Landroid/view/Window$Callback;)V" />
+		<method name="setChildDrawable(ILandroid/graphics/drawable/Drawable;)V" />
+		<method name="setChildInt(II)V" />
+		<method name="setContainer(Landroid/view/Window;)V" />
+		<method name="setContentView(I)V" />
+		<method name="setContentView(Landroid/view/View;)V" />
+		<method name="setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="setDefaultWindowFormat(I)V" />
+		<method name="setDimAmount(F)V" since="14" />
+		<method name="setFeatureDrawable(ILandroid/graphics/drawable/Drawable;)V" />
+		<method name="setFeatureDrawableAlpha(II)V" />
+		<method name="setFeatureDrawableResource(II)V" />
+		<method name="setFeatureDrawableUri(ILandroid/net/Uri;)V" />
+		<method name="setFeatureInt(II)V" />
+		<method name="setFlags(II)V" />
+		<method name="setFormat(I)V" />
+		<method name="setGravity(I)V" />
+		<method name="setLayout(II)V" />
+		<method name="setSoftInputMode(I)V" since="3" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+		<method name="setTitleColor(I)V" />
+		<method name="setType(I)V" />
+		<method name="setUiOptions(I)V" since="14" />
+		<method name="setUiOptions(II)V" since="14" />
+		<method name="setVolumeControlStream(I)V" />
+		<method name="setWindowAnimations(I)V" since="3" />
+		<method name="setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;)V" />
+		<method name="setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;Z)V" since="11" />
+		<method name="superDispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="superDispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="superDispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11" />
+		<method name="superDispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="superDispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="takeInputQueue(Landroid/view/InputQueue$Callback;)V" since="9" />
+		<method name="takeKeyEvents(Z)V" />
+		<method name="takeSurface(Landroid/view/SurfaceHolder$Callback2;)V" since="9" />
+		<method name="togglePanel(ILandroid/view/KeyEvent;)V" />
+		<field name="DEFAULT_FEATURES" />
+		<field name="FEATURE_ACTION_BAR" since="11" />
+		<field name="FEATURE_ACTION_BAR_OVERLAY" since="11" />
+		<field name="FEATURE_ACTION_MODE_OVERLAY" since="11" />
+		<field name="FEATURE_CONTEXT_MENU" />
+		<field name="FEATURE_CUSTOM_TITLE" />
+		<field name="FEATURE_INDETERMINATE_PROGRESS" />
+		<field name="FEATURE_LEFT_ICON" />
+		<field name="FEATURE_NO_TITLE" />
+		<field name="FEATURE_OPTIONS_PANEL" />
+		<field name="FEATURE_PROGRESS" />
+		<field name="FEATURE_RIGHT_ICON" />
+		<field name="ID_ANDROID_CONTENT" />
+		<field name="PROGRESS_END" />
+		<field name="PROGRESS_INDETERMINATE_OFF" />
+		<field name="PROGRESS_INDETERMINATE_ON" />
+		<field name="PROGRESS_SECONDARY_END" />
+		<field name="PROGRESS_SECONDARY_START" />
+		<field name="PROGRESS_START" />
+		<field name="PROGRESS_VISIBILITY_OFF" />
+		<field name="PROGRESS_VISIBILITY_ON" />
+	</class>
+	<class name="android/view/Window$Callback" since="1">
+		<method name="dispatchGenericMotionEvent(Landroid/view/MotionEvent;)Z" since="12" />
+		<method name="dispatchKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="dispatchKeyShortcutEvent(Landroid/view/KeyEvent;)Z" since="11" />
+		<method name="dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z" since="4" />
+		<method name="dispatchTouchEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="dispatchTrackballEvent(Landroid/view/MotionEvent;)Z" />
+		<method name="onActionModeFinished(Landroid/view/ActionMode;)V" since="11" />
+		<method name="onActionModeStarted(Landroid/view/ActionMode;)V" since="11" />
+		<method name="onAttachedToWindow()V" since="5" />
+		<method name="onContentChanged()V" />
+		<method name="onCreatePanelMenu(ILandroid/view/Menu;)Z" />
+		<method name="onCreatePanelView(I)Landroid/view/View;" />
+		<method name="onDetachedFromWindow()V" since="5" />
+		<method name="onMenuItemSelected(ILandroid/view/MenuItem;)Z" />
+		<method name="onMenuOpened(ILandroid/view/Menu;)Z" />
+		<method name="onPanelClosed(ILandroid/view/Menu;)V" />
+		<method name="onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z" />
+		<method name="onSearchRequested()Z" />
+		<method name="onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V" />
+		<method name="onWindowFocusChanged(Z)V" />
+		<method name="onWindowStartingActionMode(Landroid/view/ActionMode$Callback;)Landroid/view/ActionMode;" since="11" />
+	</class>
+	<class name="android/view/WindowManager" since="1">
+		<implements name="android/view/ViewManager" />
+		<method name="getDefaultDisplay()Landroid/view/Display;" />
+		<method name="removeViewImmediate(Landroid/view/View;)V" />
+	</class>
+	<class name="android/view/WindowManager$BadTokenException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/view/WindowManager$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$LayoutParams" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(IIIII)V" />
+		<method name="&lt;init>(IIIIIII)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="copyFrom(Landroid/view/WindowManager$LayoutParams;)I" />
+		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="describeContents()I" />
+		<method name="getTitle()Ljava/lang/CharSequence;" />
+		<method name="mayUseInputMethod(I)Z" since="3" />
+		<method name="setTitle(Ljava/lang/CharSequence;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ALPHA_CHANGED" />
+		<field name="ANIMATION_CHANGED" />
+		<field name="BRIGHTNESS_OVERRIDE_FULL" since="8" />
+		<field name="BRIGHTNESS_OVERRIDE_NONE" since="8" />
+		<field name="BRIGHTNESS_OVERRIDE_OFF" since="8" />
+		<field name="CREATOR" />
+		<field name="DIM_AMOUNT_CHANGED" />
+		<field name="FIRST_APPLICATION_WINDOW" />
+		<field name="FIRST_SUB_WINDOW" />
+		<field name="FIRST_SYSTEM_WINDOW" />
+		<field name="FLAGS_CHANGED" />
+		<field name="FLAG_ALLOW_LOCK_WHILE_SCREEN_ON" since="8" />
+		<field name="FLAG_ALT_FOCUSABLE_IM" since="3" />
+		<field name="FLAG_BLUR_BEHIND" />
+		<field name="FLAG_DIM_BEHIND" />
+		<field name="FLAG_DISMISS_KEYGUARD" since="5" />
+		<field name="FLAG_DITHER" />
+		<field name="FLAG_FORCE_NOT_FULLSCREEN" />
+		<field name="FLAG_FULLSCREEN" />
+		<field name="FLAG_HARDWARE_ACCELERATED" since="11" />
+		<field name="FLAG_IGNORE_CHEEK_PRESSES" />
+		<field name="FLAG_KEEP_SCREEN_ON" />
+		<field name="FLAG_LAYOUT_INSET_DECOR" />
+		<field name="FLAG_LAYOUT_IN_SCREEN" />
+		<field name="FLAG_LAYOUT_NO_LIMITS" />
+		<field name="FLAG_NOT_FOCUSABLE" />
+		<field name="FLAG_NOT_TOUCHABLE" />
+		<field name="FLAG_NOT_TOUCH_MODAL" />
+		<field name="FLAG_SCALED" />
+		<field name="FLAG_SECURE" />
+		<field name="FLAG_SHOW_WALLPAPER" since="5" />
+		<field name="FLAG_SHOW_WHEN_LOCKED" since="5" />
+		<field name="FLAG_SPLIT_TOUCH" since="11" />
+		<field name="FLAG_TOUCHABLE_WHEN_WAKING" />
+		<field name="FLAG_TURN_SCREEN_ON" since="5" />
+		<field name="FLAG_WATCH_OUTSIDE_TOUCH" since="3" />
+		<field name="FORMAT_CHANGED" />
+		<field name="LAST_APPLICATION_WINDOW" />
+		<field name="LAST_SUB_WINDOW" />
+		<field name="LAST_SYSTEM_WINDOW" />
+		<field name="LAYOUT_CHANGED" />
+		<field name="MEMORY_TYPE_CHANGED" />
+		<field name="MEMORY_TYPE_GPU" />
+		<field name="MEMORY_TYPE_HARDWARE" />
+		<field name="MEMORY_TYPE_NORMAL" />
+		<field name="MEMORY_TYPE_PUSH_BUFFERS" />
+		<field name="SCREEN_BRIGHTNESS_CHANGED" since="3" />
+		<field name="SCREEN_ORIENTATION_CHANGED" since="3" />
+		<field name="SOFT_INPUT_ADJUST_NOTHING" since="11" />
+		<field name="SOFT_INPUT_ADJUST_PAN" since="3" />
+		<field name="SOFT_INPUT_ADJUST_RESIZE" since="3" />
+		<field name="SOFT_INPUT_ADJUST_UNSPECIFIED" since="3" />
+		<field name="SOFT_INPUT_IS_FORWARD_NAVIGATION" since="3" />
+		<field name="SOFT_INPUT_MASK_ADJUST" since="3" />
+		<field name="SOFT_INPUT_MASK_STATE" since="3" />
+		<field name="SOFT_INPUT_MODE_CHANGED" since="3" />
+		<field name="SOFT_INPUT_STATE_ALWAYS_HIDDEN" since="3" />
+		<field name="SOFT_INPUT_STATE_ALWAYS_VISIBLE" since="3" />
+		<field name="SOFT_INPUT_STATE_HIDDEN" since="3" />
+		<field name="SOFT_INPUT_STATE_UNCHANGED" since="3" />
+		<field name="SOFT_INPUT_STATE_UNSPECIFIED" since="3" />
+		<field name="SOFT_INPUT_STATE_VISIBLE" since="3" />
+		<field name="TITLE_CHANGED" />
+		<field name="TYPE_APPLICATION" />
+		<field name="TYPE_APPLICATION_ATTACHED_DIALOG" since="3" />
+		<field name="TYPE_APPLICATION_MEDIA" />
+		<field name="TYPE_APPLICATION_PANEL" />
+		<field name="TYPE_APPLICATION_STARTING" />
+		<field name="TYPE_APPLICATION_SUB_PANEL" />
+		<field name="TYPE_BASE_APPLICATION" />
+		<field name="TYPE_CHANGED" />
+		<field name="TYPE_INPUT_METHOD" since="3" />
+		<field name="TYPE_INPUT_METHOD_DIALOG" since="3" />
+		<field name="TYPE_KEYGUARD" />
+		<field name="TYPE_KEYGUARD_DIALOG" />
+		<field name="TYPE_PHONE" />
+		<field name="TYPE_PRIORITY_PHONE" />
+		<field name="TYPE_SEARCH_BAR" />
+		<field name="TYPE_STATUS_BAR" />
+		<field name="TYPE_STATUS_BAR_PANEL" />
+		<field name="TYPE_SYSTEM_ALERT" />
+		<field name="TYPE_SYSTEM_DIALOG" />
+		<field name="TYPE_SYSTEM_ERROR" />
+		<field name="TYPE_SYSTEM_OVERLAY" />
+		<field name="TYPE_TOAST" />
+		<field name="TYPE_WALLPAPER" since="5" />
+		<field name="alpha" />
+		<field name="buttonBrightness" since="8" />
+		<field name="dimAmount" />
+		<field name="flags" />
+		<field name="format" />
+		<field name="gravity" />
+		<field name="horizontalMargin" />
+		<field name="horizontalWeight" />
+		<field name="memoryType" />
+		<field name="packageName" />
+		<field name="screenBrightness" since="3" />
+		<field name="screenOrientation" since="3" />
+		<field name="softInputMode" since="3" />
+		<field name="systemUiVisibility" since="11" />
+		<field name="token" />
+		<field name="type" />
+		<field name="verticalMargin" />
+		<field name="verticalWeight" />
+		<field name="windowAnimations" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/view/accessibility/AccessibilityEvent" since="4">
+		<extends name="java/lang/Object" />
+		<extends name="android/view/accessibility/AccessibilityRecord" since="14" />
+		<implements name="android/os/Parcelable" />
+		<method name="appendRecord(Landroid/view/accessibility/AccessibilityRecord;)V" since="14" />
+		<method name="describeContents()I" />
+		<method name="eventTypeToString(I)Ljava/lang/String;" since="14" />
+		<method name="getAddedCount()I" />
+		<method name="getBeforeText()Ljava/lang/CharSequence;" />
+		<method name="getClassName()Ljava/lang/CharSequence;" />
+		<method name="getContentDescription()Ljava/lang/CharSequence;" />
+		<method name="getCurrentItemIndex()I" />
+		<method name="getEventTime()J" />
+		<method name="getEventType()I" />
+		<method name="getFromIndex()I" />
+		<method name="getItemCount()I" />
+		<method name="getPackageName()Ljava/lang/CharSequence;" />
+		<method name="getParcelableData()Landroid/os/Parcelable;" />
+		<method name="getRecord(I)Landroid/view/accessibility/AccessibilityRecord;" since="14" />
+		<method name="getRecordCount()I" since="14" />
+		<method name="getRemovedCount()I" />
+		<method name="getText()Ljava/util/List;" />
+		<method name="initFromParcel(Landroid/os/Parcel;)V" />
+		<method name="isChecked()Z" />
+		<method name="isEnabled()Z" />
+		<method name="isFullScreen()Z" />
+		<method name="isPassword()Z" />
+		<method name="obtain()Landroid/view/accessibility/AccessibilityEvent;" />
+		<method name="obtain(I)Landroid/view/accessibility/AccessibilityEvent;" />
+		<method name="obtain(Landroid/view/accessibility/AccessibilityEvent;)Landroid/view/accessibility/AccessibilityEvent;" since="14" />
+		<method name="recycle()V" />
+		<method name="setAddedCount(I)V" />
+		<method name="setBeforeText(Ljava/lang/CharSequence;)V" />
+		<method name="setChecked(Z)V" />
+		<method name="setClassName(Ljava/lang/CharSequence;)V" />
+		<method name="setContentDescription(Ljava/lang/CharSequence;)V" />
+		<method name="setCurrentItemIndex(I)V" />
+		<method name="setEnabled(Z)V" />
+		<method name="setEventTime(J)V" />
+		<method name="setEventType(I)V" />
+		<method name="setFromIndex(I)V" />
+		<method name="setFullScreen(Z)V" />
+		<method name="setItemCount(I)V" />
+		<method name="setPackageName(Ljava/lang/CharSequence;)V" />
+		<method name="setParcelableData(Landroid/os/Parcelable;)V" />
+		<method name="setPassword(Z)V" />
+		<method name="setRemovedCount(I)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="INVALID_POSITION" />
+		<field name="MAX_TEXT_LENGTH" />
+		<field name="TYPES_ALL_MASK" />
+		<field name="TYPE_NOTIFICATION_STATE_CHANGED" />
+		<field name="TYPE_TOUCH_EXPLORATION_GESTURE_END" since="14" />
+		<field name="TYPE_TOUCH_EXPLORATION_GESTURE_START" since="14" />
+		<field name="TYPE_VIEW_CLICKED" />
+		<field name="TYPE_VIEW_FOCUSED" />
+		<field name="TYPE_VIEW_HOVER_ENTER" since="14" />
+		<field name="TYPE_VIEW_HOVER_EXIT" since="14" />
+		<field name="TYPE_VIEW_LONG_CLICKED" />
+		<field name="TYPE_VIEW_SCROLLED" since="14" />
+		<field name="TYPE_VIEW_SELECTED" />
+		<field name="TYPE_VIEW_TEXT_CHANGED" />
+		<field name="TYPE_VIEW_TEXT_SELECTION_CHANGED" since="14" />
+		<field name="TYPE_WINDOW_CONTENT_CHANGED" since="14" />
+		<field name="TYPE_WINDOW_STATE_CHANGED" />
+	</class>
+	<class name="android/view/accessibility/AccessibilityEventSource" since="4">
+		<method name="sendAccessibilityEvent(I)V" />
+		<method name="sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V" />
+	</class>
+	<class name="android/view/accessibility/AccessibilityManager" since="4">
+		<extends name="java/lang/Object" />
+		<method name="addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z" since="14" />
+		<method name="getAccessibilityServiceList()Ljava/util/List;" />
+		<method name="getEnabledAccessibilityServiceList(I)Ljava/util/List;" since="14" />
+		<method name="getInstalledAccessibilityServiceList()Ljava/util/List;" since="14" />
+		<method name="interrupt()V" />
+		<method name="isEnabled()Z" />
+		<method name="isTouchExplorationEnabled()Z" since="14" />
+		<method name="removeAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z" since="14" />
+		<method name="sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V" />
+	</class>
+	<class name="android/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener" since="14">
+		<method name="onAccessibilityStateChanged(Z)V" />
+	</class>
+	<class name="android/view/accessibility/AccessibilityNodeInfo" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="addAction(I)V" />
+		<method name="addChild(Landroid/view/View;)V" />
+		<method name="describeContents()I" />
+		<method name="findAccessibilityNodeInfosByText(Ljava/lang/String;)Ljava/util/List;" />
+		<method name="getActions()I" />
+		<method name="getBoundsInParent(Landroid/graphics/Rect;)V" />
+		<method name="getBoundsInScreen(Landroid/graphics/Rect;)V" />
+		<method name="getChild(I)Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="getChildCount()I" />
+		<method name="getClassName()Ljava/lang/CharSequence;" />
+		<method name="getContentDescription()Ljava/lang/CharSequence;" />
+		<method name="getPackageName()Ljava/lang/CharSequence;" />
+		<method name="getParent()Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="getWindowId()I" />
+		<method name="isCheckable()Z" />
+		<method name="isChecked()Z" />
+		<method name="isClickable()Z" />
+		<method name="isEnabled()Z" />
+		<method name="isFocusable()Z" />
+		<method name="isFocused()Z" />
+		<method name="isLongClickable()Z" />
+		<method name="isPassword()Z" />
+		<method name="isScrollable()Z" />
+		<method name="isSelected()Z" />
+		<method name="obtain()Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="obtain(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="obtain(Landroid/view/accessibility/AccessibilityNodeInfo;)Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="performAction(I)Z" />
+		<method name="recycle()V" />
+		<method name="setBoundsInParent(Landroid/graphics/Rect;)V" />
+		<method name="setBoundsInScreen(Landroid/graphics/Rect;)V" />
+		<method name="setCheckable(Z)V" />
+		<method name="setChecked(Z)V" />
+		<method name="setClassName(Ljava/lang/CharSequence;)V" />
+		<method name="setClickable(Z)V" />
+		<method name="setContentDescription(Ljava/lang/CharSequence;)V" />
+		<method name="setEnabled(Z)V" />
+		<method name="setFocusable(Z)V" />
+		<method name="setFocused(Z)V" />
+		<method name="setLongClickable(Z)V" />
+		<method name="setPackageName(Ljava/lang/CharSequence;)V" />
+		<method name="setParent(Landroid/view/View;)V" />
+		<method name="setPassword(Z)V" />
+		<method name="setScrollable(Z)V" />
+		<method name="setSelected(Z)V" />
+		<method name="setSource(Landroid/view/View;)V" />
+		<method name="setText(Ljava/lang/CharSequence;)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="ACTION_CLEAR_FOCUS" />
+		<field name="ACTION_CLEAR_SELECTION" />
+		<field name="ACTION_FOCUS" />
+		<field name="ACTION_SELECT" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/accessibility/AccessibilityRecord" since="14">
+		<method name="getAddedCount()I" />
+		<method name="getBeforeText()Ljava/lang/CharSequence;" />
+		<method name="getClassName()Ljava/lang/CharSequence;" />
+		<method name="getContentDescription()Ljava/lang/CharSequence;" />
+		<method name="getCurrentItemIndex()I" />
+		<method name="getFromIndex()I" />
+		<method name="getItemCount()I" />
+		<method name="getMaxScrollX()I" since="15" />
+		<method name="getMaxScrollY()I" since="15" />
+		<method name="getParcelableData()Landroid/os/Parcelable;" />
+		<method name="getRemovedCount()I" />
+		<method name="getScrollX()I" />
+		<method name="getScrollY()I" />
+		<method name="getSource()Landroid/view/accessibility/AccessibilityNodeInfo;" />
+		<method name="getText()Ljava/util/List;" />
+		<method name="getToIndex()I" />
+		<method name="getWindowId()I" />
+		<method name="isChecked()Z" />
+		<method name="isEnabled()Z" />
+		<method name="isFullScreen()Z" />
+		<method name="isPassword()Z" />
+		<method name="isScrollable()Z" />
+		<method name="obtain()Landroid/view/accessibility/AccessibilityRecord;" />
+		<method name="obtain(Landroid/view/accessibility/AccessibilityRecord;)Landroid/view/accessibility/AccessibilityRecord;" />
+		<method name="recycle()V" />
+		<method name="setAddedCount(I)V" />
+		<method name="setBeforeText(Ljava/lang/CharSequence;)V" />
+		<method name="setChecked(Z)V" />
+		<method name="setClassName(Ljava/lang/CharSequence;)V" />
+		<method name="setContentDescription(Ljava/lang/CharSequence;)V" />
+		<method name="setCurrentItemIndex(I)V" />
+		<method name="setEnabled(Z)V" />
+		<method name="setFromIndex(I)V" />
+		<method name="setFullScreen(Z)V" />
+		<method name="setItemCount(I)V" />
+		<method name="setMaxScrollX(I)V" since="15" />
+		<method name="setMaxScrollY(I)V" since="15" />
+		<method name="setParcelableData(Landroid/os/Parcelable;)V" />
+		<method name="setPassword(Z)V" />
+		<method name="setRemovedCount(I)V" />
+		<method name="setScrollX(I)V" />
+		<method name="setScrollY(I)V" />
+		<method name="setScrollable(Z)V" />
+		<method name="setSource(Landroid/view/View;)V" />
+		<method name="setToIndex(I)V" />
+	</class>
+	<class name="android/view/animation/AccelerateDecelerateInterpolator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/AccelerateInterpolator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/AlphaAnimation" since="1">
+		<extends name="android/view/animation/Animation" />
+		<method name="&lt;init>(FF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+	</class>
+	<class name="android/view/animation/Animation" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" since="3" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="applyTransformation(FLandroid/view/animation/Transformation;)V" />
+		<method name="cancel()V" since="8" />
+		<method name="computeDurationHint()J" since="3" />
+		<method name="ensureInterpolator()V" />
+		<method name="getBackgroundColor()I" since="12" />
+		<method name="getDetachWallpaper()Z" since="5" />
+		<method name="getDuration()J" />
+		<method name="getFillAfter()Z" />
+		<method name="getFillBefore()Z" />
+		<method name="getInterpolator()Landroid/view/animation/Interpolator;" />
+		<method name="getRepeatCount()I" />
+		<method name="getRepeatMode()I" />
+		<method name="getScaleFactor()F" since="11" />
+		<method name="getStartOffset()J" />
+		<method name="getStartTime()J" />
+		<method name="getTransformation(JLandroid/view/animation/Transformation;)Z" />
+		<method name="getTransformation(JLandroid/view/animation/Transformation;F)Z" since="11" />
+		<method name="getZAdjustment()I" />
+		<method name="hasEnded()Z" />
+		<method name="hasStarted()Z" />
+		<method name="initialize(IIII)V" />
+		<method name="isFillEnabled()Z" since="3" />
+		<method name="isInitialized()Z" />
+		<method name="reset()V" />
+		<method name="resolveSize(IFII)F" />
+		<method name="restrictDuration(J)V" />
+		<method name="scaleCurrentDuration(F)V" />
+		<method name="setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V" />
+		<method name="setBackgroundColor(I)V" since="12" />
+		<method name="setDetachWallpaper(Z)V" since="5" />
+		<method name="setDuration(J)V" />
+		<method name="setFillAfter(Z)V" />
+		<method name="setFillBefore(Z)V" />
+		<method name="setFillEnabled(Z)V" since="3" />
+		<method name="setInterpolator(Landroid/content/Context;I)V" />
+		<method name="setInterpolator(Landroid/view/animation/Interpolator;)V" />
+		<method name="setRepeatCount(I)V" />
+		<method name="setRepeatMode(I)V" />
+		<method name="setStartOffset(J)V" />
+		<method name="setStartTime(J)V" />
+		<method name="setZAdjustment(I)V" />
+		<method name="start()V" />
+		<method name="startNow()V" />
+		<method name="willChangeBounds()Z" />
+		<method name="willChangeTransformationMatrix()Z" />
+		<field name="ABSOLUTE" />
+		<field name="INFINITE" />
+		<field name="RELATIVE_TO_PARENT" />
+		<field name="RELATIVE_TO_SELF" />
+		<field name="RESTART" />
+		<field name="REVERSE" />
+		<field name="START_ON_FIRST_FRAME" />
+		<field name="ZORDER_BOTTOM" />
+		<field name="ZORDER_NORMAL" />
+		<field name="ZORDER_TOP" />
+	</class>
+	<class name="android/view/animation/Animation$AnimationListener" since="1">
+		<method name="onAnimationEnd(Landroid/view/animation/Animation;)V" />
+		<method name="onAnimationRepeat(Landroid/view/animation/Animation;)V" />
+		<method name="onAnimationStart(Landroid/view/animation/Animation;)V" />
+	</class>
+	<class name="android/view/animation/Animation$Description" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="type" />
+		<field name="value" />
+	</class>
+	<class name="android/view/animation/AnimationSet" since="1">
+		<extends name="android/view/animation/Animation" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="addAnimation(Landroid/view/animation/Animation;)V" />
+		<method name="getAnimations()Ljava/util/List;" />
+	</class>
+	<class name="android/view/animation/AnimationUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="currentAnimationTimeMillis()J" />
+		<method name="loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;" />
+		<method name="loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;" />
+		<method name="loadLayoutAnimation(Landroid/content/Context;I)Landroid/view/animation/LayoutAnimationController;" />
+		<method name="makeInAnimation(Landroid/content/Context;Z)Landroid/view/animation/Animation;" />
+		<method name="makeInChildBottomAnimation(Landroid/content/Context;)Landroid/view/animation/Animation;" />
+		<method name="makeOutAnimation(Landroid/content/Context;Z)Landroid/view/animation/Animation;" />
+	</class>
+	<class name="android/view/animation/AnticipateInterpolator" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/AnticipateOvershootInterpolator" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(FF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/BounceInterpolator" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/CycleInterpolator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/DecelerateInterpolator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/GridLayoutAnimationController" since="1">
+		<extends name="android/view/animation/LayoutAnimationController" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/animation/Animation;)V" />
+		<method name="&lt;init>(Landroid/view/animation/Animation;FF)V" />
+		<method name="getColumnDelay()F" />
+		<method name="getDirection()I" />
+		<method name="getDirectionPriority()I" />
+		<method name="getRowDelay()F" />
+		<method name="setColumnDelay(F)V" />
+		<method name="setDirection(I)V" />
+		<method name="setDirectionPriority(I)V" />
+		<method name="setRowDelay(F)V" />
+		<field name="DIRECTION_BOTTOM_TO_TOP" />
+		<field name="DIRECTION_HORIZONTAL_MASK" />
+		<field name="DIRECTION_LEFT_TO_RIGHT" />
+		<field name="DIRECTION_RIGHT_TO_LEFT" />
+		<field name="DIRECTION_TOP_TO_BOTTOM" />
+		<field name="DIRECTION_VERTICAL_MASK" />
+		<field name="PRIORITY_COLUMN" />
+		<field name="PRIORITY_NONE" />
+		<field name="PRIORITY_ROW" />
+	</class>
+	<class name="android/view/animation/GridLayoutAnimationController$AnimationParameters" since="1">
+		<extends name="android/view/animation/LayoutAnimationController$AnimationParameters" />
+		<method name="&lt;init>()V" />
+		<field name="column" />
+		<field name="columnsCount" />
+		<field name="row" />
+		<field name="rowsCount" />
+	</class>
+	<class name="android/view/animation/Interpolator" since="1">
+		<implements name="android/animation/TimeInterpolator" since="11" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/LayoutAnimationController" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/animation/Animation;)V" />
+		<method name="&lt;init>(Landroid/view/animation/Animation;F)V" />
+		<method name="getAnimation()Landroid/view/animation/Animation;" />
+		<method name="getAnimationForView(Landroid/view/View;)Landroid/view/animation/Animation;" />
+		<method name="getDelay()F" />
+		<method name="getDelayForView(Landroid/view/View;)J" />
+		<method name="getInterpolator()Landroid/view/animation/Interpolator;" />
+		<method name="getOrder()I" />
+		<method name="getTransformedIndex(Landroid/view/animation/LayoutAnimationController$AnimationParameters;)I" />
+		<method name="isDone()Z" />
+		<method name="setAnimation(Landroid/content/Context;I)V" />
+		<method name="setAnimation(Landroid/view/animation/Animation;)V" />
+		<method name="setDelay(F)V" />
+		<method name="setInterpolator(Landroid/content/Context;I)V" />
+		<method name="setInterpolator(Landroid/view/animation/Interpolator;)V" />
+		<method name="setOrder(I)V" />
+		<method name="start()V" />
+		<method name="willOverlap()Z" />
+		<field name="ORDER_NORMAL" />
+		<field name="ORDER_RANDOM" />
+		<field name="ORDER_REVERSE" />
+		<field name="mAnimation" />
+		<field name="mInterpolator" />
+		<field name="mRandomizer" />
+	</class>
+	<class name="android/view/animation/LayoutAnimationController$AnimationParameters" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="count" />
+		<field name="index" />
+	</class>
+	<class name="android/view/animation/LinearInterpolator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/OvershootInterpolator" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/animation/Interpolator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getInterpolation(F)F" />
+	</class>
+	<class name="android/view/animation/RotateAnimation" since="1">
+		<extends name="android/view/animation/Animation" />
+		<method name="&lt;init>(FF)V" />
+		<method name="&lt;init>(FFFF)V" />
+		<method name="&lt;init>(FFIFIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+	</class>
+	<class name="android/view/animation/ScaleAnimation" since="1">
+		<extends name="android/view/animation/Animation" />
+		<method name="&lt;init>(FFFF)V" />
+		<method name="&lt;init>(FFFFFF)V" />
+		<method name="&lt;init>(FFFFIFIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+	</class>
+	<class name="android/view/animation/Transformation" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clear()V" />
+		<method name="compose(Landroid/view/animation/Transformation;)V" />
+		<method name="getAlpha()F" />
+		<method name="getMatrix()Landroid/graphics/Matrix;" />
+		<method name="getTransformationType()I" />
+		<method name="set(Landroid/view/animation/Transformation;)V" />
+		<method name="setAlpha(F)V" />
+		<method name="setTransformationType(I)V" />
+		<method name="toShortString()Ljava/lang/String;" since="3" />
+		<field name="TYPE_ALPHA" />
+		<field name="TYPE_BOTH" />
+		<field name="TYPE_IDENTITY" />
+		<field name="TYPE_MATRIX" />
+		<field name="mAlpha" />
+		<field name="mMatrix" />
+		<field name="mTransformationType" />
+	</class>
+	<class name="android/view/animation/TranslateAnimation" since="1">
+		<extends name="android/view/animation/Animation" />
+		<method name="&lt;init>(FFFF)V" />
+		<method name="&lt;init>(IFIFIFIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+	</class>
+	<class name="android/view/inputmethod/BaseInputConnection" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/inputmethod/InputConnection" />
+		<method name="&lt;init>(Landroid/view/View;Z)V" />
+		<method name="beginBatchEdit()Z" />
+		<method name="clearMetaKeyStates(I)Z" />
+		<method name="commitCompletion(Landroid/view/inputmethod/CompletionInfo;)Z" />
+		<method name="commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)Z" since="11" />
+		<method name="commitText(Ljava/lang/CharSequence;I)Z" />
+		<method name="deleteSurroundingText(II)Z" />
+		<method name="endBatchEdit()Z" />
+		<method name="finishComposingText()Z" />
+		<method name="getComposingSpanEnd(Landroid/text/Spannable;)I" />
+		<method name="getComposingSpanStart(Landroid/text/Spannable;)I" />
+		<method name="getCursorCapsMode(I)I" />
+		<method name="getEditable()Landroid/text/Editable;" />
+		<method name="getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;I)Landroid/view/inputmethod/ExtractedText;" />
+		<method name="getSelectedText(I)Ljava/lang/CharSequence;" since="9" />
+		<method name="getTextAfterCursor(II)Ljava/lang/CharSequence;" />
+		<method name="getTextBeforeCursor(II)Ljava/lang/CharSequence;" />
+		<method name="performContextMenuAction(I)Z" />
+		<method name="performEditorAction(I)Z" />
+		<method name="performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="removeComposingSpans(Landroid/text/Spannable;)V" />
+		<method name="reportFullscreenMode(Z)Z" />
+		<method name="sendKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="setComposingRegion(II)Z" since="9" />
+		<method name="setComposingSpans(Landroid/text/Spannable;)V" />
+		<method name="setComposingText(Ljava/lang/CharSequence;I)Z" />
+		<method name="setSelection(II)Z" />
+	</class>
+	<class name="android/view/inputmethod/CompletionInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(JILjava/lang/CharSequence;)V" />
+		<method name="&lt;init>(JILjava/lang/CharSequence;Ljava/lang/CharSequence;)V" />
+		<method name="describeContents()I" />
+		<method name="getId()J" />
+		<method name="getLabel()Ljava/lang/CharSequence;" />
+		<method name="getPosition()I" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/inputmethod/CorrectionInfo" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(ILjava/lang/CharSequence;Ljava/lang/CharSequence;)V" />
+		<method name="describeContents()I" />
+		<method name="getNewText()Ljava/lang/CharSequence;" />
+		<method name="getOffset()I" />
+		<method name="getOldText()Ljava/lang/CharSequence;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/inputmethod/EditorInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/text/InputType" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="makeCompatible(I)V" since="11" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="IME_ACTION_DONE" />
+		<field name="IME_ACTION_GO" />
+		<field name="IME_ACTION_NEXT" />
+		<field name="IME_ACTION_NONE" />
+		<field name="IME_ACTION_PREVIOUS" since="11" />
+		<field name="IME_ACTION_SEARCH" />
+		<field name="IME_ACTION_SEND" />
+		<field name="IME_ACTION_UNSPECIFIED" />
+		<field name="IME_FLAG_NAVIGATE_NEXT" since="11" />
+		<field name="IME_FLAG_NAVIGATE_PREVIOUS" since="11" />
+		<field name="IME_FLAG_NO_ACCESSORY_ACTION" />
+		<field name="IME_FLAG_NO_ENTER_ACTION" />
+		<field name="IME_FLAG_NO_EXTRACT_UI" />
+		<field name="IME_FLAG_NO_FULLSCREEN" since="11" />
+		<field name="IME_MASK_ACTION" />
+		<field name="IME_NULL" />
+		<field name="actionId" />
+		<field name="actionLabel" />
+		<field name="extras" />
+		<field name="fieldId" />
+		<field name="fieldName" />
+		<field name="hintText" />
+		<field name="imeOptions" />
+		<field name="initialCapsMode" />
+		<field name="initialSelEnd" />
+		<field name="initialSelStart" />
+		<field name="inputType" />
+		<field name="label" />
+		<field name="packageName" />
+		<field name="privateImeOptions" />
+	</class>
+	<class name="android/view/inputmethod/ExtractedText" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="FLAG_SELECTING" />
+		<field name="FLAG_SINGLE_LINE" />
+		<field name="flags" />
+		<field name="partialEndOffset" />
+		<field name="partialStartOffset" />
+		<field name="selectionEnd" />
+		<field name="selectionStart" />
+		<field name="startOffset" />
+		<field name="text" />
+	</class>
+	<class name="android/view/inputmethod/ExtractedTextRequest" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>()V" />
+		<method name="describeContents()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="flags" />
+		<field name="hintMaxChars" />
+		<field name="hintMaxLines" />
+		<field name="token" />
+	</class>
+	<class name="android/view/inputmethod/InputBinding" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Landroid/os/IBinder;II)V" />
+		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputBinding;)V" />
+		<method name="describeContents()I" />
+		<method name="getConnection()Landroid/view/inputmethod/InputConnection;" />
+		<method name="getConnectionToken()Landroid/os/IBinder;" />
+		<method name="getPid()I" />
+		<method name="getUid()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/inputmethod/InputConnection" since="3">
+		<method name="beginBatchEdit()Z" />
+		<method name="clearMetaKeyStates(I)Z" />
+		<method name="commitCompletion(Landroid/view/inputmethod/CompletionInfo;)Z" />
+		<method name="commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)Z" since="11" />
+		<method name="commitText(Ljava/lang/CharSequence;I)Z" />
+		<method name="deleteSurroundingText(II)Z" />
+		<method name="endBatchEdit()Z" />
+		<method name="finishComposingText()Z" />
+		<method name="getCursorCapsMode(I)I" />
+		<method name="getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;I)Landroid/view/inputmethod/ExtractedText;" />
+		<method name="getSelectedText(I)Ljava/lang/CharSequence;" since="9" />
+		<method name="getTextAfterCursor(II)Ljava/lang/CharSequence;" />
+		<method name="getTextBeforeCursor(II)Ljava/lang/CharSequence;" />
+		<method name="performContextMenuAction(I)Z" />
+		<method name="performEditorAction(I)Z" />
+		<method name="performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="reportFullscreenMode(Z)Z" />
+		<method name="sendKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="setComposingRegion(II)Z" since="9" />
+		<method name="setComposingText(Ljava/lang/CharSequence;I)Z" />
+		<method name="setSelection(II)Z" />
+		<field name="GET_EXTRACTED_TEXT_MONITOR" />
+		<field name="GET_TEXT_WITH_STYLES" />
+	</class>
+	<class name="android/view/inputmethod/InputConnectionWrapper" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/inputmethod/InputConnection" />
+		<method name="&lt;init>(Landroid/view/inputmethod/InputConnection;Z)V" />
+		<method name="beginBatchEdit()Z" />
+		<method name="clearMetaKeyStates(I)Z" />
+		<method name="commitCompletion(Landroid/view/inputmethod/CompletionInfo;)Z" />
+		<method name="commitCorrection(Landroid/view/inputmethod/CorrectionInfo;)Z" since="11" />
+		<method name="commitText(Ljava/lang/CharSequence;I)Z" />
+		<method name="deleteSurroundingText(II)Z" />
+		<method name="endBatchEdit()Z" />
+		<method name="finishComposingText()Z" />
+		<method name="getCursorCapsMode(I)I" />
+		<method name="getExtractedText(Landroid/view/inputmethod/ExtractedTextRequest;I)Landroid/view/inputmethod/ExtractedText;" />
+		<method name="getSelectedText(I)Ljava/lang/CharSequence;" since="9" />
+		<method name="getTextAfterCursor(II)Ljava/lang/CharSequence;" />
+		<method name="getTextBeforeCursor(II)Ljava/lang/CharSequence;" />
+		<method name="performContextMenuAction(I)Z" />
+		<method name="performEditorAction(I)Z" />
+		<method name="performPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)Z" />
+		<method name="reportFullscreenMode(Z)Z" />
+		<method name="sendKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="setComposingRegion(II)Z" since="9" />
+		<method name="setComposingText(Ljava/lang/CharSequence;I)Z" />
+		<method name="setSelection(II)Z" />
+		<method name="setTarget(Landroid/view/inputmethod/InputConnection;)V" />
+	</class>
+	<class name="android/view/inputmethod/InputMethod" since="3">
+		<method name="attachToken(Landroid/os/IBinder;)V" />
+		<method name="bindInput(Landroid/view/inputmethod/InputBinding;)V" />
+		<method name="changeInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
+		<method name="createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V" />
+		<method name="hideSoftInput(ILandroid/os/ResultReceiver;)V" />
+		<method name="restartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="revokeSession(Landroid/view/inputmethod/InputMethodSession;)V" />
+		<method name="setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V" />
+		<method name="showSoftInput(ILandroid/os/ResultReceiver;)V" />
+		<method name="startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V" />
+		<method name="unbindInput()V" />
+		<field name="SERVICE_INTERFACE" />
+		<field name="SERVICE_META_DATA" />
+		<field name="SHOW_EXPLICIT" />
+		<field name="SHOW_FORCED" />
+	</class>
+	<class name="android/view/inputmethod/InputMethod$SessionCallback" since="3">
+		<method name="sessionCreated(Landroid/view/inputmethod/InputMethodSession;)V" />
+	</class>
+	<class name="android/view/inputmethod/InputMethodInfo" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;)V" />
+		<method name="describeContents()I" />
+		<method name="dump(Landroid/util/Printer;Ljava/lang/String;)V" />
+		<method name="getComponent()Landroid/content/ComponentName;" />
+		<method name="getId()Ljava/lang/String;" />
+		<method name="getIsDefaultResourceId()I" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
+		<method name="getServiceName()Ljava/lang/String;" />
+		<method name="getSettingsActivity()Ljava/lang/String;" />
+		<method name="getSubtypeAt(I)Landroid/view/inputmethod/InputMethodSubtype;" since="11" />
+		<method name="getSubtypeCount()I" since="11" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/inputmethod/InputMethodManager" since="3">
+		<extends name="java/lang/Object" />
+		<method name="displayCompletions(Landroid/view/View;[Landroid/view/inputmethod/CompletionInfo;)V" />
+		<method name="getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;" since="11" />
+		<method name="getEnabledInputMethodList()Ljava/util/List;" />
+		<method name="getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;" since="11" />
+		<method name="getInputMethodList()Ljava/util/List;" />
+		<method name="getLastInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;" since="14" />
+		<method name="getShortcutInputMethodsAndSubtypes()Ljava/util/Map;" since="11" />
+		<method name="hideSoftInputFromInputMethod(Landroid/os/IBinder;I)V" />
+		<method name="hideSoftInputFromWindow(Landroid/os/IBinder;I)Z" />
+		<method name="hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z" />
+		<method name="hideStatusIcon(Landroid/os/IBinder;)V" />
+		<method name="isAcceptingText()Z" />
+		<method name="isActive()Z" />
+		<method name="isActive(Landroid/view/View;)Z" />
+		<method name="isFullscreenMode()Z" />
+		<method name="isWatchingCursor(Landroid/view/View;)Z" />
+		<method name="restartInput(Landroid/view/View;)V" />
+		<method name="sendAppPrivateCommand(Landroid/view/View;Ljava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V" since="14" />
+		<method name="setCurrentInputMethodSubtype(Landroid/view/inputmethod/InputMethodSubtype;)Z" since="11" />
+		<method name="setInputMethod(Landroid/os/IBinder;Ljava/lang/String;)V" />
+		<method name="setInputMethodAndSubtype(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V" since="11" />
+		<method name="showInputMethodAndSubtypeEnabler(Ljava/lang/String;)V" since="11" />
+		<method name="showInputMethodPicker()V" />
+		<method name="showSoftInput(Landroid/view/View;I)Z" />
+		<method name="showSoftInput(Landroid/view/View;ILandroid/os/ResultReceiver;)Z" />
+		<method name="showSoftInputFromInputMethod(Landroid/os/IBinder;I)V" />
+		<method name="showStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V" />
+		<method name="switchToLastInputMethod(Landroid/os/IBinder;)Z" since="11" />
+		<method name="toggleSoftInput(II)V" />
+		<method name="toggleSoftInputFromWindow(Landroid/os/IBinder;II)V" />
+		<method name="updateCursor(Landroid/view/View;IIII)V" />
+		<method name="updateExtractedText(Landroid/view/View;ILandroid/view/inputmethod/ExtractedText;)V" />
+		<method name="updateSelection(Landroid/view/View;IIII)V" />
+		<method name="viewClicked(Landroid/view/View;)V" since="14" />
+		<field name="HIDE_IMPLICIT_ONLY" />
+		<field name="HIDE_NOT_ALWAYS" />
+		<field name="RESULT_HIDDEN" />
+		<field name="RESULT_SHOWN" />
+		<field name="RESULT_UNCHANGED_HIDDEN" />
+		<field name="RESULT_UNCHANGED_SHOWN" />
+		<field name="SHOW_FORCED" />
+		<field name="SHOW_IMPLICIT" />
+	</class>
+	<class name="android/view/inputmethod/InputMethodSession" since="3">
+		<method name="appPrivateCommand(Ljava/lang/String;Landroid/os/Bundle;)V" />
+		<method name="dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
+		<method name="dispatchTrackballEvent(ILandroid/view/MotionEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V" />
+		<method name="displayCompletions([Landroid/view/inputmethod/CompletionInfo;)V" />
+		<method name="finishInput()V" />
+		<method name="toggleSoftInput(II)V" />
+		<method name="updateCursor(Landroid/graphics/Rect;)V" />
+		<method name="updateExtractedText(ILandroid/view/inputmethod/ExtractedText;)V" />
+		<method name="updateSelection(IIIIII)V" />
+		<method name="viewClicked(Z)V" since="14" />
+	</class>
+	<class name="android/view/inputmethod/InputMethodSession$EventCallback" since="3">
+		<method name="finishedEvent(IZ)V" />
+	</class>
+	<class name="android/view/inputmethod/InputMethodSubtype" since="11">
+		<extends name="java/lang/Object" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)V" since="14" />
+		<method name="containsExtraValueKey(Ljava/lang/String;)Z" since="12" />
+		<method name="describeContents()I" />
+		<method name="getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" since="14" />
+		<method name="getExtraValue()Ljava/lang/String;" />
+		<method name="getExtraValueOf(Ljava/lang/String;)Ljava/lang/String;" since="12" />
+		<method name="getIconResId()I" />
+		<method name="getLocale()Ljava/lang/String;" />
+		<method name="getMode()Ljava/lang/String;" />
+		<method name="getNameResId()I" />
+		<method name="isAuxiliary()Z" since="14" />
+		<method name="overridesImplicitlyEnabledSubtype()Z" since="14" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/textservice/SpellCheckerInfo" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="describeContents()I" />
+		<method name="getComponent()Landroid/content/ComponentName;" />
+		<method name="getId()Ljava/lang/String;" />
+		<method name="getPackageName()Ljava/lang/String;" />
+		<method name="getServiceInfo()Landroid/content/pm/ServiceInfo;" />
+		<method name="getSettingsActivity()Ljava/lang/String;" />
+		<method name="getSubtypeAt(I)Landroid/view/textservice/SpellCheckerSubtype;" />
+		<method name="getSubtypeCount()I" />
+		<method name="loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;" />
+		<method name="loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/textservice/SpellCheckerSession" since="14">
+		<method name="cancel()V" since="15" />
+		<method name="close()V" />
+		<method name="getSpellChecker()Landroid/view/textservice/SpellCheckerInfo;" />
+		<method name="getSuggestions(Landroid/view/textservice/TextInfo;I)V" />
+		<method name="getSuggestions([Landroid/view/textservice/TextInfo;IZ)V" />
+		<method name="isSessionDisconnected()Z" />
+		<field name="SERVICE_META_DATA" />
+	</class>
+	<class name="android/view/textservice/SpellCheckerSession$SpellCheckerSessionListener" since="14">
+		<method name="onGetSuggestions([Landroid/view/textservice/SuggestionsInfo;)V" />
+	</class>
+	<class name="android/view/textservice/SpellCheckerSubtype" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="describeContents()I" />
+		<method name="getDisplayName(Landroid/content/Context;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;" />
+		<method name="getExtraValue()Ljava/lang/String;" />
+		<method name="getLocale()Ljava/lang/String;" />
+		<method name="getNameResId()I" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/textservice/SuggestionsInfo" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(I[Ljava/lang/String;)V" />
+		<method name="&lt;init>(I[Ljava/lang/String;II)V" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="describeContents()I" />
+		<method name="getCookie()I" />
+		<method name="getSequence()I" />
+		<method name="getSuggestionAt(I)Ljava/lang/String;" />
+		<method name="getSuggestionsAttributes()I" />
+		<method name="getSuggestionsCount()I" />
+		<method name="setCookieAndSequence(II)V" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+		<field name="RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS" since="15" />
+		<field name="RESULT_ATTR_IN_THE_DICTIONARY" />
+		<field name="RESULT_ATTR_LOOKS_LIKE_TYPO" />
+	</class>
+	<class name="android/view/textservice/TextInfo" since="14">
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;II)V" />
+		<method name="describeContents()I" />
+		<method name="getCookie()I" />
+		<method name="getSequence()I" />
+		<method name="getText()Ljava/lang/String;" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/view/textservice/TextServicesManager" since="14">
+		<method name="newSpellCheckerSession(Landroid/os/Bundle;Ljava/util/Locale;Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;Z)Landroid/view/textservice/SpellCheckerSession;" />
+	</class>
+	<class name="android/webkit/CacheManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="cacheDisabled()Z" />
+		<method name="endCacheTransaction()Z" />
+		<method name="getCacheFile(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" />
+		<method name="getCacheFileBaseDir()Ljava/io/File;" />
+		<method name="saveCacheFile(Ljava/lang/String;Landroid/webkit/CacheManager$CacheResult;)V" />
+		<method name="startCacheTransaction()Z" />
+	</class>
+	<class name="android/webkit/CacheManager$CacheResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getContentDisposition()Ljava/lang/String;" since="7" />
+		<method name="getContentLength()J" />
+		<method name="getETag()Ljava/lang/String;" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getExpires()J" />
+		<method name="getExpiresString()Ljava/lang/String;" since="7" />
+		<method name="getHttpStatusCode()I" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getLastModified()Ljava/lang/String;" />
+		<method name="getLocalPath()Ljava/lang/String;" />
+		<method name="getLocation()Ljava/lang/String;" />
+		<method name="getMimeType()Ljava/lang/String;" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setInputStream(Ljava/io/InputStream;)V" />
+	</class>
+	<class name="android/webkit/CallbackProxy" since="1">
+		<extends name="android/os/Handler" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/webkit/WebView;)V" />
+		<method name="addMessageToConsole(Ljava/lang/String;ILjava/lang/String;)V" since="7" />
+		<method name="createWindow(ZZ)Landroid/webkit/WebView;" />
+		<method name="doUpdateVisitedHistory(Ljava/lang/String;Z)V" />
+		<method name="getBackForwardList()Landroid/webkit/WebBackForwardList;" />
+		<method name="getProgress()I" />
+		<method name="getVisitedHistory(Landroid/webkit/ValueCallback;)V" since="7" />
+		<method name="getWebChromeClient()Landroid/webkit/WebChromeClient;" since="7" />
+		<method name="onCloseWindow(Landroid/webkit/WebView;)V" />
+		<method name="onDownloadStart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z" />
+		<method name="onExceededDatabaseQuota(Ljava/lang/String;Ljava/lang/String;JJJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="5" />
+		<method name="onFormResubmission(Landroid/os/Message;Landroid/os/Message;)V" />
+		<method name="onGeolocationPermissionsHidePrompt()V" since="7" />
+		<method name="onGeolocationPermissionsShowPrompt(Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V" since="7" />
+		<method name="onJsAlert(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="onJsBeforeUnload(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="onJsConfirm(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="onJsPrompt(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="onJsTimeout()Z" since="7" />
+		<method name="onLoadResource(Ljava/lang/String;)V" />
+		<method name="onPageFinished(Ljava/lang/String;)V" />
+		<method name="onPageStarted(Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
+		<method name="onProgressChanged(I)V" />
+		<method name="onReachedMaxAppCacheSize(JJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="7" />
+		<method name="onReceivedError(ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="onReceivedHttpAuthRequest(Landroid/webkit/HttpAuthHandler;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="onReceivedIcon(Landroid/graphics/Bitmap;)V" />
+		<method name="onReceivedTitle(Ljava/lang/String;)V" />
+		<method name="onRequestFocus()V" />
+		<method name="onSavePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)Z" />
+		<method name="onScaleChanged(FF)V" />
+		<method name="onTooManyRedirects(Landroid/os/Message;Landroid/os/Message;)V" />
+		<method name="onUnhandledKeyEvent(Landroid/view/KeyEvent;)V" />
+		<method name="setDownloadListener(Landroid/webkit/DownloadListener;)V" />
+		<method name="setWebChromeClient(Landroid/webkit/WebChromeClient;)V" />
+		<method name="setWebViewClient(Landroid/webkit/WebViewClient;)V" />
+		<method name="shouldOverrideUrlLoading(Ljava/lang/String;)Z" />
+		<method name="uiOverrideKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="uiOverrideUrlLoading(Ljava/lang/String;)Z" />
+	</class>
+	<class name="android/webkit/ConsoleMessage" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILandroid/webkit/ConsoleMessage$MessageLevel;)V" />
+		<method name="lineNumber()I" />
+		<method name="message()Ljava/lang/String;" />
+		<method name="messageLevel()Landroid/webkit/ConsoleMessage$MessageLevel;" />
+		<method name="sourceId()Ljava/lang/String;" />
+	</class>
+	<class name="android/webkit/ConsoleMessage$MessageLevel" since="8">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/ConsoleMessage$MessageLevel;" />
+		<method name="values()[Landroid/webkit/ConsoleMessage$MessageLevel;" />
+		<field name="DEBUG" />
+		<field name="ERROR" />
+		<field name="LOG" />
+		<field name="TIP" />
+		<field name="WARNING" />
+	</class>
+	<class name="android/webkit/CookieManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="acceptCookie()Z" />
+		<method name="allowFileSchemeCookies()Z" since="12" />
+		<method name="getCookie(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getInstance()Landroid/webkit/CookieManager;" />
+		<method name="hasCookies()Z" />
+		<method name="removeAllCookie()V" />
+		<method name="removeExpiredCookie()V" />
+		<method name="removeSessionCookie()V" />
+		<method name="setAcceptCookie(Z)V" />
+		<method name="setAcceptFileSchemeCookies(Z)V" since="12" />
+		<method name="setCookie(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/webkit/CookieSyncManager" since="1">
+		<extends name="android/webkit/WebSyncManager" />
+		<method name="createInstance(Landroid/content/Context;)Landroid/webkit/CookieSyncManager;" />
+		<method name="getInstance()Landroid/webkit/CookieSyncManager;" />
+		<method name="syncFromRamToFlash()V" />
+	</class>
+	<class name="android/webkit/DateSorter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="getBoundary(I)J" />
+		<method name="getIndex(J)I" />
+		<method name="getLabel(I)Ljava/lang/String;" />
+		<field name="DAY_COUNT" />
+	</class>
+	<class name="android/webkit/DownloadListener" since="1">
+		<method name="onDownloadStart(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V" />
+	</class>
+	<class name="android/webkit/GeolocationPermissions" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="allow(Ljava/lang/String;)V" since="7" />
+		<method name="clear(Ljava/lang/String;)V" since="7" />
+		<method name="clearAll()V" since="7" />
+		<method name="getAllowed(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7" />
+		<method name="getInstance()Landroid/webkit/GeolocationPermissions;" since="7" />
+		<method name="getOrigins(Landroid/webkit/ValueCallback;)V" since="7" />
+	</class>
+	<class name="android/webkit/GeolocationPermissions$Callback" since="5">
+		<method name="invoke(Ljava/lang/String;ZZ)V" />
+	</class>
+	<class name="android/webkit/HttpAuthHandler" since="1">
+		<extends name="android/os/Handler" />
+		<method name="cancel()V" />
+		<method name="proceed(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="useHttpAuthUsernamePassword()Z" />
+	</class>
+	<class name="android/webkit/JsPromptResult" since="1">
+		<extends name="android/webkit/JsResult" />
+		<method name="confirm(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/webkit/JsResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="cancel()V" />
+		<method name="confirm()V" />
+		<method name="wakeUp()V" />
+		<field name="mProxy" />
+		<field name="mResult" />
+	</class>
+	<class name="android/webkit/MimeTypeMap" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getExtensionFromMimeType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getFileExtensionFromUrl(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getMimeTypeFromExtension(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getSingleton()Landroid/webkit/MimeTypeMap;" />
+		<method name="hasExtension(Ljava/lang/String;)Z" />
+		<method name="hasMimeType(Ljava/lang/String;)Z" />
+	</class>
+	<class name="android/webkit/Plugin" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="dispatchClickEvent(Landroid/content/Context;)V" />
+		<method name="getDescription()Ljava/lang/String;" />
+		<method name="getFileName()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="setClickHandler(Landroid/webkit/Plugin$PreferencesClickHandler;)V" />
+		<method name="setDescription(Ljava/lang/String;)V" />
+		<method name="setFileName(Ljava/lang/String;)V" />
+		<method name="setName(Ljava/lang/String;)V" />
+		<method name="setPath(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/webkit/Plugin$PreferencesClickHandler" since="1">
+		<method name="handleClickEvent(Landroid/content/Context;)V" />
+	</class>
+	<class name="android/webkit/PluginData" since="3">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/io/InputStream;JLjava/util/Map;I)V" />
+		<method name="getContentLength()J" />
+		<method name="getHeaders()Ljava/util/Map;" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getStatusCode()I" />
+	</class>
+	<class name="android/webkit/PluginList" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addPlugin(Landroid/webkit/Plugin;)V" />
+		<method name="clear()V" />
+		<method name="getList()Ljava/util/List;" />
+		<method name="pluginClicked(Landroid/content/Context;I)V" />
+		<method name="removePlugin(Landroid/webkit/Plugin;)V" />
+	</class>
+	<class name="android/webkit/PluginStub" since="5">
+		<method name="getEmbeddedView(ILandroid/content/Context;)Landroid/view/View;" />
+		<method name="getFullScreenView(ILandroid/content/Context;)Landroid/view/View;" />
+	</class>
+	<class name="android/webkit/SslErrorHandler" since="1">
+		<extends name="android/os/Handler" />
+		<method name="cancel()V" />
+		<method name="proceed()V" />
+	</class>
+	<class name="android/webkit/URLUtil" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="composeSearchUrl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="decode([B)[B" />
+		<method name="guessFileName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="guessUrl(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="isAboutUrl(Ljava/lang/String;)Z" />
+		<method name="isAssetUrl(Ljava/lang/String;)Z" />
+		<method name="isContentUrl(Ljava/lang/String;)Z" />
+		<method name="isCookielessProxyUrl(Ljava/lang/String;)Z" />
+		<method name="isDataUrl(Ljava/lang/String;)Z" />
+		<method name="isFileUrl(Ljava/lang/String;)Z" />
+		<method name="isHttpUrl(Ljava/lang/String;)Z" />
+		<method name="isHttpsUrl(Ljava/lang/String;)Z" />
+		<method name="isJavaScriptUrl(Ljava/lang/String;)Z" />
+		<method name="isNetworkUrl(Ljava/lang/String;)Z" />
+		<method name="isValidUrl(Ljava/lang/String;)Z" />
+		<method name="stripAnchor(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="android/webkit/UrlInterceptHandler" since="1">
+		<method name="getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;" since="3" />
+		<method name="service(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" />
+	</class>
+	<class name="android/webkit/UrlInterceptRegistry" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;" since="3" />
+		<method name="getSurrogate(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;" />
+		<method name="registerHandler(Landroid/webkit/UrlInterceptHandler;)Z" />
+		<method name="setUrlInterceptDisabled(Z)V" />
+		<method name="unregisterHandler(Landroid/webkit/UrlInterceptHandler;)Z" />
+		<method name="urlInterceptDisabled()Z" />
+	</class>
+	<class name="android/webkit/ValueCallback" since="7">
+		<method name="onReceiveValue(LT;)V" />
+	</class>
+	<class name="android/webkit/WebBackForwardList" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="getCurrentIndex()I" />
+		<method name="getCurrentItem()Landroid/webkit/WebHistoryItem;" />
+		<method name="getItemAtIndex(I)Landroid/webkit/WebHistoryItem;" />
+		<method name="getSize()I" />
+	</class>
+	<class name="android/webkit/WebChromeClient" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getDefaultVideoPoster()Landroid/graphics/Bitmap;" since="7" />
+		<method name="getVideoLoadingProgressView()Landroid/view/View;" since="7" />
+		<method name="getVisitedHistory(Landroid/webkit/ValueCallback;)V" since="7" />
+		<method name="onCloseWindow(Landroid/webkit/WebView;)V" />
+		<method name="onConsoleMessage(Landroid/webkit/ConsoleMessage;)Z" since="8" />
+		<method name="onConsoleMessage(Ljava/lang/String;ILjava/lang/String;)V" since="7" />
+		<method name="onCreateWindow(Landroid/webkit/WebView;ZZLandroid/os/Message;)Z" />
+		<method name="onExceededDatabaseQuota(Ljava/lang/String;Ljava/lang/String;JJJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="5" />
+		<method name="onGeolocationPermissionsHidePrompt()V" since="5" />
+		<method name="onGeolocationPermissionsShowPrompt(Ljava/lang/String;Landroid/webkit/GeolocationPermissions$Callback;)V" since="5" />
+		<method name="onHideCustomView()V" since="7" />
+		<method name="onJsAlert(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z" />
+		<method name="onJsBeforeUnload(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z" />
+		<method name="onJsConfirm(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsResult;)Z" />
+		<method name="onJsPrompt(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/webkit/JsPromptResult;)Z" />
+		<method name="onJsTimeout()Z" since="7" />
+		<method name="onProgressChanged(Landroid/webkit/WebView;I)V" />
+		<method name="onReachedMaxAppCacheSize(JJLandroid/webkit/WebStorage$QuotaUpdater;)V" since="7" />
+		<method name="onReceivedIcon(Landroid/webkit/WebView;Landroid/graphics/Bitmap;)V" />
+		<method name="onReceivedTitle(Landroid/webkit/WebView;Ljava/lang/String;)V" />
+		<method name="onReceivedTouchIconUrl(Landroid/webkit/WebView;Ljava/lang/String;Z)V" since="7" />
+		<method name="onRequestFocus(Landroid/webkit/WebView;)V" />
+		<method name="onShowCustomView(Landroid/view/View;ILandroid/webkit/WebChromeClient$CustomViewCallback;)V" since="14" />
+		<method name="onShowCustomView(Landroid/view/View;Landroid/webkit/WebChromeClient$CustomViewCallback;)V" since="7" />
+	</class>
+	<class name="android/webkit/WebChromeClient$CustomViewCallback" since="7">
+		<method name="onCustomViewHidden()V" />
+	</class>
+	<class name="android/webkit/WebHistoryItem" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="getFavicon()Landroid/graphics/Bitmap;" />
+		<method name="getId()I" />
+		<method name="getOriginalUrl()Ljava/lang/String;" since="3" />
+		<method name="getTitle()Ljava/lang/String;" />
+		<method name="getUrl()Ljava/lang/String;" />
+	</class>
+	<class name="android/webkit/WebIconDatabase" since="1">
+		<extends name="java/lang/Object" />
+		<method name="close()V" />
+		<method name="getInstance()Landroid/webkit/WebIconDatabase;" />
+		<method name="open(Ljava/lang/String;)V" />
+		<method name="releaseIconForPageUrl(Ljava/lang/String;)V" />
+		<method name="removeAllIcons()V" />
+		<method name="requestIconForPageUrl(Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V" />
+		<method name="retainIconForPageUrl(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/webkit/WebIconDatabase$IconListener" since="1">
+		<method name="onReceivedIcon(Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
+	</class>
+	<class name="android/webkit/WebResourceResponse" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/InputStream;)V" />
+		<method name="getData()Ljava/io/InputStream;" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getMimeType()Ljava/lang/String;" />
+		<method name="setData(Ljava/io/InputStream;)V" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setMimeType(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/webkit/WebSettings" since="1">
+		<extends name="java/lang/Object" />
+		<method name="enableSmoothTransition()Z" since="11" />
+		<method name="getAllowContentAccess()Z" since="11" />
+		<method name="getAllowFileAccess()Z" since="3" />
+		<method name="getBlockNetworkImage()Z" />
+		<method name="getBlockNetworkLoads()Z" since="8" />
+		<method name="getBuiltInZoomControls()Z" since="3" />
+		<method name="getCacheMode()I" />
+		<method name="getCursiveFontFamily()Ljava/lang/String;" />
+		<method name="getDatabaseEnabled()Z" since="5" />
+		<method name="getDatabasePath()Ljava/lang/String;" since="5" />
+		<method name="getDefaultFixedFontSize()I" />
+		<method name="getDefaultFontSize()I" />
+		<method name="getDefaultTextEncodingName()Ljava/lang/String;" />
+		<method name="getDefaultZoom()Landroid/webkit/WebSettings$ZoomDensity;" since="7" />
+		<method name="getDisplayZoomControls()Z" since="11" />
+		<method name="getDomStorageEnabled()Z" since="7" />
+		<method name="getFantasyFontFamily()Ljava/lang/String;" />
+		<method name="getFixedFontFamily()Ljava/lang/String;" />
+		<method name="getJavaScriptCanOpenWindowsAutomatically()Z" />
+		<method name="getJavaScriptEnabled()Z" />
+		<method name="getLayoutAlgorithm()Landroid/webkit/WebSettings$LayoutAlgorithm;" />
+		<method name="getLightTouchEnabled()Z" />
+		<method name="getLoadWithOverviewMode()Z" since="7" />
+		<method name="getLoadsImagesAutomatically()Z" />
+		<method name="getMinimumFontSize()I" />
+		<method name="getMinimumLogicalFontSize()I" />
+		<method name="getNavDump()Z" />
+		<method name="getPluginState()Landroid/webkit/WebSettings$PluginState;" since="8" />
+		<method name="getPluginsEnabled()Z" />
+		<method name="getPluginsPath()Ljava/lang/String;" />
+		<method name="getSansSerifFontFamily()Ljava/lang/String;" />
+		<method name="getSaveFormData()Z" />
+		<method name="getSavePassword()Z" />
+		<method name="getSerifFontFamily()Ljava/lang/String;" />
+		<method name="getStandardFontFamily()Ljava/lang/String;" />
+		<method name="getTextSize()Landroid/webkit/WebSettings$TextSize;" />
+		<method name="getTextZoom()I" since="14" />
+		<method name="getUseDoubleTree()Z" />
+		<method name="getUseWebViewBackgroundForOverscrollBackground()Z" since="9" />
+		<method name="getUseWideViewPort()Z" />
+		<method name="getUserAgent()I" />
+		<method name="getUserAgentString()Ljava/lang/String;" since="3" />
+		<method name="setAllowContentAccess(Z)V" since="11" />
+		<method name="setAllowFileAccess(Z)V" since="3" />
+		<method name="setAppCacheEnabled(Z)V" since="7" />
+		<method name="setAppCacheMaxSize(J)V" since="7" />
+		<method name="setAppCachePath(Ljava/lang/String;)V" since="7" />
+		<method name="setBlockNetworkImage(Z)V" />
+		<method name="setBlockNetworkLoads(Z)V" since="8" />
+		<method name="setBuiltInZoomControls(Z)V" since="3" />
+		<method name="setCacheMode(I)V" />
+		<method name="setCursiveFontFamily(Ljava/lang/String;)V" />
+		<method name="setDatabaseEnabled(Z)V" since="5" />
+		<method name="setDatabasePath(Ljava/lang/String;)V" since="5" />
+		<method name="setDefaultFixedFontSize(I)V" />
+		<method name="setDefaultFontSize(I)V" />
+		<method name="setDefaultTextEncodingName(Ljava/lang/String;)V" />
+		<method name="setDefaultZoom(Landroid/webkit/WebSettings$ZoomDensity;)V" since="7" />
+		<method name="setDisplayZoomControls(Z)V" since="11" />
+		<method name="setDomStorageEnabled(Z)V" since="7" />
+		<method name="setEnableSmoothTransition(Z)V" since="11" />
+		<method name="setFantasyFontFamily(Ljava/lang/String;)V" />
+		<method name="setFixedFontFamily(Ljava/lang/String;)V" />
+		<method name="setGeolocationDatabasePath(Ljava/lang/String;)V" since="5" />
+		<method name="setGeolocationEnabled(Z)V" since="5" />
+		<method name="setJavaScriptCanOpenWindowsAutomatically(Z)V" />
+		<method name="setJavaScriptEnabled(Z)V" />
+		<method name="setLayoutAlgorithm(Landroid/webkit/WebSettings$LayoutAlgorithm;)V" />
+		<method name="setLightTouchEnabled(Z)V" />
+		<method name="setLoadWithOverviewMode(Z)V" since="7" />
+		<method name="setLoadsImagesAutomatically(Z)V" />
+		<method name="setMinimumFontSize(I)V" />
+		<method name="setMinimumLogicalFontSize(I)V" />
+		<method name="setNavDump(Z)V" />
+		<method name="setNeedInitialFocus(Z)V" />
+		<method name="setPluginState(Landroid/webkit/WebSettings$PluginState;)V" since="8" />
+		<method name="setPluginsEnabled(Z)V" />
+		<method name="setPluginsPath(Ljava/lang/String;)V" />
+		<method name="setRenderPriority(Landroid/webkit/WebSettings$RenderPriority;)V" />
+		<method name="setSansSerifFontFamily(Ljava/lang/String;)V" />
+		<method name="setSaveFormData(Z)V" />
+		<method name="setSavePassword(Z)V" />
+		<method name="setSerifFontFamily(Ljava/lang/String;)V" />
+		<method name="setStandardFontFamily(Ljava/lang/String;)V" />
+		<method name="setSupportMultipleWindows(Z)V" />
+		<method name="setSupportZoom(Z)V" />
+		<method name="setTextSize(Landroid/webkit/WebSettings$TextSize;)V" />
+		<method name="setTextZoom(I)V" since="14" />
+		<method name="setUseDoubleTree(Z)V" />
+		<method name="setUseWebViewBackgroundForOverscrollBackground(Z)V" since="9" />
+		<method name="setUseWideViewPort(Z)V" />
+		<method name="setUserAgent(I)V" />
+		<method name="setUserAgentString(Ljava/lang/String;)V" since="3" />
+		<method name="supportMultipleWindows()Z" />
+		<method name="supportZoom()Z" />
+		<field name="LOAD_CACHE_ELSE_NETWORK" />
+		<field name="LOAD_CACHE_ONLY" />
+		<field name="LOAD_DEFAULT" />
+		<field name="LOAD_NORMAL" />
+		<field name="LOAD_NO_CACHE" />
+	</class>
+	<class name="android/webkit/WebSettings$LayoutAlgorithm" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$LayoutAlgorithm;" />
+		<method name="values()[Landroid/webkit/WebSettings$LayoutAlgorithm;" />
+		<field name="NARROW_COLUMNS" />
+		<field name="NORMAL" />
+		<field name="SINGLE_COLUMN" />
+	</class>
+	<class name="android/webkit/WebSettings$PluginState" since="8">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$PluginState;" />
+		<method name="values()[Landroid/webkit/WebSettings$PluginState;" />
+		<field name="OFF" />
+		<field name="ON" />
+		<field name="ON_DEMAND" />
+	</class>
+	<class name="android/webkit/WebSettings$RenderPriority" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$RenderPriority;" />
+		<method name="values()[Landroid/webkit/WebSettings$RenderPriority;" />
+		<field name="HIGH" />
+		<field name="LOW" />
+		<field name="NORMAL" />
+	</class>
+	<class name="android/webkit/WebSettings$TextSize" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$TextSize;" />
+		<method name="values()[Landroid/webkit/WebSettings$TextSize;" />
+		<field name="LARGER" />
+		<field name="LARGEST" />
+		<field name="NORMAL" />
+		<field name="SMALLER" />
+		<field name="SMALLEST" />
+	</class>
+	<class name="android/webkit/WebSettings$ZoomDensity" since="7">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/webkit/WebSettings$ZoomDensity;" />
+		<method name="values()[Landroid/webkit/WebSettings$ZoomDensity;" />
+		<field name="CLOSE" />
+		<field name="FAR" />
+		<field name="MEDIUM" />
+	</class>
+	<class name="android/webkit/WebStorage" since="5">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="deleteAllData()V" since="7" />
+		<method name="deleteOrigin(Ljava/lang/String;)V" since="7" />
+		<method name="getInstance()Landroid/webkit/WebStorage;" since="7" />
+		<method name="getOrigins(Landroid/webkit/ValueCallback;)V" since="7" />
+		<method name="getQuotaForOrigin(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7" />
+		<method name="getUsageForOrigin(Ljava/lang/String;Landroid/webkit/ValueCallback;)V" since="7" />
+		<method name="setQuotaForOrigin(Ljava/lang/String;J)V" since="7" />
+	</class>
+	<class name="android/webkit/WebStorage$Origin" since="11">
+		<extends name="java/lang/Object" />
+		<method name="getOrigin()Ljava/lang/String;" />
+		<method name="getQuota()J" />
+		<method name="getUsage()J" />
+	</class>
+	<class name="android/webkit/WebStorage$QuotaUpdater" since="5">
+		<method name="updateQuota(J)V" />
+	</class>
+	<class name="android/webkit/WebSyncManager" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Runnable" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/lang/String;)V" />
+		<method name="onSyncInit()V" />
+		<method name="resetSync()V" />
+		<method name="run()V" />
+		<method name="startSync()V" />
+		<method name="stopSync()V" />
+		<method name="sync()V" />
+		<field name="LOGTAG" />
+		<field name="mDataBase" />
+		<field name="mHandler" />
+	</class>
+	<class name="android/webkit/WebView" since="1">
+		<extends name="android/widget/AbsoluteLayout" />
+		<implements name="android/view/ViewGroup$OnHierarchyChangeListener" />
+		<implements name="android/view/ViewTreeObserver$OnGlobalFocusChangeListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;IZ)V" since="11" />
+		<method name="addJavascriptInterface(Ljava/lang/Object;Ljava/lang/String;)V" />
+		<method name="canGoBack()Z" />
+		<method name="canGoBackOrForward(I)Z" />
+		<method name="canGoForward()Z" />
+		<method name="canZoomIn()Z" since="11" />
+		<method name="canZoomOut()Z" since="11" />
+		<method name="capturePicture()Landroid/graphics/Picture;" />
+		<method name="clearCache(Z)V" />
+		<method name="clearFormData()V" />
+		<method name="clearHistory()V" />
+		<method name="clearMatches()V" since="3" />
+		<method name="clearSslPreferences()V" />
+		<method name="clearView()V" />
+		<method name="copyBackForwardList()Landroid/webkit/WebBackForwardList;" />
+		<method name="debugDump()V" />
+		<method name="destroy()V" />
+		<method name="disablePlatformNotifications()V" />
+		<method name="documentHasImages(Landroid/os/Message;)V" />
+		<method name="emulateShiftHeld()V" since="8" />
+		<method name="enablePlatformNotifications()V" />
+		<method name="findAddress(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="findAll(Ljava/lang/String;)I" since="3" />
+		<method name="findNext(Z)V" since="3" />
+		<method name="flingScroll(II)V" />
+		<method name="freeMemory()V" since="7" />
+		<method name="getCertificate()Landroid/net/http/SslCertificate;" />
+		<method name="getContentHeight()I" />
+		<method name="getFavicon()Landroid/graphics/Bitmap;" />
+		<method name="getHitTestResult()Landroid/webkit/WebView$HitTestResult;" />
+		<method name="getHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="getOriginalUrl()Ljava/lang/String;" since="3" />
+		<method name="getPluginList()Landroid/webkit/PluginList;" />
+		<method name="getProgress()I" />
+		<method name="getScale()F" />
+		<method name="getSettings()Landroid/webkit/WebSettings;" />
+		<method name="getTitle()Ljava/lang/String;" />
+		<method name="getUrl()Ljava/lang/String;" />
+		<method name="getVisibleTitleHeight()I" since="11" />
+		<method name="getZoomControls()Landroid/view/View;" />
+		<method name="goBack()V" />
+		<method name="goBackOrForward(I)V" />
+		<method name="goForward()V" />
+		<method name="invokeZoomPicker()V" />
+		<method name="isPrivateBrowsingEnabled()Z" since="11" />
+		<method name="loadData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="loadDataWithBaseURL(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="loadUrl(Ljava/lang/String;)V" />
+		<method name="loadUrl(Ljava/lang/String;Ljava/util/Map;)V" since="8" />
+		<method name="onChildViewAdded(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="onChildViewRemoved(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="onGlobalFocusChanged(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="onPause()V" since="11" />
+		<method name="onResume()V" since="11" />
+		<method name="overlayHorizontalScrollbar()Z" />
+		<method name="overlayVerticalScrollbar()Z" />
+		<method name="pageDown(Z)Z" />
+		<method name="pageUp(Z)Z" />
+		<method name="pauseTimers()V" />
+		<method name="postUrl(Ljava/lang/String;[B)V" since="5" />
+		<method name="refreshPlugins(Z)V" />
+		<method name="reload()V" />
+		<method name="removeJavascriptInterface(Ljava/lang/String;)V" since="11" />
+		<method name="requestFocusNodeHref(Landroid/os/Message;)V" />
+		<method name="requestImageRef(Landroid/os/Message;)V" />
+		<method name="restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z" since="3" />
+		<method name="restoreState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList;" />
+		<method name="resumeTimers()V" />
+		<method name="savePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="savePicture(Landroid/os/Bundle;Ljava/io/File;)Z" since="3" />
+		<method name="saveState(Landroid/os/Bundle;)Landroid/webkit/WebBackForwardList;" />
+		<method name="saveWebArchive(Ljava/lang/String;)V" since="11" />
+		<method name="saveWebArchive(Ljava/lang/String;ZLandroid/webkit/ValueCallback;)V" since="11" />
+		<method name="setCertificate(Landroid/net/http/SslCertificate;)V" />
+		<method name="setDownloadListener(Landroid/webkit/DownloadListener;)V" />
+		<method name="setHorizontalScrollbarOverlay(Z)V" />
+		<method name="setHttpAuthUsernamePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setInitialScale(I)V" />
+		<method name="setMapTrackballToArrowKeys(Z)V" />
+		<method name="setNetworkAvailable(Z)V" since="3" />
+		<method name="setPictureListener(Landroid/webkit/WebView$PictureListener;)V" />
+		<method name="setVerticalScrollbarOverlay(Z)V" />
+		<method name="setWebChromeClient(Landroid/webkit/WebChromeClient;)V" />
+		<method name="setWebViewClient(Landroid/webkit/WebViewClient;)V" />
+		<method name="showFindDialog(Ljava/lang/String;Z)Z" since="11" />
+		<method name="stopLoading()V" />
+		<method name="zoomIn()Z" />
+		<method name="zoomOut()Z" />
+		<field name="SCHEME_GEO" />
+		<field name="SCHEME_MAILTO" />
+		<field name="SCHEME_TEL" />
+	</class>
+	<class name="android/webkit/WebView$HitTestResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getExtra()Ljava/lang/String;" />
+		<method name="getType()I" />
+		<field name="ANCHOR_TYPE" />
+		<field name="EDIT_TEXT_TYPE" />
+		<field name="EMAIL_TYPE" />
+		<field name="GEO_TYPE" />
+		<field name="IMAGE_ANCHOR_TYPE" />
+		<field name="IMAGE_TYPE" />
+		<field name="PHONE_TYPE" />
+		<field name="SRC_ANCHOR_TYPE" />
+		<field name="SRC_IMAGE_ANCHOR_TYPE" />
+		<field name="UNKNOWN_TYPE" />
+	</class>
+	<class name="android/webkit/WebView$PictureListener" since="1">
+		<method name="onNewPicture(Landroid/webkit/WebView;Landroid/graphics/Picture;)V" />
+	</class>
+	<class name="android/webkit/WebView$WebViewTransport" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getWebView()Landroid/webkit/WebView;" />
+		<method name="setWebView(Landroid/webkit/WebView;)V" />
+	</class>
+	<class name="android/webkit/WebViewClient" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="doUpdateVisitedHistory(Landroid/webkit/WebView;Ljava/lang/String;Z)V" />
+		<method name="onFormResubmission(Landroid/webkit/WebView;Landroid/os/Message;Landroid/os/Message;)V" />
+		<method name="onLoadResource(Landroid/webkit/WebView;Ljava/lang/String;)V" />
+		<method name="onPageFinished(Landroid/webkit/WebView;Ljava/lang/String;)V" />
+		<method name="onPageStarted(Landroid/webkit/WebView;Ljava/lang/String;Landroid/graphics/Bitmap;)V" />
+		<method name="onReceivedError(Landroid/webkit/WebView;ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="onReceivedHttpAuthRequest(Landroid/webkit/WebView;Landroid/webkit/HttpAuthHandler;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="onReceivedLoginRequest(Landroid/webkit/WebView;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" since="12" />
+		<method name="onReceivedSslError(Landroid/webkit/WebView;Landroid/webkit/SslErrorHandler;Landroid/net/http/SslError;)V" since="8" />
+		<method name="onScaleChanged(Landroid/webkit/WebView;FF)V" />
+		<method name="onTooManyRedirects(Landroid/webkit/WebView;Landroid/os/Message;Landroid/os/Message;)V" />
+		<method name="onUnhandledKeyEvent(Landroid/webkit/WebView;Landroid/view/KeyEvent;)V" />
+		<method name="shouldInterceptRequest(Landroid/webkit/WebView;Ljava/lang/String;)Landroid/webkit/WebResourceResponse;" since="11" />
+		<method name="shouldOverrideKeyEvent(Landroid/webkit/WebView;Landroid/view/KeyEvent;)Z" />
+		<method name="shouldOverrideUrlLoading(Landroid/webkit/WebView;Ljava/lang/String;)Z" />
+		<field name="ERROR_AUTHENTICATION" since="5" />
+		<field name="ERROR_BAD_URL" since="5" />
+		<field name="ERROR_CONNECT" since="5" />
+		<field name="ERROR_FAILED_SSL_HANDSHAKE" since="5" />
+		<field name="ERROR_FILE" since="5" />
+		<field name="ERROR_FILE_NOT_FOUND" since="5" />
+		<field name="ERROR_HOST_LOOKUP" since="5" />
+		<field name="ERROR_IO" since="5" />
+		<field name="ERROR_PROXY_AUTHENTICATION" since="5" />
+		<field name="ERROR_REDIRECT_LOOP" since="5" />
+		<field name="ERROR_TIMEOUT" since="5" />
+		<field name="ERROR_TOO_MANY_REQUESTS" since="5" />
+		<field name="ERROR_UNKNOWN" since="5" />
+		<field name="ERROR_UNSUPPORTED_AUTH_SCHEME" since="5" />
+		<field name="ERROR_UNSUPPORTED_SCHEME" since="5" />
+	</class>
+	<class name="android/webkit/WebViewDatabase" since="1">
+		<extends name="java/lang/Object" />
+		<method name="clearFormData()V" />
+		<method name="clearHttpAuthUsernamePassword()V" />
+		<method name="clearUsernamePassword()V" />
+		<method name="getInstance(Landroid/content/Context;)Landroid/webkit/WebViewDatabase;" />
+		<method name="hasFormData()Z" />
+		<method name="hasHttpAuthUsernamePassword()Z" />
+		<method name="hasUsernamePassword()Z" />
+		<field name="LOGTAG" />
+	</class>
+	<class name="android/webkit/WebViewFragment" since="11">
+		<extends name="android/app/Fragment" />
+		<method name="&lt;init>()V" />
+		<method name="getWebView()Landroid/webkit/WebView;" />
+	</class>
+	<class name="android/widget/AbsListView" since="1">
+		<extends name="android/widget/AdapterView" />
+		<implements name="android/widget/Filter$FilterListener" />
+		<implements name="android/text/TextWatcher" />
+		<implements name="android/view/ViewTreeObserver$OnGlobalLayoutListener" />
+		<implements name="android/view/ViewTreeObserver$OnTouchModeChangeListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="afterTextChanged(Landroid/text/Editable;)V" />
+		<method name="beforeTextChanged(Ljava/lang/CharSequence;III)V" />
+		<method name="clearChoices()V" since="11" />
+		<method name="clearTextFilter()V" />
+		<method name="deferNotifyDataSetChanged()V" since="14" />
+		<method name="getCacheColorHint()I" />
+		<method name="getCheckedItemCount()I" since="11" />
+		<method name="getCheckedItemIds()[J" since="11" />
+		<method name="getCheckedItemPosition()I" since="11" />
+		<method name="getCheckedItemPositions()Landroid/util/SparseBooleanArray;" since="11" />
+		<method name="getChoiceMode()I" since="11" />
+		<method name="getListPaddingBottom()I" />
+		<method name="getListPaddingLeft()I" />
+		<method name="getListPaddingRight()I" />
+		<method name="getListPaddingTop()I" />
+		<method name="getSelectedView()Landroid/view/View;" />
+		<method name="getSelector()Landroid/graphics/drawable/Drawable;" />
+		<method name="getTextFilter()Ljava/lang/CharSequence;" since="3" />
+		<method name="getTranscriptMode()I" />
+		<method name="handleDataChanged()V" />
+		<method name="hasTextFilter()Z" />
+		<method name="invalidateViews()V" />
+		<method name="isFastScrollAlwaysVisible()Z" since="11" />
+		<method name="isFastScrollEnabled()Z" since="3" />
+		<method name="isInFilterMode()Z" />
+		<method name="isItemChecked(I)Z" since="11" />
+		<method name="isScrollingCacheEnabled()Z" />
+		<method name="isSmoothScrollbarEnabled()Z" since="3" />
+		<method name="isStackFromBottom()Z" />
+		<method name="isTextFilterEnabled()Z" />
+		<method name="layoutChildren()V" />
+		<method name="onFilterComplete(I)V" />
+		<method name="onGlobalLayout()V" />
+		<method name="onRemoteAdapterConnected()Z" since="11" />
+		<method name="onRemoteAdapterDisconnected()V" since="11" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
+		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
+		<method name="onTouchModeChanged(Z)V" />
+		<method name="pointToPosition(II)I" />
+		<method name="pointToRowId(II)J" />
+		<method name="reclaimViews(Ljava/util/List;)V" />
+		<method name="setAdapter(Landroid/widget/ListAdapter;)V" since="11" />
+		<method name="setCacheColorHint(I)V" />
+		<method name="setChoiceMode(I)V" since="11" />
+		<method name="setDrawSelectorOnTop(Z)V" />
+		<method name="setFastScrollAlwaysVisible(Z)V" since="11" />
+		<method name="setFastScrollEnabled(Z)V" since="3" />
+		<method name="setFilterText(Ljava/lang/String;)V" />
+		<method name="setFriction(F)V" since="11" />
+		<method name="setItemChecked(IZ)V" since="11" />
+		<method name="setMultiChoiceModeListener(Landroid/widget/AbsListView$MultiChoiceModeListener;)V" since="11" />
+		<method name="setOnScrollListener(Landroid/widget/AbsListView$OnScrollListener;)V" />
+		<method name="setRecyclerListener(Landroid/widget/AbsListView$RecyclerListener;)V" />
+		<method name="setRemoteViewsAdapter(Landroid/content/Intent;)V" since="11" />
+		<method name="setScrollIndicators(Landroid/view/View;Landroid/view/View;)V" />
+		<method name="setScrollingCacheEnabled(Z)V" />
+		<method name="setSelector(I)V" />
+		<method name="setSelector(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setSmoothScrollbarEnabled(Z)V" since="3" />
+		<method name="setStackFromBottom(Z)V" />
+		<method name="setTextFilterEnabled(Z)V" />
+		<method name="setTranscriptMode(I)V" />
+		<method name="setVelocityScale(F)V" since="11" />
+		<method name="smoothScrollBy(II)V" since="8" />
+		<method name="smoothScrollToPosition(I)V" since="8" />
+		<method name="smoothScrollToPosition(II)V" since="8" />
+		<method name="smoothScrollToPositionFromTop(II)V" since="11" />
+		<method name="smoothScrollToPositionFromTop(III)V" since="11" />
+		<method name="verifyDrawable(Landroid/graphics/drawable/Drawable;)Z" />
+		<field name="CHOICE_MODE_MULTIPLE" since="11" />
+		<field name="CHOICE_MODE_MULTIPLE_MODAL" since="11" />
+		<field name="CHOICE_MODE_NONE" since="11" />
+		<field name="CHOICE_MODE_SINGLE" since="11" />
+		<field name="TRANSCRIPT_MODE_ALWAYS_SCROLL" />
+		<field name="TRANSCRIPT_MODE_DISABLED" />
+		<field name="TRANSCRIPT_MODE_NORMAL" />
+	</class>
+	<class name="android/widget/AbsListView$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$LayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+	</class>
+	<class name="android/widget/AbsListView$MultiChoiceModeListener" since="11">
+		<implements name="android/view/ActionMode$Callback" />
+		<method name="onItemCheckedStateChanged(Landroid/view/ActionMode;IJZ)V" />
+	</class>
+	<class name="android/widget/AbsListView$OnScrollListener" since="1">
+		<method name="onScroll(Landroid/widget/AbsListView;III)V" />
+		<method name="onScrollStateChanged(Landroid/widget/AbsListView;I)V" />
+		<field name="SCROLL_STATE_FLING" />
+		<field name="SCROLL_STATE_IDLE" />
+		<field name="SCROLL_STATE_TOUCH_SCROLL" />
+	</class>
+	<class name="android/widget/AbsListView$RecyclerListener" since="1">
+		<method name="onMovedToScrapHeap(Landroid/view/View;)V" />
+	</class>
+	<class name="android/widget/AbsListView$SelectionBoundsAdjuster" since="11">
+		<method name="adjustListItemSelectionBounds(Landroid/graphics/Rect;)V" />
+	</class>
+	<class name="android/widget/AbsSeekBar" since="1">
+		<extends name="android/widget/ProgressBar" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getKeyProgressIncrement()I" since="3" />
+		<method name="getThumbOffset()I" />
+		<method name="setKeyProgressIncrement(I)V" since="3" />
+		<method name="setThumb(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setThumbOffset(I)V" />
+	</class>
+	<class name="android/widget/AbsSpinner" since="1">
+		<extends name="android/widget/AdapterView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getAdapter()Landroid/widget/SpinnerAdapter;" />
+		<method name="getSelectedView()Landroid/view/View;" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
+		<method name="pointToPosition(II)I" />
+		<method name="setAdapter(Landroid/widget/SpinnerAdapter;)V" />
+		<method name="setSelection(I)V" />
+		<method name="setSelection(IZ)V" />
+	</class>
+	<class name="android/widget/AbsoluteLayout" since="1">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="onLayout(ZIIII)V" />
+	</class>
+	<class name="android/widget/AbsoluteLayout$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$LayoutParams" />
+		<method name="&lt;init>(IIII)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
+		<field name="x" />
+		<field name="y" />
+	</class>
+	<class name="android/widget/Adapter" since="1">
+		<method name="getCount()I" />
+		<method name="getItem(I)Ljava/lang/Object;" />
+		<method name="getItemId(I)J" />
+		<method name="getItemViewType(I)I" />
+		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getViewTypeCount()I" />
+		<method name="hasStableIds()Z" />
+		<method name="isEmpty()Z" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<field name="IGNORE_ITEM_VIEW_TYPE" />
+		<field name="NO_SELECTION" />
+	</class>
+	<class name="android/widget/AdapterView" since="1">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getAdapter()LT;" />
+		<method name="getCount()I" />
+		<method name="getEmptyView()Landroid/view/View;" />
+		<method name="getFirstVisiblePosition()I" />
+		<method name="getItemAtPosition(I)Ljava/lang/Object;" />
+		<method name="getItemIdAtPosition(I)J" />
+		<method name="getLastVisiblePosition()I" />
+		<method name="getOnItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" />
+		<method name="getOnItemLongClickListener()Landroid/widget/AdapterView$OnItemLongClickListener;" />
+		<method name="getOnItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" />
+		<method name="getPositionForView(Landroid/view/View;)I" />
+		<method name="getSelectedItem()Ljava/lang/Object;" />
+		<method name="getSelectedItemId()J" />
+		<method name="getSelectedItemPosition()I" />
+		<method name="getSelectedView()Landroid/view/View;" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="performItemClick(Landroid/view/View;IJ)Z" />
+		<method name="setAdapter(LT;)V" />
+		<method name="setEmptyView(Landroid/view/View;)V" />
+		<method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V" />
+		<method name="setOnItemLongClickListener(Landroid/widget/AdapterView$OnItemLongClickListener;)V" />
+		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V" />
+		<method name="setSelection(I)V" />
+		<field name="INVALID_POSITION" />
+		<field name="INVALID_ROW_ID" />
+		<field name="ITEM_VIEW_TYPE_HEADER_OR_FOOTER" />
+		<field name="ITEM_VIEW_TYPE_IGNORE" />
+	</class>
+	<class name="android/widget/AdapterView$AdapterContextMenuInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/ContextMenu$ContextMenuInfo" />
+		<method name="&lt;init>(Landroid/view/View;IJ)V" />
+		<field name="id" />
+		<field name="position" />
+		<field name="targetView" />
+	</class>
+	<class name="android/widget/AdapterView$OnItemClickListener" since="1">
+		<method name="onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
+	</class>
+	<class name="android/widget/AdapterView$OnItemLongClickListener" since="1">
+		<method name="onItemLongClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)Z" />
+	</class>
+	<class name="android/widget/AdapterView$OnItemSelectedListener" since="1">
+		<method name="onItemSelected(Landroid/widget/AdapterView;Landroid/view/View;IJ)V" />
+		<method name="onNothingSelected(Landroid/widget/AdapterView;)V" />
+	</class>
+	<class name="android/widget/AdapterViewAnimator" since="11">
+		<extends name="android/widget/AdapterView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="14" />
+		<method name="advance()V" />
+		<method name="deferNotifyDataSetChanged()V" since="14" />
+		<method name="fyiWillBeAdvancedByHostKThx()V" />
+		<method name="getAdapter()Landroid/widget/Adapter;" />
+		<method name="getCurrentView()Landroid/view/View;" />
+		<method name="getDisplayedChild()I" />
+		<method name="getInAnimation()Landroid/animation/ObjectAnimator;" />
+		<method name="getOutAnimation()Landroid/animation/ObjectAnimator;" />
+		<method name="getSelectedView()Landroid/view/View;" />
+		<method name="onRemoteAdapterConnected()Z" />
+		<method name="onRemoteAdapterDisconnected()V" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
+		<method name="setAdapter(Landroid/widget/Adapter;)V" />
+		<method name="setAnimateFirstView(Z)V" />
+		<method name="setDisplayedChild(I)V" />
+		<method name="setInAnimation(Landroid/animation/ObjectAnimator;)V" />
+		<method name="setInAnimation(Landroid/content/Context;I)V" />
+		<method name="setOutAnimation(Landroid/animation/ObjectAnimator;)V" />
+		<method name="setOutAnimation(Landroid/content/Context;I)V" />
+		<method name="setRemoteViewsAdapter(Landroid/content/Intent;)V" />
+		<method name="setSelection(I)V" />
+		<method name="showNext()V" />
+		<method name="showPrevious()V" />
+	</class>
+	<class name="android/widget/AdapterViewFlipper" since="11">
+		<extends name="android/widget/AdapterViewAnimator" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="isAutoStart()Z" />
+		<method name="isFlipping()Z" />
+		<method name="setAutoStart(Z)V" />
+		<method name="setFlipInterval(I)V" />
+		<method name="startFlipping()V" />
+		<method name="stopFlipping()V" />
+	</class>
+	<class name="android/widget/AlphabetIndexer" since="3">
+		<extends name="android/database/DataSetObserver" />
+		<implements name="android/widget/SectionIndexer" />
+		<method name="&lt;init>(Landroid/database/Cursor;ILjava/lang/CharSequence;)V" />
+		<method name="compare(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getPositionForSection(I)I" />
+		<method name="getSectionForPosition(I)I" />
+		<method name="getSections()[Ljava/lang/Object;" />
+		<method name="setCursor(Landroid/database/Cursor;)V" />
+		<field name="mAlphabet" />
+		<field name="mColumnIndex" />
+		<field name="mDataCursor" />
+	</class>
+	<class name="android/widget/AnalogClock" since="1">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/widget/ArrayAdapter" since="1">
+		<extends name="android/widget/BaseAdapter" />
+		<implements name="android/widget/Filterable" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;II)V" />
+		<method name="&lt;init>(Landroid/content/Context;IILjava/util/List;)V" />
+		<method name="&lt;init>(Landroid/content/Context;II[LT;)V" />
+		<method name="&lt;init>(Landroid/content/Context;ILjava/util/List;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I[LT;)V" />
+		<method name="add(LT;)V" />
+		<method name="addAll(Ljava/util/Collection;)V" since="11" />
+		<method name="addAll([LT;)V" since="11" />
+		<method name="clear()V" />
+		<method name="createFromResource(Landroid/content/Context;II)Landroid/widget/ArrayAdapter;" />
+		<method name="getContext()Landroid/content/Context;" />
+		<method name="getCount()I" />
+		<method name="getFilter()Landroid/widget/Filter;" />
+		<method name="getItem(I)LT;" />
+		<method name="getItemId(I)J" />
+		<method name="getPosition(LT;)I" />
+		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="insert(LT;I)V" />
+		<method name="remove(LT;)V" />
+		<method name="setDropDownViewResource(I)V" />
+		<method name="setNotifyOnChange(Z)V" />
+		<method name="sort(Ljava/util/Comparator;)V" since="3" />
+	</class>
+	<class name="android/widget/AutoCompleteTextView" since="1">
+		<extends name="android/widget/EditText" />
+		<implements name="android/widget/Filter$FilterListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="clearListSelection()V" since="3" />
+		<method name="convertSelectionToString(Ljava/lang/Object;)Ljava/lang/CharSequence;" />
+		<method name="dismissDropDown()V" />
+		<method name="enoughToFilter()Z" />
+		<method name="getAdapter()Landroid/widget/ListAdapter;" />
+		<method name="getDropDownAnchor()I" since="3" />
+		<method name="getDropDownBackground()Landroid/graphics/drawable/Drawable;" since="5" />
+		<method name="getDropDownHeight()I" since="4" />
+		<method name="getDropDownHorizontalOffset()I" since="5" />
+		<method name="getDropDownVerticalOffset()I" since="5" />
+		<method name="getDropDownWidth()I" since="3" />
+		<method name="getFilter()Landroid/widget/Filter;" />
+		<method name="getItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" />
+		<method name="getItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" />
+		<method name="getListSelection()I" since="3" />
+		<method name="getOnItemClickListener()Landroid/widget/AdapterView$OnItemClickListener;" since="3" />
+		<method name="getOnItemSelectedListener()Landroid/widget/AdapterView$OnItemSelectedListener;" since="3" />
+		<method name="getThreshold()I" />
+		<method name="getValidator()Landroid/widget/AutoCompleteTextView$Validator;" />
+		<method name="isPerformingCompletion()Z" since="3" />
+		<method name="isPopupShowing()Z" />
+		<method name="onFilterComplete(I)V" />
+		<method name="performCompletion()V" />
+		<method name="performFiltering(Ljava/lang/CharSequence;I)V" />
+		<method name="performValidation()V" />
+		<method name="replaceText(Ljava/lang/CharSequence;)V" />
+		<method name="setAdapter(LT;)V" />
+		<method name="setCompletionHint(Ljava/lang/CharSequence;)V" />
+		<method name="setDropDownAnchor(I)V" since="3" />
+		<method name="setDropDownBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" since="5" />
+		<method name="setDropDownBackgroundResource(I)V" since="5" />
+		<method name="setDropDownHeight(I)V" since="4" />
+		<method name="setDropDownHorizontalOffset(I)V" since="5" />
+		<method name="setDropDownVerticalOffset(I)V" since="5" />
+		<method name="setDropDownWidth(I)V" since="3" />
+		<method name="setListSelection(I)V" since="3" />
+		<method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V" />
+		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V" />
+		<method name="setThreshold(I)V" />
+		<method name="setValidator(Landroid/widget/AutoCompleteTextView$Validator;)V" />
+		<method name="showDropDown()V" />
+	</class>
+	<class name="android/widget/AutoCompleteTextView$Validator" since="1">
+		<method name="fixText(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+		<method name="isValid(Ljava/lang/CharSequence;)Z" />
+	</class>
+	<class name="android/widget/BaseAdapter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/widget/ListAdapter" />
+		<implements name="android/widget/SpinnerAdapter" />
+		<method name="&lt;init>()V" />
+		<method name="areAllItemsEnabled()Z" />
+		<method name="getDropDownView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getItemViewType(I)I" />
+		<method name="getViewTypeCount()I" />
+		<method name="hasStableIds()Z" />
+		<method name="isEmpty()Z" />
+		<method name="isEnabled(I)Z" />
+		<method name="notifyDataSetChanged()V" />
+		<method name="notifyDataSetInvalidated()V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+	</class>
+	<class name="android/widget/BaseExpandableListAdapter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/widget/ExpandableListAdapter" />
+		<implements name="android/widget/HeterogeneousExpandableList" since="8" />
+		<method name="&lt;init>()V" />
+		<method name="areAllItemsEnabled()Z" />
+		<method name="getChildType(II)I" since="8" />
+		<method name="getChildTypeCount()I" since="8" />
+		<method name="getCombinedChildId(JJ)J" />
+		<method name="getCombinedGroupId(J)J" />
+		<method name="getGroupType(I)I" since="8" />
+		<method name="getGroupTypeCount()I" since="8" />
+		<method name="isEmpty()Z" />
+		<method name="notifyDataSetChanged()V" />
+		<method name="notifyDataSetInvalidated()V" />
+		<method name="onGroupCollapsed(I)V" />
+		<method name="onGroupExpanded(I)V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+	</class>
+	<class name="android/widget/Button" since="1">
+		<extends name="android/widget/TextView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/widget/CalendarView" since="11">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getDate()J" />
+		<method name="getFirstDayOfWeek()I" />
+		<method name="getMaxDate()J" />
+		<method name="getMinDate()J" />
+		<method name="getShowWeekNumber()Z" />
+		<method name="setDate(J)V" />
+		<method name="setDate(JZZ)V" />
+		<method name="setFirstDayOfWeek(I)V" />
+		<method name="setMaxDate(J)V" />
+		<method name="setMinDate(J)V" />
+		<method name="setOnDateChangeListener(Landroid/widget/CalendarView$OnDateChangeListener;)V" />
+		<method name="setShowWeekNumber(Z)V" />
+	</class>
+	<class name="android/widget/CalendarView$OnDateChangeListener" since="11">
+		<method name="onSelectedDayChange(Landroid/widget/CalendarView;III)V" />
+	</class>
+	<class name="android/widget/CheckBox" since="1">
+		<extends name="android/widget/CompoundButton" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/widget/Checkable" since="1">
+		<method name="isChecked()Z" />
+		<method name="setChecked(Z)V" />
+		<method name="toggle()V" />
+	</class>
+	<class name="android/widget/CheckedTextView" since="1">
+		<extends name="android/widget/TextView" />
+		<implements name="android/widget/Checkable" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="isChecked()Z" />
+		<method name="setCheckMarkDrawable(I)V" />
+		<method name="setCheckMarkDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setChecked(Z)V" />
+		<method name="toggle()V" />
+	</class>
+	<class name="android/widget/Chronometer" since="1">
+		<extends name="android/widget/TextView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getBase()J" />
+		<method name="getFormat()Ljava/lang/String;" />
+		<method name="getOnChronometerTickListener()Landroid/widget/Chronometer$OnChronometerTickListener;" since="3" />
+		<method name="setBase(J)V" />
+		<method name="setFormat(Ljava/lang/String;)V" />
+		<method name="setOnChronometerTickListener(Landroid/widget/Chronometer$OnChronometerTickListener;)V" since="3" />
+		<method name="start()V" />
+		<method name="stop()V" />
+	</class>
+	<class name="android/widget/Chronometer$OnChronometerTickListener" since="3">
+		<method name="onChronometerTick(Landroid/widget/Chronometer;)V" />
+	</class>
+	<class name="android/widget/CompoundButton" since="1">
+		<extends name="android/widget/Button" />
+		<implements name="android/widget/Checkable" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="isChecked()Z" />
+		<method name="setButtonDrawable(I)V" />
+		<method name="setButtonDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setChecked(Z)V" />
+		<method name="setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V" />
+		<method name="toggle()V" />
+	</class>
+	<class name="android/widget/CompoundButton$OnCheckedChangeListener" since="1">
+		<method name="onCheckedChanged(Landroid/widget/CompoundButton;Z)V" />
+	</class>
+	<class name="android/widget/CursorAdapter" since="1">
+		<extends name="android/widget/BaseAdapter" />
+		<implements name="android/widget/Filterable" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;I)V" since="11" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;Z)V" />
+		<method name="bindView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;)V" />
+		<method name="changeCursor(Landroid/database/Cursor;)V" />
+		<method name="convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;" />
+		<method name="getCount()I" />
+		<method name="getCursor()Landroid/database/Cursor;" />
+		<method name="getFilter()Landroid/widget/Filter;" />
+		<method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;" />
+		<method name="getItem(I)Ljava/lang/Object;" />
+		<method name="getItemId(I)J" />
+		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="init(Landroid/content/Context;Landroid/database/Cursor;Z)V" />
+		<method name="newDropDownView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="newView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="onContentChanged()V" since="3" />
+		<method name="runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;" />
+		<method name="setFilterQueryProvider(Landroid/widget/FilterQueryProvider;)V" />
+		<method name="swapCursor(Landroid/database/Cursor;)Landroid/database/Cursor;" since="11" />
+		<field name="FLAG_AUTO_REQUERY" since="11" />
+		<field name="FLAG_REGISTER_CONTENT_OBSERVER" since="11" />
+	</class>
+	<class name="android/widget/CursorTreeAdapter" since="1">
+		<extends name="android/widget/BaseExpandableListAdapter" />
+		<implements name="android/widget/Filterable" />
+		<method name="&lt;init>(Landroid/database/Cursor;Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/database/Cursor;Landroid/content/Context;Z)V" />
+		<method name="bindChildView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V" />
+		<method name="bindGroupView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V" />
+		<method name="changeCursor(Landroid/database/Cursor;)V" />
+		<method name="convertToString(Landroid/database/Cursor;)Ljava/lang/String;" />
+		<method name="getChild(II)Landroid/database/Cursor;" />
+		<method name="getChildId(II)J" />
+		<method name="getChildView(IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getChildrenCount(I)I" />
+		<method name="getChildrenCursor(Landroid/database/Cursor;)Landroid/database/Cursor;" />
+		<method name="getCursor()Landroid/database/Cursor;" />
+		<method name="getFilter()Landroid/widget/Filter;" />
+		<method name="getFilterQueryProvider()Landroid/widget/FilterQueryProvider;" />
+		<method name="getGroup(I)Landroid/database/Cursor;" />
+		<method name="getGroupCount()I" />
+		<method name="getGroupId(I)J" />
+		<method name="getGroupView(IZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="hasStableIds()Z" />
+		<method name="isChildSelectable(II)Z" />
+		<method name="newChildView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="newGroupView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="notifyDataSetChanged(Z)V" />
+		<method name="runQueryOnBackgroundThread(Ljava/lang/CharSequence;)Landroid/database/Cursor;" />
+		<method name="setChildrenCursor(ILandroid/database/Cursor;)V" />
+		<method name="setFilterQueryProvider(Landroid/widget/FilterQueryProvider;)V" />
+		<method name="setGroupCursor(Landroid/database/Cursor;)V" />
+	</class>
+	<class name="android/widget/DatePicker" since="1">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getCalendarView()Landroid/widget/CalendarView;" since="12" />
+		<method name="getCalendarViewShown()Z" since="11" />
+		<method name="getDayOfMonth()I" />
+		<method name="getMaxDate()J" since="11" />
+		<method name="getMinDate()J" since="11" />
+		<method name="getMonth()I" />
+		<method name="getSpinnersShown()Z" since="11" />
+		<method name="getYear()I" />
+		<method name="init(IIILandroid/widget/DatePicker$OnDateChangedListener;)V" />
+		<method name="setCalendarViewShown(Z)V" since="11" />
+		<method name="setMaxDate(J)V" since="11" />
+		<method name="setMinDate(J)V" since="11" />
+		<method name="setSpinnersShown(Z)V" since="11" />
+		<method name="updateDate(III)V" />
+	</class>
+	<class name="android/widget/DatePicker$OnDateChangedListener" since="1">
+		<method name="onDateChanged(Landroid/widget/DatePicker;III)V" />
+	</class>
+	<class name="android/widget/DialerFilter" since="1">
+		<extends name="android/widget/RelativeLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="append(Ljava/lang/String;)V" />
+		<method name="clearText()V" />
+		<method name="getDigits()Ljava/lang/CharSequence;" />
+		<method name="getFilterText()Ljava/lang/CharSequence;" />
+		<method name="getLetters()Ljava/lang/CharSequence;" />
+		<method name="getMode()I" />
+		<method name="isQwertyKeyboard()Z" />
+		<method name="onModeChange(II)V" />
+		<method name="removeFilterWatcher(Landroid/text/TextWatcher;)V" />
+		<method name="setDigitsWatcher(Landroid/text/TextWatcher;)V" />
+		<method name="setFilterWatcher(Landroid/text/TextWatcher;)V" />
+		<method name="setLettersWatcher(Landroid/text/TextWatcher;)V" />
+		<method name="setMode(I)V" />
+		<field name="DIGITS_AND_LETTERS" />
+		<field name="DIGITS_AND_LETTERS_NO_DIGITS" />
+		<field name="DIGITS_AND_LETTERS_NO_LETTERS" />
+		<field name="DIGITS_ONLY" />
+		<field name="LETTERS_ONLY" />
+	</class>
+	<class name="android/widget/DigitalClock" since="1">
+		<extends name="android/widget/TextView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+	</class>
+	<class name="android/widget/EdgeEffect" since="14">
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="draw(Landroid/graphics/Canvas;)Z" />
+		<method name="finish()V" />
+		<method name="isFinished()Z" />
+		<method name="onAbsorb(I)V" />
+		<method name="onPull(F)V" />
+		<method name="onRelease()V" />
+		<method name="setSize(II)V" />
+	</class>
+	<class name="android/widget/EditText" since="1">
+		<extends name="android/widget/TextView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="extendSelection(I)V" />
+		<method name="selectAll()V" />
+		<method name="setSelection(I)V" />
+		<method name="setSelection(II)V" />
+	</class>
+	<class name="android/widget/ExpandableListAdapter" since="1">
+		<method name="areAllItemsEnabled()Z" />
+		<method name="getChild(II)Ljava/lang/Object;" />
+		<method name="getChildId(II)J" />
+		<method name="getChildView(IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getChildrenCount(I)I" />
+		<method name="getCombinedChildId(JJ)J" />
+		<method name="getCombinedGroupId(J)J" />
+		<method name="getGroup(I)Ljava/lang/Object;" />
+		<method name="getGroupCount()I" />
+		<method name="getGroupId(I)J" />
+		<method name="getGroupView(IZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="hasStableIds()Z" />
+		<method name="isChildSelectable(II)Z" />
+		<method name="isEmpty()Z" />
+		<method name="onGroupCollapsed(I)V" />
+		<method name="onGroupExpanded(I)V" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+	</class>
+	<class name="android/widget/ExpandableListView" since="1">
+		<extends name="android/widget/ListView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="collapseGroup(I)Z" />
+		<method name="expandGroup(I)Z" />
+		<method name="expandGroup(IZ)Z" since="14" />
+		<method name="getExpandableListAdapter()Landroid/widget/ExpandableListAdapter;" />
+		<method name="getExpandableListPosition(I)J" />
+		<method name="getFlatListPosition(J)I" />
+		<method name="getPackedPositionChild(J)I" />
+		<method name="getPackedPositionForChild(II)J" />
+		<method name="getPackedPositionForGroup(I)J" />
+		<method name="getPackedPositionGroup(J)I" />
+		<method name="getPackedPositionType(J)I" />
+		<method name="getSelectedId()J" />
+		<method name="getSelectedPosition()J" />
+		<method name="isGroupExpanded(I)Z" />
+		<method name="setAdapter(Landroid/widget/ExpandableListAdapter;)V" />
+		<method name="setChildDivider(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setChildIndicator(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setChildIndicatorBounds(II)V" />
+		<method name="setGroupIndicator(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setIndicatorBounds(II)V" />
+		<method name="setOnChildClickListener(Landroid/widget/ExpandableListView$OnChildClickListener;)V" />
+		<method name="setOnGroupClickListener(Landroid/widget/ExpandableListView$OnGroupClickListener;)V" />
+		<method name="setOnGroupCollapseListener(Landroid/widget/ExpandableListView$OnGroupCollapseListener;)V" />
+		<method name="setOnGroupExpandListener(Landroid/widget/ExpandableListView$OnGroupExpandListener;)V" />
+		<method name="setSelectedChild(IIZ)Z" />
+		<method name="setSelectedGroup(I)V" />
+		<field name="CHILD_INDICATOR_INHERIT" />
+		<field name="PACKED_POSITION_TYPE_CHILD" />
+		<field name="PACKED_POSITION_TYPE_GROUP" />
+		<field name="PACKED_POSITION_TYPE_NULL" />
+		<field name="PACKED_POSITION_VALUE_NULL" />
+	</class>
+	<class name="android/widget/ExpandableListView$ExpandableListContextMenuInfo" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/ContextMenu$ContextMenuInfo" />
+		<method name="&lt;init>(Landroid/view/View;JJ)V" />
+		<field name="id" />
+		<field name="packedPosition" />
+		<field name="targetView" />
+	</class>
+	<class name="android/widget/ExpandableListView$OnChildClickListener" since="1">
+		<method name="onChildClick(Landroid/widget/ExpandableListView;Landroid/view/View;IIJ)Z" />
+	</class>
+	<class name="android/widget/ExpandableListView$OnGroupClickListener" since="1">
+		<method name="onGroupClick(Landroid/widget/ExpandableListView;Landroid/view/View;IJ)Z" />
+	</class>
+	<class name="android/widget/ExpandableListView$OnGroupCollapseListener" since="1">
+		<method name="onGroupCollapse(I)V" />
+	</class>
+	<class name="android/widget/ExpandableListView$OnGroupExpandListener" since="1">
+		<method name="onGroupExpand(I)V" />
+	</class>
+	<class name="android/widget/Filter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="convertResultToString(Ljava/lang/Object;)Ljava/lang/CharSequence;" />
+		<method name="filter(Ljava/lang/CharSequence;)V" />
+		<method name="filter(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterListener;)V" />
+		<method name="performFiltering(Ljava/lang/CharSequence;)Landroid/widget/Filter$FilterResults;" />
+		<method name="publishResults(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterResults;)V" />
+	</class>
+	<class name="android/widget/Filter$FilterListener" since="1">
+		<method name="onFilterComplete(I)V" />
+	</class>
+	<class name="android/widget/Filter$FilterResults" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="count" />
+		<field name="values" />
+	</class>
+	<class name="android/widget/FilterQueryProvider" since="1">
+		<method name="runQuery(Ljava/lang/CharSequence;)Landroid/database/Cursor;" />
+	</class>
+	<class name="android/widget/Filterable" since="1">
+		<method name="getFilter()Landroid/widget/Filter;" />
+	</class>
+	<class name="android/widget/FrameLayout" since="1">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getConsiderGoneChildrenWhenMeasuring()Z" />
+		<method name="getForeground()Landroid/graphics/drawable/Drawable;" />
+		<method name="getMeasureAllChildren()Z" since="14" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="setForeground(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setForegroundGravity(I)V" />
+		<method name="setMeasureAllChildren(Z)V" />
+	</class>
+	<class name="android/widget/FrameLayout$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$MarginLayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+		<field name="gravity" />
+	</class>
+	<class name="android/widget/Gallery" since="1">
+		<extends name="android/widget/AbsSpinner" />
+		<implements name="android/view/GestureDetector$OnGestureListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="onDown(Landroid/view/MotionEvent;)Z" />
+		<method name="onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
+		<method name="onLongPress(Landroid/view/MotionEvent;)V" />
+		<method name="onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z" />
+		<method name="onShowPress(Landroid/view/MotionEvent;)V" />
+		<method name="onSingleTapUp(Landroid/view/MotionEvent;)Z" />
+		<method name="setAnimationDuration(I)V" />
+		<method name="setCallbackDuringFling(Z)V" />
+		<method name="setGravity(I)V" />
+		<method name="setSpacing(I)V" />
+		<method name="setUnselectedAlpha(F)V" />
+	</class>
+	<class name="android/widget/Gallery$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$LayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+	</class>
+	<class name="android/widget/GridLayout" since="14">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getAlignmentMode()I" />
+		<method name="getColumnCount()I" />
+		<method name="getOrientation()I" />
+		<method name="getRowCount()I" />
+		<method name="getUseDefaultMargins()Z" />
+		<method name="isColumnOrderPreserved()Z" />
+		<method name="isRowOrderPreserved()Z" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="setAlignmentMode(I)V" />
+		<method name="setColumnCount(I)V" />
+		<method name="setColumnOrderPreserved(Z)V" />
+		<method name="setOrientation(I)V" />
+		<method name="setRowCount(I)V" />
+		<method name="setRowOrderPreserved(Z)V" />
+		<method name="setUseDefaultMargins(Z)V" />
+		<method name="spec(I)Landroid/widget/GridLayout$Spec;" />
+		<method name="spec(II)Landroid/widget/GridLayout$Spec;" />
+		<method name="spec(IILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec;" />
+		<method name="spec(ILandroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Spec;" />
+		<field name="ALIGN_BOUNDS" />
+		<field name="ALIGN_MARGINS" />
+		<field name="BASELINE" />
+		<field name="BOTTOM" />
+		<field name="CENTER" />
+		<field name="FILL" />
+		<field name="HORIZONTAL" />
+		<field name="LEFT" />
+		<field name="RIGHT" />
+		<field name="TOP" />
+		<field name="UNDEFINED" />
+		<field name="VERTICAL" />
+	</class>
+	<class name="android/widget/GridLayout$Alignment" since="14">
+	</class>
+	<class name="android/widget/GridLayout$LayoutParams" since="14">
+		<extends name="android/view/ViewGroup$MarginLayoutParams" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+		<method name="&lt;init>(Landroid/widget/GridLayout$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/widget/GridLayout$Spec;Landroid/widget/GridLayout$Spec;)V" />
+		<method name="setGravity(I)V" />
+		<field name="columnSpec" />
+		<field name="rowSpec" />
+	</class>
+	<class name="android/widget/GridLayout$Spec" since="14">
+	</class>
+	<class name="android/widget/GridView" since="1">
+		<extends name="android/widget/AbsListView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getAdapter()Landroid/widget/ListAdapter;" />
+		<method name="getNumColumns()I" since="11" />
+		<method name="getStretchMode()I" />
+		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
+		<method name="setColumnWidth(I)V" />
+		<method name="setGravity(I)V" />
+		<method name="setHorizontalSpacing(I)V" />
+		<method name="setNumColumns(I)V" />
+		<method name="setSelection(I)V" />
+		<method name="setStretchMode(I)V" />
+		<method name="setVerticalSpacing(I)V" />
+		<method name="smoothScrollByOffset(I)V" since="11" />
+		<field name="AUTO_FIT" />
+		<field name="NO_STRETCH" />
+		<field name="STRETCH_COLUMN_WIDTH" />
+		<field name="STRETCH_SPACING" />
+		<field name="STRETCH_SPACING_UNIFORM" since="3" />
+	</class>
+	<class name="android/widget/HeaderViewListAdapter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/widget/Filterable" />
+		<implements name="android/widget/WrapperListAdapter" />
+		<method name="&lt;init>(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/widget/ListAdapter;)V" />
+		<method name="areAllItemsEnabled()Z" />
+		<method name="getCount()I" />
+		<method name="getFilter()Landroid/widget/Filter;" />
+		<method name="getFootersCount()I" />
+		<method name="getHeadersCount()I" />
+		<method name="getItem(I)Ljava/lang/Object;" />
+		<method name="getItemId(I)J" />
+		<method name="getItemViewType(I)I" />
+		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getViewTypeCount()I" />
+		<method name="getWrappedAdapter()Landroid/widget/ListAdapter;" />
+		<method name="hasStableIds()Z" />
+		<method name="isEmpty()Z" />
+		<method name="isEnabled(I)Z" />
+		<method name="registerDataSetObserver(Landroid/database/DataSetObserver;)V" />
+		<method name="removeFooter(Landroid/view/View;)Z" />
+		<method name="removeHeader(Landroid/view/View;)Z" />
+		<method name="unregisterDataSetObserver(Landroid/database/DataSetObserver;)V" />
+	</class>
+	<class name="android/widget/HeterogeneousExpandableList" since="8">
+		<method name="getChildType(II)I" />
+		<method name="getChildTypeCount()I" />
+		<method name="getGroupType(I)I" />
+		<method name="getGroupTypeCount()I" />
+	</class>
+	<class name="android/widget/HorizontalScrollView" since="3">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="arrowScroll(I)Z" />
+		<method name="computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I" />
+		<method name="executeKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="fling(I)V" />
+		<method name="fullScroll(I)Z" />
+		<method name="getMaxScrollAmount()I" />
+		<method name="isFillViewport()Z" />
+		<method name="isSmoothScrollingEnabled()Z" />
+		<method name="pageScroll(I)Z" />
+		<method name="setFillViewport(Z)V" />
+		<method name="setSmoothScrollingEnabled(Z)V" />
+		<method name="smoothScrollBy(II)V" />
+		<method name="smoothScrollTo(II)V" />
+	</class>
+	<class name="android/widget/ImageButton" since="1">
+		<extends name="android/widget/ImageView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/widget/ImageSwitcher" since="1">
+		<extends name="android/widget/ViewSwitcher" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="setImageDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setImageResource(I)V" />
+		<method name="setImageURI(Landroid/net/Uri;)V" />
+	</class>
+	<class name="android/widget/ImageView" since="1">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="clearColorFilter()V" />
+		<method name="getBaselineAlignBottom()Z" since="11" />
+		<method name="getDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getImageMatrix()Landroid/graphics/Matrix;" />
+		<method name="getScaleType()Landroid/widget/ImageView$ScaleType;" />
+		<method name="onCreateDrawableState(I)[I" />
+		<method name="setAdjustViewBounds(Z)V" />
+		<method name="setAlpha(I)V" />
+		<method name="setBaseline(I)V" since="11" />
+		<method name="setBaselineAlignBottom(Z)V" since="11" />
+		<method name="setColorFilter(I)V" since="8" />
+		<method name="setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V" />
+		<method name="setColorFilter(Landroid/graphics/ColorFilter;)V" />
+		<method name="setFrame(IIII)Z" />
+		<method name="setImageBitmap(Landroid/graphics/Bitmap;)V" />
+		<method name="setImageDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setImageLevel(I)V" />
+		<method name="setImageMatrix(Landroid/graphics/Matrix;)V" />
+		<method name="setImageResource(I)V" />
+		<method name="setImageState([IZ)V" />
+		<method name="setImageURI(Landroid/net/Uri;)V" />
+		<method name="setMaxHeight(I)V" />
+		<method name="setMaxWidth(I)V" />
+		<method name="setScaleType(Landroid/widget/ImageView$ScaleType;)V" />
+	</class>
+	<class name="android/widget/ImageView$ScaleType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/widget/ImageView$ScaleType;" />
+		<method name="values()[Landroid/widget/ImageView$ScaleType;" />
+		<field name="CENTER" />
+		<field name="CENTER_CROP" />
+		<field name="CENTER_INSIDE" />
+		<field name="FIT_CENTER" />
+		<field name="FIT_END" />
+		<field name="FIT_START" />
+		<field name="FIT_XY" />
+		<field name="MATRIX" />
+	</class>
+	<class name="android/widget/LinearLayout" since="1">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="11" />
+		<method name="getBaselineAlignedChildIndex()I" />
+		<method name="getDividerPadding()I" since="14" />
+		<method name="getOrientation()I" />
+		<method name="getShowDividers()I" since="11" />
+		<method name="getWeightSum()F" />
+		<method name="isBaselineAligned()Z" />
+		<method name="isMeasureWithLargestChildEnabled()Z" since="11" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="setBaselineAligned(Z)V" />
+		<method name="setBaselineAlignedChildIndex(I)V" />
+		<method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="11" />
+		<method name="setDividerPadding(I)V" since="14" />
+		<method name="setGravity(I)V" />
+		<method name="setHorizontalGravity(I)V" />
+		<method name="setMeasureWithLargestChildEnabled(Z)V" since="11" />
+		<method name="setOrientation(I)V" />
+		<method name="setShowDividers(I)V" since="11" />
+		<method name="setVerticalGravity(I)V" />
+		<method name="setWeightSum(F)V" />
+		<field name="HORIZONTAL" />
+		<field name="SHOW_DIVIDER_BEGINNING" since="11" />
+		<field name="SHOW_DIVIDER_END" since="11" />
+		<field name="SHOW_DIVIDER_MIDDLE" since="11" />
+		<field name="SHOW_DIVIDER_NONE" since="11" />
+		<field name="VERTICAL" />
+	</class>
+	<class name="android/widget/LinearLayout$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$MarginLayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(IIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
+		<field name="gravity" />
+		<field name="weight" />
+	</class>
+	<class name="android/widget/ListAdapter" since="1">
+		<implements name="android/widget/Adapter" />
+		<method name="areAllItemsEnabled()Z" />
+		<method name="isEnabled(I)Z" />
+	</class>
+	<class name="android/widget/ListPopupWindow" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" />
+		<method name="clearListSelection()V" />
+		<method name="dismiss()V" />
+		<method name="getAnchorView()Landroid/view/View;" />
+		<method name="getAnimationStyle()I" />
+		<method name="getBackground()Landroid/graphics/drawable/Drawable;" />
+		<method name="getHeight()I" />
+		<method name="getHorizontalOffset()I" />
+		<method name="getInputMethodMode()I" />
+		<method name="getListView()Landroid/widget/ListView;" />
+		<method name="getPromptPosition()I" />
+		<method name="getSelectedItem()Ljava/lang/Object;" />
+		<method name="getSelectedItemId()J" />
+		<method name="getSelectedItemPosition()I" />
+		<method name="getSelectedView()Landroid/view/View;" />
+		<method name="getSoftInputMode()I" />
+		<method name="getVerticalOffset()I" />
+		<method name="getWidth()I" />
+		<method name="isInputMethodNotNeeded()Z" />
+		<method name="isModal()Z" />
+		<method name="isShowing()Z" />
+		<method name="onKeyDown(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyPreIme(ILandroid/view/KeyEvent;)Z" />
+		<method name="onKeyUp(ILandroid/view/KeyEvent;)Z" />
+		<method name="performItemClick(I)Z" />
+		<method name="postShow()V" />
+		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
+		<method name="setAnchorView(Landroid/view/View;)V" />
+		<method name="setAnimationStyle(I)V" />
+		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setContentWidth(I)V" />
+		<method name="setHeight(I)V" />
+		<method name="setHorizontalOffset(I)V" />
+		<method name="setInputMethodMode(I)V" />
+		<method name="setListSelector(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setModal(Z)V" />
+		<method name="setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V" />
+		<method name="setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V" />
+		<method name="setOnItemSelectedListener(Landroid/widget/AdapterView$OnItemSelectedListener;)V" />
+		<method name="setPromptPosition(I)V" />
+		<method name="setPromptView(Landroid/view/View;)V" />
+		<method name="setSelection(I)V" />
+		<method name="setSoftInputMode(I)V" />
+		<method name="setVerticalOffset(I)V" />
+		<method name="setWidth(I)V" />
+		<method name="show()V" />
+		<field name="INPUT_METHOD_FROM_FOCUSABLE" />
+		<field name="INPUT_METHOD_NEEDED" />
+		<field name="INPUT_METHOD_NOT_NEEDED" />
+		<field name="MATCH_PARENT" />
+		<field name="POSITION_PROMPT_ABOVE" />
+		<field name="POSITION_PROMPT_BELOW" />
+		<field name="WRAP_CONTENT" />
+	</class>
+	<class name="android/widget/ListView" since="1">
+		<extends name="android/widget/AbsListView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="addFooterView(Landroid/view/View;)V" />
+		<method name="addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V" />
+		<method name="addHeaderView(Landroid/view/View;)V" />
+		<method name="addHeaderView(Landroid/view/View;Ljava/lang/Object;Z)V" />
+		<method name="clearChoices()V" />
+		<method name="findViewTraversal(I)Landroid/view/View;" />
+		<method name="findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View;" />
+		<method name="getAdapter()Landroid/widget/ListAdapter;" />
+		<method name="getCheckItemIds()[J" since="4" />
+		<method name="getCheckedItemIds()[J" since="8" />
+		<method name="getCheckedItemPosition()I" />
+		<method name="getCheckedItemPositions()Landroid/util/SparseBooleanArray;" />
+		<method name="getChoiceMode()I" />
+		<method name="getDivider()Landroid/graphics/drawable/Drawable;" />
+		<method name="getDividerHeight()I" />
+		<method name="getFooterViewsCount()I" />
+		<method name="getHeaderViewsCount()I" />
+		<method name="getItemsCanFocus()Z" />
+		<method name="getMaxScrollAmount()I" />
+		<method name="getOverscrollFooter()Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="getOverscrollHeader()Landroid/graphics/drawable/Drawable;" since="9" />
+		<method name="isItemChecked(I)Z" />
+		<method name="removeFooterView(Landroid/view/View;)Z" />
+		<method name="removeHeaderView(Landroid/view/View;)Z" />
+		<method name="setAdapter(Landroid/widget/ListAdapter;)V" />
+		<method name="setChoiceMode(I)V" />
+		<method name="setDivider(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setDividerHeight(I)V" />
+		<method name="setFooterDividersEnabled(Z)V" since="3" />
+		<method name="setHeaderDividersEnabled(Z)V" since="3" />
+		<method name="setItemChecked(IZ)V" />
+		<method name="setItemsCanFocus(Z)V" />
+		<method name="setOverscrollFooter(Landroid/graphics/drawable/Drawable;)V" since="9" />
+		<method name="setOverscrollHeader(Landroid/graphics/drawable/Drawable;)V" since="9" />
+		<method name="setSelection(I)V" />
+		<method name="setSelectionAfterHeaderView()V" />
+		<method name="setSelectionFromTop(II)V" />
+		<method name="smoothScrollByOffset(I)V" since="11" />
+		<field name="CHOICE_MODE_MULTIPLE" />
+		<field name="CHOICE_MODE_NONE" />
+		<field name="CHOICE_MODE_SINGLE" />
+	</class>
+	<class name="android/widget/ListView$FixedViewInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="data" />
+		<field name="isSelectable" />
+		<field name="view" />
+	</class>
+	<class name="android/widget/MediaController" since="1">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Z)V" />
+		<method name="hide()V" />
+		<method name="isShowing()Z" />
+		<method name="onFinishInflate()V" />
+		<method name="setAnchorView(Landroid/view/View;)V" />
+		<method name="setMediaPlayer(Landroid/widget/MediaController$MediaPlayerControl;)V" />
+		<method name="setPrevNextListeners(Landroid/view/View$OnClickListener;Landroid/view/View$OnClickListener;)V" />
+		<method name="show()V" />
+		<method name="show(I)V" />
+	</class>
+	<class name="android/widget/MediaController$MediaPlayerControl" since="1">
+		<method name="canPause()Z" since="5" />
+		<method name="canSeekBackward()Z" since="5" />
+		<method name="canSeekForward()Z" since="5" />
+		<method name="getBufferPercentage()I" />
+		<method name="getCurrentPosition()I" />
+		<method name="getDuration()I" />
+		<method name="isPlaying()Z" />
+		<method name="pause()V" />
+		<method name="seekTo(I)V" />
+		<method name="start()V" />
+	</class>
+	<class name="android/widget/MultiAutoCompleteTextView" since="1">
+		<extends name="android/widget/AutoCompleteTextView" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="performFiltering(Ljava/lang/CharSequence;III)V" />
+		<method name="setTokenizer(Landroid/widget/MultiAutoCompleteTextView$Tokenizer;)V" />
+	</class>
+	<class name="android/widget/MultiAutoCompleteTextView$CommaTokenizer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/widget/MultiAutoCompleteTextView$Tokenizer" />
+		<method name="&lt;init>()V" />
+		<method name="findTokenEnd(Ljava/lang/CharSequence;I)I" />
+		<method name="findTokenStart(Ljava/lang/CharSequence;I)I" />
+		<method name="terminateToken(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/widget/MultiAutoCompleteTextView$Tokenizer" since="1">
+		<method name="findTokenEnd(Ljava/lang/CharSequence;I)I" />
+		<method name="findTokenStart(Ljava/lang/CharSequence;I)I" />
+		<method name="terminateToken(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/widget/NumberPicker" since="11">
+		<extends name="android/widget/LinearLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getDisplayedValues()[Ljava/lang/String;" />
+		<method name="getMaxValue()I" />
+		<method name="getMinValue()I" />
+		<method name="getValue()I" />
+		<method name="getWrapSelectorWheel()Z" />
+		<method name="setDisplayedValues([Ljava/lang/String;)V" />
+		<method name="setFormatter(Landroid/widget/NumberPicker$Formatter;)V" />
+		<method name="setMaxValue(I)V" />
+		<method name="setMinValue(I)V" />
+		<method name="setOnLongPressUpdateInterval(J)V" />
+		<method name="setOnScrollListener(Landroid/widget/NumberPicker$OnScrollListener;)V" />
+		<method name="setOnValueChangedListener(Landroid/widget/NumberPicker$OnValueChangeListener;)V" />
+		<method name="setValue(I)V" />
+		<method name="setWrapSelectorWheel(Z)V" />
+	</class>
+	<class name="android/widget/NumberPicker$Formatter" since="11">
+		<method name="format(I)Ljava/lang/String;" />
+	</class>
+	<class name="android/widget/NumberPicker$OnScrollListener" since="11">
+		<method name="onScrollStateChange(Landroid/widget/NumberPicker;I)V" />
+		<field name="SCROLL_STATE_FLING" />
+		<field name="SCROLL_STATE_IDLE" />
+		<field name="SCROLL_STATE_TOUCH_SCROLL" />
+	</class>
+	<class name="android/widget/NumberPicker$OnValueChangeListener" since="11">
+		<method name="onValueChange(Landroid/widget/NumberPicker;II)V" />
+	</class>
+	<class name="android/widget/OverScroller" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;FF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;FFZ)V" since="11" />
+		<method name="abortAnimation()V" />
+		<method name="computeScrollOffset()Z" />
+		<method name="fling(IIIIIIII)V" />
+		<method name="fling(IIIIIIIIII)V" />
+		<method name="forceFinished(Z)V" />
+		<method name="getCurrVelocity()F" since="14" />
+		<method name="getCurrX()I" />
+		<method name="getCurrY()I" />
+		<method name="getFinalX()I" />
+		<method name="getFinalY()I" />
+		<method name="getStartX()I" />
+		<method name="getStartY()I" />
+		<method name="isFinished()Z" />
+		<method name="isOverScrolled()Z" />
+		<method name="notifyHorizontalEdgeReached(III)V" />
+		<method name="notifyVerticalEdgeReached(III)V" />
+		<method name="setFriction(F)V" since="11" />
+		<method name="springBack(IIIIII)Z" />
+		<method name="startScroll(IIII)V" />
+		<method name="startScroll(IIIII)V" />
+	</class>
+	<class name="android/widget/PopupMenu" since="11">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/View;)V" />
+		<method name="dismiss()V" />
+		<method name="getMenu()Landroid/view/Menu;" />
+		<method name="getMenuInflater()Landroid/view/MenuInflater;" />
+		<method name="inflate(I)V" since="14" />
+		<method name="setOnDismissListener(Landroid/widget/PopupMenu$OnDismissListener;)V" since="14" />
+		<method name="setOnMenuItemClickListener(Landroid/widget/PopupMenu$OnMenuItemClickListener;)V" />
+		<method name="show()V" />
+	</class>
+	<class name="android/widget/PopupMenu$OnDismissListener" since="14">
+		<method name="onDismiss(Landroid/widget/PopupMenu;)V" />
+	</class>
+	<class name="android/widget/PopupMenu$OnMenuItemClickListener" since="11">
+		<method name="onMenuItemClick(Landroid/view/MenuItem;)Z" />
+	</class>
+	<class name="android/widget/PopupWindow" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="11" />
+		<method name="&lt;init>(Landroid/view/View;)V" />
+		<method name="&lt;init>(Landroid/view/View;II)V" />
+		<method name="&lt;init>(Landroid/view/View;IIZ)V" />
+		<method name="dismiss()V" />
+		<method name="getAnimationStyle()I" />
+		<method name="getBackground()Landroid/graphics/drawable/Drawable;" />
+		<method name="getContentView()Landroid/view/View;" />
+		<method name="getHeight()I" />
+		<method name="getInputMethodMode()I" since="3" />
+		<method name="getMaxAvailableHeight(Landroid/view/View;)I" />
+		<method name="getMaxAvailableHeight(Landroid/view/View;I)I" since="3" />
+		<method name="getSoftInputMode()I" since="4" />
+		<method name="getWidth()I" />
+		<method name="isAboveAnchor()Z" since="3" />
+		<method name="isClippingEnabled()Z" since="3" />
+		<method name="isFocusable()Z" />
+		<method name="isOutsideTouchable()Z" since="3" />
+		<method name="isShowing()Z" />
+		<method name="isSplitTouchEnabled()Z" since="11" />
+		<method name="isTouchable()Z" since="3" />
+		<method name="setAnimationStyle(I)V" />
+		<method name="setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setClippingEnabled(Z)V" since="3" />
+		<method name="setContentView(Landroid/view/View;)V" />
+		<method name="setFocusable(Z)V" />
+		<method name="setHeight(I)V" />
+		<method name="setIgnoreCheekPress()V" />
+		<method name="setInputMethodMode(I)V" since="3" />
+		<method name="setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V" />
+		<method name="setOutsideTouchable(Z)V" since="3" />
+		<method name="setSoftInputMode(I)V" since="4" />
+		<method name="setSplitTouchEnabled(Z)V" since="11" />
+		<method name="setTouchInterceptor(Landroid/view/View$OnTouchListener;)V" since="3" />
+		<method name="setTouchable(Z)V" since="3" />
+		<method name="setWidth(I)V" />
+		<method name="setWindowLayoutMode(II)V" since="3" />
+		<method name="showAsDropDown(Landroid/view/View;)V" />
+		<method name="showAsDropDown(Landroid/view/View;II)V" />
+		<method name="showAtLocation(Landroid/view/View;III)V" />
+		<method name="update()V" since="3" />
+		<method name="update(II)V" since="4" />
+		<method name="update(IIII)V" />
+		<method name="update(IIIIZ)V" since="3" />
+		<method name="update(Landroid/view/View;II)V" />
+		<method name="update(Landroid/view/View;IIII)V" />
+		<field name="INPUT_METHOD_FROM_FOCUSABLE" since="3" />
+		<field name="INPUT_METHOD_NEEDED" since="3" />
+		<field name="INPUT_METHOD_NOT_NEEDED" since="3" />
+	</class>
+	<class name="android/widget/PopupWindow$OnDismissListener" since="1">
+		<method name="onDismiss()V" />
+	</class>
+	<class name="android/widget/ProgressBar" since="1">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getIndeterminateDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getInterpolator()Landroid/view/animation/Interpolator;" />
+		<method name="getMax()I" />
+		<method name="getProgress()I" />
+		<method name="getProgressDrawable()Landroid/graphics/drawable/Drawable;" />
+		<method name="getSecondaryProgress()I" />
+		<method name="incrementProgressBy(I)V" />
+		<method name="incrementSecondaryProgressBy(I)V" />
+		<method name="isIndeterminate()Z" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" since="3" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" since="3" />
+		<method name="setIndeterminate(Z)V" />
+		<method name="setIndeterminateDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setInterpolator(Landroid/content/Context;I)V" />
+		<method name="setInterpolator(Landroid/view/animation/Interpolator;)V" />
+		<method name="setMax(I)V" />
+		<method name="setProgress(I)V" />
+		<method name="setProgressDrawable(Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setSecondaryProgress(I)V" />
+	</class>
+	<class name="android/widget/QuickContactBadge" since="5">
+		<extends name="android/widget/ImageView" />
+		<implements name="android/view/View$OnClickListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="assignContactFromEmail(Ljava/lang/String;Z)V" />
+		<method name="assignContactFromPhone(Ljava/lang/String;Z)V" />
+		<method name="assignContactUri(Landroid/net/Uri;)V" />
+		<method name="onClick(Landroid/view/View;)V" />
+		<method name="setExcludeMimes([Ljava/lang/String;)V" />
+		<method name="setImageToDefault()V" since="11" />
+		<method name="setMode(I)V" />
+		<field name="mExcludeMimes" />
+	</class>
+	<class name="android/widget/RadioButton" since="1">
+		<extends name="android/widget/CompoundButton" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/widget/RadioGroup" since="1">
+		<extends name="android/widget/LinearLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="check(I)V" />
+		<method name="clearCheck()V" />
+		<method name="getCheckedRadioButtonId()I" />
+		<method name="setOnCheckedChangeListener(Landroid/widget/RadioGroup$OnCheckedChangeListener;)V" />
+	</class>
+	<class name="android/widget/RadioGroup$LayoutParams" since="1">
+		<extends name="android/widget/LinearLayout$LayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(IIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+	</class>
+	<class name="android/widget/RadioGroup$OnCheckedChangeListener" since="1">
+		<method name="onCheckedChanged(Landroid/widget/RadioGroup;I)V" />
+	</class>
+	<class name="android/widget/RatingBar" since="1">
+		<extends name="android/widget/AbsSeekBar" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getNumStars()I" />
+		<method name="getOnRatingBarChangeListener()Landroid/widget/RatingBar$OnRatingBarChangeListener;" />
+		<method name="getRating()F" />
+		<method name="getStepSize()F" />
+		<method name="isIndicator()Z" />
+		<method name="setIsIndicator(Z)V" />
+		<method name="setNumStars(I)V" />
+		<method name="setOnRatingBarChangeListener(Landroid/widget/RatingBar$OnRatingBarChangeListener;)V" />
+		<method name="setRating(F)V" />
+		<method name="setStepSize(F)V" />
+	</class>
+	<class name="android/widget/RatingBar$OnRatingBarChangeListener" since="1">
+		<method name="onRatingChanged(Landroid/widget/RatingBar;FZ)V" />
+	</class>
+	<class name="android/widget/RelativeLayout" since="1">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="setGravity(I)V" />
+		<method name="setHorizontalGravity(I)V" />
+		<method name="setIgnoreGravity(I)V" />
+		<method name="setVerticalGravity(I)V" />
+		<field name="ABOVE" />
+		<field name="ALIGN_BASELINE" />
+		<field name="ALIGN_BOTTOM" />
+		<field name="ALIGN_LEFT" />
+		<field name="ALIGN_PARENT_BOTTOM" />
+		<field name="ALIGN_PARENT_LEFT" />
+		<field name="ALIGN_PARENT_RIGHT" />
+		<field name="ALIGN_PARENT_TOP" />
+		<field name="ALIGN_RIGHT" />
+		<field name="ALIGN_TOP" />
+		<field name="BELOW" />
+		<field name="CENTER_HORIZONTAL" />
+		<field name="CENTER_IN_PARENT" />
+		<field name="CENTER_VERTICAL" />
+		<field name="LEFT_OF" />
+		<field name="RIGHT_OF" />
+		<field name="TRUE" />
+	</class>
+	<class name="android/widget/RelativeLayout$LayoutParams" since="1">
+		<extends name="android/view/ViewGroup$MarginLayoutParams" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+		<method name="addRule(I)V" />
+		<method name="addRule(II)V" />
+		<method name="debug(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getRules()[I" />
+		<field name="alignWithParent" />
+	</class>
+	<class name="android/widget/RemoteViews" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/LayoutInflater$Filter" />
+		<implements name="android/os/Parcelable" />
+		<method name="&lt;init>(Landroid/os/Parcel;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="addView(ILandroid/widget/RemoteViews;)V" since="7" />
+		<method name="apply(Landroid/content/Context;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="clone()Landroid/widget/RemoteViews;" since="9" />
+		<method name="describeContents()I" />
+		<method name="getLayoutId()I" />
+		<method name="getPackage()Ljava/lang/String;" />
+		<method name="onLoadClass(Ljava/lang/Class;)Z" />
+		<method name="reapply(Landroid/content/Context;Landroid/view/View;)V" />
+		<method name="removeAllViews(I)V" since="7" />
+		<method name="setBitmap(ILjava/lang/String;Landroid/graphics/Bitmap;)V" since="3" />
+		<method name="setBoolean(ILjava/lang/String;Z)V" since="3" />
+		<method name="setBundle(ILjava/lang/String;Landroid/os/Bundle;)V" since="8" />
+		<method name="setByte(ILjava/lang/String;B)V" since="3" />
+		<method name="setChar(ILjava/lang/String;C)V" since="3" />
+		<method name="setCharSequence(ILjava/lang/String;Ljava/lang/CharSequence;)V" since="3" />
+		<method name="setChronometer(IJLjava/lang/String;Z)V" />
+		<method name="setContentDescription(ILjava/lang/CharSequence;)V" since="15" />
+		<method name="setDisplayedChild(II)V" since="12" />
+		<method name="setDouble(ILjava/lang/String;D)V" since="3" />
+		<method name="setEmptyView(II)V" since="11" />
+		<method name="setFloat(ILjava/lang/String;F)V" since="3" />
+		<method name="setImageViewBitmap(ILandroid/graphics/Bitmap;)V" since="3" />
+		<method name="setImageViewResource(II)V" />
+		<method name="setImageViewUri(ILandroid/net/Uri;)V" />
+		<method name="setInt(ILjava/lang/String;I)V" since="3" />
+		<method name="setIntent(ILjava/lang/String;Landroid/content/Intent;)V" since="11" />
+		<method name="setLong(ILjava/lang/String;J)V" since="3" />
+		<method name="setOnClickFillInIntent(ILandroid/content/Intent;)V" since="11" />
+		<method name="setOnClickPendingIntent(ILandroid/app/PendingIntent;)V" since="3" />
+		<method name="setPendingIntentTemplate(ILandroid/app/PendingIntent;)V" since="11" />
+		<method name="setProgressBar(IIIZ)V" />
+		<method name="setRelativeScrollPosition(II)V" since="11" />
+		<method name="setRemoteAdapter(IILandroid/content/Intent;)V" since="11" />
+		<method name="setRemoteAdapter(ILandroid/content/Intent;)V" since="14" />
+		<method name="setScrollPosition(II)V" since="11" />
+		<method name="setShort(ILjava/lang/String;S)V" since="3" />
+		<method name="setString(ILjava/lang/String;Ljava/lang/String;)V" since="3" />
+		<method name="setTextColor(II)V" since="3" />
+		<method name="setTextViewText(ILjava/lang/CharSequence;)V" />
+		<method name="setUri(ILjava/lang/String;Landroid/net/Uri;)V" since="3" />
+		<method name="setViewVisibility(II)V" />
+		<method name="showNext(I)V" since="11" />
+		<method name="showPrevious(I)V" since="11" />
+		<method name="writeToParcel(Landroid/os/Parcel;I)V" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/widget/RemoteViews$ActionException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" since="3" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/widget/RemoteViews$RemoteView" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="android/widget/RemoteViewsService" since="11">
+		<extends name="android/app/Service" />
+		<method name="&lt;init>()V" />
+		<method name="onBind(Landroid/content/Intent;)Landroid/os/IBinder;" />
+		<method name="onGetViewFactory(Landroid/content/Intent;)Landroid/widget/RemoteViewsService$RemoteViewsFactory;" />
+	</class>
+	<class name="android/widget/RemoteViewsService$RemoteViewsFactory" since="11">
+		<method name="getCount()I" />
+		<method name="getItemId(I)J" />
+		<method name="getLoadingView()Landroid/widget/RemoteViews;" />
+		<method name="getViewAt(I)Landroid/widget/RemoteViews;" />
+		<method name="getViewTypeCount()I" />
+		<method name="hasStableIds()Z" />
+		<method name="onCreate()V" />
+		<method name="onDataSetChanged()V" />
+		<method name="onDestroy()V" />
+	</class>
+	<class name="android/widget/ResourceCursorAdapter" since="1">
+		<extends name="android/widget/CursorAdapter" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;)V" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;I)V" since="11" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;Z)V" since="3" />
+		<method name="newView(Landroid/content/Context;Landroid/database/Cursor;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="setDropDownViewResource(I)V" />
+		<method name="setViewResource(I)V" since="3" />
+	</class>
+	<class name="android/widget/ResourceCursorTreeAdapter" since="1">
+		<extends name="android/widget/CursorTreeAdapter" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;II)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;III)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;IIII)V" />
+		<method name="newChildView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="newGroupView(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;" />
+	</class>
+	<class name="android/widget/ScrollView" since="1">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="arrowScroll(I)Z" />
+		<method name="computeScrollDeltaToGetChildRectOnScreen(Landroid/graphics/Rect;)I" />
+		<method name="executeKeyEvent(Landroid/view/KeyEvent;)Z" />
+		<method name="fling(I)V" />
+		<method name="fullScroll(I)Z" />
+		<method name="getMaxScrollAmount()I" />
+		<method name="isFillViewport()Z" />
+		<method name="isSmoothScrollingEnabled()Z" />
+		<method name="pageScroll(I)Z" />
+		<method name="setFillViewport(Z)V" />
+		<method name="setSmoothScrollingEnabled(Z)V" />
+		<method name="smoothScrollBy(II)V" />
+		<method name="smoothScrollTo(II)V" />
+	</class>
+	<class name="android/widget/Scroller" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V" since="11" />
+		<method name="abortAnimation()V" />
+		<method name="computeScrollOffset()Z" />
+		<method name="extendDuration(I)V" />
+		<method name="fling(IIIIIIII)V" />
+		<method name="forceFinished(Z)V" />
+		<method name="getCurrVelocity()F" since="14" />
+		<method name="getCurrX()I" />
+		<method name="getCurrY()I" />
+		<method name="getDuration()I" />
+		<method name="getFinalX()I" />
+		<method name="getFinalY()I" />
+		<method name="getStartX()I" since="3" />
+		<method name="getStartY()I" since="3" />
+		<method name="isFinished()Z" />
+		<method name="setFinalX(I)V" />
+		<method name="setFinalY(I)V" />
+		<method name="setFriction(F)V" since="11" />
+		<method name="startScroll(IIII)V" />
+		<method name="startScroll(IIIII)V" />
+		<method name="timePassed()I" />
+	</class>
+	<class name="android/widget/SearchView" since="11">
+		<extends name="android/widget/LinearLayout" />
+		<implements name="android/view/CollapsibleActionView" since="14" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getQuery()Ljava/lang/CharSequence;" />
+		<method name="getSuggestionsAdapter()Landroid/widget/CursorAdapter;" />
+		<method name="isIconfiedByDefault()Z" />
+		<method name="isIconified()Z" />
+		<method name="isQueryRefinementEnabled()Z" />
+		<method name="isSubmitButtonEnabled()Z" />
+		<method name="onActionViewCollapsed()V" since="14" />
+		<method name="onActionViewExpanded()V" since="14" />
+		<method name="setIconified(Z)V" />
+		<method name="setIconifiedByDefault(Z)V" />
+		<method name="setImeOptions(I)V" since="14" />
+		<method name="setInputType(I)V" since="14" />
+		<method name="setMaxWidth(I)V" />
+		<method name="setOnCloseListener(Landroid/widget/SearchView$OnCloseListener;)V" />
+		<method name="setOnQueryTextFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V" />
+		<method name="setOnQueryTextListener(Landroid/widget/SearchView$OnQueryTextListener;)V" />
+		<method name="setOnSearchClickListener(Landroid/view/View$OnClickListener;)V" />
+		<method name="setOnSuggestionListener(Landroid/widget/SearchView$OnSuggestionListener;)V" />
+		<method name="setQuery(Ljava/lang/CharSequence;Z)V" />
+		<method name="setQueryHint(Ljava/lang/CharSequence;)V" />
+		<method name="setQueryRefinementEnabled(Z)V" />
+		<method name="setSearchableInfo(Landroid/app/SearchableInfo;)V" />
+		<method name="setSubmitButtonEnabled(Z)V" />
+		<method name="setSuggestionsAdapter(Landroid/widget/CursorAdapter;)V" />
+	</class>
+	<class name="android/widget/SearchView$OnCloseListener" since="11">
+		<method name="onClose()Z" />
+	</class>
+	<class name="android/widget/SearchView$OnQueryTextListener" since="11">
+		<method name="onQueryTextChange(Ljava/lang/String;)Z" />
+		<method name="onQueryTextSubmit(Ljava/lang/String;)Z" />
+	</class>
+	<class name="android/widget/SearchView$OnSuggestionListener" since="11">
+		<method name="onSuggestionClick(I)Z" />
+		<method name="onSuggestionSelect(I)Z" />
+	</class>
+	<class name="android/widget/SectionIndexer" since="3">
+		<method name="getPositionForSection(I)I" />
+		<method name="getSectionForPosition(I)I" />
+		<method name="getSections()[Ljava/lang/Object;" />
+	</class>
+	<class name="android/widget/SeekBar" since="1">
+		<extends name="android/widget/AbsSeekBar" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="setOnSeekBarChangeListener(Landroid/widget/SeekBar$OnSeekBarChangeListener;)V" />
+	</class>
+	<class name="android/widget/SeekBar$OnSeekBarChangeListener" since="1">
+		<method name="onProgressChanged(Landroid/widget/SeekBar;IZ)V" />
+		<method name="onStartTrackingTouch(Landroid/widget/SeekBar;)V" />
+		<method name="onStopTrackingTouch(Landroid/widget/SeekBar;)V" />
+	</class>
+	<class name="android/widget/ShareActionProvider" since="14">
+		<extends name="android/view/ActionProvider" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="onCreateActionView()Landroid/view/View;" />
+		<method name="setOnShareTargetSelectedListener(Landroid/widget/ShareActionProvider$OnShareTargetSelectedListener;)V" />
+		<method name="setShareHistoryFileName(Ljava/lang/String;)V" />
+		<method name="setShareIntent(Landroid/content/Intent;)V" />
+		<field name="DEFAULT_SHARE_HISTORY_FILE_NAME" />
+	</class>
+	<class name="android/widget/ShareActionProvider$OnShareTargetSelectedListener" since="14">
+		<method name="onShareTargetSelected(Landroid/widget/ShareActionProvider;Landroid/content/Intent;)Z" />
+	</class>
+	<class name="android/widget/SimpleAdapter" since="1">
+		<extends name="android/widget/BaseAdapter" />
+		<implements name="android/widget/Filterable" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;I[Ljava/lang/String;[I)V" />
+		<method name="getCount()I" />
+		<method name="getFilter()Landroid/widget/Filter;" />
+		<method name="getItem(I)Ljava/lang/Object;" />
+		<method name="getItemId(I)J" />
+		<method name="getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getViewBinder()Landroid/widget/SimpleAdapter$ViewBinder;" />
+		<method name="setDropDownViewResource(I)V" />
+		<method name="setViewBinder(Landroid/widget/SimpleAdapter$ViewBinder;)V" />
+		<method name="setViewImage(Landroid/widget/ImageView;I)V" />
+		<method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V" />
+		<method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/widget/SimpleAdapter$ViewBinder" since="1">
+		<method name="setViewValue(Landroid/view/View;Ljava/lang/Object;Ljava/lang/String;)Z" />
+	</class>
+	<class name="android/widget/SimpleCursorAdapter" since="1">
+		<extends name="android/widget/ResourceCursorAdapter" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Landroid/content/Context;ILandroid/database/Cursor;[Ljava/lang/String;[II)V" since="11" />
+		<method name="bindView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;)V" />
+		<method name="changeCursorAndColumns(Landroid/database/Cursor;[Ljava/lang/String;[I)V" since="3" />
+		<method name="getCursorToStringConverter()Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;" />
+		<method name="getStringConversionColumn()I" />
+		<method name="getViewBinder()Landroid/widget/SimpleCursorAdapter$ViewBinder;" />
+		<method name="setCursorToStringConverter(Landroid/widget/SimpleCursorAdapter$CursorToStringConverter;)V" />
+		<method name="setStringConversionColumn(I)V" />
+		<method name="setViewBinder(Landroid/widget/SimpleCursorAdapter$ViewBinder;)V" />
+		<method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V" />
+		<method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" />
+	</class>
+	<class name="android/widget/SimpleCursorAdapter$CursorToStringConverter" since="1">
+		<method name="convertToString(Landroid/database/Cursor;)Ljava/lang/CharSequence;" />
+	</class>
+	<class name="android/widget/SimpleCursorAdapter$ViewBinder" since="1">
+		<method name="setViewValue(Landroid/view/View;Landroid/database/Cursor;I)Z" />
+	</class>
+	<class name="android/widget/SimpleCursorTreeAdapter" since="1">
+		<extends name="android/widget/ResourceCursorTreeAdapter" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;II[Ljava/lang/String;[III[Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;II[Ljava/lang/String;[II[Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/database/Cursor;I[Ljava/lang/String;[II[Ljava/lang/String;[I)V" />
+		<method name="bindChildView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V" />
+		<method name="bindGroupView(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V" />
+		<method name="getViewBinder()Landroid/widget/SimpleCursorTreeAdapter$ViewBinder;" since="5" />
+		<method name="setViewBinder(Landroid/widget/SimpleCursorTreeAdapter$ViewBinder;)V" since="5" />
+		<method name="setViewImage(Landroid/widget/ImageView;Ljava/lang/String;)V" />
+		<method name="setViewText(Landroid/widget/TextView;Ljava/lang/String;)V" since="5" />
+	</class>
+	<class name="android/widget/SimpleCursorTreeAdapter$ViewBinder" since="5">
+		<method name="setViewValue(Landroid/view/View;Landroid/database/Cursor;I)Z" />
+	</class>
+	<class name="android/widget/SimpleExpandableListAdapter" since="1">
+		<extends name="android/widget/BaseExpandableListAdapter" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;II[Ljava/lang/String;[ILjava/util/List;II[Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;II[Ljava/lang/String;[ILjava/util/List;I[Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Ljava/util/List;I[Ljava/lang/String;[ILjava/util/List;I[Ljava/lang/String;[I)V" />
+		<method name="getChild(II)Ljava/lang/Object;" />
+		<method name="getChildId(II)J" />
+		<method name="getChildView(IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="getChildrenCount(I)I" />
+		<method name="getGroup(I)Ljava/lang/Object;" />
+		<method name="getGroupCount()I" />
+		<method name="getGroupId(I)J" />
+		<method name="getGroupView(IZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="hasStableIds()Z" />
+		<method name="isChildSelectable(II)Z" />
+		<method name="newChildView(ZLandroid/view/ViewGroup;)Landroid/view/View;" />
+		<method name="newGroupView(ZLandroid/view/ViewGroup;)Landroid/view/View;" />
+	</class>
+	<class name="android/widget/SlidingDrawer" since="3">
+		<extends name="android/view/ViewGroup" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="animateClose()V" />
+		<method name="animateOpen()V" />
+		<method name="animateToggle()V" />
+		<method name="close()V" />
+		<method name="getContent()Landroid/view/View;" />
+		<method name="getHandle()Landroid/view/View;" />
+		<method name="isMoving()Z" />
+		<method name="isOpened()Z" />
+		<method name="lock()V" />
+		<method name="onLayout(ZIIII)V" />
+		<method name="open()V" />
+		<method name="setOnDrawerCloseListener(Landroid/widget/SlidingDrawer$OnDrawerCloseListener;)V" />
+		<method name="setOnDrawerOpenListener(Landroid/widget/SlidingDrawer$OnDrawerOpenListener;)V" />
+		<method name="setOnDrawerScrollListener(Landroid/widget/SlidingDrawer$OnDrawerScrollListener;)V" />
+		<method name="toggle()V" />
+		<method name="unlock()V" />
+		<field name="ORIENTATION_HORIZONTAL" />
+		<field name="ORIENTATION_VERTICAL" />
+	</class>
+	<class name="android/widget/SlidingDrawer$OnDrawerCloseListener" since="3">
+		<method name="onDrawerClosed()V" />
+	</class>
+	<class name="android/widget/SlidingDrawer$OnDrawerOpenListener" since="3">
+		<method name="onDrawerOpened()V" />
+	</class>
+	<class name="android/widget/SlidingDrawer$OnDrawerScrollListener" since="3">
+		<method name="onScrollEnded()V" />
+		<method name="onScrollStarted()V" />
+	</class>
+	<class name="android/widget/Space" since="14">
+		<extends name="android/view/View" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+	</class>
+	<class name="android/widget/Spinner" since="1">
+		<extends name="android/widget/AbsSpinner" />
+		<implements name="android/content/DialogInterface$OnClickListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;I)V" since="11" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V" since="11" />
+		<method name="getPrompt()Ljava/lang/CharSequence;" />
+		<method name="onClick(Landroid/content/DialogInterface;I)V" />
+		<method name="setGravity(I)V" since="11" />
+		<method name="setPrompt(Ljava/lang/CharSequence;)V" />
+		<method name="setPromptId(I)V" />
+		<field name="MODE_DIALOG" since="11" />
+		<field name="MODE_DROPDOWN" since="11" />
+	</class>
+	<class name="android/widget/SpinnerAdapter" since="1">
+		<implements name="android/widget/Adapter" />
+		<method name="getDropDownView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;" />
+	</class>
+	<class name="android/widget/StackView" since="11">
+		<extends name="android/widget/AdapterViewAnimator" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" since="14" />
+	</class>
+	<class name="android/widget/Switch" since="14">
+		<extends name="android/widget/CompoundButton" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getTextOff()Ljava/lang/CharSequence;" />
+		<method name="getTextOn()Ljava/lang/CharSequence;" />
+		<method name="onMeasure(II)V" />
+		<method name="setSwitchTextAppearance(Landroid/content/Context;I)V" />
+		<method name="setSwitchTypeface(Landroid/graphics/Typeface;)V" />
+		<method name="setSwitchTypeface(Landroid/graphics/Typeface;I)V" />
+		<method name="setTextOff(Ljava/lang/CharSequence;)V" />
+		<method name="setTextOn(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/widget/TabHost" since="1">
+		<extends name="android/widget/FrameLayout" />
+		<implements name="android/view/ViewTreeObserver$OnTouchModeChangeListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="addTab(Landroid/widget/TabHost$TabSpec;)V" />
+		<method name="clearAllTabs()V" />
+		<method name="getCurrentTab()I" />
+		<method name="getCurrentTabTag()Ljava/lang/String;" />
+		<method name="getCurrentTabView()Landroid/view/View;" />
+		<method name="getCurrentView()Landroid/view/View;" />
+		<method name="getTabContentView()Landroid/widget/FrameLayout;" />
+		<method name="getTabWidget()Landroid/widget/TabWidget;" />
+		<method name="newTabSpec(Ljava/lang/String;)Landroid/widget/TabHost$TabSpec;" />
+		<method name="onTouchModeChanged(Z)V" />
+		<method name="setCurrentTab(I)V" />
+		<method name="setCurrentTabByTag(Ljava/lang/String;)V" />
+		<method name="setOnTabChangedListener(Landroid/widget/TabHost$OnTabChangeListener;)V" />
+		<method name="setup()V" />
+		<method name="setup(Landroid/app/LocalActivityManager;)V" />
+	</class>
+	<class name="android/widget/TabHost$OnTabChangeListener" since="1">
+		<method name="onTabChanged(Ljava/lang/String;)V" />
+	</class>
+	<class name="android/widget/TabHost$TabContentFactory" since="1">
+		<method name="createTabContent(Ljava/lang/String;)Landroid/view/View;" />
+	</class>
+	<class name="android/widget/TabHost$TabSpec" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getTag()Ljava/lang/String;" since="4" />
+		<method name="setContent(I)Landroid/widget/TabHost$TabSpec;" />
+		<method name="setContent(Landroid/content/Intent;)Landroid/widget/TabHost$TabSpec;" />
+		<method name="setContent(Landroid/widget/TabHost$TabContentFactory;)Landroid/widget/TabHost$TabSpec;" />
+		<method name="setIndicator(Landroid/view/View;)Landroid/widget/TabHost$TabSpec;" since="4" />
+		<method name="setIndicator(Ljava/lang/CharSequence;)Landroid/widget/TabHost$TabSpec;" />
+		<method name="setIndicator(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)Landroid/widget/TabHost$TabSpec;" />
+	</class>
+	<class name="android/widget/TabWidget" since="1">
+		<extends name="android/widget/LinearLayout" />
+		<implements name="android/view/View$OnFocusChangeListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="dispatchDraw(Landroid/graphics/Canvas;)V" />
+		<method name="focusCurrentTab(I)V" />
+		<method name="getChildTabViewAt(I)Landroid/view/View;" since="4" />
+		<method name="getTabCount()I" since="4" />
+		<method name="isStripEnabled()Z" since="8" />
+		<method name="onFocusChange(Landroid/view/View;Z)V" />
+		<method name="setCurrentTab(I)V" />
+		<method name="setDividerDrawable(I)V" since="4" />
+		<method name="setDividerDrawable(Landroid/graphics/drawable/Drawable;)V" since="4" />
+		<method name="setLeftStripDrawable(I)V" since="8" />
+		<method name="setLeftStripDrawable(Landroid/graphics/drawable/Drawable;)V" since="8" />
+		<method name="setRightStripDrawable(I)V" since="8" />
+		<method name="setRightStripDrawable(Landroid/graphics/drawable/Drawable;)V" since="8" />
+		<method name="setStripEnabled(Z)V" since="8" />
+	</class>
+	<class name="android/widget/TableLayout" since="1">
+		<extends name="android/widget/LinearLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="isColumnCollapsed(I)Z" />
+		<method name="isColumnShrinkable(I)Z" />
+		<method name="isColumnStretchable(I)Z" />
+		<method name="isShrinkAllColumns()Z" />
+		<method name="isStretchAllColumns()Z" />
+		<method name="setColumnCollapsed(IZ)V" />
+		<method name="setColumnShrinkable(IZ)V" />
+		<method name="setColumnStretchable(IZ)V" />
+		<method name="setShrinkAllColumns(Z)V" />
+		<method name="setStretchAllColumns(Z)V" />
+	</class>
+	<class name="android/widget/TableLayout$LayoutParams" since="1">
+		<extends name="android/widget/LinearLayout$LayoutParams" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(IIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+	</class>
+	<class name="android/widget/TableRow" since="1">
+		<extends name="android/widget/LinearLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getVirtualChildAt(I)Landroid/view/View;" />
+		<method name="getVirtualChildCount()I" />
+	</class>
+	<class name="android/widget/TableRow$LayoutParams" since="1">
+		<extends name="android/widget/LinearLayout$LayoutParams" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(IIF)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$LayoutParams;)V" />
+		<method name="&lt;init>(Landroid/view/ViewGroup$MarginLayoutParams;)V" />
+		<field name="column" />
+		<field name="span" />
+	</class>
+	<class name="android/widget/TextSwitcher" since="1">
+		<extends name="android/widget/ViewSwitcher" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="setCurrentText(Ljava/lang/CharSequence;)V" />
+		<method name="setText(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/widget/TextView" since="1">
+		<extends name="android/view/View" />
+		<implements name="android/view/ViewTreeObserver$OnPreDrawListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="addTextChangedListener(Landroid/text/TextWatcher;)V" />
+		<method name="append(Ljava/lang/CharSequence;)V" />
+		<method name="append(Ljava/lang/CharSequence;II)V" />
+		<method name="beginBatchEdit()V" since="3" />
+		<method name="bringPointIntoView(I)Z" since="3" />
+		<method name="clearComposingText()V" since="3" />
+		<method name="debug(I)V" />
+		<method name="didTouchFocusSelect()Z" since="3" />
+		<method name="endBatchEdit()V" since="3" />
+		<method name="extractText(Landroid/view/inputmethod/ExtractedTextRequest;Landroid/view/inputmethod/ExtractedText;)Z" since="3" />
+		<method name="getAutoLinkMask()I" />
+		<method name="getCompoundDrawablePadding()I" />
+		<method name="getCompoundDrawables()[Landroid/graphics/drawable/Drawable;" />
+		<method name="getCompoundPaddingBottom()I" />
+		<method name="getCompoundPaddingLeft()I" />
+		<method name="getCompoundPaddingRight()I" />
+		<method name="getCompoundPaddingTop()I" />
+		<method name="getCurrentHintTextColor()I" />
+		<method name="getCurrentTextColor()I" />
+		<method name="getCustomSelectionActionModeCallback()Landroid/view/ActionMode$Callback;" since="11" />
+		<method name="getDefaultEditable()Z" />
+		<method name="getDefaultMovementMethod()Landroid/text/method/MovementMethod;" />
+		<method name="getEditableText()Landroid/text/Editable;" since="3" />
+		<method name="getEllipsize()Landroid/text/TextUtils$TruncateAt;" />
+		<method name="getError()Ljava/lang/CharSequence;" />
+		<method name="getExtendedPaddingBottom()I" />
+		<method name="getExtendedPaddingTop()I" />
+		<method name="getFilters()[Landroid/text/InputFilter;" />
+		<method name="getFreezesText()Z" />
+		<method name="getGravity()I" />
+		<method name="getHint()Ljava/lang/CharSequence;" />
+		<method name="getHintTextColors()Landroid/content/res/ColorStateList;" />
+		<method name="getImeActionId()I" since="3" />
+		<method name="getImeActionLabel()Ljava/lang/CharSequence;" since="3" />
+		<method name="getImeOptions()I" since="3" />
+		<method name="getInputExtras(Z)Landroid/os/Bundle;" since="3" />
+		<method name="getInputType()I" since="3" />
+		<method name="getKeyListener()Landroid/text/method/KeyListener;" />
+		<method name="getLayout()Landroid/text/Layout;" />
+		<method name="getLineBounds(ILandroid/graphics/Rect;)I" />
+		<method name="getLineCount()I" />
+		<method name="getLineHeight()I" />
+		<method name="getLinkTextColors()Landroid/content/res/ColorStateList;" />
+		<method name="getLinksClickable()Z" />
+		<method name="getMovementMethod()Landroid/text/method/MovementMethod;" />
+		<method name="getOffsetForPosition(FF)I" since="14" />
+		<method name="getPaint()Landroid/text/TextPaint;" />
+		<method name="getPaintFlags()I" />
+		<method name="getPrivateImeOptions()Ljava/lang/String;" since="3" />
+		<method name="getSelectionEnd()I" />
+		<method name="getSelectionStart()I" />
+		<method name="getText()Ljava/lang/CharSequence;" />
+		<method name="getTextColor(Landroid/content/Context;Landroid/content/res/TypedArray;I)I" />
+		<method name="getTextColors()Landroid/content/res/ColorStateList;" />
+		<method name="getTextColors(Landroid/content/Context;Landroid/content/res/TypedArray;)Landroid/content/res/ColorStateList;" />
+		<method name="getTextScaleX()F" />
+		<method name="getTextSize()F" />
+		<method name="getTotalPaddingBottom()I" />
+		<method name="getTotalPaddingLeft()I" />
+		<method name="getTotalPaddingRight()I" />
+		<method name="getTotalPaddingTop()I" />
+		<method name="getTransformationMethod()Landroid/text/method/TransformationMethod;" />
+		<method name="getTypeface()Landroid/graphics/Typeface;" />
+		<method name="getUrls()[Landroid/text/style/URLSpan;" />
+		<method name="hasSelection()Z" />
+		<method name="isInputMethodTarget()Z" since="3" />
+		<method name="isSuggestionsEnabled()Z" since="14" />
+		<method name="isTextSelectable()Z" since="11" />
+		<method name="length()I" />
+		<method name="moveCursorToVisibleOffset()Z" since="3" />
+		<method name="onBeginBatchEdit()V" since="3" />
+		<method name="onCommitCompletion(Landroid/view/inputmethod/CompletionInfo;)V" since="3" />
+		<method name="onCommitCorrection(Landroid/view/inputmethod/CorrectionInfo;)V" since="11" />
+		<method name="onEditorAction(I)V" since="3" />
+		<method name="onEndBatchEdit()V" since="3" />
+		<method name="onPreDraw()Z" />
+		<method name="onPrivateIMECommand(Ljava/lang/String;Landroid/os/Bundle;)Z" since="3" />
+		<method name="onRestoreInstanceState(Landroid/os/Parcelable;)V" />
+		<method name="onSaveInstanceState()Landroid/os/Parcelable;" />
+		<method name="onSelectionChanged(II)V" since="3" />
+		<method name="onTextChanged(Ljava/lang/CharSequence;III)V" />
+		<method name="onTextContextMenuItem(I)Z" since="3" />
+		<method name="removeTextChangedListener(Landroid/text/TextWatcher;)V" />
+		<method name="resetResolvedDrawables()V" since="14" />
+		<method name="resetResolvedLayoutDirection()V" since="14" />
+		<method name="resolveDrawables()V" since="14" />
+		<method name="resolveTextDirection()V" since="14" />
+		<method name="setAllCaps(Z)V" since="14" />
+		<method name="setAutoLinkMask(I)V" />
+		<method name="setCompoundDrawablePadding(I)V" />
+		<method name="setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setCompoundDrawablesWithIntrinsicBounds(IIII)V" since="3" />
+		<method name="setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setCursorVisible(Z)V" />
+		<method name="setCustomSelectionActionModeCallback(Landroid/view/ActionMode$Callback;)V" since="11" />
+		<method name="setEditableFactory(Landroid/text/Editable$Factory;)V" />
+		<method name="setEllipsize(Landroid/text/TextUtils$TruncateAt;)V" />
+		<method name="setEms(I)V" />
+		<method name="setError(Ljava/lang/CharSequence;)V" />
+		<method name="setError(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;)V" />
+		<method name="setExtractedText(Landroid/view/inputmethod/ExtractedText;)V" since="3" />
+		<method name="setFilters([Landroid/text/InputFilter;)V" />
+		<method name="setFrame(IIII)Z" />
+		<method name="setFreezesText(Z)V" />
+		<method name="setGravity(I)V" />
+		<method name="setHeight(I)V" />
+		<method name="setHighlightColor(I)V" />
+		<method name="setHint(I)V" />
+		<method name="setHint(Ljava/lang/CharSequence;)V" />
+		<method name="setHintTextColor(I)V" />
+		<method name="setHintTextColor(Landroid/content/res/ColorStateList;)V" />
+		<method name="setHorizontallyScrolling(Z)V" />
+		<method name="setImeActionLabel(Ljava/lang/CharSequence;I)V" since="3" />
+		<method name="setImeOptions(I)V" since="3" />
+		<method name="setIncludeFontPadding(Z)V" />
+		<method name="setInputExtras(I)V" since="3" />
+		<method name="setInputType(I)V" since="3" />
+		<method name="setKeyListener(Landroid/text/method/KeyListener;)V" />
+		<method name="setLineSpacing(FF)V" />
+		<method name="setLines(I)V" />
+		<method name="setLinkTextColor(I)V" />
+		<method name="setLinkTextColor(Landroid/content/res/ColorStateList;)V" />
+		<method name="setLinksClickable(Z)V" />
+		<method name="setMarqueeRepeatLimit(I)V" since="2" />
+		<method name="setMaxEms(I)V" />
+		<method name="setMaxHeight(I)V" />
+		<method name="setMaxLines(I)V" />
+		<method name="setMaxWidth(I)V" />
+		<method name="setMinEms(I)V" />
+		<method name="setMinHeight(I)V" />
+		<method name="setMinLines(I)V" />
+		<method name="setMinWidth(I)V" />
+		<method name="setMovementMethod(Landroid/text/method/MovementMethod;)V" />
+		<method name="setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V" since="3" />
+		<method name="setPaintFlags(I)V" />
+		<method name="setPrivateImeOptions(Ljava/lang/String;)V" since="3" />
+		<method name="setRawInputType(I)V" since="3" />
+		<method name="setScroller(Landroid/widget/Scroller;)V" />
+		<method name="setSelectAllOnFocus(Z)V" />
+		<method name="setShadowLayer(FFFI)V" />
+		<method name="setSingleLine()V" />
+		<method name="setSingleLine(Z)V" />
+		<method name="setSpannableFactory(Landroid/text/Spannable$Factory;)V" />
+		<method name="setText(I)V" />
+		<method name="setText(ILandroid/widget/TextView$BufferType;)V" />
+		<method name="setText(Ljava/lang/CharSequence;)V" />
+		<method name="setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V" />
+		<method name="setText([CII)V" />
+		<method name="setTextAppearance(Landroid/content/Context;I)V" />
+		<method name="setTextColor(I)V" />
+		<method name="setTextColor(Landroid/content/res/ColorStateList;)V" />
+		<method name="setTextIsSelectable(Z)V" since="11" />
+		<method name="setTextKeepState(Ljava/lang/CharSequence;)V" />
+		<method name="setTextKeepState(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V" />
+		<method name="setTextScaleX(F)V" />
+		<method name="setTextSize(F)V" />
+		<method name="setTextSize(IF)V" />
+		<method name="setTransformationMethod(Landroid/text/method/TransformationMethod;)V" />
+		<method name="setTypeface(Landroid/graphics/Typeface;)V" />
+		<method name="setTypeface(Landroid/graphics/Typeface;I)V" />
+		<method name="setWidth(I)V" />
+	</class>
+	<class name="android/widget/TextView$BufferType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Landroid/widget/TextView$BufferType;" />
+		<method name="values()[Landroid/widget/TextView$BufferType;" />
+		<field name="EDITABLE" />
+		<field name="NORMAL" />
+		<field name="SPANNABLE" />
+	</class>
+	<class name="android/widget/TextView$OnEditorActionListener" since="3">
+		<method name="onEditorAction(Landroid/widget/TextView;ILandroid/view/KeyEvent;)Z" />
+	</class>
+	<class name="android/widget/TextView$SavedState" since="1">
+		<extends name="android/view/View$BaseSavedState" />
+		<field name="CREATOR" />
+	</class>
+	<class name="android/widget/TimePicker" since="1">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getCurrentHour()Ljava/lang/Integer;" />
+		<method name="getCurrentMinute()Ljava/lang/Integer;" />
+		<method name="is24HourView()Z" />
+		<method name="setCurrentHour(Ljava/lang/Integer;)V" />
+		<method name="setCurrentMinute(Ljava/lang/Integer;)V" />
+		<method name="setIs24HourView(Ljava/lang/Boolean;)V" />
+		<method name="setOnTimeChangedListener(Landroid/widget/TimePicker$OnTimeChangedListener;)V" />
+	</class>
+	<class name="android/widget/TimePicker$OnTimeChangedListener" since="1">
+		<method name="onTimeChanged(Landroid/widget/TimePicker;II)V" />
+	</class>
+	<class name="android/widget/Toast" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="cancel()V" />
+		<method name="getDuration()I" />
+		<method name="getGravity()I" />
+		<method name="getHorizontalMargin()F" />
+		<method name="getVerticalMargin()F" />
+		<method name="getView()Landroid/view/View;" />
+		<method name="getXOffset()I" />
+		<method name="getYOffset()I" />
+		<method name="makeText(Landroid/content/Context;II)Landroid/widget/Toast;" />
+		<method name="makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;" />
+		<method name="setDuration(I)V" />
+		<method name="setGravity(III)V" />
+		<method name="setMargin(FF)V" />
+		<method name="setText(I)V" />
+		<method name="setText(Ljava/lang/CharSequence;)V" />
+		<method name="setView(Landroid/view/View;)V" />
+		<method name="show()V" />
+		<field name="LENGTH_LONG" />
+		<field name="LENGTH_SHORT" />
+	</class>
+	<class name="android/widget/ToggleButton" since="1">
+		<extends name="android/widget/CompoundButton" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getTextOff()Ljava/lang/CharSequence;" />
+		<method name="getTextOn()Ljava/lang/CharSequence;" />
+		<method name="setTextOff(Ljava/lang/CharSequence;)V" />
+		<method name="setTextOn(Ljava/lang/CharSequence;)V" />
+	</class>
+	<class name="android/widget/TwoLineListItem" since="1">
+		<extends name="android/widget/RelativeLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="getText1()Landroid/widget/TextView;" />
+		<method name="getText2()Landroid/widget/TextView;" />
+	</class>
+	<class name="android/widget/VideoView" since="1">
+		<extends name="android/view/SurfaceView" />
+		<implements name="android/widget/MediaController$MediaPlayerControl" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="canPause()Z" since="5" />
+		<method name="canSeekBackward()Z" since="5" />
+		<method name="canSeekForward()Z" since="5" />
+		<method name="getBufferPercentage()I" />
+		<method name="getCurrentPosition()I" />
+		<method name="getDuration()I" />
+		<method name="isPlaying()Z" />
+		<method name="pause()V" />
+		<method name="resolveAdjustedSize(II)I" />
+		<method name="resume()V" since="8" />
+		<method name="seekTo(I)V" />
+		<method name="setMediaController(Landroid/widget/MediaController;)V" />
+		<method name="setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V" />
+		<method name="setOnErrorListener(Landroid/media/MediaPlayer$OnErrorListener;)V" />
+		<method name="setOnPreparedListener(Landroid/media/MediaPlayer$OnPreparedListener;)V" />
+		<method name="setVideoPath(Ljava/lang/String;)V" />
+		<method name="setVideoURI(Landroid/net/Uri;)V" />
+		<method name="start()V" />
+		<method name="stopPlayback()V" />
+		<method name="suspend()V" since="8" />
+	</class>
+	<class name="android/widget/ViewAnimator" since="1">
+		<extends name="android/widget/FrameLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getCurrentView()Landroid/view/View;" />
+		<method name="getDisplayedChild()I" />
+		<method name="getInAnimation()Landroid/view/animation/Animation;" />
+		<method name="getOutAnimation()Landroid/view/animation/Animation;" />
+		<method name="setAnimateFirstView(Z)V" />
+		<method name="setDisplayedChild(I)V" />
+		<method name="setInAnimation(Landroid/content/Context;I)V" />
+		<method name="setInAnimation(Landroid/view/animation/Animation;)V" />
+		<method name="setOutAnimation(Landroid/content/Context;I)V" />
+		<method name="setOutAnimation(Landroid/view/animation/Animation;)V" />
+		<method name="showNext()V" />
+		<method name="showPrevious()V" />
+	</class>
+	<class name="android/widget/ViewFlipper" since="1">
+		<extends name="android/widget/ViewAnimator" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="isAutoStart()Z" since="7" />
+		<method name="isFlipping()Z" />
+		<method name="setAutoStart(Z)V" since="7" />
+		<method name="setFlipInterval(I)V" />
+		<method name="startFlipping()V" />
+		<method name="stopFlipping()V" />
+	</class>
+	<class name="android/widget/ViewSwitcher" since="1">
+		<extends name="android/widget/ViewAnimator" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="getNextView()Landroid/view/View;" />
+		<method name="reset()V" />
+		<method name="setFactory(Landroid/widget/ViewSwitcher$ViewFactory;)V" />
+	</class>
+	<class name="android/widget/ViewSwitcher$ViewFactory" since="1">
+		<method name="makeView()Landroid/view/View;" />
+	</class>
+	<class name="android/widget/WrapperListAdapter" since="1">
+		<implements name="android/widget/ListAdapter" />
+		<method name="getWrappedAdapter()Landroid/widget/ListAdapter;" />
+	</class>
+	<class name="android/widget/ZoomButton" since="1">
+		<extends name="android/widget/ImageButton" />
+		<implements name="android/view/View$OnLongClickListener" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V" />
+		<method name="onLongClick(Landroid/view/View;)Z" />
+		<method name="setZoomSpeed(J)V" />
+	</class>
+	<class name="android/widget/ZoomButtonsController" since="4">
+		<extends name="java/lang/Object" />
+		<implements name="android/view/View$OnTouchListener" />
+		<method name="&lt;init>(Landroid/view/View;)V" />
+		<method name="getContainer()Landroid/view/ViewGroup;" />
+		<method name="getZoomControls()Landroid/view/View;" />
+		<method name="isAutoDismissed()Z" />
+		<method name="isVisible()Z" />
+		<method name="onTouch(Landroid/view/View;Landroid/view/MotionEvent;)Z" />
+		<method name="setAutoDismissed(Z)V" />
+		<method name="setFocusable(Z)V" />
+		<method name="setOnZoomListener(Landroid/widget/ZoomButtonsController$OnZoomListener;)V" />
+		<method name="setVisible(Z)V" />
+		<method name="setZoomInEnabled(Z)V" />
+		<method name="setZoomOutEnabled(Z)V" />
+		<method name="setZoomSpeed(J)V" />
+	</class>
+	<class name="android/widget/ZoomButtonsController$OnZoomListener" since="4">
+		<method name="onVisibilityChanged(Z)V" />
+		<method name="onZoom(Z)V" />
+	</class>
+	<class name="android/widget/ZoomControls" since="1">
+		<extends name="android/widget/LinearLayout" />
+		<method name="&lt;init>(Landroid/content/Context;)V" />
+		<method name="&lt;init>(Landroid/content/Context;Landroid/util/AttributeSet;)V" />
+		<method name="hide()V" />
+		<method name="setIsZoomInEnabled(Z)V" />
+		<method name="setIsZoomOutEnabled(Z)V" />
+		<method name="setOnZoomInClickListener(Landroid/view/View$OnClickListener;)V" />
+		<method name="setOnZoomOutClickListener(Landroid/view/View$OnClickListener;)V" />
+		<method name="setZoomSpeed(J)V" />
+		<method name="show()V" />
+	</class>
+	<class name="com/android/internal/util/Predicate" since="1">
+		<method name="apply(LT;)Z" />
+	</class>
+	<class name="com/google/android/maps/MapView$ReticleDrawMode" since="1">
+		<extends name="java/lang/Enum" />
+		<field name="DRAW_RETICLE_NEVER" />
+		<field name="DRAW_RETICLE_OVER" />
+		<field name="DRAW_RETICLE_UNDER" />
+	</class>
+	<class name="dalvik/annotation/TestTarget" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="dalvik/annotation/TestTargetClass" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="dalvik/bytecode/OpcodeInfo" since="11">
+		<extends name="java/lang/Object" />
+		<field name="MAXIMUM_PACKED_VALUE" />
+		<field name="MAXIMUM_VALUE" />
+	</class>
+	<class name="dalvik/bytecode/Opcodes" since="1">
+		<field name="OP_ADD_DOUBLE" />
+		<field name="OP_ADD_DOUBLE_2ADDR" />
+		<field name="OP_ADD_FLOAT" />
+		<field name="OP_ADD_FLOAT_2ADDR" />
+		<field name="OP_ADD_INT" />
+		<field name="OP_ADD_INT_2ADDR" />
+		<field name="OP_ADD_INT_LIT16" />
+		<field name="OP_ADD_INT_LIT8" />
+		<field name="OP_ADD_LONG" />
+		<field name="OP_ADD_LONG_2ADDR" />
+		<field name="OP_AGET" />
+		<field name="OP_AGET_BOOLEAN" />
+		<field name="OP_AGET_BYTE" />
+		<field name="OP_AGET_CHAR" />
+		<field name="OP_AGET_OBJECT" />
+		<field name="OP_AGET_SHORT" />
+		<field name="OP_AGET_WIDE" />
+		<field name="OP_AND_INT" />
+		<field name="OP_AND_INT_2ADDR" />
+		<field name="OP_AND_INT_LIT16" />
+		<field name="OP_AND_INT_LIT8" />
+		<field name="OP_AND_LONG" />
+		<field name="OP_AND_LONG_2ADDR" />
+		<field name="OP_APUT" />
+		<field name="OP_APUT_BOOLEAN" />
+		<field name="OP_APUT_BYTE" />
+		<field name="OP_APUT_CHAR" />
+		<field name="OP_APUT_OBJECT" />
+		<field name="OP_APUT_SHORT" />
+		<field name="OP_APUT_WIDE" />
+		<field name="OP_ARRAY_LENGTH" />
+		<field name="OP_BREAKPOINT" since="8" />
+		<field name="OP_CHECK_CAST" />
+		<field name="OP_CHECK_CAST_JUMBO" since="11" />
+		<field name="OP_CMPG_DOUBLE" />
+		<field name="OP_CMPG_FLOAT" />
+		<field name="OP_CMPL_DOUBLE" />
+		<field name="OP_CMPL_FLOAT" />
+		<field name="OP_CMP_LONG" />
+		<field name="OP_CONST" />
+		<field name="OP_CONST_16" />
+		<field name="OP_CONST_4" />
+		<field name="OP_CONST_CLASS" />
+		<field name="OP_CONST_CLASS_JUMBO" since="11" />
+		<field name="OP_CONST_HIGH16" />
+		<field name="OP_CONST_STRING" />
+		<field name="OP_CONST_STRING_JUMBO" />
+		<field name="OP_CONST_WIDE" />
+		<field name="OP_CONST_WIDE_16" />
+		<field name="OP_CONST_WIDE_32" />
+		<field name="OP_CONST_WIDE_HIGH16" />
+		<field name="OP_DIV_DOUBLE" />
+		<field name="OP_DIV_DOUBLE_2ADDR" />
+		<field name="OP_DIV_FLOAT" />
+		<field name="OP_DIV_FLOAT_2ADDR" />
+		<field name="OP_DIV_INT" />
+		<field name="OP_DIV_INT_2ADDR" />
+		<field name="OP_DIV_INT_LIT16" />
+		<field name="OP_DIV_INT_LIT8" />
+		<field name="OP_DIV_LONG" />
+		<field name="OP_DIV_LONG_2ADDR" />
+		<field name="OP_DOUBLE_TO_FLOAT" />
+		<field name="OP_DOUBLE_TO_INT" />
+		<field name="OP_DOUBLE_TO_LONG" />
+		<field name="OP_EXECUTE_INLINE" />
+		<field name="OP_EXECUTE_INLINE_RANGE" since="8" />
+		<field name="OP_FILLED_NEW_ARRAY" />
+		<field name="OP_FILLED_NEW_ARRAY_JUMBO" since="11" />
+		<field name="OP_FILLED_NEW_ARRAY_RANGE" />
+		<field name="OP_FILL_ARRAY_DATA" />
+		<field name="OP_FLOAT_TO_DOUBLE" />
+		<field name="OP_FLOAT_TO_INT" />
+		<field name="OP_FLOAT_TO_LONG" />
+		<field name="OP_GOTO" />
+		<field name="OP_GOTO_16" />
+		<field name="OP_GOTO_32" />
+		<field name="OP_IF_EQ" />
+		<field name="OP_IF_EQZ" />
+		<field name="OP_IF_GE" />
+		<field name="OP_IF_GEZ" />
+		<field name="OP_IF_GT" />
+		<field name="OP_IF_GTZ" />
+		<field name="OP_IF_LE" />
+		<field name="OP_IF_LEZ" />
+		<field name="OP_IF_LT" />
+		<field name="OP_IF_LTZ" />
+		<field name="OP_IF_NE" />
+		<field name="OP_IF_NEZ" />
+		<field name="OP_IGET" />
+		<field name="OP_IGET_BOOLEAN" />
+		<field name="OP_IGET_BOOLEAN_JUMBO" since="11" />
+		<field name="OP_IGET_BYTE" />
+		<field name="OP_IGET_BYTE_JUMBO" since="11" />
+		<field name="OP_IGET_CHAR" />
+		<field name="OP_IGET_CHAR_JUMBO" since="11" />
+		<field name="OP_IGET_JUMBO" since="11" />
+		<field name="OP_IGET_OBJECT" />
+		<field name="OP_IGET_OBJECT_JUMBO" since="11" />
+		<field name="OP_IGET_OBJECT_QUICK" />
+		<field name="OP_IGET_QUICK" />
+		<field name="OP_IGET_SHORT" />
+		<field name="OP_IGET_SHORT_JUMBO" since="11" />
+		<field name="OP_IGET_WIDE" />
+		<field name="OP_IGET_WIDE_JUMBO" since="11" />
+		<field name="OP_IGET_WIDE_QUICK" />
+		<field name="OP_IGET_WIDE_VOLATILE" since="9" />
+		<field name="OP_INSTANCE_OF" />
+		<field name="OP_INSTANCE_OF_JUMBO" since="11" />
+		<field name="OP_INT_TO_BYTE" />
+		<field name="OP_INT_TO_CHAR" />
+		<field name="OP_INT_TO_DOUBLE" />
+		<field name="OP_INT_TO_FLOAT" />
+		<field name="OP_INT_TO_LONG" />
+		<field name="OP_INT_TO_SHORT" />
+		<field name="OP_INVOKE_DIRECT" />
+		<field name="OP_INVOKE_DIRECT_EMPTY" />
+		<field name="OP_INVOKE_DIRECT_JUMBO" since="11" />
+		<field name="OP_INVOKE_DIRECT_RANGE" />
+		<field name="OP_INVOKE_INTERFACE" />
+		<field name="OP_INVOKE_INTERFACE_JUMBO" since="11" />
+		<field name="OP_INVOKE_INTERFACE_RANGE" />
+		<field name="OP_INVOKE_STATIC" />
+		<field name="OP_INVOKE_STATIC_JUMBO" since="11" />
+		<field name="OP_INVOKE_STATIC_RANGE" />
+		<field name="OP_INVOKE_SUPER" />
+		<field name="OP_INVOKE_SUPER_JUMBO" since="11" />
+		<field name="OP_INVOKE_SUPER_QUICK" />
+		<field name="OP_INVOKE_SUPER_QUICK_RANGE" />
+		<field name="OP_INVOKE_SUPER_RANGE" />
+		<field name="OP_INVOKE_VIRTUAL" />
+		<field name="OP_INVOKE_VIRTUAL_JUMBO" since="11" />
+		<field name="OP_INVOKE_VIRTUAL_QUICK" />
+		<field name="OP_INVOKE_VIRTUAL_QUICK_RANGE" />
+		<field name="OP_INVOKE_VIRTUAL_RANGE" />
+		<field name="OP_IPUT" />
+		<field name="OP_IPUT_BOOLEAN" />
+		<field name="OP_IPUT_BOOLEAN_JUMBO" since="11" />
+		<field name="OP_IPUT_BYTE" />
+		<field name="OP_IPUT_BYTE_JUMBO" since="11" />
+		<field name="OP_IPUT_CHAR" />
+		<field name="OP_IPUT_CHAR_JUMBO" since="11" />
+		<field name="OP_IPUT_JUMBO" since="11" />
+		<field name="OP_IPUT_OBJECT" />
+		<field name="OP_IPUT_OBJECT_JUMBO" since="11" />
+		<field name="OP_IPUT_OBJECT_QUICK" />
+		<field name="OP_IPUT_QUICK" />
+		<field name="OP_IPUT_SHORT" />
+		<field name="OP_IPUT_SHORT_JUMBO" since="11" />
+		<field name="OP_IPUT_WIDE" />
+		<field name="OP_IPUT_WIDE_JUMBO" since="11" />
+		<field name="OP_IPUT_WIDE_QUICK" />
+		<field name="OP_IPUT_WIDE_VOLATILE" since="9" />
+		<field name="OP_LONG_TO_DOUBLE" />
+		<field name="OP_LONG_TO_FLOAT" />
+		<field name="OP_LONG_TO_INT" />
+		<field name="OP_MONITOR_ENTER" />
+		<field name="OP_MONITOR_EXIT" />
+		<field name="OP_MOVE" />
+		<field name="OP_MOVE_16" />
+		<field name="OP_MOVE_EXCEPTION" />
+		<field name="OP_MOVE_FROM16" />
+		<field name="OP_MOVE_OBJECT" />
+		<field name="OP_MOVE_OBJECT_16" />
+		<field name="OP_MOVE_OBJECT_FROM16" />
+		<field name="OP_MOVE_RESULT" />
+		<field name="OP_MOVE_RESULT_OBJECT" />
+		<field name="OP_MOVE_RESULT_WIDE" />
+		<field name="OP_MOVE_WIDE" />
+		<field name="OP_MOVE_WIDE_16" />
+		<field name="OP_MOVE_WIDE_FROM16" />
+		<field name="OP_MUL_DOUBLE" />
+		<field name="OP_MUL_DOUBLE_2ADDR" />
+		<field name="OP_MUL_FLOAT" />
+		<field name="OP_MUL_FLOAT_2ADDR" />
+		<field name="OP_MUL_INT" />
+		<field name="OP_MUL_INT_2ADDR" />
+		<field name="OP_MUL_INT_LIT16" />
+		<field name="OP_MUL_INT_LIT8" />
+		<field name="OP_MUL_LONG" />
+		<field name="OP_MUL_LONG_2ADDR" />
+		<field name="OP_NEG_DOUBLE" />
+		<field name="OP_NEG_FLOAT" />
+		<field name="OP_NEG_INT" />
+		<field name="OP_NEG_LONG" />
+		<field name="OP_NEW_ARRAY" />
+		<field name="OP_NEW_ARRAY_JUMBO" since="11" />
+		<field name="OP_NEW_INSTANCE" />
+		<field name="OP_NEW_INSTANCE_JUMBO" since="11" />
+		<field name="OP_NOP" />
+		<field name="OP_NOT_INT" />
+		<field name="OP_NOT_LONG" />
+		<field name="OP_OR_INT" />
+		<field name="OP_OR_INT_2ADDR" />
+		<field name="OP_OR_INT_LIT16" />
+		<field name="OP_OR_INT_LIT8" />
+		<field name="OP_OR_LONG" />
+		<field name="OP_OR_LONG_2ADDR" />
+		<field name="OP_PACKED_SWITCH" />
+		<field name="OP_REM_DOUBLE" />
+		<field name="OP_REM_DOUBLE_2ADDR" />
+		<field name="OP_REM_FLOAT" />
+		<field name="OP_REM_FLOAT_2ADDR" />
+		<field name="OP_REM_INT" />
+		<field name="OP_REM_INT_2ADDR" />
+		<field name="OP_REM_INT_LIT16" />
+		<field name="OP_REM_INT_LIT8" />
+		<field name="OP_REM_LONG" />
+		<field name="OP_REM_LONG_2ADDR" />
+		<field name="OP_RETURN" />
+		<field name="OP_RETURN_OBJECT" />
+		<field name="OP_RETURN_VOID" />
+		<field name="OP_RETURN_WIDE" />
+		<field name="OP_RSUB_INT" />
+		<field name="OP_RSUB_INT_LIT8" />
+		<field name="OP_SGET" />
+		<field name="OP_SGET_BOOLEAN" />
+		<field name="OP_SGET_BOOLEAN_JUMBO" since="11" />
+		<field name="OP_SGET_BYTE" />
+		<field name="OP_SGET_BYTE_JUMBO" since="11" />
+		<field name="OP_SGET_CHAR" />
+		<field name="OP_SGET_CHAR_JUMBO" since="11" />
+		<field name="OP_SGET_JUMBO" since="11" />
+		<field name="OP_SGET_OBJECT" />
+		<field name="OP_SGET_OBJECT_JUMBO" since="11" />
+		<field name="OP_SGET_SHORT" />
+		<field name="OP_SGET_SHORT_JUMBO" since="11" />
+		<field name="OP_SGET_WIDE" />
+		<field name="OP_SGET_WIDE_JUMBO" since="11" />
+		<field name="OP_SGET_WIDE_VOLATILE" since="9" />
+		<field name="OP_SHL_INT" />
+		<field name="OP_SHL_INT_2ADDR" />
+		<field name="OP_SHL_INT_LIT8" />
+		<field name="OP_SHL_LONG" />
+		<field name="OP_SHL_LONG_2ADDR" />
+		<field name="OP_SHR_INT" />
+		<field name="OP_SHR_INT_2ADDR" />
+		<field name="OP_SHR_INT_LIT8" />
+		<field name="OP_SHR_LONG" />
+		<field name="OP_SHR_LONG_2ADDR" />
+		<field name="OP_SPARSE_SWITCH" />
+		<field name="OP_SPUT" />
+		<field name="OP_SPUT_BOOLEAN" />
+		<field name="OP_SPUT_BOOLEAN_JUMBO" since="11" />
+		<field name="OP_SPUT_BYTE" />
+		<field name="OP_SPUT_BYTE_JUMBO" since="11" />
+		<field name="OP_SPUT_CHAR" />
+		<field name="OP_SPUT_CHAR_JUMBO" since="11" />
+		<field name="OP_SPUT_JUMBO" since="11" />
+		<field name="OP_SPUT_OBJECT" />
+		<field name="OP_SPUT_OBJECT_JUMBO" since="11" />
+		<field name="OP_SPUT_SHORT" />
+		<field name="OP_SPUT_SHORT_JUMBO" since="11" />
+		<field name="OP_SPUT_WIDE" />
+		<field name="OP_SPUT_WIDE_JUMBO" since="11" />
+		<field name="OP_SPUT_WIDE_VOLATILE" since="9" />
+		<field name="OP_SUB_DOUBLE" />
+		<field name="OP_SUB_DOUBLE_2ADDR" />
+		<field name="OP_SUB_FLOAT" />
+		<field name="OP_SUB_FLOAT_2ADDR" />
+		<field name="OP_SUB_INT" />
+		<field name="OP_SUB_INT_2ADDR" />
+		<field name="OP_SUB_LONG" />
+		<field name="OP_SUB_LONG_2ADDR" />
+		<field name="OP_THROW" />
+		<field name="OP_THROW_VERIFICATION_ERROR" since="8" />
+		<field name="OP_UNUSED_3e" />
+		<field name="OP_UNUSED_3f" />
+		<field name="OP_UNUSED_40" />
+		<field name="OP_UNUSED_41" />
+		<field name="OP_UNUSED_42" />
+		<field name="OP_UNUSED_43" />
+		<field name="OP_UNUSED_73" />
+		<field name="OP_UNUSED_79" />
+		<field name="OP_UNUSED_7A" />
+		<field name="OP_UNUSED_E3" />
+		<field name="OP_UNUSED_E4" />
+		<field name="OP_UNUSED_E5" />
+		<field name="OP_UNUSED_E6" />
+		<field name="OP_UNUSED_E7" />
+		<field name="OP_UNUSED_E8" />
+		<field name="OP_UNUSED_E9" />
+		<field name="OP_UNUSED_EA" />
+		<field name="OP_UNUSED_EB" />
+		<field name="OP_UNUSED_EC" />
+		<field name="OP_UNUSED_ED" />
+		<field name="OP_UNUSED_EF" />
+		<field name="OP_UNUSED_F1" />
+		<field name="OP_UNUSED_FC" />
+		<field name="OP_UNUSED_FD" />
+		<field name="OP_UNUSED_FE" />
+		<field name="OP_UNUSED_FF" />
+		<field name="OP_USHR_INT" />
+		<field name="OP_USHR_INT_2ADDR" />
+		<field name="OP_USHR_INT_LIT8" />
+		<field name="OP_USHR_LONG" />
+		<field name="OP_USHR_LONG_2ADDR" />
+		<field name="OP_XOR_INT" />
+		<field name="OP_XOR_INT_2ADDR" />
+		<field name="OP_XOR_INT_LIT16" />
+		<field name="OP_XOR_INT_LIT8" />
+		<field name="OP_XOR_LONG" />
+		<field name="OP_XOR_LONG_2ADDR" />
+	</class>
+	<class name="dalvik/system/AllocationLimitError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="dalvik/system/BaseDexClassLoader" since="14">
+		<extends name="java/lang/ClassLoader" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
+		<method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="dalvik/system/DexClassLoader" since="3">
+		<extends name="java/lang/ClassLoader" />
+		<extends name="dalvik/system/BaseDexClassLoader" since="14" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
+	</class>
+	<class name="dalvik/system/DexFile" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="close()V" />
+		<method name="entries()Ljava/util/Enumeration;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="isDexOptNeeded(Ljava/lang/String;)Z" />
+		<method name="loadClass(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;" />
+		<method name="loadDex(Ljava/lang/String;Ljava/lang/String;I)Ldalvik/system/DexFile;" since="3" />
+	</class>
+	<class name="dalvik/system/PathClassLoader" since="1">
+		<extends name="java/lang/ClassLoader" />
+		<extends name="dalvik/system/BaseDexClassLoader" since="14" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V" />
+		<method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;" since="9" />
+	</class>
+	<class name="dalvik/system/PotentialDeadlockError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="dalvik/system/StaleDexCacheError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="dalvik/system/TemporaryDirectory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="setUpDirectory(Ljava/io/File;)V" />
+		<method name="setUpDirectory(Ljava/lang/String;)V" />
+	</class>
+	<class name="dalvik/system/TouchDex" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="main([Ljava/lang/String;)V" />
+		<method name="start(Ljava/lang/String;)I" />
+	</class>
+	<class name="dalvik/system/VMDebug" since="1">
+		<extends name="java/lang/Object" />
+		<method name="dumpHprofData(Ljava/lang/String;)V" since="3" />
+		<method name="getAllocCount(I)I" />
+		<method name="getInstructionCount([I)V" />
+		<method name="getLoadedClassCount()I" />
+		<method name="isDebuggerConnected()Z" />
+		<method name="isDebuggingEnabled()Z" since="3" />
+		<method name="lastDebuggerActivity()J" />
+		<method name="printLoadedClasses(I)V" />
+		<method name="resetAllocCount(I)V" />
+		<method name="resetInstructionCount()V" />
+		<method name="setAllocationLimit(I)I" />
+		<method name="setGlobalAllocationLimit(I)I" />
+		<method name="startAllocCounting()V" />
+		<method name="startEmulatorTracing()V" />
+		<method name="startInstructionCounting()V" />
+		<method name="startMethodTracing()V" />
+		<method name="startMethodTracing(Ljava/lang/String;II)V" />
+		<method name="stopAllocCounting()V" />
+		<method name="stopEmulatorTracing()V" />
+		<method name="stopInstructionCounting()V" />
+		<method name="stopMethodTracing()V" />
+		<method name="threadCpuTimeNanos()J" />
+		<field name="DEFAULT_METHOD_TRACE_FILE_NAME" />
+		<field name="KIND_ALL_COUNTS" />
+		<field name="KIND_GLOBAL_ALLOCATED_BYTES" />
+		<field name="KIND_GLOBAL_ALLOCATED_OBJECTS" />
+		<field name="KIND_GLOBAL_CLASS_INIT_COUNT" since="8" />
+		<field name="KIND_GLOBAL_CLASS_INIT_TIME" since="8" />
+		<field name="KIND_GLOBAL_EXT_ALLOCATED_BYTES" />
+		<field name="KIND_GLOBAL_EXT_ALLOCATED_OBJECTS" />
+		<field name="KIND_GLOBAL_EXT_FREED_BYTES" />
+		<field name="KIND_GLOBAL_EXT_FREED_OBJECTS" />
+		<field name="KIND_GLOBAL_FREED_BYTES" />
+		<field name="KIND_GLOBAL_FREED_OBJECTS" />
+		<field name="KIND_GLOBAL_GC_INVOCATIONS" />
+		<field name="KIND_THREAD_ALLOCATED_BYTES" />
+		<field name="KIND_THREAD_ALLOCATED_OBJECTS" />
+		<field name="KIND_THREAD_CLASS_INIT_COUNT" since="8" />
+		<field name="KIND_THREAD_CLASS_INIT_TIME" since="8" />
+		<field name="KIND_THREAD_EXT_ALLOCATED_BYTES" />
+		<field name="KIND_THREAD_EXT_ALLOCATED_OBJECTS" />
+		<field name="KIND_THREAD_EXT_FREED_BYTES" />
+		<field name="KIND_THREAD_EXT_FREED_OBJECTS" />
+		<field name="KIND_THREAD_FREED_BYTES" />
+		<field name="KIND_THREAD_FREED_OBJECTS" />
+		<field name="KIND_THREAD_GC_INVOCATIONS" />
+		<field name="TRACE_COUNT_ALLOCS" />
+	</class>
+	<class name="dalvik/system/VMRuntime" since="1">
+		<extends name="java/lang/Object" />
+		<method name="gcSoftReferences()V" />
+		<method name="getExternalBytesAllocated()J" />
+		<method name="getMinimumHeapSize()J" />
+		<method name="getRuntime()Ldalvik/system/VMRuntime;" />
+		<method name="getTargetHeapUtilization()F" />
+		<method name="runFinalizationSync()V" />
+		<method name="setMinimumHeapSize(J)J" />
+		<method name="setTargetHeapUtilization(F)F" />
+	</class>
+	<class name="dalvik/system/VMStack" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getCallingClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getCallingClassLoader2()Ljava/lang/ClassLoader;" />
+		<method name="getClasses(IZ)[Ljava/lang/Class;" />
+		<method name="getThreadStackTrace(Ljava/lang/Thread;)[Ljava/lang/StackTraceElement;" />
+	</class>
+	<class name="dalvik/system/Zygote" since="1">
+		<extends name="java/lang/Object" />
+		<method name="fork()I" />
+		<method name="forkAndSpecialize(II[II[[I)I" since="3" />
+		<method name="forkAndSpecialize(II[IZ[[I)I" />
+		<method name="forkSystemServer(II[II[[I)I" since="3" />
+		<method name="forkSystemServer(II[IZ[[I)I" />
+		<field name="DEBUG_ENABLE_ASSERT" since="3" />
+		<field name="DEBUG_ENABLE_CHECKJNI" since="3" />
+		<field name="DEBUG_ENABLE_DEBUGGER" since="3" />
+		<field name="DEBUG_ENABLE_SAFEMODE" since="8" />
+	</class>
+	<class name="java/awt/font/NumericShaper" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="getContextualShaper(I)Ljava/awt/font/NumericShaper;" />
+		<method name="getContextualShaper(II)Ljava/awt/font/NumericShaper;" />
+		<method name="getRanges()I" />
+		<method name="getShaper(I)Ljava/awt/font/NumericShaper;" />
+		<method name="isContextual()Z" />
+		<method name="shape([CII)V" />
+		<method name="shape([CIII)V" />
+		<field name="ALL_RANGES" />
+		<field name="ARABIC" />
+		<field name="BENGALI" />
+		<field name="DEVANAGARI" />
+		<field name="EASTERN_ARABIC" />
+		<field name="ETHIOPIC" />
+		<field name="EUROPEAN" />
+		<field name="GUJARATI" />
+		<field name="GURMUKHI" />
+		<field name="KANNADA" />
+		<field name="KHMER" />
+		<field name="LAO" />
+		<field name="MALAYALAM" />
+		<field name="MONGOLIAN" />
+		<field name="MYANMAR" />
+		<field name="ORIYA" />
+		<field name="TAMIL" />
+		<field name="TELUGU" />
+		<field name="THAI" />
+		<field name="TIBETAN" />
+	</class>
+	<class name="java/awt/font/TextAttribute" since="1">
+		<extends name="java/text/AttributedCharacterIterator$Attribute" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="BACKGROUND" />
+		<field name="BIDI_EMBEDDING" />
+		<field name="CHAR_REPLACEMENT" />
+		<field name="FAMILY" />
+		<field name="FONT" />
+		<field name="FOREGROUND" />
+		<field name="INPUT_METHOD_HIGHLIGHT" />
+		<field name="INPUT_METHOD_UNDERLINE" />
+		<field name="JUSTIFICATION" />
+		<field name="JUSTIFICATION_FULL" />
+		<field name="JUSTIFICATION_NONE" />
+		<field name="KERNING" since="9" />
+		<field name="KERNING_ON" since="9" />
+		<field name="LIGATURES" since="9" />
+		<field name="LIGATURES_ON" since="9" />
+		<field name="NUMERIC_SHAPING" />
+		<field name="POSTURE" />
+		<field name="POSTURE_OBLIQUE" />
+		<field name="POSTURE_REGULAR" />
+		<field name="RUN_DIRECTION" />
+		<field name="RUN_DIRECTION_LTR" />
+		<field name="RUN_DIRECTION_RTL" />
+		<field name="SIZE" />
+		<field name="STRIKETHROUGH" />
+		<field name="STRIKETHROUGH_ON" />
+		<field name="SUPERSCRIPT" />
+		<field name="SUPERSCRIPT_SUB" />
+		<field name="SUPERSCRIPT_SUPER" />
+		<field name="SWAP_COLORS" />
+		<field name="SWAP_COLORS_ON" />
+		<field name="TRACKING" since="9" />
+		<field name="TRACKING_LOOSE" since="9" />
+		<field name="TRACKING_TIGHT" since="9" />
+		<field name="TRANSFORM" />
+		<field name="UNDERLINE" />
+		<field name="UNDERLINE_LOW_DASHED" />
+		<field name="UNDERLINE_LOW_DOTTED" />
+		<field name="UNDERLINE_LOW_GRAY" />
+		<field name="UNDERLINE_LOW_ONE_PIXEL" />
+		<field name="UNDERLINE_LOW_TWO_PIXEL" />
+		<field name="UNDERLINE_ON" />
+		<field name="WEIGHT" />
+		<field name="WEIGHT_BOLD" />
+		<field name="WEIGHT_DEMIBOLD" />
+		<field name="WEIGHT_DEMILIGHT" />
+		<field name="WEIGHT_EXTRABOLD" />
+		<field name="WEIGHT_EXTRA_LIGHT" />
+		<field name="WEIGHT_HEAVY" />
+		<field name="WEIGHT_LIGHT" />
+		<field name="WEIGHT_MEDIUM" />
+		<field name="WEIGHT_REGULAR" />
+		<field name="WEIGHT_SEMIBOLD" />
+		<field name="WEIGHT_ULTRABOLD" />
+		<field name="WIDTH" />
+		<field name="WIDTH_CONDENSED" />
+		<field name="WIDTH_EXTENDED" />
+		<field name="WIDTH_REGULAR" />
+		<field name="WIDTH_SEMI_CONDENSED" />
+		<field name="WIDTH_SEMI_EXTENDED" />
+	</class>
+	<class name="java/beans/IndexedPropertyChangeEvent" since="3">
+		<extends name="java/beans/PropertyChangeEvent" />
+		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;I)V" />
+		<method name="getIndex()I" />
+	</class>
+	<class name="java/beans/PropertyChangeEvent" since="3">
+		<extends name="java/util/EventObject" />
+		<method name="&lt;init>(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="getNewValue()Ljava/lang/Object;" />
+		<method name="getOldValue()Ljava/lang/Object;" />
+		<method name="getPropagationId()Ljava/lang/Object;" />
+		<method name="getPropertyName()Ljava/lang/String;" />
+		<method name="setPropagationId(Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/beans/PropertyChangeListener" since="3">
+		<implements name="java/util/EventListener" />
+		<method name="propertyChange(Ljava/beans/PropertyChangeEvent;)V" />
+	</class>
+	<class name="java/beans/PropertyChangeListenerProxy" since="3">
+		<extends name="java/util/EventListenerProxy" />
+		<implements name="java/beans/PropertyChangeListener" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
+		<method name="getPropertyName()Ljava/lang/String;" />
+		<method name="propertyChange(Ljava/beans/PropertyChangeEvent;)V" />
+	</class>
+	<class name="java/beans/PropertyChangeSupport" since="3">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/Object;)V" />
+		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" />
+		<method name="addPropertyChangeListener(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
+		<method name="fireIndexedPropertyChange(Ljava/lang/String;III)V" />
+		<method name="fireIndexedPropertyChange(Ljava/lang/String;ILjava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="fireIndexedPropertyChange(Ljava/lang/String;IZZ)V" />
+		<method name="firePropertyChange(Ljava/beans/PropertyChangeEvent;)V" />
+		<method name="firePropertyChange(Ljava/lang/String;II)V" />
+		<method name="firePropertyChange(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="firePropertyChange(Ljava/lang/String;ZZ)V" />
+		<method name="getPropertyChangeListeners()[Ljava/beans/PropertyChangeListener;" />
+		<method name="getPropertyChangeListeners(Ljava/lang/String;)[Ljava/beans/PropertyChangeListener;" />
+		<method name="hasListeners(Ljava/lang/String;)Z" />
+		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" />
+		<method name="removePropertyChangeListener(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)V" />
+	</class>
+	<class name="java/io/BufferedInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
+		<field name="buf" />
+		<field name="count" />
+		<field name="marklimit" />
+		<field name="markpos" />
+		<field name="pos" />
+	</class>
+	<class name="java/io/BufferedOutputStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;I)V" />
+		<field name="buf" />
+		<field name="count" />
+	</class>
+	<class name="java/io/BufferedReader" since="1">
+		<extends name="java/io/Reader" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;I)V" />
+		<method name="close()V" />
+		<method name="read([CII)I" />
+		<method name="readLine()Ljava/lang/String;" />
+	</class>
+	<class name="java/io/BufferedWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>(Ljava/io/Writer;)V" />
+		<method name="&lt;init>(Ljava/io/Writer;I)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="newLine()V" />
+		<method name="write([CII)V" />
+	</class>
+	<class name="java/io/ByteArrayInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>([B)V" />
+		<method name="&lt;init>([BII)V" />
+		<method name="read()I" />
+		<field name="buf" />
+		<field name="count" />
+		<field name="mark" />
+		<field name="pos" />
+	</class>
+	<class name="java/io/ByteArrayOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="reset()V" />
+		<method name="size()I" />
+		<method name="toByteArray()[B" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<method name="toString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="write(I)V" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+		<field name="buf" />
+		<field name="count" />
+	</class>
+	<class name="java/io/CharArrayReader" since="1">
+		<extends name="java/io/Reader" />
+		<method name="&lt;init>([C)V" />
+		<method name="&lt;init>([CII)V" />
+		<method name="close()V" />
+		<method name="read([CII)I" />
+		<field name="buf" />
+		<field name="count" />
+		<field name="markedPos" />
+		<field name="pos" />
+	</class>
+	<class name="java/io/CharArrayWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="reset()V" />
+		<method name="size()I" />
+		<method name="toCharArray()[C" />
+		<method name="write([CII)V" />
+		<method name="writeTo(Ljava/io/Writer;)V" />
+		<field name="buf" />
+		<field name="count" />
+	</class>
+	<class name="java/io/CharConversionException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/Closeable" since="1">
+		<method name="close()V" />
+	</class>
+	<class name="java/io/Console" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Flushable" />
+		<method name="flush()V" />
+		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/Console;" />
+		<method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/Console;" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLine(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="readPassword()[C" />
+		<method name="readPassword(Ljava/lang/String;[Ljava/lang/Object;)[C" />
+		<method name="reader()Ljava/io/Reader;" />
+		<method name="writer()Ljava/io/PrintWriter;" />
+	</class>
+	<class name="java/io/DataInput" since="1">
+		<method name="readBoolean()Z" />
+		<method name="readByte()B" />
+		<method name="readChar()C" />
+		<method name="readDouble()D" />
+		<method name="readFloat()F" />
+		<method name="readFully([B)V" />
+		<method name="readFully([BII)V" />
+		<method name="readInt()I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLong()J" />
+		<method name="readShort()S" />
+		<method name="readUTF()Ljava/lang/String;" />
+		<method name="readUnsignedByte()I" />
+		<method name="readUnsignedShort()I" />
+		<method name="skipBytes(I)I" />
+	</class>
+	<class name="java/io/DataInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<implements name="java/io/DataInput" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="readBoolean()Z" />
+		<method name="readByte()B" />
+		<method name="readChar()C" />
+		<method name="readDouble()D" />
+		<method name="readFloat()F" />
+		<method name="readFully([B)V" />
+		<method name="readFully([BII)V" />
+		<method name="readInt()I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLong()J" />
+		<method name="readShort()S" />
+		<method name="readUTF()Ljava/lang/String;" />
+		<method name="readUTF(Ljava/io/DataInput;)Ljava/lang/String;" />
+		<method name="readUnsignedByte()I" />
+		<method name="readUnsignedShort()I" />
+		<method name="skipBytes(I)I" />
+	</class>
+	<class name="java/io/DataOutput" since="1">
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+		<method name="writeBoolean(Z)V" />
+		<method name="writeByte(I)V" />
+		<method name="writeBytes(Ljava/lang/String;)V" />
+		<method name="writeChar(I)V" />
+		<method name="writeChars(Ljava/lang/String;)V" />
+		<method name="writeDouble(D)V" />
+		<method name="writeFloat(F)V" />
+		<method name="writeInt(I)V" />
+		<method name="writeLong(J)V" />
+		<method name="writeShort(I)V" />
+		<method name="writeUTF(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/DataOutputStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<implements name="java/io/DataOutput" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="size()I" />
+		<method name="writeBoolean(Z)V" />
+		<method name="writeByte(I)V" />
+		<method name="writeBytes(Ljava/lang/String;)V" />
+		<method name="writeChar(I)V" />
+		<method name="writeChars(Ljava/lang/String;)V" />
+		<method name="writeDouble(D)V" />
+		<method name="writeFloat(F)V" />
+		<method name="writeInt(I)V" />
+		<method name="writeLong(J)V" />
+		<method name="writeShort(I)V" />
+		<method name="writeUTF(Ljava/lang/String;)V" />
+		<field name="written" />
+	</class>
+	<class name="java/io/EOFException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/Externalizable" since="1">
+		<implements name="java/io/Serializable" />
+		<method name="readExternal(Ljava/io/ObjectInput;)V" />
+		<method name="writeExternal(Ljava/io/ObjectOutput;)V" />
+	</class>
+	<class name="java/io/File" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="canExecute()Z" since="9" />
+		<method name="canRead()Z" />
+		<method name="canWrite()Z" />
+		<method name="compareTo(Ljava/io/File;)I" />
+		<method name="createNewFile()Z" />
+		<method name="createTempFile(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;" />
+		<method name="createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;" />
+		<method name="delete()Z" />
+		<method name="deleteOnExit()V" />
+		<method name="exists()Z" />
+		<method name="getAbsoluteFile()Ljava/io/File;" />
+		<method name="getAbsolutePath()Ljava/lang/String;" />
+		<method name="getCanonicalFile()Ljava/io/File;" />
+		<method name="getCanonicalPath()Ljava/lang/String;" />
+		<method name="getFreeSpace()J" since="9" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParent()Ljava/lang/String;" />
+		<method name="getParentFile()Ljava/io/File;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getTotalSpace()J" since="9" />
+		<method name="getUsableSpace()J" since="9" />
+		<method name="isAbsolute()Z" />
+		<method name="isDirectory()Z" />
+		<method name="isFile()Z" />
+		<method name="isHidden()Z" />
+		<method name="lastModified()J" />
+		<method name="length()J" />
+		<method name="list()[Ljava/lang/String;" />
+		<method name="list(Ljava/io/FilenameFilter;)[Ljava/lang/String;" />
+		<method name="listFiles()[Ljava/io/File;" />
+		<method name="listFiles(Ljava/io/FileFilter;)[Ljava/io/File;" />
+		<method name="listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;" />
+		<method name="listRoots()[Ljava/io/File;" />
+		<method name="mkdir()Z" />
+		<method name="mkdirs()Z" />
+		<method name="renameTo(Ljava/io/File;)Z" />
+		<method name="setExecutable(Z)Z" since="9" />
+		<method name="setExecutable(ZZ)Z" since="9" />
+		<method name="setLastModified(J)Z" />
+		<method name="setReadOnly()Z" />
+		<method name="setReadable(Z)Z" since="9" />
+		<method name="setReadable(ZZ)Z" since="9" />
+		<method name="setWritable(Z)Z" since="9" />
+		<method name="setWritable(ZZ)Z" since="9" />
+		<method name="toURI()Ljava/net/URI;" />
+		<method name="toURL()Ljava/net/URL;" />
+		<field name="pathSeparator" />
+		<field name="pathSeparatorChar" />
+		<field name="separator" />
+		<field name="separatorChar" />
+	</class>
+	<class name="java/io/FileDescriptor" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="sync()V" />
+		<method name="valid()Z" />
+		<field name="err" />
+		<field name="in" />
+		<field name="out" />
+	</class>
+	<class name="java/io/FileFilter" since="1">
+		<method name="accept(Ljava/io/File;)Z" />
+	</class>
+	<class name="java/io/FileInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<implements name="java/io/Closeable" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
+		<method name="getFD()Ljava/io/FileDescriptor;" />
+		<method name="read()I" />
+	</class>
+	<class name="java/io/FileNotFoundException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/FileOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<implements name="java/io/Closeable" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Z)V" />
+		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Z)V" />
+		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
+		<method name="getFD()Ljava/io/FileDescriptor;" />
+		<method name="write(I)V" />
+	</class>
+	<class name="java/io/FilePermission" since="1">
+		<extends name="java/security/Permission" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/io/FileReader" since="1">
+		<extends name="java/io/InputStreamReader" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/FileWriter" since="1">
+		<extends name="java/io/OutputStreamWriter" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Z)V" />
+		<method name="&lt;init>(Ljava/io/FileDescriptor;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Z)V" />
+	</class>
+	<class name="java/io/FilenameFilter" since="1">
+		<method name="accept(Ljava/io/File;Ljava/lang/String;)Z" />
+	</class>
+	<class name="java/io/FilterInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="read()I" />
+		<field name="in" />
+	</class>
+	<class name="java/io/FilterOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="write(I)V" />
+		<field name="out" />
+	</class>
+	<class name="java/io/FilterReader" since="1">
+		<extends name="java/io/Reader" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="close()V" />
+		<method name="read([CII)I" />
+		<field name="in" />
+	</class>
+	<class name="java/io/FilterWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>(Ljava/io/Writer;)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="write([CII)V" />
+		<field name="out" />
+	</class>
+	<class name="java/io/Flushable" since="1">
+		<method name="flush()V" />
+	</class>
+	<class name="java/io/IOError" since="9">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/io/IOException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
+	</class>
+	<class name="java/io/InputStream" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<method name="&lt;init>()V" />
+		<method name="available()I" />
+		<method name="close()V" />
+		<method name="mark(I)V" />
+		<method name="markSupported()Z" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="reset()V" />
+		<method name="skip(J)J" />
+	</class>
+	<class name="java/io/InputStreamReader" since="1">
+		<extends name="java/io/Reader" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V" />
+		<method name="close()V" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="read([CII)I" />
+	</class>
+	<class name="java/io/InterruptedIOException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="bytesTransferred" />
+	</class>
+	<class name="java/io/InvalidClassException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="classname" />
+	</class>
+	<class name="java/io/InvalidObjectException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/LineNumberInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="getLineNumber()I" />
+		<method name="setLineNumber(I)V" />
+	</class>
+	<class name="java/io/LineNumberReader" since="1">
+		<extends name="java/io/BufferedReader" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;I)V" />
+		<method name="getLineNumber()I" />
+		<method name="setLineNumber(I)V" />
+	</class>
+	<class name="java/io/NotActiveException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/NotSerializableException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/ObjectInput" since="1">
+		<implements name="java/io/DataInput" />
+		<method name="available()I" />
+		<method name="close()V" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="readObject()Ljava/lang/Object;" />
+		<method name="skip(J)J" />
+	</class>
+	<class name="java/io/ObjectInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<implements name="java/io/ObjectInput" />
+		<implements name="java/io/ObjectStreamConstants" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="defaultReadObject()V" />
+		<method name="enableResolveObject(Z)Z" />
+		<method name="read()I" />
+		<method name="readBoolean()Z" />
+		<method name="readByte()B" />
+		<method name="readChar()C" />
+		<method name="readClassDescriptor()Ljava/io/ObjectStreamClass;" />
+		<method name="readDouble()D" />
+		<method name="readFields()Ljava/io/ObjectInputStream$GetField;" />
+		<method name="readFloat()F" />
+		<method name="readFully([B)V" />
+		<method name="readFully([BII)V" />
+		<method name="readInt()I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLong()J" />
+		<method name="readObject()Ljava/lang/Object;" />
+		<method name="readObjectOverride()Ljava/lang/Object;" />
+		<method name="readShort()S" />
+		<method name="readStreamHeader()V" />
+		<method name="readUTF()Ljava/lang/String;" />
+		<method name="readUnshared()Ljava/lang/Object;" />
+		<method name="readUnsignedByte()I" />
+		<method name="readUnsignedShort()I" />
+		<method name="registerValidation(Ljava/io/ObjectInputValidation;I)V" />
+		<method name="resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;" />
+		<method name="resolveObject(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="resolveProxyClass([Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="skipBytes(I)I" />
+	</class>
+	<class name="java/io/ObjectInputStream$GetField" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="defaulted(Ljava/lang/String;)Z" />
+		<method name="get(Ljava/lang/String;B)B" />
+		<method name="get(Ljava/lang/String;C)C" />
+		<method name="get(Ljava/lang/String;D)D" />
+		<method name="get(Ljava/lang/String;F)F" />
+		<method name="get(Ljava/lang/String;I)I" />
+		<method name="get(Ljava/lang/String;J)J" />
+		<method name="get(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="get(Ljava/lang/String;S)S" />
+		<method name="get(Ljava/lang/String;Z)Z" />
+		<method name="getObjectStreamClass()Ljava/io/ObjectStreamClass;" />
+	</class>
+	<class name="java/io/ObjectInputValidation" since="1">
+		<method name="validateObject()V" />
+	</class>
+	<class name="java/io/ObjectOutput" since="1">
+		<implements name="java/io/DataOutput" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+		<method name="writeObject(Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/io/ObjectOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<implements name="java/io/ObjectOutput" />
+		<implements name="java/io/ObjectStreamConstants" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="annotateClass(Ljava/lang/Class;)V" />
+		<method name="annotateProxyClass(Ljava/lang/Class;)V" />
+		<method name="defaultWriteObject()V" />
+		<method name="drain()V" />
+		<method name="enableReplaceObject(Z)Z" />
+		<method name="putFields()Ljava/io/ObjectOutputStream$PutField;" />
+		<method name="replaceObject(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="reset()V" />
+		<method name="useProtocolVersion(I)V" />
+		<method name="write(I)V" />
+		<method name="writeBoolean(Z)V" />
+		<method name="writeByte(I)V" />
+		<method name="writeBytes(Ljava/lang/String;)V" />
+		<method name="writeChar(I)V" />
+		<method name="writeChars(Ljava/lang/String;)V" />
+		<method name="writeClassDescriptor(Ljava/io/ObjectStreamClass;)V" />
+		<method name="writeDouble(D)V" />
+		<method name="writeFields()V" />
+		<method name="writeFloat(F)V" />
+		<method name="writeInt(I)V" />
+		<method name="writeLong(J)V" />
+		<method name="writeObject(Ljava/lang/Object;)V" />
+		<method name="writeObjectOverride(Ljava/lang/Object;)V" />
+		<method name="writeShort(I)V" />
+		<method name="writeStreamHeader()V" />
+		<method name="writeUTF(Ljava/lang/String;)V" />
+		<method name="writeUnshared(Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/io/ObjectOutputStream$PutField" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="put(Ljava/lang/String;B)V" />
+		<method name="put(Ljava/lang/String;C)V" />
+		<method name="put(Ljava/lang/String;D)V" />
+		<method name="put(Ljava/lang/String;F)V" />
+		<method name="put(Ljava/lang/String;I)V" />
+		<method name="put(Ljava/lang/String;J)V" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="put(Ljava/lang/String;S)V" />
+		<method name="put(Ljava/lang/String;Z)V" />
+		<method name="write(Ljava/io/ObjectOutput;)V" />
+	</class>
+	<class name="java/io/ObjectStreamClass" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="forClass()Ljava/lang/Class;" />
+		<method name="getField(Ljava/lang/String;)Ljava/io/ObjectStreamField;" />
+		<method name="getFields()[Ljava/io/ObjectStreamField;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getSerialVersionUID()J" />
+		<method name="lookup(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;" />
+		<method name="lookupAny(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;" since="9" />
+		<field name="NO_FIELDS" />
+	</class>
+	<class name="java/io/ObjectStreamConstants" since="1">
+		<field name="PROTOCOL_VERSION_1" />
+		<field name="PROTOCOL_VERSION_2" />
+		<field name="SC_BLOCK_DATA" />
+		<field name="SC_ENUM" />
+		<field name="SC_EXTERNALIZABLE" />
+		<field name="SC_SERIALIZABLE" />
+		<field name="SC_WRITE_METHOD" />
+		<field name="STREAM_MAGIC" />
+		<field name="STREAM_VERSION" />
+		<field name="SUBCLASS_IMPLEMENTATION_PERMISSION" />
+		<field name="SUBSTITUTION_PERMISSION" />
+		<field name="TC_ARRAY" />
+		<field name="TC_BASE" />
+		<field name="TC_BLOCKDATA" />
+		<field name="TC_BLOCKDATALONG" />
+		<field name="TC_CLASS" />
+		<field name="TC_CLASSDESC" />
+		<field name="TC_ENDBLOCKDATA" />
+		<field name="TC_ENUM" />
+		<field name="TC_EXCEPTION" />
+		<field name="TC_LONGSTRING" />
+		<field name="TC_MAX" />
+		<field name="TC_NULL" />
+		<field name="TC_OBJECT" />
+		<field name="TC_PROXYCLASSDESC" />
+		<field name="TC_REFERENCE" />
+		<field name="TC_RESET" />
+		<field name="TC_STRING" />
+		<field name="baseWireHandle" />
+	</class>
+	<class name="java/io/ObjectStreamException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/ObjectStreamField" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Class;Z)V" />
+		<method name="compareTo(Ljava/lang/Object;)I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getOffset()I" />
+		<method name="getType()Ljava/lang/Class;" />
+		<method name="getTypeCode()C" />
+		<method name="getTypeString()Ljava/lang/String;" />
+		<method name="isPrimitive()Z" />
+		<method name="isUnshared()Z" />
+		<method name="setOffset(I)V" />
+	</class>
+	<class name="java/io/OptionalDataException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<field name="eof" />
+		<field name="length" />
+	</class>
+	<class name="java/io/OutputStream" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<implements name="java/io/Flushable" />
+		<method name="&lt;init>()V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+	</class>
+	<class name="java/io/OutputStreamWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/nio/charset/CharsetEncoder;)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="write([CII)V" />
+	</class>
+	<class name="java/io/PipedInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" since="9" />
+		<method name="&lt;init>(Ljava/io/PipedOutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/PipedOutputStream;I)V" since="9" />
+		<method name="connect(Ljava/io/PipedOutputStream;)V" />
+		<method name="read()I" />
+		<method name="receive(I)V" />
+		<field name="PIPE_SIZE" />
+		<field name="buffer" />
+		<field name="in" />
+		<field name="out" />
+	</class>
+	<class name="java/io/PipedOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/PipedInputStream;)V" />
+		<method name="connect(Ljava/io/PipedInputStream;)V" />
+		<method name="write(I)V" />
+	</class>
+	<class name="java/io/PipedReader" since="1">
+		<extends name="java/io/Reader" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" since="9" />
+		<method name="&lt;init>(Ljava/io/PipedWriter;)V" />
+		<method name="&lt;init>(Ljava/io/PipedWriter;I)V" since="9" />
+		<method name="close()V" />
+		<method name="connect(Ljava/io/PipedWriter;)V" />
+		<method name="read([CII)I" />
+	</class>
+	<class name="java/io/PipedWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/PipedReader;)V" />
+		<method name="close()V" />
+		<method name="connect(Ljava/io/PipedReader;)V" />
+		<method name="flush()V" />
+		<method name="write([CII)V" />
+	</class>
+	<class name="java/io/PrintStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<implements name="java/lang/Appendable" />
+		<implements name="java/io/Closeable" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Z)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;ZLjava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="append(C)Ljava/io/PrintStream;" />
+		<method name="append(Ljava/lang/CharSequence;)Ljava/io/PrintStream;" />
+		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/PrintStream;" />
+		<method name="checkError()Z" />
+		<method name="clearError()V" since="9" />
+		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
+		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
+		<method name="print(C)V" />
+		<method name="print(D)V" />
+		<method name="print(F)V" />
+		<method name="print(I)V" />
+		<method name="print(J)V" />
+		<method name="print(Ljava/lang/Object;)V" />
+		<method name="print(Ljava/lang/String;)V" />
+		<method name="print(Z)V" />
+		<method name="print([C)V" />
+		<method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
+		<method name="printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;" />
+		<method name="println()V" />
+		<method name="println(C)V" />
+		<method name="println(D)V" />
+		<method name="println(F)V" />
+		<method name="println(I)V" />
+		<method name="println(J)V" />
+		<method name="println(Ljava/lang/Object;)V" />
+		<method name="println(Ljava/lang/String;)V" />
+		<method name="println(Z)V" />
+		<method name="println([C)V" />
+		<method name="setError()V" />
+	</class>
+	<class name="java/io/PrintWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Z)V" />
+		<method name="&lt;init>(Ljava/io/Writer;)V" />
+		<method name="&lt;init>(Ljava/io/Writer;Z)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="checkError()Z" />
+		<method name="clearError()V" since="9" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
+		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
+		<method name="print(C)V" />
+		<method name="print(D)V" />
+		<method name="print(F)V" />
+		<method name="print(I)V" />
+		<method name="print(J)V" />
+		<method name="print(Ljava/lang/Object;)V" />
+		<method name="print(Ljava/lang/String;)V" />
+		<method name="print(Z)V" />
+		<method name="print([C)V" />
+		<method name="printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
+		<method name="printf(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;" />
+		<method name="println()V" />
+		<method name="println(C)V" />
+		<method name="println(D)V" />
+		<method name="println(F)V" />
+		<method name="println(I)V" />
+		<method name="println(J)V" />
+		<method name="println(Ljava/lang/Object;)V" />
+		<method name="println(Ljava/lang/String;)V" />
+		<method name="println(Z)V" />
+		<method name="println([C)V" />
+		<method name="setError()V" />
+		<method name="write([CII)V" />
+		<field name="out" />
+	</class>
+	<class name="java/io/PushbackInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
+		<method name="unread(I)V" />
+		<method name="unread([B)V" />
+		<method name="unread([BII)V" />
+		<field name="buf" />
+		<field name="pos" />
+	</class>
+	<class name="java/io/PushbackReader" since="1">
+		<extends name="java/io/FilterReader" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;I)V" />
+		<method name="unread(I)V" />
+		<method name="unread([C)V" />
+		<method name="unread([CII)V" />
+	</class>
+	<class name="java/io/RandomAccessFile" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<implements name="java/io/DataInput" />
+		<implements name="java/io/DataOutput" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="close()V" />
+		<method name="getChannel()Ljava/nio/channels/FileChannel;" />
+		<method name="getFD()Ljava/io/FileDescriptor;" />
+		<method name="getFilePointer()J" />
+		<method name="length()J" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="readBoolean()Z" />
+		<method name="readByte()B" />
+		<method name="readChar()C" />
+		<method name="readDouble()D" />
+		<method name="readFloat()F" />
+		<method name="readFully([B)V" />
+		<method name="readFully([BII)V" />
+		<method name="readInt()I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLong()J" />
+		<method name="readShort()S" />
+		<method name="readUTF()Ljava/lang/String;" />
+		<method name="readUnsignedByte()I" />
+		<method name="readUnsignedShort()I" />
+		<method name="seek(J)V" />
+		<method name="setLength(J)V" />
+		<method name="skipBytes(I)I" />
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+		<method name="writeBoolean(Z)V" />
+		<method name="writeByte(I)V" />
+		<method name="writeBytes(Ljava/lang/String;)V" />
+		<method name="writeChar(I)V" />
+		<method name="writeChars(Ljava/lang/String;)V" />
+		<method name="writeDouble(D)V" />
+		<method name="writeFloat(F)V" />
+		<method name="writeInt(I)V" />
+		<method name="writeLong(J)V" />
+		<method name="writeShort(I)V" />
+		<method name="writeUTF(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/Reader" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<implements name="java/lang/Readable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Object;)V" />
+		<method name="close()V" />
+		<method name="mark(I)V" />
+		<method name="markSupported()Z" />
+		<method name="read()I" />
+		<method name="read(Ljava/nio/CharBuffer;)I" />
+		<method name="read([C)I" />
+		<method name="read([CII)I" />
+		<method name="ready()Z" />
+		<method name="reset()V" />
+		<method name="skip(J)J" />
+		<field name="lock" />
+	</class>
+	<class name="java/io/SequenceInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/util/Enumeration;)V" />
+		<method name="read()I" />
+	</class>
+	<class name="java/io/Serializable" since="1">
+	</class>
+	<class name="java/io/SerializablePermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/StreamCorruptedException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/StreamTokenizer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="commentChar(I)V" />
+		<method name="eolIsSignificant(Z)V" />
+		<method name="lineno()I" />
+		<method name="lowerCaseMode(Z)V" />
+		<method name="nextToken()I" />
+		<method name="ordinaryChar(I)V" />
+		<method name="ordinaryChars(II)V" />
+		<method name="parseNumbers()V" />
+		<method name="pushBack()V" />
+		<method name="quoteChar(I)V" />
+		<method name="resetSyntax()V" />
+		<method name="slashSlashComments(Z)V" />
+		<method name="slashStarComments(Z)V" />
+		<method name="whitespaceChars(II)V" />
+		<method name="wordChars(II)V" />
+		<field name="TT_EOF" />
+		<field name="TT_EOL" />
+		<field name="TT_NUMBER" />
+		<field name="TT_WORD" />
+		<field name="nval" />
+		<field name="sval" />
+		<field name="ttype" />
+	</class>
+	<class name="java/io/StringBufferInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="read()I" />
+		<field name="buffer" />
+		<field name="count" />
+		<field name="pos" />
+	</class>
+	<class name="java/io/StringReader" since="1">
+		<extends name="java/io/Reader" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="close()V" />
+		<method name="read([CII)I" />
+	</class>
+	<class name="java/io/StringWriter" since="1">
+		<extends name="java/io/Writer" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="getBuffer()Ljava/lang/StringBuffer;" />
+		<method name="write([CII)V" />
+	</class>
+	<class name="java/io/SyncFailedException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/UTFDataFormatException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/UnsupportedEncodingException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/io/WriteAbortedException" since="1">
+		<extends name="java/io/ObjectStreamException" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Exception;)V" />
+		<field name="detail" />
+	</class>
+	<class name="java/io/Writer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Appendable" />
+		<implements name="java/io/Closeable" />
+		<implements name="java/io/Flushable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Object;)V" />
+		<method name="append(C)Ljava/io/Writer;" />
+		<method name="append(Ljava/lang/CharSequence;)Ljava/io/Writer;" />
+		<method name="append(Ljava/lang/CharSequence;II)Ljava/io/Writer;" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="write(I)V" />
+		<method name="write(Ljava/lang/String;)V" />
+		<method name="write(Ljava/lang/String;II)V" />
+		<method name="write([C)V" />
+		<method name="write([CII)V" />
+		<field name="lock" />
+	</class>
+	<class name="java/lang/AbstractMethodError" since="1">
+		<extends name="java/lang/IncompatibleClassChangeError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/AbstractStringBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="capacity()I" />
+		<method name="charAt(I)C" />
+		<method name="codePointAt(I)I" />
+		<method name="codePointBefore(I)I" />
+		<method name="codePointCount(II)I" />
+		<method name="ensureCapacity(I)V" />
+		<method name="getChars(II[CI)V" />
+		<method name="indexOf(Ljava/lang/String;)I" />
+		<method name="indexOf(Ljava/lang/String;I)I" />
+		<method name="lastIndexOf(Ljava/lang/String;)I" />
+		<method name="lastIndexOf(Ljava/lang/String;I)I" />
+		<method name="length()I" />
+		<method name="offsetByCodePoints(II)I" />
+		<method name="setCharAt(IC)V" />
+		<method name="setLength(I)V" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="substring(I)Ljava/lang/String;" />
+		<method name="substring(II)Ljava/lang/String;" />
+		<method name="trimToSize()V" />
+	</class>
+	<class name="java/lang/Appendable" since="1">
+		<method name="append(C)Ljava/lang/Appendable;" />
+		<method name="append(Ljava/lang/CharSequence;)Ljava/lang/Appendable;" />
+		<method name="append(Ljava/lang/CharSequence;II)Ljava/lang/Appendable;" />
+	</class>
+	<class name="java/lang/ArithmeticException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/ArrayIndexOutOfBoundsException" since="1">
+		<extends name="java/lang/IndexOutOfBoundsException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/ArrayStoreException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/AssertionError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(C)V" />
+		<method name="&lt;init>(D)V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(J)V" />
+		<method name="&lt;init>(Ljava/lang/Object;)V" />
+		<method name="&lt;init>(Z)V" />
+	</class>
+	<class name="java/lang/Boolean" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="booleanValue()Z" />
+		<method name="compareTo(Ljava/lang/Boolean;)I" />
+		<method name="getBoolean(Ljava/lang/String;)Z" />
+		<method name="parseBoolean(Ljava/lang/String;)Z" />
+		<method name="toString(Z)Ljava/lang/String;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Boolean;" />
+		<method name="valueOf(Z)Ljava/lang/Boolean;" />
+		<field name="FALSE" />
+		<field name="TRUE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/Byte" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(B)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="compareTo(Ljava/lang/Byte;)I" />
+		<method name="decode(Ljava/lang/String;)Ljava/lang/Byte;" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="intValue()I" />
+		<method name="longValue()J" />
+		<method name="parseByte(Ljava/lang/String;)B" />
+		<method name="parseByte(Ljava/lang/String;I)B" />
+		<method name="toString(B)Ljava/lang/String;" />
+		<method name="valueOf(B)Ljava/lang/Byte;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Byte;" />
+		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Byte;" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_VALUE" />
+		<field name="SIZE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/CharSequence" since="1">
+		<method name="charAt(I)C" />
+		<method name="length()I" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/Character" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(C)V" />
+		<method name="charCount(I)I" />
+		<method name="charValue()C" />
+		<method name="codePointAt(Ljava/lang/CharSequence;I)I" />
+		<method name="codePointAt([CI)I" />
+		<method name="codePointAt([CII)I" />
+		<method name="codePointBefore(Ljava/lang/CharSequence;I)I" />
+		<method name="codePointBefore([CI)I" />
+		<method name="codePointBefore([CII)I" />
+		<method name="codePointCount(Ljava/lang/CharSequence;II)I" />
+		<method name="codePointCount([CII)I" />
+		<method name="compareTo(Ljava/lang/Character;)I" />
+		<method name="digit(CI)I" />
+		<method name="digit(II)I" />
+		<method name="forDigit(II)C" />
+		<method name="getDirectionality(C)B" />
+		<method name="getDirectionality(I)B" />
+		<method name="getNumericValue(C)I" />
+		<method name="getNumericValue(I)I" />
+		<method name="getType(C)I" />
+		<method name="getType(I)I" />
+		<method name="isDefined(C)Z" />
+		<method name="isDefined(I)Z" />
+		<method name="isDigit(C)Z" />
+		<method name="isDigit(I)Z" />
+		<method name="isHighSurrogate(C)Z" />
+		<method name="isISOControl(C)Z" />
+		<method name="isISOControl(I)Z" />
+		<method name="isIdentifierIgnorable(C)Z" />
+		<method name="isIdentifierIgnorable(I)Z" />
+		<method name="isJavaIdentifierPart(C)Z" />
+		<method name="isJavaIdentifierPart(I)Z" />
+		<method name="isJavaIdentifierStart(C)Z" />
+		<method name="isJavaIdentifierStart(I)Z" />
+		<method name="isJavaLetter(C)Z" />
+		<method name="isJavaLetterOrDigit(C)Z" />
+		<method name="isLetter(C)Z" />
+		<method name="isLetter(I)Z" />
+		<method name="isLetterOrDigit(C)Z" />
+		<method name="isLetterOrDigit(I)Z" />
+		<method name="isLowSurrogate(C)Z" />
+		<method name="isLowerCase(C)Z" />
+		<method name="isLowerCase(I)Z" />
+		<method name="isMirrored(C)Z" />
+		<method name="isMirrored(I)Z" />
+		<method name="isSpace(C)Z" />
+		<method name="isSpaceChar(C)Z" />
+		<method name="isSpaceChar(I)Z" />
+		<method name="isSupplementaryCodePoint(I)Z" />
+		<method name="isSurrogatePair(CC)Z" />
+		<method name="isTitleCase(C)Z" />
+		<method name="isTitleCase(I)Z" />
+		<method name="isUnicodeIdentifierPart(C)Z" />
+		<method name="isUnicodeIdentifierPart(I)Z" />
+		<method name="isUnicodeIdentifierStart(C)Z" />
+		<method name="isUnicodeIdentifierStart(I)Z" />
+		<method name="isUpperCase(C)Z" />
+		<method name="isUpperCase(I)Z" />
+		<method name="isValidCodePoint(I)Z" />
+		<method name="isWhitespace(C)Z" />
+		<method name="isWhitespace(I)Z" />
+		<method name="offsetByCodePoints(Ljava/lang/CharSequence;II)I" />
+		<method name="offsetByCodePoints([CIIII)I" />
+		<method name="reverseBytes(C)C" />
+		<method name="toChars(I)[C" />
+		<method name="toChars(I[CI)I" />
+		<method name="toCodePoint(CC)I" />
+		<method name="toLowerCase(C)C" />
+		<method name="toLowerCase(I)I" />
+		<method name="toString(C)Ljava/lang/String;" />
+		<method name="toTitleCase(C)C" />
+		<method name="toTitleCase(I)I" />
+		<method name="toUpperCase(C)C" />
+		<method name="toUpperCase(I)I" />
+		<method name="valueOf(C)Ljava/lang/Character;" />
+		<field name="COMBINING_SPACING_MARK" />
+		<field name="CONNECTOR_PUNCTUATION" />
+		<field name="CONTROL" />
+		<field name="CURRENCY_SYMBOL" />
+		<field name="DASH_PUNCTUATION" />
+		<field name="DECIMAL_DIGIT_NUMBER" />
+		<field name="DIRECTIONALITY_ARABIC_NUMBER" />
+		<field name="DIRECTIONALITY_BOUNDARY_NEUTRAL" />
+		<field name="DIRECTIONALITY_COMMON_NUMBER_SEPARATOR" />
+		<field name="DIRECTIONALITY_EUROPEAN_NUMBER" />
+		<field name="DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR" />
+		<field name="DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR" />
+		<field name="DIRECTIONALITY_LEFT_TO_RIGHT" />
+		<field name="DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING" />
+		<field name="DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE" />
+		<field name="DIRECTIONALITY_NONSPACING_MARK" />
+		<field name="DIRECTIONALITY_OTHER_NEUTRALS" />
+		<field name="DIRECTIONALITY_PARAGRAPH_SEPARATOR" />
+		<field name="DIRECTIONALITY_POP_DIRECTIONAL_FORMAT" />
+		<field name="DIRECTIONALITY_RIGHT_TO_LEFT" />
+		<field name="DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC" />
+		<field name="DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING" />
+		<field name="DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE" />
+		<field name="DIRECTIONALITY_SEGMENT_SEPARATOR" />
+		<field name="DIRECTIONALITY_UNDEFINED" />
+		<field name="DIRECTIONALITY_WHITESPACE" />
+		<field name="ENCLOSING_MARK" />
+		<field name="END_PUNCTUATION" />
+		<field name="FINAL_QUOTE_PUNCTUATION" />
+		<field name="FORMAT" />
+		<field name="INITIAL_QUOTE_PUNCTUATION" />
+		<field name="LETTER_NUMBER" />
+		<field name="LINE_SEPARATOR" />
+		<field name="LOWERCASE_LETTER" />
+		<field name="MATH_SYMBOL" />
+		<field name="MAX_CODE_POINT" />
+		<field name="MAX_HIGH_SURROGATE" />
+		<field name="MAX_LOW_SURROGATE" />
+		<field name="MAX_RADIX" />
+		<field name="MAX_SURROGATE" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_CODE_POINT" />
+		<field name="MIN_HIGH_SURROGATE" />
+		<field name="MIN_LOW_SURROGATE" />
+		<field name="MIN_RADIX" />
+		<field name="MIN_SUPPLEMENTARY_CODE_POINT" />
+		<field name="MIN_SURROGATE" />
+		<field name="MIN_VALUE" />
+		<field name="MODIFIER_LETTER" />
+		<field name="MODIFIER_SYMBOL" />
+		<field name="NON_SPACING_MARK" />
+		<field name="OTHER_LETTER" />
+		<field name="OTHER_NUMBER" />
+		<field name="OTHER_PUNCTUATION" />
+		<field name="OTHER_SYMBOL" />
+		<field name="PARAGRAPH_SEPARATOR" />
+		<field name="PRIVATE_USE" />
+		<field name="SIZE" />
+		<field name="SPACE_SEPARATOR" />
+		<field name="START_PUNCTUATION" />
+		<field name="SURROGATE" />
+		<field name="TITLECASE_LETTER" />
+		<field name="TYPE" />
+		<field name="UNASSIGNED" />
+		<field name="UPPERCASE_LETTER" />
+	</class>
+	<class name="java/lang/Character$Subset" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="hashCode()I" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/Character$UnicodeBlock" since="1">
+		<extends name="java/lang/Character$Subset" />
+		<method name="forName(Ljava/lang/String;)Ljava/lang/Character$UnicodeBlock;" />
+		<method name="of(C)Ljava/lang/Character$UnicodeBlock;" />
+		<method name="of(I)Ljava/lang/Character$UnicodeBlock;" />
+		<field name="AEGEAN_NUMBERS" />
+		<field name="ALPHABETIC_PRESENTATION_FORMS" />
+		<field name="ARABIC" />
+		<field name="ARABIC_PRESENTATION_FORMS_A" />
+		<field name="ARABIC_PRESENTATION_FORMS_B" />
+		<field name="ARMENIAN" />
+		<field name="ARROWS" />
+		<field name="BASIC_LATIN" />
+		<field name="BENGALI" />
+		<field name="BLOCK_ELEMENTS" />
+		<field name="BOPOMOFO" />
+		<field name="BOPOMOFO_EXTENDED" />
+		<field name="BOX_DRAWING" />
+		<field name="BRAILLE_PATTERNS" />
+		<field name="BUHID" />
+		<field name="BYZANTINE_MUSICAL_SYMBOLS" />
+		<field name="CHEROKEE" />
+		<field name="CJK_COMPATIBILITY" />
+		<field name="CJK_COMPATIBILITY_FORMS" />
+		<field name="CJK_COMPATIBILITY_IDEOGRAPHS" />
+		<field name="CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT" />
+		<field name="CJK_RADICALS_SUPPLEMENT" />
+		<field name="CJK_SYMBOLS_AND_PUNCTUATION" />
+		<field name="CJK_UNIFIED_IDEOGRAPHS" />
+		<field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A" />
+		<field name="CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B" />
+		<field name="COMBINING_DIACRITICAL_MARKS" />
+		<field name="COMBINING_HALF_MARKS" />
+		<field name="COMBINING_MARKS_FOR_SYMBOLS" />
+		<field name="CONTROL_PICTURES" />
+		<field name="CURRENCY_SYMBOLS" />
+		<field name="CYPRIOT_SYLLABARY" />
+		<field name="CYRILLIC" />
+		<field name="CYRILLIC_SUPPLEMENTARY" />
+		<field name="DESERET" />
+		<field name="DEVANAGARI" />
+		<field name="DINGBATS" />
+		<field name="ENCLOSED_ALPHANUMERICS" />
+		<field name="ENCLOSED_CJK_LETTERS_AND_MONTHS" />
+		<field name="ETHIOPIC" />
+		<field name="GENERAL_PUNCTUATION" />
+		<field name="GEOMETRIC_SHAPES" />
+		<field name="GEORGIAN" />
+		<field name="GOTHIC" />
+		<field name="GREEK" />
+		<field name="GREEK_EXTENDED" />
+		<field name="GUJARATI" />
+		<field name="GURMUKHI" />
+		<field name="HALFWIDTH_AND_FULLWIDTH_FORMS" />
+		<field name="HANGUL_COMPATIBILITY_JAMO" />
+		<field name="HANGUL_JAMO" />
+		<field name="HANGUL_SYLLABLES" />
+		<field name="HANUNOO" />
+		<field name="HEBREW" />
+		<field name="HIGH_PRIVATE_USE_SURROGATES" />
+		<field name="HIGH_SURROGATES" />
+		<field name="HIRAGANA" />
+		<field name="IDEOGRAPHIC_DESCRIPTION_CHARACTERS" />
+		<field name="IPA_EXTENSIONS" />
+		<field name="KANBUN" />
+		<field name="KANGXI_RADICALS" />
+		<field name="KANNADA" />
+		<field name="KATAKANA" />
+		<field name="KATAKANA_PHONETIC_EXTENSIONS" />
+		<field name="KHMER" />
+		<field name="KHMER_SYMBOLS" />
+		<field name="LAO" />
+		<field name="LATIN_1_SUPPLEMENT" />
+		<field name="LATIN_EXTENDED_A" />
+		<field name="LATIN_EXTENDED_ADDITIONAL" />
+		<field name="LATIN_EXTENDED_B" />
+		<field name="LETTERLIKE_SYMBOLS" />
+		<field name="LIMBU" />
+		<field name="LINEAR_B_IDEOGRAMS" />
+		<field name="LINEAR_B_SYLLABARY" />
+		<field name="LOW_SURROGATES" />
+		<field name="MALAYALAM" />
+		<field name="MATHEMATICAL_ALPHANUMERIC_SYMBOLS" />
+		<field name="MATHEMATICAL_OPERATORS" />
+		<field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A" />
+		<field name="MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B" />
+		<field name="MISCELLANEOUS_SYMBOLS" />
+		<field name="MISCELLANEOUS_SYMBOLS_AND_ARROWS" />
+		<field name="MISCELLANEOUS_TECHNICAL" />
+		<field name="MONGOLIAN" />
+		<field name="MUSICAL_SYMBOLS" />
+		<field name="MYANMAR" />
+		<field name="NUMBER_FORMS" />
+		<field name="OGHAM" />
+		<field name="OLD_ITALIC" />
+		<field name="OPTICAL_CHARACTER_RECOGNITION" />
+		<field name="ORIYA" />
+		<field name="OSMANYA" />
+		<field name="PHONETIC_EXTENSIONS" />
+		<field name="PRIVATE_USE_AREA" />
+		<field name="RUNIC" />
+		<field name="SHAVIAN" />
+		<field name="SINHALA" />
+		<field name="SMALL_FORM_VARIANTS" />
+		<field name="SPACING_MODIFIER_LETTERS" />
+		<field name="SPECIALS" />
+		<field name="SUPERSCRIPTS_AND_SUBSCRIPTS" />
+		<field name="SUPPLEMENTAL_ARROWS_A" />
+		<field name="SUPPLEMENTAL_ARROWS_B" />
+		<field name="SUPPLEMENTAL_MATHEMATICAL_OPERATORS" />
+		<field name="SUPPLEMENTARY_PRIVATE_USE_AREA_A" />
+		<field name="SUPPLEMENTARY_PRIVATE_USE_AREA_B" />
+		<field name="SURROGATES_AREA" />
+		<field name="SYRIAC" />
+		<field name="TAGALOG" />
+		<field name="TAGBANWA" />
+		<field name="TAGS" />
+		<field name="TAI_LE" />
+		<field name="TAI_XUAN_JING_SYMBOLS" />
+		<field name="TAMIL" />
+		<field name="TELUGU" />
+		<field name="THAANA" />
+		<field name="THAI" />
+		<field name="TIBETAN" />
+		<field name="UGARITIC" />
+		<field name="UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS" />
+		<field name="VARIATION_SELECTORS" />
+		<field name="VARIATION_SELECTORS_SUPPLEMENT" />
+		<field name="YIJING_HEXAGRAM_SYMBOLS" />
+		<field name="YI_RADICALS" />
+		<field name="YI_SYLLABLES" />
+	</class>
+	<class name="java/lang/Class" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/reflect/AnnotatedElement" />
+		<implements name="java/lang/reflect/GenericDeclaration" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/lang/reflect/Type" />
+		<method name="asSubclass(Ljava/lang/Class;)Ljava/lang/Class;" />
+		<method name="cast(Ljava/lang/Object;)LT;" />
+		<method name="desiredAssertionStatus()Z" />
+		<method name="forName(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;" />
+		<method name="getAnnotation(Ljava/lang/Class;)LA;" />
+		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="getCanonicalName()Ljava/lang/String;" />
+		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getClasses()[Ljava/lang/Class;" />
+		<method name="getComponentType()Ljava/lang/Class;" />
+		<method name="getConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
+		<method name="getConstructors()[Ljava/lang/reflect/Constructor;" />
+		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="getDeclaredClasses()[Ljava/lang/Class;" />
+		<method name="getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
+		<method name="getDeclaredConstructors()[Ljava/lang/reflect/Constructor;" />
+		<method name="getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field;" />
+		<method name="getDeclaredFields()[Ljava/lang/reflect/Field;" />
+		<method name="getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;" />
+		<method name="getDeclaredMethods()[Ljava/lang/reflect/Method;" />
+		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<method name="getEnclosingClass()Ljava/lang/Class;" />
+		<method name="getEnclosingConstructor()Ljava/lang/reflect/Constructor;" />
+		<method name="getEnclosingMethod()Ljava/lang/reflect/Method;" />
+		<method name="getEnumConstants()[LT;" />
+		<method name="getField(Ljava/lang/String;)Ljava/lang/reflect/Field;" />
+		<method name="getFields()[Ljava/lang/reflect/Field;" />
+		<method name="getGenericInterfaces()[Ljava/lang/reflect/Type;" />
+		<method name="getGenericSuperclass()Ljava/lang/reflect/Type;" />
+		<method name="getInterfaces()[Ljava/lang/Class;" />
+		<method name="getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;" />
+		<method name="getMethods()[Ljava/lang/reflect/Method;" />
+		<method name="getModifiers()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPackage()Ljava/lang/Package;" />
+		<method name="getProtectionDomain()Ljava/security/ProtectionDomain;" />
+		<method name="getResource(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="getSigners()[Ljava/lang/Object;" />
+		<method name="getSimpleName()Ljava/lang/String;" />
+		<method name="getSuperclass()Ljava/lang/Class;" />
+		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
+		<method name="isAnnotation()Z" />
+		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
+		<method name="isAnonymousClass()Z" />
+		<method name="isArray()Z" />
+		<method name="isAssignableFrom(Ljava/lang/Class;)Z" />
+		<method name="isEnum()Z" />
+		<method name="isInstance(Ljava/lang/Object;)Z" />
+		<method name="isInterface()Z" />
+		<method name="isLocalClass()Z" />
+		<method name="isMemberClass()Z" />
+		<method name="isPrimitive()Z" />
+		<method name="isSynthetic()Z" />
+		<method name="newInstance()LT;" />
+	</class>
+	<class name="java/lang/ClassCastException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/ClassCircularityError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/ClassFormatError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/ClassLoader" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/ClassLoader;)V" />
+		<method name="clearAssertionStatus()V" />
+		<method name="defineClass(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/ProtectionDomain;)Ljava/lang/Class;" />
+		<method name="defineClass(Ljava/lang/String;[BII)Ljava/lang/Class;" />
+		<method name="defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;" />
+		<method name="defineClass([BII)Ljava/lang/Class;" />
+		<method name="definePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package;" />
+		<method name="findClass(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="findLibrary(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="findLoadedClass(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="findResource(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="findResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
+		<method name="findSystemClass(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="getPackage(Ljava/lang/String;)Ljava/lang/Package;" />
+		<method name="getPackages()[Ljava/lang/Package;" />
+		<method name="getParent()Ljava/lang/ClassLoader;" />
+		<method name="getResource(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="getResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
+		<method name="getSystemClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getSystemResource(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="getSystemResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="getSystemResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
+		<method name="loadClass(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="loadClass(Ljava/lang/String;Z)Ljava/lang/Class;" />
+		<method name="resolveClass(Ljava/lang/Class;)V" />
+		<method name="setClassAssertionStatus(Ljava/lang/String;Z)V" />
+		<method name="setDefaultAssertionStatus(Z)V" />
+		<method name="setPackageAssertionStatus(Ljava/lang/String;Z)V" />
+		<method name="setSigners(Ljava/lang/Class;[Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/lang/ClassNotFoundException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="getException()Ljava/lang/Throwable;" />
+	</class>
+	<class name="java/lang/CloneNotSupportedException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Cloneable" since="1">
+	</class>
+	<class name="java/lang/Comparable" since="1">
+		<method name="compareTo(LT;)I" />
+	</class>
+	<class name="java/lang/Compiler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="command(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="compileClass(Ljava/lang/Class;)Z" />
+		<method name="compileClasses(Ljava/lang/String;)Z" />
+		<method name="disable()V" />
+		<method name="enable()V" />
+	</class>
+	<class name="java/lang/Deprecated" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/Double" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(D)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="compare(DD)I" />
+		<method name="compareTo(Ljava/lang/Double;)I" />
+		<method name="doubleToLongBits(D)J" />
+		<method name="doubleToRawLongBits(D)J" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="intValue()I" />
+		<method name="isInfinite()Z" />
+		<method name="isInfinite(D)Z" />
+		<method name="isNaN()Z" />
+		<method name="isNaN(D)Z" />
+		<method name="longBitsToDouble(J)D" />
+		<method name="longValue()J" />
+		<method name="parseDouble(Ljava/lang/String;)D" />
+		<method name="toHexString(D)Ljava/lang/String;" />
+		<method name="toString(D)Ljava/lang/String;" />
+		<method name="valueOf(D)Ljava/lang/Double;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Double;" />
+		<field name="MAX_EXPONENT" since="9" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_EXPONENT" since="9" />
+		<field name="MIN_NORMAL" since="9" />
+		<field name="MIN_VALUE" />
+		<field name="NEGATIVE_INFINITY" />
+		<field name="NaN" />
+		<field name="POSITIVE_INFINITY" />
+		<field name="SIZE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/Enum" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="compareTo(LE;)I" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="finalize()V" since="9" />
+		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<method name="hashCode()I" />
+		<method name="name()Ljava/lang/String;" />
+		<method name="ordinal()I" />
+		<method name="valueOf(Ljava/lang/Class;Ljava/lang/String;)LT;" />
+	</class>
+	<class name="java/lang/EnumConstantNotPresentException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
+		<method name="constantName()Ljava/lang/String;" />
+		<method name="enumType()Ljava/lang/Class;" />
+	</class>
+	<class name="java/lang/Error" since="1">
+		<extends name="java/lang/Throwable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/Exception" since="1">
+		<extends name="java/lang/Throwable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/ExceptionInInitializerError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="getException()Ljava/lang/Throwable;" />
+	</class>
+	<class name="java/lang/Float" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(D)V" />
+		<method name="&lt;init>(F)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="compare(FF)I" />
+		<method name="compareTo(Ljava/lang/Float;)I" />
+		<method name="doubleValue()D" />
+		<method name="floatToIntBits(F)I" />
+		<method name="floatToRawIntBits(F)I" />
+		<method name="floatValue()F" />
+		<method name="intBitsToFloat(I)F" />
+		<method name="intValue()I" />
+		<method name="isInfinite()Z" />
+		<method name="isInfinite(F)Z" />
+		<method name="isNaN()Z" />
+		<method name="isNaN(F)Z" />
+		<method name="longValue()J" />
+		<method name="parseFloat(Ljava/lang/String;)F" />
+		<method name="toHexString(F)Ljava/lang/String;" />
+		<method name="toString(F)Ljava/lang/String;" />
+		<method name="valueOf(F)Ljava/lang/Float;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Float;" />
+		<field name="MAX_EXPONENT" since="9" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_EXPONENT" since="9" />
+		<field name="MIN_NORMAL" since="9" />
+		<field name="MIN_VALUE" />
+		<field name="NEGATIVE_INFINITY" />
+		<field name="NaN" />
+		<field name="POSITIVE_INFINITY" />
+		<field name="SIZE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/IllegalAccessError" since="1">
+		<extends name="java/lang/IncompatibleClassChangeError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/IllegalAccessException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/IllegalArgumentException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/IllegalMonitorStateException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/IllegalStateException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/IllegalThreadStateException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/IncompatibleClassChangeError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/IndexOutOfBoundsException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/InheritableThreadLocal" since="1">
+		<extends name="java/lang/ThreadLocal" />
+		<method name="&lt;init>()V" />
+		<method name="childValue(LT;)LT;" />
+	</class>
+	<class name="java/lang/InstantiationError" since="1">
+		<extends name="java/lang/IncompatibleClassChangeError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/InstantiationException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Integer" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="bitCount(I)I" />
+		<method name="compareTo(Ljava/lang/Integer;)I" />
+		<method name="decode(Ljava/lang/String;)Ljava/lang/Integer;" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="getInteger(Ljava/lang/String;)Ljava/lang/Integer;" />
+		<method name="getInteger(Ljava/lang/String;I)Ljava/lang/Integer;" />
+		<method name="getInteger(Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;" />
+		<method name="highestOneBit(I)I" />
+		<method name="intValue()I" />
+		<method name="longValue()J" />
+		<method name="lowestOneBit(I)I" />
+		<method name="numberOfLeadingZeros(I)I" />
+		<method name="numberOfTrailingZeros(I)I" />
+		<method name="parseInt(Ljava/lang/String;)I" />
+		<method name="parseInt(Ljava/lang/String;I)I" />
+		<method name="reverse(I)I" />
+		<method name="reverseBytes(I)I" />
+		<method name="rotateLeft(II)I" />
+		<method name="rotateRight(II)I" />
+		<method name="signum(I)I" />
+		<method name="toBinaryString(I)Ljava/lang/String;" />
+		<method name="toHexString(I)Ljava/lang/String;" />
+		<method name="toOctalString(I)Ljava/lang/String;" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<method name="toString(II)Ljava/lang/String;" />
+		<method name="valueOf(I)Ljava/lang/Integer;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Integer;" />
+		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Integer;" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_VALUE" />
+		<field name="SIZE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/InternalError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/InterruptedException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Iterable" since="1">
+		<method name="iterator()Ljava/util/Iterator;" />
+	</class>
+	<class name="java/lang/LinkageError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Long" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(J)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="bitCount(J)I" />
+		<method name="compareTo(Ljava/lang/Long;)I" />
+		<method name="decode(Ljava/lang/String;)Ljava/lang/Long;" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="getLong(Ljava/lang/String;)Ljava/lang/Long;" />
+		<method name="getLong(Ljava/lang/String;J)Ljava/lang/Long;" />
+		<method name="getLong(Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;" />
+		<method name="highestOneBit(J)J" />
+		<method name="intValue()I" />
+		<method name="longValue()J" />
+		<method name="lowestOneBit(J)J" />
+		<method name="numberOfLeadingZeros(J)I" />
+		<method name="numberOfTrailingZeros(J)I" />
+		<method name="parseLong(Ljava/lang/String;)J" />
+		<method name="parseLong(Ljava/lang/String;I)J" />
+		<method name="reverse(J)J" />
+		<method name="reverseBytes(J)J" />
+		<method name="rotateLeft(JI)J" />
+		<method name="rotateRight(JI)J" />
+		<method name="signum(J)I" />
+		<method name="toBinaryString(J)Ljava/lang/String;" />
+		<method name="toHexString(J)Ljava/lang/String;" />
+		<method name="toOctalString(J)Ljava/lang/String;" />
+		<method name="toString(J)Ljava/lang/String;" />
+		<method name="toString(JI)Ljava/lang/String;" />
+		<method name="valueOf(J)Ljava/lang/Long;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Long;" />
+		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Long;" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_VALUE" />
+		<field name="SIZE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/Math" since="1">
+		<extends name="java/lang/Object" />
+		<method name="IEEEremainder(DD)D" />
+		<method name="abs(D)D" />
+		<method name="abs(F)F" />
+		<method name="abs(I)I" />
+		<method name="abs(J)J" />
+		<method name="acos(D)D" />
+		<method name="asin(D)D" />
+		<method name="atan(D)D" />
+		<method name="atan2(DD)D" />
+		<method name="cbrt(D)D" />
+		<method name="ceil(D)D" />
+		<method name="copySign(DD)D" since="9" />
+		<method name="copySign(FF)F" since="9" />
+		<method name="cos(D)D" />
+		<method name="cosh(D)D" />
+		<method name="exp(D)D" />
+		<method name="expm1(D)D" />
+		<method name="floor(D)D" />
+		<method name="getExponent(D)I" since="9" />
+		<method name="getExponent(F)I" since="9" />
+		<method name="hypot(DD)D" />
+		<method name="log(D)D" />
+		<method name="log10(D)D" />
+		<method name="log1p(D)D" />
+		<method name="max(DD)D" />
+		<method name="max(FF)F" />
+		<method name="max(II)I" />
+		<method name="max(JJ)J" />
+		<method name="min(DD)D" />
+		<method name="min(FF)F" />
+		<method name="min(II)I" />
+		<method name="min(JJ)J" />
+		<method name="nextAfter(DD)D" since="9" />
+		<method name="nextAfter(FD)F" since="9" />
+		<method name="nextUp(D)D" since="9" />
+		<method name="nextUp(F)F" since="9" />
+		<method name="pow(DD)D" />
+		<method name="random()D" />
+		<method name="rint(D)D" />
+		<method name="round(D)J" />
+		<method name="round(F)I" />
+		<method name="scalb(DI)D" since="9" />
+		<method name="scalb(FI)F" since="9" />
+		<method name="signum(D)D" />
+		<method name="signum(F)F" />
+		<method name="sin(D)D" />
+		<method name="sinh(D)D" />
+		<method name="sqrt(D)D" />
+		<method name="tan(D)D" />
+		<method name="tanh(D)D" />
+		<method name="toDegrees(D)D" />
+		<method name="toRadians(D)D" />
+		<method name="ulp(D)D" />
+		<method name="ulp(F)F" />
+		<field name="E" />
+		<field name="PI" />
+	</class>
+	<class name="java/lang/NegativeArraySizeException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/NoClassDefFoundError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/NoSuchFieldError" since="1">
+		<extends name="java/lang/IncompatibleClassChangeError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/NoSuchFieldException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/NoSuchMethodError" since="1">
+		<extends name="java/lang/IncompatibleClassChangeError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/NoSuchMethodException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/NullPointerException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Number" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="byteValue()B" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="intValue()I" />
+		<method name="longValue()J" />
+		<method name="shortValue()S" />
+	</class>
+	<class name="java/lang/NumberFormatException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Object" since="1">
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="finalize()V" />
+		<method name="getClass()Ljava/lang/Class;" />
+		<method name="hashCode()I" />
+		<method name="notify()V" />
+		<method name="notifyAll()V" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="wait()V" />
+		<method name="wait(J)V" />
+		<method name="wait(JI)V" />
+	</class>
+	<class name="java/lang/OutOfMemoryError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Override" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/Package" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/reflect/AnnotatedElement" />
+		<method name="getAnnotation(Ljava/lang/Class;)LA;" since="9" />
+		<method name="getAnnotation(Ljava/lang/Class;)LT;" />
+		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="getImplementationTitle()Ljava/lang/String;" />
+		<method name="getImplementationVendor()Ljava/lang/String;" />
+		<method name="getImplementationVersion()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPackage(Ljava/lang/String;)Ljava/lang/Package;" />
+		<method name="getPackages()[Ljava/lang/Package;" />
+		<method name="getSpecificationTitle()Ljava/lang/String;" />
+		<method name="getSpecificationVendor()Ljava/lang/String;" />
+		<method name="getSpecificationVersion()Ljava/lang/String;" />
+		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
+		<method name="isCompatibleWith(Ljava/lang/String;)Z" />
+		<method name="isSealed()Z" />
+		<method name="isSealed(Ljava/net/URL;)Z" />
+	</class>
+	<class name="java/lang/Process" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="destroy()V" />
+		<method name="exitValue()I" />
+		<method name="getErrorStream()Ljava/io/InputStream;" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="waitFor()I" />
+	</class>
+	<class name="java/lang/ProcessBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/util/List;)V" />
+		<method name="&lt;init>([Ljava/lang/String;)V" />
+		<method name="command()Ljava/util/List;" />
+		<method name="command(Ljava/util/List;)Ljava/lang/ProcessBuilder;" />
+		<method name="command([Ljava/lang/String;)Ljava/lang/ProcessBuilder;" />
+		<method name="directory()Ljava/io/File;" />
+		<method name="directory(Ljava/io/File;)Ljava/lang/ProcessBuilder;" />
+		<method name="environment()Ljava/util/Map;" />
+		<method name="redirectErrorStream()Z" />
+		<method name="redirectErrorStream(Z)Ljava/lang/ProcessBuilder;" />
+		<method name="start()Ljava/lang/Process;" />
+	</class>
+	<class name="java/lang/Readable" since="1">
+		<method name="read(Ljava/nio/CharBuffer;)I" />
+	</class>
+	<class name="java/lang/Runnable" since="1">
+		<method name="run()V" />
+	</class>
+	<class name="java/lang/Runtime" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addShutdownHook(Ljava/lang/Thread;)V" />
+		<method name="availableProcessors()I" />
+		<method name="exec(Ljava/lang/String;)Ljava/lang/Process;" />
+		<method name="exec(Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;" />
+		<method name="exec(Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;" />
+		<method name="exec([Ljava/lang/String;)Ljava/lang/Process;" />
+		<method name="exec([Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/Process;" />
+		<method name="exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;" />
+		<method name="exit(I)V" />
+		<method name="freeMemory()J" />
+		<method name="gc()V" />
+		<method name="getLocalizedInputStream(Ljava/io/InputStream;)Ljava/io/InputStream;" />
+		<method name="getLocalizedOutputStream(Ljava/io/OutputStream;)Ljava/io/OutputStream;" />
+		<method name="getRuntime()Ljava/lang/Runtime;" />
+		<method name="halt(I)V" />
+		<method name="load(Ljava/lang/String;)V" />
+		<method name="loadLibrary(Ljava/lang/String;)V" />
+		<method name="maxMemory()J" />
+		<method name="removeShutdownHook(Ljava/lang/Thread;)Z" />
+		<method name="runFinalization()V" />
+		<method name="runFinalizersOnExit(Z)V" />
+		<method name="totalMemory()J" />
+		<method name="traceInstructions(Z)V" />
+		<method name="traceMethodCalls(Z)V" />
+	</class>
+	<class name="java/lang/RuntimeException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/RuntimePermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/SecurityException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/SecurityManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="checkAccept(Ljava/lang/String;I)V" />
+		<method name="checkAccess(Ljava/lang/Thread;)V" />
+		<method name="checkAccess(Ljava/lang/ThreadGroup;)V" />
+		<method name="checkAwtEventQueueAccess()V" />
+		<method name="checkConnect(Ljava/lang/String;I)V" />
+		<method name="checkConnect(Ljava/lang/String;ILjava/lang/Object;)V" />
+		<method name="checkCreateClassLoader()V" />
+		<method name="checkDelete(Ljava/lang/String;)V" />
+		<method name="checkExec(Ljava/lang/String;)V" />
+		<method name="checkExit(I)V" />
+		<method name="checkLink(Ljava/lang/String;)V" />
+		<method name="checkListen(I)V" />
+		<method name="checkMemberAccess(Ljava/lang/Class;I)V" />
+		<method name="checkMulticast(Ljava/net/InetAddress;)V" />
+		<method name="checkMulticast(Ljava/net/InetAddress;B)V" />
+		<method name="checkPackageAccess(Ljava/lang/String;)V" />
+		<method name="checkPackageDefinition(Ljava/lang/String;)V" />
+		<method name="checkPermission(Ljava/security/Permission;)V" />
+		<method name="checkPermission(Ljava/security/Permission;Ljava/lang/Object;)V" />
+		<method name="checkPrintJobAccess()V" />
+		<method name="checkPropertiesAccess()V" />
+		<method name="checkPropertyAccess(Ljava/lang/String;)V" />
+		<method name="checkRead(Ljava/io/FileDescriptor;)V" />
+		<method name="checkRead(Ljava/lang/String;)V" />
+		<method name="checkRead(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="checkSecurityAccess(Ljava/lang/String;)V" />
+		<method name="checkSetFactory()V" />
+		<method name="checkSystemClipboardAccess()V" />
+		<method name="checkTopLevelWindow(Ljava/lang/Object;)Z" />
+		<method name="checkWrite(Ljava/io/FileDescriptor;)V" />
+		<method name="checkWrite(Ljava/lang/String;)V" />
+		<method name="classDepth(Ljava/lang/String;)I" />
+		<method name="classLoaderDepth()I" />
+		<method name="currentClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="currentLoadedClass()Ljava/lang/Class;" />
+		<method name="getClassContext()[Ljava/lang/Class;" />
+		<method name="getInCheck()Z" />
+		<method name="getSecurityContext()Ljava/lang/Object;" />
+		<method name="getThreadGroup()Ljava/lang/ThreadGroup;" />
+		<method name="inClass(Ljava/lang/String;)Z" />
+		<method name="inClassLoader()Z" />
+		<field name="inCheck" />
+	</class>
+	<class name="java/lang/Short" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(S)V" />
+		<method name="compareTo(Ljava/lang/Short;)I" />
+		<method name="decode(Ljava/lang/String;)Ljava/lang/Short;" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="intValue()I" />
+		<method name="longValue()J" />
+		<method name="parseShort(Ljava/lang/String;)S" />
+		<method name="parseShort(Ljava/lang/String;I)S" />
+		<method name="reverseBytes(S)S" />
+		<method name="toString(S)Ljava/lang/String;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Short;" />
+		<method name="valueOf(Ljava/lang/String;I)Ljava/lang/Short;" />
+		<method name="valueOf(S)Ljava/lang/Short;" />
+		<field name="MAX_VALUE" />
+		<field name="MIN_VALUE" />
+		<field name="SIZE" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/StackOverflowError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/StackTraceElement" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="getClassName()Ljava/lang/String;" />
+		<method name="getFileName()Ljava/lang/String;" />
+		<method name="getLineNumber()I" />
+		<method name="getMethodName()Ljava/lang/String;" />
+		<method name="isNativeMethod()Z" />
+	</class>
+	<class name="java/lang/StrictMath" since="1">
+		<extends name="java/lang/Object" />
+		<method name="IEEEremainder(DD)D" />
+		<method name="abs(D)D" />
+		<method name="abs(F)F" />
+		<method name="abs(I)I" />
+		<method name="abs(J)J" />
+		<method name="acos(D)D" />
+		<method name="asin(D)D" />
+		<method name="atan(D)D" />
+		<method name="atan2(DD)D" />
+		<method name="cbrt(D)D" />
+		<method name="ceil(D)D" />
+		<method name="copySign(DD)D" since="9" />
+		<method name="copySign(FF)F" since="9" />
+		<method name="cos(D)D" />
+		<method name="cosh(D)D" />
+		<method name="exp(D)D" />
+		<method name="expm1(D)D" />
+		<method name="floor(D)D" />
+		<method name="getExponent(D)I" since="9" />
+		<method name="getExponent(F)I" since="9" />
+		<method name="hypot(DD)D" />
+		<method name="log(D)D" />
+		<method name="log10(D)D" />
+		<method name="log1p(D)D" />
+		<method name="max(DD)D" />
+		<method name="max(FF)F" />
+		<method name="max(II)I" />
+		<method name="max(JJ)J" />
+		<method name="min(DD)D" />
+		<method name="min(FF)F" />
+		<method name="min(II)I" />
+		<method name="min(JJ)J" />
+		<method name="nextAfter(DD)D" since="9" />
+		<method name="nextAfter(FD)F" since="9" />
+		<method name="nextUp(D)D" since="9" />
+		<method name="nextUp(F)F" since="9" />
+		<method name="pow(DD)D" />
+		<method name="random()D" />
+		<method name="rint(D)D" />
+		<method name="round(D)J" />
+		<method name="round(F)I" />
+		<method name="scalb(DI)D" since="9" />
+		<method name="scalb(FI)F" since="9" />
+		<method name="signum(D)D" />
+		<method name="signum(F)F" />
+		<method name="sin(D)D" />
+		<method name="sinh(D)D" />
+		<method name="sqrt(D)D" />
+		<method name="tan(D)D" />
+		<method name="tanh(D)D" />
+		<method name="toDegrees(D)D" />
+		<method name="toRadians(D)D" />
+		<method name="ulp(D)D" />
+		<method name="ulp(F)F" />
+		<field name="E" />
+		<field name="PI" />
+	</class>
+	<class name="java/lang/String" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/StringBuffer;)V" />
+		<method name="&lt;init>(Ljava/lang/StringBuilder;)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="&lt;init>([BI)V" />
+		<method name="&lt;init>([BII)V" />
+		<method name="&lt;init>([BIII)V" />
+		<method name="&lt;init>([BIILjava/lang/String;)V" />
+		<method name="&lt;init>([BIILjava/nio/charset/Charset;)V" since="9" />
+		<method name="&lt;init>([BLjava/lang/String;)V" />
+		<method name="&lt;init>([BLjava/nio/charset/Charset;)V" since="9" />
+		<method name="&lt;init>([C)V" />
+		<method name="&lt;init>([CII)V" />
+		<method name="&lt;init>([III)V" />
+		<method name="charAt(I)C" />
+		<method name="codePointAt(I)I" />
+		<method name="codePointBefore(I)I" />
+		<method name="codePointCount(II)I" />
+		<method name="compareTo(Ljava/lang/String;)I" />
+		<method name="compareToIgnoreCase(Ljava/lang/String;)I" />
+		<method name="concat(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="contains(Ljava/lang/CharSequence;)Z" />
+		<method name="contentEquals(Ljava/lang/CharSequence;)Z" />
+		<method name="contentEquals(Ljava/lang/StringBuffer;)Z" />
+		<method name="copyValueOf([C)Ljava/lang/String;" />
+		<method name="copyValueOf([CII)Ljava/lang/String;" />
+		<method name="endsWith(Ljava/lang/String;)Z" />
+		<method name="equalsIgnoreCase(Ljava/lang/String;)Z" />
+		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="getBytes()[B" />
+		<method name="getBytes(II[BI)V" />
+		<method name="getBytes(Ljava/lang/String;)[B" />
+		<method name="getBytes(Ljava/nio/charset/Charset;)[B" since="9" />
+		<method name="getChars(II[CI)V" />
+		<method name="indexOf(I)I" />
+		<method name="indexOf(II)I" />
+		<method name="indexOf(Ljava/lang/String;)I" />
+		<method name="indexOf(Ljava/lang/String;I)I" />
+		<method name="intern()Ljava/lang/String;" />
+		<method name="isEmpty()Z" since="9" />
+		<method name="lastIndexOf(I)I" />
+		<method name="lastIndexOf(II)I" />
+		<method name="lastIndexOf(Ljava/lang/String;)I" />
+		<method name="lastIndexOf(Ljava/lang/String;I)I" />
+		<method name="length()I" />
+		<method name="matches(Ljava/lang/String;)Z" />
+		<method name="offsetByCodePoints(II)I" />
+		<method name="regionMatches(ILjava/lang/String;II)Z" />
+		<method name="regionMatches(ZILjava/lang/String;II)Z" />
+		<method name="replace(CC)Ljava/lang/String;" />
+		<method name="replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;" />
+		<method name="replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="replaceFirst(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="split(Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="split(Ljava/lang/String;I)[Ljava/lang/String;" />
+		<method name="startsWith(Ljava/lang/String;)Z" />
+		<method name="startsWith(Ljava/lang/String;I)Z" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="substring(I)Ljava/lang/String;" />
+		<method name="substring(II)Ljava/lang/String;" />
+		<method name="toCharArray()[C" />
+		<method name="toLowerCase()Ljava/lang/String;" />
+		<method name="toLowerCase(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="toUpperCase()Ljava/lang/String;" />
+		<method name="toUpperCase(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="trim()Ljava/lang/String;" />
+		<method name="valueOf(C)Ljava/lang/String;" />
+		<method name="valueOf(D)Ljava/lang/String;" />
+		<method name="valueOf(F)Ljava/lang/String;" />
+		<method name="valueOf(I)Ljava/lang/String;" />
+		<method name="valueOf(J)Ljava/lang/String;" />
+		<method name="valueOf(Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="valueOf(Z)Ljava/lang/String;" />
+		<method name="valueOf([C)Ljava/lang/String;" />
+		<method name="valueOf([CII)Ljava/lang/String;" />
+		<field name="CASE_INSENSITIVE_ORDER" />
+	</class>
+	<class name="java/lang/StringBuffer" since="1">
+		<extends name="java/lang/AbstractStringBuilder" />
+		<implements name="java/lang/Appendable" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="append(C)Ljava/lang/StringBuffer;" />
+		<method name="append(D)Ljava/lang/StringBuffer;" />
+		<method name="append(F)Ljava/lang/StringBuffer;" />
+		<method name="append(I)Ljava/lang/StringBuffer;" />
+		<method name="append(J)Ljava/lang/StringBuffer;" />
+		<method name="append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer;" />
+		<method name="append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;" />
+		<method name="append(Ljava/lang/Object;)Ljava/lang/StringBuffer;" />
+		<method name="append(Ljava/lang/String;)Ljava/lang/StringBuffer;" />
+		<method name="append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;" />
+		<method name="append(Z)Ljava/lang/StringBuffer;" />
+		<method name="append([C)Ljava/lang/StringBuffer;" />
+		<method name="append([CII)Ljava/lang/StringBuffer;" />
+		<method name="appendCodePoint(I)Ljava/lang/StringBuffer;" />
+		<method name="delete(II)Ljava/lang/StringBuffer;" />
+		<method name="deleteCharAt(I)Ljava/lang/StringBuffer;" />
+		<method name="insert(IC)Ljava/lang/StringBuffer;" />
+		<method name="insert(ID)Ljava/lang/StringBuffer;" />
+		<method name="insert(IF)Ljava/lang/StringBuffer;" />
+		<method name="insert(II)Ljava/lang/StringBuffer;" />
+		<method name="insert(IJ)Ljava/lang/StringBuffer;" />
+		<method name="insert(ILjava/lang/CharSequence;)Ljava/lang/StringBuffer;" />
+		<method name="insert(ILjava/lang/CharSequence;II)Ljava/lang/StringBuffer;" />
+		<method name="insert(ILjava/lang/Object;)Ljava/lang/StringBuffer;" />
+		<method name="insert(ILjava/lang/String;)Ljava/lang/StringBuffer;" />
+		<method name="insert(IZ)Ljava/lang/StringBuffer;" />
+		<method name="insert(I[C)Ljava/lang/StringBuffer;" />
+		<method name="insert(I[CII)Ljava/lang/StringBuffer;" />
+		<method name="replace(IILjava/lang/String;)Ljava/lang/StringBuffer;" />
+		<method name="reverse()Ljava/lang/StringBuffer;" />
+	</class>
+	<class name="java/lang/StringBuilder" since="1">
+		<extends name="java/lang/AbstractStringBuilder" />
+		<implements name="java/lang/Appendable" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/CharSequence;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="append(C)Ljava/lang/StringBuilder;" />
+		<method name="append(D)Ljava/lang/StringBuilder;" />
+		<method name="append(F)Ljava/lang/StringBuilder;" />
+		<method name="append(I)Ljava/lang/StringBuilder;" />
+		<method name="append(J)Ljava/lang/StringBuilder;" />
+		<method name="append(Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;" />
+		<method name="append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuilder;" />
+		<method name="append(Ljava/lang/Object;)Ljava/lang/StringBuilder;" />
+		<method name="append(Ljava/lang/String;)Ljava/lang/StringBuilder;" />
+		<method name="append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuilder;" />
+		<method name="append(Z)Ljava/lang/StringBuilder;" />
+		<method name="append([C)Ljava/lang/StringBuilder;" />
+		<method name="append([CII)Ljava/lang/StringBuilder;" />
+		<method name="appendCodePoint(I)Ljava/lang/StringBuilder;" />
+		<method name="delete(II)Ljava/lang/StringBuilder;" />
+		<method name="deleteCharAt(I)Ljava/lang/StringBuilder;" />
+		<method name="insert(IC)Ljava/lang/StringBuilder;" />
+		<method name="insert(ID)Ljava/lang/StringBuilder;" />
+		<method name="insert(IF)Ljava/lang/StringBuilder;" />
+		<method name="insert(II)Ljava/lang/StringBuilder;" />
+		<method name="insert(IJ)Ljava/lang/StringBuilder;" />
+		<method name="insert(ILjava/lang/CharSequence;)Ljava/lang/StringBuilder;" />
+		<method name="insert(ILjava/lang/CharSequence;II)Ljava/lang/StringBuilder;" />
+		<method name="insert(ILjava/lang/Object;)Ljava/lang/StringBuilder;" />
+		<method name="insert(ILjava/lang/String;)Ljava/lang/StringBuilder;" />
+		<method name="insert(IZ)Ljava/lang/StringBuilder;" />
+		<method name="insert(I[C)Ljava/lang/StringBuilder;" />
+		<method name="insert(I[CII)Ljava/lang/StringBuilder;" />
+		<method name="replace(IILjava/lang/String;)Ljava/lang/StringBuilder;" />
+		<method name="reverse()Ljava/lang/StringBuilder;" />
+	</class>
+	<class name="java/lang/StringIndexOutOfBoundsException" since="1">
+		<extends name="java/lang/IndexOutOfBoundsException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/SuppressWarnings" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/System" since="1">
+		<extends name="java/lang/Object" />
+		<method name="arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V" />
+		<method name="clearProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="console()Ljava/io/Console;" since="9" />
+		<method name="currentTimeMillis()J" />
+		<method name="exit(I)V" />
+		<method name="gc()V" />
+		<method name="getProperties()Ljava/util/Properties;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getSecurityManager()Ljava/lang/SecurityManager;" />
+		<method name="getenv()Ljava/util/Map;" />
+		<method name="getenv(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="identityHashCode(Ljava/lang/Object;)I" />
+		<method name="inheritedChannel()Ljava/nio/channels/Channel;" />
+		<method name="load(Ljava/lang/String;)V" />
+		<method name="loadLibrary(Ljava/lang/String;)V" />
+		<method name="mapLibraryName(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="nanoTime()J" />
+		<method name="runFinalization()V" />
+		<method name="runFinalizersOnExit(Z)V" />
+		<method name="setErr(Ljava/io/PrintStream;)V" />
+		<method name="setIn(Ljava/io/InputStream;)V" />
+		<method name="setOut(Ljava/io/PrintStream;)V" />
+		<method name="setProperties(Ljava/util/Properties;)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="setSecurityManager(Ljava/lang/SecurityManager;)V" />
+		<field name="err" />
+		<field name="in" />
+		<field name="out" />
+	</class>
+	<class name="java/lang/Thread" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Runnable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Runnable;)V" />
+		<method name="&lt;init>(Ljava/lang/Runnable;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V" />
+		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V" />
+		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/String;)V" />
+		<method name="activeCount()I" />
+		<method name="checkAccess()V" />
+		<method name="countStackFrames()I" />
+		<method name="currentThread()Ljava/lang/Thread;" />
+		<method name="destroy()V" />
+		<method name="dumpStack()V" />
+		<method name="enumerate([Ljava/lang/Thread;)I" />
+		<method name="getAllStackTraces()Ljava/util/Map;" />
+		<method name="getContextClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;" />
+		<method name="getId()J" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPriority()I" />
+		<method name="getStackTrace()[Ljava/lang/StackTraceElement;" />
+		<method name="getState()Ljava/lang/Thread$State;" />
+		<method name="getThreadGroup()Ljava/lang/ThreadGroup;" />
+		<method name="getUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;" />
+		<method name="holdsLock(Ljava/lang/Object;)Z" />
+		<method name="interrupt()V" />
+		<method name="interrupted()Z" />
+		<method name="isAlive()Z" />
+		<method name="isDaemon()Z" />
+		<method name="isInterrupted()Z" />
+		<method name="join()V" />
+		<method name="join(J)V" />
+		<method name="join(JI)V" />
+		<method name="resume()V" />
+		<method name="run()V" />
+		<method name="setContextClassLoader(Ljava/lang/ClassLoader;)V" />
+		<method name="setDaemon(Z)V" />
+		<method name="setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V" />
+		<method name="setName(Ljava/lang/String;)V" />
+		<method name="setPriority(I)V" />
+		<method name="setUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V" />
+		<method name="sleep(J)V" />
+		<method name="sleep(JI)V" />
+		<method name="start()V" />
+		<method name="stop()V" />
+		<method name="stop(Ljava/lang/Throwable;)V" />
+		<method name="suspend()V" />
+		<method name="yield()V" />
+		<field name="MAX_PRIORITY" />
+		<field name="MIN_PRIORITY" />
+		<field name="NORM_PRIORITY" />
+	</class>
+	<class name="java/lang/Thread$State" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/Thread$State;" />
+		<method name="values()[Ljava/lang/Thread$State;" />
+		<field name="BLOCKED" />
+		<field name="NEW" />
+		<field name="RUNNABLE" />
+		<field name="TERMINATED" />
+		<field name="TIMED_WAITING" />
+		<field name="WAITING" />
+	</class>
+	<class name="java/lang/Thread$UncaughtExceptionHandler" since="1">
+		<method name="uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/ThreadDeath" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/lang/ThreadGroup" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Thread$UncaughtExceptionHandler" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/ThreadGroup;Ljava/lang/String;)V" />
+		<method name="activeCount()I" />
+		<method name="activeGroupCount()I" />
+		<method name="allowThreadSuspension(Z)Z" />
+		<method name="checkAccess()V" />
+		<method name="destroy()V" />
+		<method name="enumerate([Ljava/lang/Thread;)I" />
+		<method name="enumerate([Ljava/lang/Thread;Z)I" />
+		<method name="enumerate([Ljava/lang/ThreadGroup;)I" />
+		<method name="enumerate([Ljava/lang/ThreadGroup;Z)I" />
+		<method name="getMaxPriority()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParent()Ljava/lang/ThreadGroup;" />
+		<method name="interrupt()V" />
+		<method name="isDaemon()Z" />
+		<method name="isDestroyed()Z" />
+		<method name="list()V" />
+		<method name="parentOf(Ljava/lang/ThreadGroup;)Z" />
+		<method name="resume()V" />
+		<method name="setDaemon(Z)V" />
+		<method name="setMaxPriority(I)V" />
+		<method name="stop()V" />
+		<method name="suspend()V" />
+		<method name="uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/ThreadLocal" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="get()LT;" />
+		<method name="initialValue()LT;" />
+		<method name="remove()V" />
+		<method name="set(LT;)V" />
+	</class>
+	<class name="java/lang/Throwable" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="fillInStackTrace()Ljava/lang/Throwable;" />
+		<method name="getCause()Ljava/lang/Throwable;" />
+		<method name="getLocalizedMessage()Ljava/lang/String;" />
+		<method name="getMessage()Ljava/lang/String;" />
+		<method name="getStackTrace()[Ljava/lang/StackTraceElement;" />
+		<method name="initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;" />
+		<method name="printStackTrace()V" />
+		<method name="printStackTrace(Ljava/io/PrintStream;)V" />
+		<method name="printStackTrace(Ljava/io/PrintWriter;)V" />
+		<method name="setStackTrace([Ljava/lang/StackTraceElement;)V" />
+	</class>
+	<class name="java/lang/TypeNotPresentException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="typeName()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/UnknownError" since="1">
+		<extends name="java/lang/VirtualMachineError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/UnsatisfiedLinkError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/UnsupportedClassVersionError" since="1">
+		<extends name="java/lang/ClassFormatError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/UnsupportedOperationException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/VerifyError" since="1">
+		<extends name="java/lang/LinkageError" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/VirtualMachineError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/Void" since="1">
+		<extends name="java/lang/Object" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/annotation/Annotation" since="1">
+		<method name="annotationType()Ljava/lang/Class;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="hashCode()I" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/annotation/AnnotationFormatError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/lang/annotation/AnnotationTypeMismatchException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/reflect/Method;Ljava/lang/String;)V" />
+		<method name="element()Ljava/lang/reflect/Method;" />
+		<method name="foundType()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/annotation/Documented" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/annotation/ElementType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/annotation/ElementType;" />
+		<method name="values()[Ljava/lang/annotation/ElementType;" />
+		<field name="ANNOTATION_TYPE" />
+		<field name="CONSTRUCTOR" />
+		<field name="FIELD" />
+		<field name="LOCAL_VARIABLE" />
+		<field name="METHOD" />
+		<field name="PACKAGE" />
+		<field name="PARAMETER" />
+		<field name="TYPE" />
+	</class>
+	<class name="java/lang/annotation/IncompleteAnnotationException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
+		<method name="annotationType()Ljava/lang/Class;" />
+		<method name="elementName()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/annotation/Inherited" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/annotation/Retention" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/annotation/RetentionPolicy" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/lang/annotation/RetentionPolicy;" />
+		<method name="values()[Ljava/lang/annotation/RetentionPolicy;" />
+		<field name="CLASS" />
+		<field name="RUNTIME" />
+		<field name="SOURCE" />
+	</class>
+	<class name="java/lang/annotation/Target" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/annotation/Annotation" />
+	</class>
+	<class name="java/lang/ref/PhantomReference" since="1">
+		<extends name="java/lang/ref/Reference" />
+		<method name="&lt;init>(LT;Ljava/lang/ref/ReferenceQueue;)V" />
+	</class>
+	<class name="java/lang/ref/Reference" since="1">
+		<extends name="java/lang/Object" />
+		<method name="clear()V" />
+		<method name="enqueue()Z" />
+		<method name="get()LT;" />
+		<method name="isEnqueued()Z" />
+	</class>
+	<class name="java/lang/ref/ReferenceQueue" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="poll()Ljava/lang/ref/Reference;" />
+		<method name="remove()Ljava/lang/ref/Reference;" />
+		<method name="remove(J)Ljava/lang/ref/Reference;" />
+	</class>
+	<class name="java/lang/ref/SoftReference" since="1">
+		<extends name="java/lang/ref/Reference" />
+		<method name="&lt;init>(LT;)V" />
+		<method name="&lt;init>(LT;Ljava/lang/ref/ReferenceQueue;)V" />
+	</class>
+	<class name="java/lang/ref/WeakReference" since="1">
+		<extends name="java/lang/ref/Reference" />
+		<method name="&lt;init>(LT;)V" />
+		<method name="&lt;init>(LT;Ljava/lang/ref/ReferenceQueue;)V" />
+	</class>
+	<class name="java/lang/reflect/AccessibleObject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/reflect/AnnotatedElement" />
+		<method name="&lt;init>()V" />
+		<method name="getAnnotation(Ljava/lang/Class;)LT;" />
+		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="isAccessible()Z" />
+		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
+		<method name="setAccessible(Z)V" />
+		<method name="setAccessible([Ljava/lang/reflect/AccessibleObject;Z)V" />
+	</class>
+	<class name="java/lang/reflect/AnnotatedElement" since="1">
+		<method name="getAnnotation(Ljava/lang/Class;)LT;" />
+		<method name="getAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="getDeclaredAnnotations()[Ljava/lang/annotation/Annotation;" />
+		<method name="isAnnotationPresent(Ljava/lang/Class;)Z" />
+	</class>
+	<class name="java/lang/reflect/Array" since="1">
+		<extends name="java/lang/Object" />
+		<method name="get(Ljava/lang/Object;I)Ljava/lang/Object;" />
+		<method name="getBoolean(Ljava/lang/Object;I)Z" />
+		<method name="getByte(Ljava/lang/Object;I)B" />
+		<method name="getChar(Ljava/lang/Object;I)C" />
+		<method name="getDouble(Ljava/lang/Object;I)D" />
+		<method name="getFloat(Ljava/lang/Object;I)F" />
+		<method name="getInt(Ljava/lang/Object;I)I" />
+		<method name="getLength(Ljava/lang/Object;)I" />
+		<method name="getLong(Ljava/lang/Object;I)J" />
+		<method name="getShort(Ljava/lang/Object;I)S" />
+		<method name="newInstance(Ljava/lang/Class;I)Ljava/lang/Object;" />
+		<method name="newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;" />
+		<method name="set(Ljava/lang/Object;ILjava/lang/Object;)V" />
+		<method name="setBoolean(Ljava/lang/Object;IZ)V" />
+		<method name="setByte(Ljava/lang/Object;IB)V" />
+		<method name="setChar(Ljava/lang/Object;IC)V" />
+		<method name="setDouble(Ljava/lang/Object;ID)V" />
+		<method name="setFloat(Ljava/lang/Object;IF)V" />
+		<method name="setInt(Ljava/lang/Object;II)V" />
+		<method name="setLong(Ljava/lang/Object;IJ)V" />
+		<method name="setShort(Ljava/lang/Object;IS)V" />
+	</class>
+	<class name="java/lang/reflect/Constructor" since="1">
+		<extends name="java/lang/reflect/AccessibleObject" />
+		<implements name="java/lang/reflect/GenericDeclaration" />
+		<implements name="java/lang/reflect/Member" />
+		<method name="getAnnotation(Ljava/lang/Class;)LA;" since="14" />
+		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<method name="getExceptionTypes()[Ljava/lang/Class;" />
+		<method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;" />
+		<method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;" />
+		<method name="getModifiers()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;" />
+		<method name="getParameterTypes()[Ljava/lang/Class;" />
+		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
+		<method name="isSynthetic()Z" />
+		<method name="isVarArgs()Z" />
+		<method name="newInstance([Ljava/lang/Object;)LT;" />
+		<method name="toGenericString()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/reflect/Field" since="1">
+		<extends name="java/lang/reflect/AccessibleObject" />
+		<implements name="java/lang/reflect/Member" />
+		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="getAnnotation(Ljava/lang/Class;)LA;" />
+		<method name="getBoolean(Ljava/lang/Object;)Z" />
+		<method name="getByte(Ljava/lang/Object;)B" />
+		<method name="getChar(Ljava/lang/Object;)C" />
+		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<method name="getDouble(Ljava/lang/Object;)D" />
+		<method name="getFloat(Ljava/lang/Object;)F" />
+		<method name="getGenericType()Ljava/lang/reflect/Type;" />
+		<method name="getInt(Ljava/lang/Object;)I" />
+		<method name="getLong(Ljava/lang/Object;)J" />
+		<method name="getModifiers()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getShort(Ljava/lang/Object;)S" />
+		<method name="getType()Ljava/lang/Class;" />
+		<method name="isEnumConstant()Z" />
+		<method name="isSynthetic()Z" />
+		<method name="set(Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="setBoolean(Ljava/lang/Object;Z)V" />
+		<method name="setByte(Ljava/lang/Object;B)V" />
+		<method name="setChar(Ljava/lang/Object;C)V" />
+		<method name="setDouble(Ljava/lang/Object;D)V" />
+		<method name="setFloat(Ljava/lang/Object;F)V" />
+		<method name="setInt(Ljava/lang/Object;I)V" />
+		<method name="setLong(Ljava/lang/Object;J)V" />
+		<method name="setShort(Ljava/lang/Object;S)V" />
+		<method name="toGenericString()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/reflect/GenericArrayType" since="1">
+		<implements name="java/lang/reflect/Type" />
+		<method name="getGenericComponentType()Ljava/lang/reflect/Type;" />
+	</class>
+	<class name="java/lang/reflect/GenericDeclaration" since="1">
+		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
+	</class>
+	<class name="java/lang/reflect/GenericSignatureFormatError" since="1">
+		<extends name="java/lang/ClassFormatError" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/lang/reflect/InvocationHandler" since="1">
+		<method name="invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;" />
+	</class>
+	<class name="java/lang/reflect/InvocationTargetException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;Ljava/lang/String;)V" />
+		<method name="getTargetException()Ljava/lang/Throwable;" />
+	</class>
+	<class name="java/lang/reflect/MalformedParameterizedTypeException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/lang/reflect/Member" since="1">
+		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<method name="getModifiers()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="isSynthetic()Z" />
+		<field name="DECLARED" />
+		<field name="PUBLIC" />
+	</class>
+	<class name="java/lang/reflect/Method" since="1">
+		<extends name="java/lang/reflect/AccessibleObject" />
+		<implements name="java/lang/reflect/GenericDeclaration" />
+		<implements name="java/lang/reflect/Member" />
+		<method name="getAnnotation(Ljava/lang/Class;)LA;" since="14" />
+		<method name="getDeclaringClass()Ljava/lang/Class;" />
+		<method name="getDefaultValue()Ljava/lang/Object;" />
+		<method name="getExceptionTypes()[Ljava/lang/Class;" />
+		<method name="getGenericExceptionTypes()[Ljava/lang/reflect/Type;" />
+		<method name="getGenericParameterTypes()[Ljava/lang/reflect/Type;" />
+		<method name="getGenericReturnType()Ljava/lang/reflect/Type;" />
+		<method name="getModifiers()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParameterAnnotations()[[Ljava/lang/annotation/Annotation;" />
+		<method name="getParameterTypes()[Ljava/lang/Class;" />
+		<method name="getReturnType()Ljava/lang/Class;" />
+		<method name="getTypeParameters()[Ljava/lang/reflect/TypeVariable;" />
+		<method name="invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="isBridge()Z" />
+		<method name="isSynthetic()Z" />
+		<method name="isVarArgs()Z" />
+		<method name="toGenericString()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/reflect/Modifier" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="isAbstract(I)Z" />
+		<method name="isFinal(I)Z" />
+		<method name="isInterface(I)Z" />
+		<method name="isNative(I)Z" />
+		<method name="isPrivate(I)Z" />
+		<method name="isProtected(I)Z" />
+		<method name="isPublic(I)Z" />
+		<method name="isStatic(I)Z" />
+		<method name="isStrict(I)Z" />
+		<method name="isSynchronized(I)Z" />
+		<method name="isTransient(I)Z" />
+		<method name="isVolatile(I)Z" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<field name="ABSTRACT" />
+		<field name="FINAL" />
+		<field name="INTERFACE" />
+		<field name="NATIVE" />
+		<field name="PRIVATE" />
+		<field name="PROTECTED" />
+		<field name="PUBLIC" />
+		<field name="STATIC" />
+		<field name="STRICT" />
+		<field name="SYNCHRONIZED" />
+		<field name="TRANSIENT" />
+		<field name="VOLATILE" />
+	</class>
+	<class name="java/lang/reflect/ParameterizedType" since="1">
+		<implements name="java/lang/reflect/Type" />
+		<method name="getActualTypeArguments()[Ljava/lang/reflect/Type;" />
+		<method name="getOwnerType()Ljava/lang/reflect/Type;" />
+		<method name="getRawType()Ljava/lang/reflect/Type;" />
+	</class>
+	<class name="java/lang/reflect/Proxy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/reflect/InvocationHandler;)V" />
+		<method name="getInvocationHandler(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;" />
+		<method name="getProxyClass(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;" />
+		<method name="isProxyClass(Ljava/lang/Class;)Z" />
+		<method name="newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;" />
+		<field name="h" />
+	</class>
+	<class name="java/lang/reflect/ReflectPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/lang/reflect/Type" since="1">
+	</class>
+	<class name="java/lang/reflect/TypeVariable" since="1">
+		<implements name="java/lang/reflect/Type" />
+		<method name="getBounds()[Ljava/lang/reflect/Type;" />
+		<method name="getGenericDeclaration()LD;" />
+		<method name="getName()Ljava/lang/String;" />
+	</class>
+	<class name="java/lang/reflect/UndeclaredThrowableException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;Ljava/lang/String;)V" />
+		<method name="getUndeclaredThrowable()Ljava/lang/Throwable;" />
+	</class>
+	<class name="java/lang/reflect/WildcardType" since="1">
+		<implements name="java/lang/reflect/Type" />
+		<method name="getLowerBounds()[Ljava/lang/reflect/Type;" />
+		<method name="getUpperBounds()[Ljava/lang/reflect/Type;" />
+	</class>
+	<class name="java/math/BigDecimal" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(D)V" />
+		<method name="&lt;init>(DLjava/math/MathContext;)V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/math/MathContext;)V" />
+		<method name="&lt;init>(J)V" />
+		<method name="&lt;init>(JLjava/math/MathContext;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/math/MathContext;)V" />
+		<method name="&lt;init>(Ljava/math/BigInteger;)V" />
+		<method name="&lt;init>(Ljava/math/BigInteger;I)V" />
+		<method name="&lt;init>(Ljava/math/BigInteger;ILjava/math/MathContext;)V" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/MathContext;)V" />
+		<method name="&lt;init>([C)V" />
+		<method name="&lt;init>([CII)V" />
+		<method name="&lt;init>([CIILjava/math/MathContext;)V" />
+		<method name="&lt;init>([CLjava/math/MathContext;)V" />
+		<method name="abs()Ljava/math/BigDecimal;" />
+		<method name="abs(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="add(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="add(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="byteValueExact()B" />
+		<method name="compareTo(Ljava/math/BigDecimal;)I" />
+		<method name="divide(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="divide(Ljava/math/BigDecimal;I)Ljava/math/BigDecimal;" />
+		<method name="divide(Ljava/math/BigDecimal;II)Ljava/math/BigDecimal;" />
+		<method name="divide(Ljava/math/BigDecimal;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;" />
+		<method name="divide(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="divide(Ljava/math/BigDecimal;Ljava/math/RoundingMode;)Ljava/math/BigDecimal;" />
+		<method name="divideAndRemainder(Ljava/math/BigDecimal;)[Ljava/math/BigDecimal;" />
+		<method name="divideAndRemainder(Ljava/math/BigDecimal;Ljava/math/MathContext;)[Ljava/math/BigDecimal;" />
+		<method name="divideToIntegralValue(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="divideToIntegralValue(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="intValue()I" />
+		<method name="intValueExact()I" />
+		<method name="longValue()J" />
+		<method name="longValueExact()J" />
+		<method name="max(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="min(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="movePointLeft(I)Ljava/math/BigDecimal;" />
+		<method name="movePointRight(I)Ljava/math/BigDecimal;" />
+		<method name="multiply(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="multiply(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="negate()Ljava/math/BigDecimal;" />
+		<method name="negate(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="plus()Ljava/math/BigDecimal;" />
+		<method name="plus(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="pow(I)Ljava/math/BigDecimal;" />
+		<method name="pow(ILjava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="precision()I" />
+		<method name="remainder(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="remainder(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="round(Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="scale()I" />
+		<method name="scaleByPowerOfTen(I)Ljava/math/BigDecimal;" />
+		<method name="setScale(I)Ljava/math/BigDecimal;" />
+		<method name="setScale(II)Ljava/math/BigDecimal;" />
+		<method name="setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;" />
+		<method name="shortValueExact()S" />
+		<method name="signum()I" />
+		<method name="stripTrailingZeros()Ljava/math/BigDecimal;" />
+		<method name="subtract(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;" />
+		<method name="subtract(Ljava/math/BigDecimal;Ljava/math/MathContext;)Ljava/math/BigDecimal;" />
+		<method name="toBigInteger()Ljava/math/BigInteger;" />
+		<method name="toBigIntegerExact()Ljava/math/BigInteger;" />
+		<method name="toEngineeringString()Ljava/lang/String;" />
+		<method name="toPlainString()Ljava/lang/String;" />
+		<method name="ulp()Ljava/math/BigDecimal;" />
+		<method name="unscaledValue()Ljava/math/BigInteger;" />
+		<method name="valueOf(D)Ljava/math/BigDecimal;" />
+		<method name="valueOf(J)Ljava/math/BigDecimal;" />
+		<method name="valueOf(JI)Ljava/math/BigDecimal;" />
+		<field name="ONE" />
+		<field name="ROUND_CEILING" />
+		<field name="ROUND_DOWN" />
+		<field name="ROUND_FLOOR" />
+		<field name="ROUND_HALF_DOWN" />
+		<field name="ROUND_HALF_EVEN" />
+		<field name="ROUND_HALF_UP" />
+		<field name="ROUND_UNNECESSARY" />
+		<field name="ROUND_UP" />
+		<field name="TEN" />
+		<field name="ZERO" />
+	</class>
+	<class name="java/math/BigInteger" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(IILjava/util/Random;)V" />
+		<method name="&lt;init>(ILjava/util/Random;)V" />
+		<method name="&lt;init>(I[B)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="abs()Ljava/math/BigInteger;" />
+		<method name="add(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="and(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="andNot(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="bitCount()I" />
+		<method name="bitLength()I" />
+		<method name="clearBit(I)Ljava/math/BigInteger;" />
+		<method name="compareTo(Ljava/math/BigInteger;)I" />
+		<method name="divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="divideAndRemainder(Ljava/math/BigInteger;)[Ljava/math/BigInteger;" />
+		<method name="doubleValue()D" />
+		<method name="flipBit(I)Ljava/math/BigInteger;" />
+		<method name="floatValue()F" />
+		<method name="gcd(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="getLowestSetBit()I" />
+		<method name="intValue()I" />
+		<method name="isProbablePrime(I)Z" />
+		<method name="longValue()J" />
+		<method name="max(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="min(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="modInverse(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="negate()Ljava/math/BigInteger;" />
+		<method name="nextProbablePrime()Ljava/math/BigInteger;" />
+		<method name="not()Ljava/math/BigInteger;" />
+		<method name="or(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="pow(I)Ljava/math/BigInteger;" />
+		<method name="probablePrime(ILjava/util/Random;)Ljava/math/BigInteger;" />
+		<method name="remainder(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="setBit(I)Ljava/math/BigInteger;" />
+		<method name="shiftLeft(I)Ljava/math/BigInteger;" />
+		<method name="shiftRight(I)Ljava/math/BigInteger;" />
+		<method name="signum()I" />
+		<method name="subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<method name="testBit(I)Z" />
+		<method name="toByteArray()[B" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<method name="valueOf(J)Ljava/math/BigInteger;" />
+		<method name="xor(Ljava/math/BigInteger;)Ljava/math/BigInteger;" />
+		<field name="ONE" />
+		<field name="TEN" />
+		<field name="ZERO" />
+	</class>
+	<class name="java/math/MathContext" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/math/RoundingMode;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getPrecision()I" />
+		<method name="getRoundingMode()Ljava/math/RoundingMode;" />
+		<field name="DECIMAL128" />
+		<field name="DECIMAL32" />
+		<field name="DECIMAL64" />
+		<field name="UNLIMITED" />
+	</class>
+	<class name="java/math/RoundingMode" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(I)Ljava/math/RoundingMode;" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/math/RoundingMode;" />
+		<method name="values()[Ljava/math/RoundingMode;" />
+		<field name="CEILING" />
+		<field name="DOWN" />
+		<field name="FLOOR" />
+		<field name="HALF_DOWN" />
+		<field name="HALF_EVEN" />
+		<field name="HALF_UP" />
+		<field name="UNNECESSARY" />
+		<field name="UP" />
+	</class>
+	<class name="java/net/Authenticator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getPasswordAuthentication()Ljava/net/PasswordAuthentication;" />
+		<method name="getRequestingHost()Ljava/lang/String;" />
+		<method name="getRequestingPort()I" />
+		<method name="getRequestingPrompt()Ljava/lang/String;" />
+		<method name="getRequestingProtocol()Ljava/lang/String;" />
+		<method name="getRequestingScheme()Ljava/lang/String;" />
+		<method name="getRequestingSite()Ljava/net/InetAddress;" />
+		<method name="getRequestingURL()Ljava/net/URL;" />
+		<method name="getRequestorType()Ljava/net/Authenticator$RequestorType;" />
+		<method name="requestPasswordAuthentication(Ljava/lang/String;Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/PasswordAuthentication;" />
+		<method name="requestPasswordAuthentication(Ljava/lang/String;Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/net/Authenticator$RequestorType;)Ljava/net/PasswordAuthentication;" />
+		<method name="requestPasswordAuthentication(Ljava/net/InetAddress;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/PasswordAuthentication;" />
+		<method name="setDefault(Ljava/net/Authenticator;)V" />
+	</class>
+	<class name="java/net/Authenticator$RequestorType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/net/Authenticator$RequestorType;" />
+		<method name="values()[Ljava/net/Authenticator$RequestorType;" />
+		<field name="PROXY" />
+		<field name="SERVER" />
+	</class>
+	<class name="java/net/BindException" since="1">
+		<extends name="java/net/SocketException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/CacheRequest" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="abort()V" />
+		<method name="getBody()Ljava/io/OutputStream;" />
+	</class>
+	<class name="java/net/CacheResponse" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getBody()Ljava/io/InputStream;" />
+		<method name="getHeaders()Ljava/util/Map;" />
+	</class>
+	<class name="java/net/ConnectException" since="1">
+		<extends name="java/net/SocketException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/ContentHandler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getContent(Ljava/net/URLConnection;)Ljava/lang/Object;" />
+		<method name="getContent(Ljava/net/URLConnection;[Ljava/lang/Class;)Ljava/lang/Object;" />
+	</class>
+	<class name="java/net/ContentHandlerFactory" since="1">
+		<method name="createContentHandler(Ljava/lang/String;)Ljava/net/ContentHandler;" />
+	</class>
+	<class name="java/net/CookieHandler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;" />
+		<method name="getDefault()Ljava/net/CookieHandler;" />
+		<method name="put(Ljava/net/URI;Ljava/util/Map;)V" />
+		<method name="setDefault(Ljava/net/CookieHandler;)V" />
+	</class>
+	<class name="java/net/CookieManager" since="9">
+		<extends name="java/net/CookieHandler" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V" />
+		<method name="get(Ljava/net/URI;Ljava/util/Map;)Ljava/util/Map;" />
+		<method name="getCookieStore()Ljava/net/CookieStore;" />
+		<method name="put(Ljava/net/URI;Ljava/util/Map;)V" />
+		<method name="setCookiePolicy(Ljava/net/CookiePolicy;)V" />
+	</class>
+	<class name="java/net/CookiePolicy" since="9">
+		<method name="shouldAccept(Ljava/net/URI;Ljava/net/HttpCookie;)Z" />
+		<field name="ACCEPT_ALL" />
+		<field name="ACCEPT_NONE" />
+		<field name="ACCEPT_ORIGINAL_SERVER" />
+	</class>
+	<class name="java/net/CookieStore" since="9">
+		<method name="add(Ljava/net/URI;Ljava/net/HttpCookie;)V" />
+		<method name="get(Ljava/net/URI;)Ljava/util/List;" />
+		<method name="getCookies()Ljava/util/List;" />
+		<method name="getURIs()Ljava/util/List;" />
+		<method name="remove(Ljava/net/URI;Ljava/net/HttpCookie;)Z" />
+		<method name="removeAll()Z" />
+	</class>
+	<class name="java/net/DatagramPacket" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>([BI)V" />
+		<method name="&lt;init>([BII)V" />
+		<method name="&lt;init>([BIILjava/net/InetAddress;I)V" />
+		<method name="&lt;init>([BIILjava/net/SocketAddress;)V" />
+		<method name="&lt;init>([BILjava/net/InetAddress;I)V" />
+		<method name="&lt;init>([BILjava/net/SocketAddress;)V" />
+		<method name="getAddress()Ljava/net/InetAddress;" />
+		<method name="getData()[B" />
+		<method name="getLength()I" />
+		<method name="getOffset()I" />
+		<method name="getPort()I" />
+		<method name="getSocketAddress()Ljava/net/SocketAddress;" />
+		<method name="setAddress(Ljava/net/InetAddress;)V" />
+		<method name="setData([B)V" />
+		<method name="setData([BII)V" />
+		<method name="setLength(I)V" />
+		<method name="setPort(I)V" />
+		<method name="setSocketAddress(Ljava/net/SocketAddress;)V" />
+	</class>
+	<class name="java/net/DatagramSocket" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/net/InetAddress;)V" />
+		<method name="&lt;init>(Ljava/net/DatagramSocketImpl;)V" />
+		<method name="&lt;init>(Ljava/net/SocketAddress;)V" />
+		<method name="bind(Ljava/net/SocketAddress;)V" />
+		<method name="close()V" />
+		<method name="connect(Ljava/net/InetAddress;I)V" />
+		<method name="connect(Ljava/net/SocketAddress;)V" />
+		<method name="disconnect()V" />
+		<method name="getBroadcast()Z" />
+		<method name="getChannel()Ljava/nio/channels/DatagramChannel;" />
+		<method name="getInetAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getLocalSocketAddress()Ljava/net/SocketAddress;" />
+		<method name="getPort()I" />
+		<method name="getReceiveBufferSize()I" />
+		<method name="getRemoteSocketAddress()Ljava/net/SocketAddress;" />
+		<method name="getReuseAddress()Z" />
+		<method name="getSendBufferSize()I" />
+		<method name="getSoTimeout()I" />
+		<method name="getTrafficClass()I" />
+		<method name="isBound()Z" />
+		<method name="isClosed()Z" />
+		<method name="isConnected()Z" />
+		<method name="receive(Ljava/net/DatagramPacket;)V" />
+		<method name="send(Ljava/net/DatagramPacket;)V" />
+		<method name="setBroadcast(Z)V" />
+		<method name="setDatagramSocketImplFactory(Ljava/net/DatagramSocketImplFactory;)V" />
+		<method name="setReceiveBufferSize(I)V" />
+		<method name="setReuseAddress(Z)V" />
+		<method name="setSendBufferSize(I)V" />
+		<method name="setSoTimeout(I)V" />
+		<method name="setTrafficClass(I)V" />
+	</class>
+	<class name="java/net/DatagramSocketImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/net/SocketOptions" />
+		<method name="&lt;init>()V" />
+		<method name="bind(ILjava/net/InetAddress;)V" />
+		<method name="close()V" />
+		<method name="connect(Ljava/net/InetAddress;I)V" />
+		<method name="create()V" />
+		<method name="disconnect()V" />
+		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
+		<method name="getLocalPort()I" />
+		<method name="getOption(I)Ljava/lang/Object;" />
+		<method name="getTTL()B" />
+		<method name="getTimeToLive()I" />
+		<method name="join(Ljava/net/InetAddress;)V" />
+		<method name="joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
+		<method name="leave(Ljava/net/InetAddress;)V" />
+		<method name="leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
+		<method name="peek(Ljava/net/InetAddress;)I" />
+		<method name="peekData(Ljava/net/DatagramPacket;)I" />
+		<method name="receive(Ljava/net/DatagramPacket;)V" />
+		<method name="send(Ljava/net/DatagramPacket;)V" />
+		<method name="setOption(ILjava/lang/Object;)V" />
+		<method name="setTTL(B)V" />
+		<method name="setTimeToLive(I)V" />
+		<field name="fd" />
+		<field name="localPort" />
+	</class>
+	<class name="java/net/DatagramSocketImplFactory" since="1">
+		<method name="createDatagramSocketImpl()Ljava/net/DatagramSocketImpl;" />
+	</class>
+	<class name="java/net/FileNameMap" since="1">
+		<method name="getContentTypeFor(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="java/net/HttpCookie" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="domainMatches(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="getComment()Ljava/lang/String;" />
+		<method name="getCommentURL()Ljava/lang/String;" />
+		<method name="getDiscard()Z" />
+		<method name="getDomain()Ljava/lang/String;" />
+		<method name="getMaxAge()J" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPortlist()Ljava/lang/String;" />
+		<method name="getSecure()Z" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="getVersion()I" />
+		<method name="hasExpired()Z" />
+		<method name="parse(Ljava/lang/String;)Ljava/util/List;" />
+		<method name="setComment(Ljava/lang/String;)V" />
+		<method name="setCommentURL(Ljava/lang/String;)V" />
+		<method name="setDiscard(Z)V" />
+		<method name="setDomain(Ljava/lang/String;)V" />
+		<method name="setMaxAge(J)V" />
+		<method name="setPath(Ljava/lang/String;)V" />
+		<method name="setPortlist(Ljava/lang/String;)V" />
+		<method name="setSecure(Z)V" />
+		<method name="setValue(Ljava/lang/String;)V" />
+		<method name="setVersion(I)V" />
+	</class>
+	<class name="java/net/HttpRetryException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="getLocation()Ljava/lang/String;" />
+		<method name="getReason()Ljava/lang/String;" />
+		<method name="responseCode()I" />
+	</class>
+	<class name="java/net/HttpURLConnection" since="1">
+		<extends name="java/net/URLConnection" />
+		<method name="&lt;init>(Ljava/net/URL;)V" />
+		<method name="disconnect()V" />
+		<method name="getErrorStream()Ljava/io/InputStream;" />
+		<method name="getFollowRedirects()Z" />
+		<method name="getInstanceFollowRedirects()Z" />
+		<method name="getRequestMethod()Ljava/lang/String;" />
+		<method name="getResponseCode()I" />
+		<method name="getResponseMessage()Ljava/lang/String;" />
+		<method name="setChunkedStreamingMode(I)V" />
+		<method name="setFixedLengthStreamingMode(I)V" />
+		<method name="setFollowRedirects(Z)V" />
+		<method name="setInstanceFollowRedirects(Z)V" />
+		<method name="setRequestMethod(Ljava/lang/String;)V" />
+		<method name="usingProxy()Z" />
+		<field name="HTTP_ACCEPTED" />
+		<field name="HTTP_BAD_GATEWAY" />
+		<field name="HTTP_BAD_METHOD" />
+		<field name="HTTP_BAD_REQUEST" />
+		<field name="HTTP_CLIENT_TIMEOUT" />
+		<field name="HTTP_CONFLICT" />
+		<field name="HTTP_CREATED" />
+		<field name="HTTP_ENTITY_TOO_LARGE" />
+		<field name="HTTP_FORBIDDEN" />
+		<field name="HTTP_GATEWAY_TIMEOUT" />
+		<field name="HTTP_GONE" />
+		<field name="HTTP_INTERNAL_ERROR" />
+		<field name="HTTP_LENGTH_REQUIRED" />
+		<field name="HTTP_MOVED_PERM" />
+		<field name="HTTP_MOVED_TEMP" />
+		<field name="HTTP_MULT_CHOICE" />
+		<field name="HTTP_NOT_ACCEPTABLE" />
+		<field name="HTTP_NOT_AUTHORITATIVE" />
+		<field name="HTTP_NOT_FOUND" />
+		<field name="HTTP_NOT_IMPLEMENTED" />
+		<field name="HTTP_NOT_MODIFIED" />
+		<field name="HTTP_NO_CONTENT" />
+		<field name="HTTP_OK" />
+		<field name="HTTP_PARTIAL" />
+		<field name="HTTP_PAYMENT_REQUIRED" />
+		<field name="HTTP_PRECON_FAILED" />
+		<field name="HTTP_PROXY_AUTH" />
+		<field name="HTTP_REQ_TOO_LONG" />
+		<field name="HTTP_RESET" />
+		<field name="HTTP_SEE_OTHER" />
+		<field name="HTTP_SERVER_ERROR" />
+		<field name="HTTP_UNAUTHORIZED" />
+		<field name="HTTP_UNAVAILABLE" />
+		<field name="HTTP_UNSUPPORTED_TYPE" />
+		<field name="HTTP_USE_PROXY" />
+		<field name="HTTP_VERSION" />
+		<field name="chunkLength" />
+		<field name="fixedContentLength" />
+		<field name="instanceFollowRedirects" />
+		<field name="method" />
+		<field name="responseCode" />
+		<field name="responseMessage" />
+	</class>
+	<class name="java/net/IDN" since="9">
+		<extends name="java/lang/Object" />
+		<method name="toASCII(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="toASCII(Ljava/lang/String;I)Ljava/lang/String;" />
+		<method name="toUnicode(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="toUnicode(Ljava/lang/String;I)Ljava/lang/String;" />
+		<field name="ALLOW_UNASSIGNED" />
+		<field name="USE_STD3_ASCII_RULES" />
+	</class>
+	<class name="java/net/Inet4Address" since="1">
+		<extends name="java/net/InetAddress" />
+	</class>
+	<class name="java/net/Inet6Address" since="1">
+		<extends name="java/net/InetAddress" />
+		<method name="getByAddress(Ljava/lang/String;[BI)Ljava/net/Inet6Address;" />
+		<method name="getByAddress(Ljava/lang/String;[BLjava/net/NetworkInterface;)Ljava/net/Inet6Address;" />
+		<method name="getScopeId()I" />
+		<method name="getScopedInterface()Ljava/net/NetworkInterface;" />
+		<method name="isIPv4CompatibleAddress()Z" />
+	</class>
+	<class name="java/net/InetAddress" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="getAddress()[B" />
+		<method name="getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;" />
+		<method name="getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress;" />
+		<method name="getByAddress([B)Ljava/net/InetAddress;" />
+		<method name="getByName(Ljava/lang/String;)Ljava/net/InetAddress;" />
+		<method name="getCanonicalHostName()Ljava/lang/String;" />
+		<method name="getHostAddress()Ljava/lang/String;" />
+		<method name="getHostName()Ljava/lang/String;" />
+		<method name="getLocalHost()Ljava/net/InetAddress;" />
+		<method name="isAnyLocalAddress()Z" />
+		<method name="isLinkLocalAddress()Z" />
+		<method name="isLoopbackAddress()Z" />
+		<method name="isMCGlobal()Z" />
+		<method name="isMCLinkLocal()Z" />
+		<method name="isMCNodeLocal()Z" />
+		<method name="isMCOrgLocal()Z" />
+		<method name="isMCSiteLocal()Z" />
+		<method name="isMulticastAddress()Z" />
+		<method name="isReachable(I)Z" />
+		<method name="isReachable(Ljava/net/NetworkInterface;II)Z" />
+		<method name="isSiteLocalAddress()Z" />
+	</class>
+	<class name="java/net/InetSocketAddress" since="1">
+		<extends name="java/net/SocketAddress" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/net/InetAddress;I)V" />
+		<method name="createUnresolved(Ljava/lang/String;I)Ljava/net/InetSocketAddress;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getAddress()Ljava/net/InetAddress;" />
+		<method name="getHostName()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="hashCode()I" />
+		<method name="isUnresolved()Z" />
+	</class>
+	<class name="java/net/InterfaceAddress" since="9">
+		<extends name="java/lang/Object" />
+		<method name="getAddress()Ljava/net/InetAddress;" />
+		<method name="getBroadcast()Ljava/net/InetAddress;" />
+		<method name="getNetworkPrefixLength()S" />
+	</class>
+	<class name="java/net/JarURLConnection" since="1">
+		<extends name="java/net/URLConnection" />
+		<method name="&lt;init>(Ljava/net/URL;)V" />
+		<method name="getAttributes()Ljava/util/jar/Attributes;" />
+		<method name="getCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getEntryName()Ljava/lang/String;" />
+		<method name="getJarEntry()Ljava/util/jar/JarEntry;" />
+		<method name="getJarFile()Ljava/util/jar/JarFile;" />
+		<method name="getJarFileURL()Ljava/net/URL;" />
+		<method name="getMainAttributes()Ljava/util/jar/Attributes;" />
+		<method name="getManifest()Ljava/util/jar/Manifest;" />
+		<field name="jarFileURLConnection" />
+	</class>
+	<class name="java/net/MalformedURLException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/MulticastSocket" since="1">
+		<extends name="java/net/DatagramSocket" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/net/SocketAddress;)V" />
+		<method name="getInterface()Ljava/net/InetAddress;" />
+		<method name="getLoopbackMode()Z" />
+		<method name="getNetworkInterface()Ljava/net/NetworkInterface;" />
+		<method name="getTTL()B" />
+		<method name="getTimeToLive()I" />
+		<method name="joinGroup(Ljava/net/InetAddress;)V" />
+		<method name="joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
+		<method name="leaveGroup(Ljava/net/InetAddress;)V" />
+		<method name="leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V" />
+		<method name="send(Ljava/net/DatagramPacket;B)V" />
+		<method name="setInterface(Ljava/net/InetAddress;)V" />
+		<method name="setLoopbackMode(Z)V" />
+		<method name="setNetworkInterface(Ljava/net/NetworkInterface;)V" />
+		<method name="setTTL(B)V" />
+		<method name="setTimeToLive(I)V" />
+	</class>
+	<class name="java/net/NetPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/NetworkInterface" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getByInetAddress(Ljava/net/InetAddress;)Ljava/net/NetworkInterface;" />
+		<method name="getByName(Ljava/lang/String;)Ljava/net/NetworkInterface;" />
+		<method name="getDisplayName()Ljava/lang/String;" />
+		<method name="getHardwareAddress()[B" since="9" />
+		<method name="getInetAddresses()Ljava/util/Enumeration;" />
+		<method name="getInterfaceAddresses()Ljava/util/List;" since="9" />
+		<method name="getMTU()I" since="9" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getNetworkInterfaces()Ljava/util/Enumeration;" />
+		<method name="getParent()Ljava/net/NetworkInterface;" since="9" />
+		<method name="getSubInterfaces()Ljava/util/Enumeration;" since="9" />
+		<method name="isLoopback()Z" since="9" />
+		<method name="isPointToPoint()Z" since="9" />
+		<method name="isUp()Z" since="9" />
+		<method name="isVirtual()Z" since="9" />
+		<method name="supportsMulticast()Z" since="9" />
+	</class>
+	<class name="java/net/NoRouteToHostException" since="1">
+		<extends name="java/net/SocketException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/PasswordAuthentication" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;[C)V" />
+		<method name="getPassword()[C" />
+		<method name="getUserName()Ljava/lang/String;" />
+	</class>
+	<class name="java/net/PortUnreachableException" since="1">
+		<extends name="java/net/SocketException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/ProtocolException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/Proxy" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/net/Proxy$Type;Ljava/net/SocketAddress;)V" />
+		<method name="address()Ljava/net/SocketAddress;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="hashCode()I" />
+		<method name="type()Ljava/net/Proxy$Type;" />
+		<field name="NO_PROXY" />
+	</class>
+	<class name="java/net/Proxy$Type" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/net/Proxy$Type;" />
+		<method name="values()[Ljava/net/Proxy$Type;" />
+		<field name="DIRECT" />
+		<field name="HTTP" />
+		<field name="SOCKS" />
+	</class>
+	<class name="java/net/ProxySelector" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="connectFailed(Ljava/net/URI;Ljava/net/SocketAddress;Ljava/io/IOException;)V" />
+		<method name="getDefault()Ljava/net/ProxySelector;" />
+		<method name="select(Ljava/net/URI;)Ljava/util/List;" />
+		<method name="setDefault(Ljava/net/ProxySelector;)V" />
+	</class>
+	<class name="java/net/ResponseCache" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="get(Ljava/net/URI;Ljava/lang/String;Ljava/util/Map;)Ljava/net/CacheResponse;" />
+		<method name="getDefault()Ljava/net/ResponseCache;" />
+		<method name="put(Ljava/net/URI;Ljava/net/URLConnection;)Ljava/net/CacheRequest;" />
+		<method name="setDefault(Ljava/net/ResponseCache;)V" />
+	</class>
+	<class name="java/net/SecureCacheResponse" since="1">
+		<extends name="java/net/CacheResponse" />
+		<method name="&lt;init>()V" />
+		<method name="getCipherSuite()Ljava/lang/String;" />
+		<method name="getLocalCertificateChain()Ljava/util/List;" />
+		<method name="getLocalPrincipal()Ljava/security/Principal;" />
+		<method name="getPeerPrincipal()Ljava/security/Principal;" />
+		<method name="getServerCertificateChain()Ljava/util/List;" />
+	</class>
+	<class name="java/net/ServerSocket" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(IILjava/net/InetAddress;)V" />
+		<method name="&lt;init>(Ljava/net/SocketImpl;)V" />
+		<method name="accept()Ljava/net/Socket;" />
+		<method name="bind(Ljava/net/SocketAddress;)V" />
+		<method name="bind(Ljava/net/SocketAddress;I)V" />
+		<method name="close()V" />
+		<method name="getChannel()Ljava/nio/channels/ServerSocketChannel;" />
+		<method name="getInetAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getLocalSocketAddress()Ljava/net/SocketAddress;" />
+		<method name="getReceiveBufferSize()I" />
+		<method name="getReuseAddress()Z" />
+		<method name="getSoTimeout()I" />
+		<method name="implAccept(Ljava/net/Socket;)V" />
+		<method name="isBound()Z" />
+		<method name="isClosed()Z" />
+		<method name="setPerformancePreferences(III)V" />
+		<method name="setReceiveBufferSize(I)V" />
+		<method name="setReuseAddress(Z)V" />
+		<method name="setSoTimeout(I)V" />
+		<method name="setSocketFactory(Ljava/net/SocketImplFactory;)V" />
+	</class>
+	<class name="java/net/Socket" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/net/InetAddress;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;IZ)V" />
+		<method name="&lt;init>(Ljava/net/InetAddress;I)V" />
+		<method name="&lt;init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V" />
+		<method name="&lt;init>(Ljava/net/InetAddress;IZ)V" />
+		<method name="&lt;init>(Ljava/net/Proxy;)V" />
+		<method name="&lt;init>(Ljava/net/SocketImpl;)V" />
+		<method name="bind(Ljava/net/SocketAddress;)V" />
+		<method name="close()V" />
+		<method name="connect(Ljava/net/SocketAddress;)V" />
+		<method name="connect(Ljava/net/SocketAddress;I)V" />
+		<method name="getChannel()Ljava/nio/channels/SocketChannel;" />
+		<method name="getInetAddress()Ljava/net/InetAddress;" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getKeepAlive()Z" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getLocalSocketAddress()Ljava/net/SocketAddress;" />
+		<method name="getOOBInline()Z" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="getPort()I" />
+		<method name="getReceiveBufferSize()I" />
+		<method name="getRemoteSocketAddress()Ljava/net/SocketAddress;" />
+		<method name="getReuseAddress()Z" />
+		<method name="getSendBufferSize()I" />
+		<method name="getSoLinger()I" />
+		<method name="getSoTimeout()I" />
+		<method name="getTcpNoDelay()Z" />
+		<method name="getTrafficClass()I" />
+		<method name="isBound()Z" />
+		<method name="isClosed()Z" />
+		<method name="isConnected()Z" />
+		<method name="isInputShutdown()Z" />
+		<method name="isOutputShutdown()Z" />
+		<method name="sendUrgentData(I)V" />
+		<method name="setKeepAlive(Z)V" />
+		<method name="setOOBInline(Z)V" />
+		<method name="setPerformancePreferences(III)V" />
+		<method name="setReceiveBufferSize(I)V" />
+		<method name="setReuseAddress(Z)V" />
+		<method name="setSendBufferSize(I)V" />
+		<method name="setSoLinger(ZI)V" />
+		<method name="setSoTimeout(I)V" />
+		<method name="setSocketImplFactory(Ljava/net/SocketImplFactory;)V" />
+		<method name="setTcpNoDelay(Z)V" />
+		<method name="setTrafficClass(I)V" />
+		<method name="shutdownInput()V" />
+		<method name="shutdownOutput()V" />
+	</class>
+	<class name="java/net/SocketAddress" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/net/SocketException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/SocketImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/net/SocketOptions" />
+		<method name="&lt;init>()V" />
+		<method name="accept(Ljava/net/SocketImpl;)V" />
+		<method name="available()I" />
+		<method name="bind(Ljava/net/InetAddress;I)V" />
+		<method name="close()V" />
+		<method name="connect(Ljava/lang/String;I)V" />
+		<method name="connect(Ljava/net/InetAddress;I)V" />
+		<method name="connect(Ljava/net/SocketAddress;I)V" />
+		<method name="create(Z)V" />
+		<method name="getFileDescriptor()Ljava/io/FileDescriptor;" />
+		<method name="getInetAddress()Ljava/net/InetAddress;" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getLocalPort()I" />
+		<method name="getOption(I)Ljava/lang/Object;" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="getPort()I" />
+		<method name="listen(I)V" />
+		<method name="sendUrgentData(I)V" />
+		<method name="setOption(ILjava/lang/Object;)V" />
+		<method name="setPerformancePreferences(III)V" />
+		<method name="shutdownInput()V" />
+		<method name="shutdownOutput()V" />
+		<method name="supportsUrgentData()Z" />
+		<field name="address" />
+		<field name="fd" />
+		<field name="localport" />
+		<field name="port" />
+	</class>
+	<class name="java/net/SocketImplFactory" since="1">
+		<method name="createSocketImpl()Ljava/net/SocketImpl;" />
+	</class>
+	<class name="java/net/SocketOptions" since="1">
+		<method name="getOption(I)Ljava/lang/Object;" />
+		<method name="setOption(ILjava/lang/Object;)V" />
+		<field name="IP_MULTICAST_IF" />
+		<field name="IP_MULTICAST_IF2" />
+		<field name="IP_MULTICAST_LOOP" />
+		<field name="IP_TOS" />
+		<field name="SO_BINDADDR" />
+		<field name="SO_BROADCAST" />
+		<field name="SO_KEEPALIVE" />
+		<field name="SO_LINGER" />
+		<field name="SO_OOBINLINE" />
+		<field name="SO_RCVBUF" />
+		<field name="SO_REUSEADDR" />
+		<field name="SO_SNDBUF" />
+		<field name="SO_TIMEOUT" />
+		<field name="TCP_NODELAY" />
+	</class>
+	<class name="java/net/SocketPermission" since="1">
+		<extends name="java/security/Permission" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/net/SocketTimeoutException" since="1">
+		<extends name="java/io/InterruptedIOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/URI" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="compareTo(Ljava/net/URI;)I" />
+		<method name="create(Ljava/lang/String;)Ljava/net/URI;" />
+		<method name="getAuthority()Ljava/lang/String;" />
+		<method name="getFragment()Ljava/lang/String;" />
+		<method name="getHost()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="getQuery()Ljava/lang/String;" />
+		<method name="getRawAuthority()Ljava/lang/String;" />
+		<method name="getRawFragment()Ljava/lang/String;" />
+		<method name="getRawPath()Ljava/lang/String;" />
+		<method name="getRawQuery()Ljava/lang/String;" />
+		<method name="getRawSchemeSpecificPart()Ljava/lang/String;" />
+		<method name="getRawUserInfo()Ljava/lang/String;" />
+		<method name="getScheme()Ljava/lang/String;" />
+		<method name="getSchemeSpecificPart()Ljava/lang/String;" />
+		<method name="getUserInfo()Ljava/lang/String;" />
+		<method name="isAbsolute()Z" />
+		<method name="isOpaque()Z" />
+		<method name="normalize()Ljava/net/URI;" />
+		<method name="parseServerAuthority()Ljava/net/URI;" />
+		<method name="relativize(Ljava/net/URI;)Ljava/net/URI;" />
+		<method name="resolve(Ljava/lang/String;)Ljava/net/URI;" />
+		<method name="resolve(Ljava/net/URI;)Ljava/net/URI;" />
+		<method name="toASCIIString()Ljava/lang/String;" />
+		<method name="toURL()Ljava/net/URL;" />
+	</class>
+	<class name="java/net/URISyntaxException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="getIndex()I" />
+		<method name="getInput()Ljava/lang/String;" />
+		<method name="getReason()Ljava/lang/String;" />
+	</class>
+	<class name="java/net/URL" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URL;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V" />
+		<method name="getAuthority()Ljava/lang/String;" />
+		<method name="getContent()Ljava/lang/Object;" />
+		<method name="getContent([Ljava/lang/Class;)Ljava/lang/Object;" />
+		<method name="getDefaultPort()I" />
+		<method name="getFile()Ljava/lang/String;" />
+		<method name="getHost()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="getProtocol()Ljava/lang/String;" />
+		<method name="getQuery()Ljava/lang/String;" />
+		<method name="getRef()Ljava/lang/String;" />
+		<method name="getUserInfo()Ljava/lang/String;" />
+		<method name="openConnection()Ljava/net/URLConnection;" />
+		<method name="openConnection(Ljava/net/Proxy;)Ljava/net/URLConnection;" />
+		<method name="openStream()Ljava/io/InputStream;" />
+		<method name="sameFile(Ljava/net/URL;)Z" />
+		<method name="set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setURLStreamHandlerFactory(Ljava/net/URLStreamHandlerFactory;)V" />
+		<method name="toExternalForm()Ljava/lang/String;" />
+		<method name="toURI()Ljava/net/URI;" />
+	</class>
+	<class name="java/net/URLClassLoader" since="1">
+		<extends name="java/security/SecureClassLoader" />
+		<method name="&lt;init>([Ljava/net/URL;)V" />
+		<method name="&lt;init>([Ljava/net/URL;Ljava/lang/ClassLoader;)V" />
+		<method name="&lt;init>([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/net/URLStreamHandlerFactory;)V" />
+		<method name="addURL(Ljava/net/URL;)V" />
+		<method name="definePackage(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;" />
+		<method name="findResource(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="findResources(Ljava/lang/String;)Ljava/util/Enumeration;" />
+		<method name="getURLs()[Ljava/net/URL;" />
+		<method name="newInstance([Ljava/net/URL;)Ljava/net/URLClassLoader;" />
+		<method name="newInstance([Ljava/net/URL;Ljava/lang/ClassLoader;)Ljava/net/URLClassLoader;" />
+	</class>
+	<class name="java/net/URLConnection" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/net/URL;)V" />
+		<method name="addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="connect()V" />
+		<method name="getAllowUserInteraction()Z" />
+		<method name="getConnectTimeout()I" />
+		<method name="getContent()Ljava/lang/Object;" />
+		<method name="getContent([Ljava/lang/Class;)Ljava/lang/Object;" />
+		<method name="getContentEncoding()Ljava/lang/String;" />
+		<method name="getContentLength()I" />
+		<method name="getContentType()Ljava/lang/String;" />
+		<method name="getDate()J" />
+		<method name="getDefaultAllowUserInteraction()Z" />
+		<method name="getDefaultRequestProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getDefaultUseCaches()Z" />
+		<method name="getDoInput()Z" />
+		<method name="getDoOutput()Z" />
+		<method name="getExpiration()J" />
+		<method name="getFileNameMap()Ljava/net/FileNameMap;" />
+		<method name="getHeaderField(I)Ljava/lang/String;" />
+		<method name="getHeaderField(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getHeaderFieldDate(Ljava/lang/String;J)J" />
+		<method name="getHeaderFieldInt(Ljava/lang/String;I)I" />
+		<method name="getHeaderFieldKey(I)Ljava/lang/String;" />
+		<method name="getHeaderFields()Ljava/util/Map;" />
+		<method name="getIfModifiedSince()J" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getLastModified()J" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="getPermission()Ljava/security/Permission;" />
+		<method name="getReadTimeout()I" />
+		<method name="getRequestProperties()Ljava/util/Map;" />
+		<method name="getRequestProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getURL()Ljava/net/URL;" />
+		<method name="getUseCaches()Z" />
+		<method name="guessContentTypeFromName(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="guessContentTypeFromStream(Ljava/io/InputStream;)Ljava/lang/String;" />
+		<method name="setAllowUserInteraction(Z)V" />
+		<method name="setConnectTimeout(I)V" />
+		<method name="setContentHandlerFactory(Ljava/net/ContentHandlerFactory;)V" />
+		<method name="setDefaultAllowUserInteraction(Z)V" />
+		<method name="setDefaultRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setDefaultUseCaches(Z)V" />
+		<method name="setDoInput(Z)V" />
+		<method name="setDoOutput(Z)V" />
+		<method name="setFileNameMap(Ljava/net/FileNameMap;)V" />
+		<method name="setIfModifiedSince(J)V" />
+		<method name="setReadTimeout(I)V" />
+		<method name="setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setUseCaches(Z)V" />
+		<field name="allowUserInteraction" />
+		<field name="connected" />
+		<field name="doInput" />
+		<field name="doOutput" />
+		<field name="ifModifiedSince" />
+		<field name="url" />
+		<field name="useCaches" />
+	</class>
+	<class name="java/net/URLDecoder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="decode(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="java/net/URLEncoder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="encode(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="java/net/URLStreamHandler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="equals(Ljava/net/URL;Ljava/net/URL;)Z" />
+		<method name="getDefaultPort()I" />
+		<method name="getHostAddress(Ljava/net/URL;)Ljava/net/InetAddress;" />
+		<method name="hashCode(Ljava/net/URL;)I" />
+		<method name="hostsEqual(Ljava/net/URL;Ljava/net/URL;)Z" />
+		<method name="openConnection(Ljava/net/URL;)Ljava/net/URLConnection;" />
+		<method name="openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;" />
+		<method name="parseURL(Ljava/net/URL;Ljava/lang/String;II)V" />
+		<method name="sameFile(Ljava/net/URL;Ljava/net/URL;)Z" />
+		<method name="setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="toExternalForm(Ljava/net/URL;)Ljava/lang/String;" />
+	</class>
+	<class name="java/net/URLStreamHandlerFactory" since="1">
+		<method name="createURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;" />
+	</class>
+	<class name="java/net/UnknownHostException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/net/UnknownServiceException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/nio/Buffer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="array()Ljava/lang/Object;" since="9" />
+		<method name="arrayOffset()I" since="9" />
+		<method name="capacity()I" />
+		<method name="clear()Ljava/nio/Buffer;" />
+		<method name="flip()Ljava/nio/Buffer;" />
+		<method name="hasArray()Z" since="9" />
+		<method name="hasRemaining()Z" />
+		<method name="isDirect()Z" since="9" />
+		<method name="isReadOnly()Z" />
+		<method name="limit()I" />
+		<method name="limit(I)Ljava/nio/Buffer;" />
+		<method name="mark()Ljava/nio/Buffer;" />
+		<method name="position()I" />
+		<method name="position(I)Ljava/nio/Buffer;" />
+		<method name="remaining()I" />
+		<method name="reset()Ljava/nio/Buffer;" />
+		<method name="rewind()Ljava/nio/Buffer;" />
+	</class>
+	<class name="java/nio/BufferOverflowException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/BufferUnderflowException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/ByteBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Comparable" />
+		<method name="allocate(I)Ljava/nio/ByteBuffer;" />
+		<method name="allocateDirect(I)Ljava/nio/ByteBuffer;" />
+		<method name="array()[B" />
+		<method name="arrayOffset()I" />
+		<method name="asCharBuffer()Ljava/nio/CharBuffer;" />
+		<method name="asDoubleBuffer()Ljava/nio/DoubleBuffer;" />
+		<method name="asFloatBuffer()Ljava/nio/FloatBuffer;" />
+		<method name="asIntBuffer()Ljava/nio/IntBuffer;" />
+		<method name="asLongBuffer()Ljava/nio/LongBuffer;" />
+		<method name="asReadOnlyBuffer()Ljava/nio/ByteBuffer;" />
+		<method name="asShortBuffer()Ljava/nio/ShortBuffer;" />
+		<method name="compact()Ljava/nio/ByteBuffer;" />
+		<method name="compareTo(Ljava/nio/ByteBuffer;)I" />
+		<method name="duplicate()Ljava/nio/ByteBuffer;" />
+		<method name="get()B" />
+		<method name="get(I)B" />
+		<method name="get([B)Ljava/nio/ByteBuffer;" />
+		<method name="get([BII)Ljava/nio/ByteBuffer;" />
+		<method name="getChar()C" />
+		<method name="getChar(I)C" />
+		<method name="getDouble()D" />
+		<method name="getDouble(I)D" />
+		<method name="getFloat()F" />
+		<method name="getFloat(I)F" />
+		<method name="getInt()I" />
+		<method name="getInt(I)I" />
+		<method name="getLong()J" />
+		<method name="getLong(I)J" />
+		<method name="getShort()S" />
+		<method name="getShort(I)S" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;" />
+		<method name="put(B)Ljava/nio/ByteBuffer;" />
+		<method name="put(IB)Ljava/nio/ByteBuffer;" />
+		<method name="put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;" />
+		<method name="put([B)Ljava/nio/ByteBuffer;" />
+		<method name="put([BII)Ljava/nio/ByteBuffer;" />
+		<method name="putChar(C)Ljava/nio/ByteBuffer;" />
+		<method name="putChar(IC)Ljava/nio/ByteBuffer;" />
+		<method name="putDouble(D)Ljava/nio/ByteBuffer;" />
+		<method name="putDouble(ID)Ljava/nio/ByteBuffer;" />
+		<method name="putFloat(F)Ljava/nio/ByteBuffer;" />
+		<method name="putFloat(IF)Ljava/nio/ByteBuffer;" />
+		<method name="putInt(I)Ljava/nio/ByteBuffer;" />
+		<method name="putInt(II)Ljava/nio/ByteBuffer;" />
+		<method name="putLong(IJ)Ljava/nio/ByteBuffer;" />
+		<method name="putLong(J)Ljava/nio/ByteBuffer;" />
+		<method name="putShort(IS)Ljava/nio/ByteBuffer;" />
+		<method name="putShort(S)Ljava/nio/ByteBuffer;" />
+		<method name="slice()Ljava/nio/ByteBuffer;" />
+		<method name="wrap([B)Ljava/nio/ByteBuffer;" />
+		<method name="wrap([BII)Ljava/nio/ByteBuffer;" />
+	</class>
+	<class name="java/nio/ByteOrder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="nativeOrder()Ljava/nio/ByteOrder;" />
+		<field name="BIG_ENDIAN" />
+		<field name="LITTLE_ENDIAN" />
+	</class>
+	<class name="java/nio/CharBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Appendable" />
+		<implements name="java/lang/CharSequence" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/lang/Readable" />
+		<method name="allocate(I)Ljava/nio/CharBuffer;" />
+		<method name="append(C)Ljava/nio/CharBuffer;" />
+		<method name="append(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;" />
+		<method name="append(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;" />
+		<method name="array()[C" />
+		<method name="arrayOffset()I" />
+		<method name="asReadOnlyBuffer()Ljava/nio/CharBuffer;" />
+		<method name="charAt(I)C" />
+		<method name="compact()Ljava/nio/CharBuffer;" />
+		<method name="compareTo(Ljava/nio/CharBuffer;)I" />
+		<method name="duplicate()Ljava/nio/CharBuffer;" />
+		<method name="get()C" />
+		<method name="get(I)C" />
+		<method name="get([C)Ljava/nio/CharBuffer;" />
+		<method name="get([CII)Ljava/nio/CharBuffer;" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="length()I" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="put(C)Ljava/nio/CharBuffer;" />
+		<method name="put(IC)Ljava/nio/CharBuffer;" />
+		<method name="put(Ljava/lang/String;)Ljava/nio/CharBuffer;" />
+		<method name="put(Ljava/lang/String;II)Ljava/nio/CharBuffer;" />
+		<method name="put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;" />
+		<method name="put([C)Ljava/nio/CharBuffer;" />
+		<method name="put([CII)Ljava/nio/CharBuffer;" />
+		<method name="read(Ljava/nio/CharBuffer;)I" />
+		<method name="slice()Ljava/nio/CharBuffer;" />
+		<method name="subSequence(II)Ljava/lang/CharSequence;" />
+		<method name="wrap(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;" />
+		<method name="wrap(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;" />
+		<method name="wrap([C)Ljava/nio/CharBuffer;" />
+		<method name="wrap([CII)Ljava/nio/CharBuffer;" />
+	</class>
+	<class name="java/nio/DoubleBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Comparable" />
+		<method name="allocate(I)Ljava/nio/DoubleBuffer;" />
+		<method name="array()[D" />
+		<method name="arrayOffset()I" />
+		<method name="asReadOnlyBuffer()Ljava/nio/DoubleBuffer;" />
+		<method name="compact()Ljava/nio/DoubleBuffer;" />
+		<method name="compareTo(Ljava/nio/DoubleBuffer;)I" />
+		<method name="duplicate()Ljava/nio/DoubleBuffer;" />
+		<method name="get()D" />
+		<method name="get(I)D" />
+		<method name="get([D)Ljava/nio/DoubleBuffer;" />
+		<method name="get([DII)Ljava/nio/DoubleBuffer;" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="put(D)Ljava/nio/DoubleBuffer;" />
+		<method name="put(ID)Ljava/nio/DoubleBuffer;" />
+		<method name="put(Ljava/nio/DoubleBuffer;)Ljava/nio/DoubleBuffer;" />
+		<method name="put([D)Ljava/nio/DoubleBuffer;" />
+		<method name="put([DII)Ljava/nio/DoubleBuffer;" />
+		<method name="slice()Ljava/nio/DoubleBuffer;" />
+		<method name="wrap([D)Ljava/nio/DoubleBuffer;" />
+		<method name="wrap([DII)Ljava/nio/DoubleBuffer;" />
+	</class>
+	<class name="java/nio/FloatBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Comparable" />
+		<method name="allocate(I)Ljava/nio/FloatBuffer;" />
+		<method name="array()[F" />
+		<method name="arrayOffset()I" />
+		<method name="asReadOnlyBuffer()Ljava/nio/FloatBuffer;" />
+		<method name="compact()Ljava/nio/FloatBuffer;" />
+		<method name="compareTo(Ljava/nio/FloatBuffer;)I" />
+		<method name="duplicate()Ljava/nio/FloatBuffer;" />
+		<method name="get()F" />
+		<method name="get(I)F" />
+		<method name="get([F)Ljava/nio/FloatBuffer;" />
+		<method name="get([FII)Ljava/nio/FloatBuffer;" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="put(F)Ljava/nio/FloatBuffer;" />
+		<method name="put(IF)Ljava/nio/FloatBuffer;" />
+		<method name="put(Ljava/nio/FloatBuffer;)Ljava/nio/FloatBuffer;" />
+		<method name="put([F)Ljava/nio/FloatBuffer;" />
+		<method name="put([FII)Ljava/nio/FloatBuffer;" />
+		<method name="slice()Ljava/nio/FloatBuffer;" />
+		<method name="wrap([F)Ljava/nio/FloatBuffer;" />
+		<method name="wrap([FII)Ljava/nio/FloatBuffer;" />
+	</class>
+	<class name="java/nio/IntBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Comparable" />
+		<method name="allocate(I)Ljava/nio/IntBuffer;" />
+		<method name="array()[I" />
+		<method name="arrayOffset()I" />
+		<method name="asReadOnlyBuffer()Ljava/nio/IntBuffer;" />
+		<method name="compact()Ljava/nio/IntBuffer;" />
+		<method name="compareTo(Ljava/nio/IntBuffer;)I" />
+		<method name="duplicate()Ljava/nio/IntBuffer;" />
+		<method name="get()I" />
+		<method name="get(I)I" />
+		<method name="get([I)Ljava/nio/IntBuffer;" />
+		<method name="get([III)Ljava/nio/IntBuffer;" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="put(I)Ljava/nio/IntBuffer;" />
+		<method name="put(II)Ljava/nio/IntBuffer;" />
+		<method name="put(Ljava/nio/IntBuffer;)Ljava/nio/IntBuffer;" />
+		<method name="put([I)Ljava/nio/IntBuffer;" />
+		<method name="put([III)Ljava/nio/IntBuffer;" />
+		<method name="slice()Ljava/nio/IntBuffer;" />
+		<method name="wrap([I)Ljava/nio/IntBuffer;" />
+		<method name="wrap([III)Ljava/nio/IntBuffer;" />
+	</class>
+	<class name="java/nio/InvalidMarkException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/LongBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Comparable" />
+		<method name="allocate(I)Ljava/nio/LongBuffer;" />
+		<method name="array()[J" />
+		<method name="arrayOffset()I" />
+		<method name="asReadOnlyBuffer()Ljava/nio/LongBuffer;" />
+		<method name="compact()Ljava/nio/LongBuffer;" />
+		<method name="compareTo(Ljava/nio/LongBuffer;)I" />
+		<method name="duplicate()Ljava/nio/LongBuffer;" />
+		<method name="get()J" />
+		<method name="get(I)J" />
+		<method name="get([J)Ljava/nio/LongBuffer;" />
+		<method name="get([JII)Ljava/nio/LongBuffer;" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="put(IJ)Ljava/nio/LongBuffer;" />
+		<method name="put(J)Ljava/nio/LongBuffer;" />
+		<method name="put(Ljava/nio/LongBuffer;)Ljava/nio/LongBuffer;" />
+		<method name="put([J)Ljava/nio/LongBuffer;" />
+		<method name="put([JII)Ljava/nio/LongBuffer;" />
+		<method name="slice()Ljava/nio/LongBuffer;" />
+		<method name="wrap([J)Ljava/nio/LongBuffer;" />
+		<method name="wrap([JII)Ljava/nio/LongBuffer;" />
+	</class>
+	<class name="java/nio/MappedByteBuffer" since="1">
+		<extends name="java/nio/ByteBuffer" />
+		<method name="force()Ljava/nio/MappedByteBuffer;" />
+		<method name="isLoaded()Z" />
+		<method name="load()Ljava/nio/MappedByteBuffer;" />
+	</class>
+	<class name="java/nio/ReadOnlyBufferException" since="1">
+		<extends name="java/lang/UnsupportedOperationException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/ShortBuffer" since="1">
+		<extends name="java/nio/Buffer" />
+		<implements name="java/lang/Comparable" />
+		<method name="allocate(I)Ljava/nio/ShortBuffer;" />
+		<method name="array()[S" />
+		<method name="arrayOffset()I" />
+		<method name="asReadOnlyBuffer()Ljava/nio/ShortBuffer;" />
+		<method name="compact()Ljava/nio/ShortBuffer;" />
+		<method name="compareTo(Ljava/nio/ShortBuffer;)I" />
+		<method name="duplicate()Ljava/nio/ShortBuffer;" />
+		<method name="get()S" />
+		<method name="get(I)S" />
+		<method name="get([S)Ljava/nio/ShortBuffer;" />
+		<method name="get([SII)Ljava/nio/ShortBuffer;" />
+		<method name="hasArray()Z" />
+		<method name="isDirect()Z" />
+		<method name="order()Ljava/nio/ByteOrder;" />
+		<method name="put(IS)Ljava/nio/ShortBuffer;" />
+		<method name="put(Ljava/nio/ShortBuffer;)Ljava/nio/ShortBuffer;" />
+		<method name="put(S)Ljava/nio/ShortBuffer;" />
+		<method name="put([S)Ljava/nio/ShortBuffer;" />
+		<method name="put([SII)Ljava/nio/ShortBuffer;" />
+		<method name="slice()Ljava/nio/ShortBuffer;" />
+		<method name="wrap([S)Ljava/nio/ShortBuffer;" />
+		<method name="wrap([SII)Ljava/nio/ShortBuffer;" />
+	</class>
+	<class name="java/nio/channels/AlreadyConnectedException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/AsynchronousCloseException" since="1">
+		<extends name="java/nio/channels/ClosedChannelException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/ByteChannel" since="1">
+		<implements name="java/nio/channels/ReadableByteChannel" />
+		<implements name="java/nio/channels/WritableByteChannel" />
+	</class>
+	<class name="java/nio/channels/CancelledKeyException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/Channel" since="1">
+		<implements name="java/io/Closeable" />
+		<method name="close()V" />
+		<method name="isOpen()Z" />
+	</class>
+	<class name="java/nio/channels/Channels" since="1">
+		<extends name="java/lang/Object" />
+		<method name="newChannel(Ljava/io/InputStream;)Ljava/nio/channels/ReadableByteChannel;" />
+		<method name="newChannel(Ljava/io/OutputStream;)Ljava/nio/channels/WritableByteChannel;" />
+		<method name="newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream;" />
+		<method name="newOutputStream(Ljava/nio/channels/WritableByteChannel;)Ljava/io/OutputStream;" />
+		<method name="newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/lang/String;)Ljava/io/Reader;" />
+		<method name="newReader(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)Ljava/io/Reader;" />
+		<method name="newWriter(Ljava/nio/channels/WritableByteChannel;Ljava/lang/String;)Ljava/io/Writer;" />
+		<method name="newWriter(Ljava/nio/channels/WritableByteChannel;Ljava/nio/charset/CharsetEncoder;I)Ljava/io/Writer;" />
+	</class>
+	<class name="java/nio/channels/ClosedByInterruptException" since="1">
+		<extends name="java/nio/channels/AsynchronousCloseException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/ClosedChannelException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/ClosedSelectorException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/ConnectionPendingException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/DatagramChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
+		<implements name="java/nio/channels/ByteChannel" />
+		<implements name="java/nio/channels/GatheringByteChannel" />
+		<implements name="java/nio/channels/ScatteringByteChannel" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="connect(Ljava/net/SocketAddress;)Ljava/nio/channels/DatagramChannel;" />
+		<method name="disconnect()Ljava/nio/channels/DatagramChannel;" />
+		<method name="isConnected()Z" />
+		<method name="open()Ljava/nio/channels/DatagramChannel;" />
+		<method name="read(Ljava/nio/ByteBuffer;)I" />
+		<method name="read([Ljava/nio/ByteBuffer;)J" />
+		<method name="read([Ljava/nio/ByteBuffer;II)J" />
+		<method name="receive(Ljava/nio/ByteBuffer;)Ljava/net/SocketAddress;" />
+		<method name="send(Ljava/nio/ByteBuffer;Ljava/net/SocketAddress;)I" />
+		<method name="socket()Ljava/net/DatagramSocket;" />
+		<method name="validOps()I" />
+		<method name="write(Ljava/nio/ByteBuffer;)I" />
+		<method name="write([Ljava/nio/ByteBuffer;)J" />
+		<method name="write([Ljava/nio/ByteBuffer;II)J" />
+	</class>
+	<class name="java/nio/channels/FileChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractInterruptibleChannel" />
+		<implements name="java/nio/channels/ByteChannel" />
+		<implements name="java/nio/channels/GatheringByteChannel" />
+		<implements name="java/nio/channels/ScatteringByteChannel" />
+		<method name="&lt;init>()V" />
+		<method name="force(Z)V" />
+		<method name="lock()Ljava/nio/channels/FileLock;" />
+		<method name="lock(JJZ)Ljava/nio/channels/FileLock;" />
+		<method name="map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;" />
+		<method name="position()J" />
+		<method name="position(J)Ljava/nio/channels/FileChannel;" />
+		<method name="read(Ljava/nio/ByteBuffer;)I" />
+		<method name="read(Ljava/nio/ByteBuffer;J)I" />
+		<method name="read([Ljava/nio/ByteBuffer;)J" />
+		<method name="read([Ljava/nio/ByteBuffer;II)J" />
+		<method name="size()J" />
+		<method name="transferFrom(Ljava/nio/channels/ReadableByteChannel;JJ)J" />
+		<method name="transferTo(JJLjava/nio/channels/WritableByteChannel;)J" />
+		<method name="truncate(J)Ljava/nio/channels/FileChannel;" />
+		<method name="tryLock()Ljava/nio/channels/FileLock;" />
+		<method name="tryLock(JJZ)Ljava/nio/channels/FileLock;" />
+		<method name="write(Ljava/nio/ByteBuffer;)I" />
+		<method name="write(Ljava/nio/ByteBuffer;J)I" />
+		<method name="write([Ljava/nio/ByteBuffer;)J" />
+		<method name="write([Ljava/nio/ByteBuffer;II)J" />
+	</class>
+	<class name="java/nio/channels/FileChannel$MapMode" since="1">
+		<extends name="java/lang/Object" />
+		<field name="PRIVATE" />
+		<field name="READ_ONLY" />
+		<field name="READ_WRITE" />
+	</class>
+	<class name="java/nio/channels/FileLock" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/nio/channels/FileChannel;JJZ)V" />
+		<method name="channel()Ljava/nio/channels/FileChannel;" />
+		<method name="isShared()Z" />
+		<method name="isValid()Z" />
+		<method name="overlaps(JJ)Z" />
+		<method name="position()J" />
+		<method name="release()V" />
+		<method name="size()J" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/nio/channels/FileLockInterruptionException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/GatheringByteChannel" since="1">
+		<implements name="java/nio/channels/WritableByteChannel" />
+		<method name="write([Ljava/nio/ByteBuffer;)J" />
+		<method name="write([Ljava/nio/ByteBuffer;II)J" />
+	</class>
+	<class name="java/nio/channels/IllegalBlockingModeException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/IllegalSelectorException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/InterruptibleChannel" since="1">
+		<implements name="java/nio/channels/Channel" />
+		<method name="close()V" />
+	</class>
+	<class name="java/nio/channels/NoConnectionPendingException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/NonReadableChannelException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/NonWritableChannelException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/NotYetBoundException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/NotYetConnectedException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/OverlappingFileLockException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/Pipe" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="open()Ljava/nio/channels/Pipe;" />
+		<method name="sink()Ljava/nio/channels/Pipe$SinkChannel;" />
+		<method name="source()Ljava/nio/channels/Pipe$SourceChannel;" />
+	</class>
+	<class name="java/nio/channels/Pipe$SinkChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
+		<implements name="java/nio/channels/GatheringByteChannel" />
+		<implements name="java/nio/channels/WritableByteChannel" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="validOps()I" />
+	</class>
+	<class name="java/nio/channels/Pipe$SourceChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
+		<implements name="java/nio/channels/ReadableByteChannel" />
+		<implements name="java/nio/channels/ScatteringByteChannel" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="validOps()I" />
+	</class>
+	<class name="java/nio/channels/ReadableByteChannel" since="1">
+		<implements name="java/nio/channels/Channel" />
+		<method name="read(Ljava/nio/ByteBuffer;)I" />
+	</class>
+	<class name="java/nio/channels/ScatteringByteChannel" since="1">
+		<implements name="java/nio/channels/ReadableByteChannel" />
+		<method name="read([Ljava/nio/ByteBuffer;)J" />
+		<method name="read([Ljava/nio/ByteBuffer;II)J" />
+	</class>
+	<class name="java/nio/channels/SelectableChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractInterruptibleChannel" />
+		<implements name="java/nio/channels/Channel" />
+		<method name="&lt;init>()V" />
+		<method name="blockingLock()Ljava/lang/Object;" />
+		<method name="configureBlocking(Z)Ljava/nio/channels/SelectableChannel;" />
+		<method name="isBlocking()Z" />
+		<method name="isRegistered()Z" />
+		<method name="keyFor(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;" />
+		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
+		<method name="register(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;" />
+		<method name="register(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;" />
+		<method name="validOps()I" />
+	</class>
+	<class name="java/nio/channels/SelectionKey" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="attach(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="attachment()Ljava/lang/Object;" />
+		<method name="cancel()V" />
+		<method name="channel()Ljava/nio/channels/SelectableChannel;" />
+		<method name="interestOps()I" />
+		<method name="interestOps(I)Ljava/nio/channels/SelectionKey;" />
+		<method name="isAcceptable()Z" />
+		<method name="isConnectable()Z" />
+		<method name="isReadable()Z" />
+		<method name="isValid()Z" />
+		<method name="isWritable()Z" />
+		<method name="readyOps()I" />
+		<method name="selector()Ljava/nio/channels/Selector;" />
+		<field name="OP_ACCEPT" />
+		<field name="OP_CONNECT" />
+		<field name="OP_READ" />
+		<field name="OP_WRITE" />
+	</class>
+	<class name="java/nio/channels/Selector" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="close()V" />
+		<method name="isOpen()Z" />
+		<method name="keys()Ljava/util/Set;" />
+		<method name="open()Ljava/nio/channels/Selector;" />
+		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
+		<method name="select()I" />
+		<method name="select(J)I" />
+		<method name="selectNow()I" />
+		<method name="selectedKeys()Ljava/util/Set;" />
+		<method name="wakeup()Ljava/nio/channels/Selector;" />
+	</class>
+	<class name="java/nio/channels/ServerSocketChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="accept()Ljava/nio/channels/SocketChannel;" />
+		<method name="open()Ljava/nio/channels/ServerSocketChannel;" />
+		<method name="socket()Ljava/net/ServerSocket;" />
+		<method name="validOps()I" />
+	</class>
+	<class name="java/nio/channels/SocketChannel" since="1">
+		<extends name="java/nio/channels/spi/AbstractSelectableChannel" />
+		<implements name="java/nio/channels/ByteChannel" />
+		<implements name="java/nio/channels/GatheringByteChannel" />
+		<implements name="java/nio/channels/ScatteringByteChannel" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="connect(Ljava/net/SocketAddress;)Z" />
+		<method name="finishConnect()Z" />
+		<method name="isConnected()Z" />
+		<method name="isConnectionPending()Z" />
+		<method name="open()Ljava/nio/channels/SocketChannel;" />
+		<method name="open(Ljava/net/SocketAddress;)Ljava/nio/channels/SocketChannel;" />
+		<method name="read(Ljava/nio/ByteBuffer;)I" />
+		<method name="read([Ljava/nio/ByteBuffer;)J" />
+		<method name="read([Ljava/nio/ByteBuffer;II)J" />
+		<method name="socket()Ljava/net/Socket;" />
+		<method name="validOps()I" />
+		<method name="write(Ljava/nio/ByteBuffer;)I" />
+		<method name="write([Ljava/nio/ByteBuffer;)J" />
+		<method name="write([Ljava/nio/ByteBuffer;II)J" />
+	</class>
+	<class name="java/nio/channels/UnresolvedAddressException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/UnsupportedAddressTypeException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/channels/WritableByteChannel" since="1">
+		<implements name="java/nio/channels/Channel" />
+		<method name="write(Ljava/nio/ByteBuffer;)I" />
+	</class>
+	<class name="java/nio/channels/spi/AbstractInterruptibleChannel" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/nio/channels/Channel" />
+		<implements name="java/nio/channels/InterruptibleChannel" />
+		<method name="&lt;init>()V" />
+		<method name="begin()V" />
+		<method name="close()V" />
+		<method name="end(Z)V" />
+		<method name="implCloseChannel()V" />
+		<method name="isOpen()Z" />
+	</class>
+	<class name="java/nio/channels/spi/AbstractSelectableChannel" since="1">
+		<extends name="java/nio/channels/SelectableChannel" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="blockingLock()Ljava/lang/Object;" />
+		<method name="configureBlocking(Z)Ljava/nio/channels/SelectableChannel;" />
+		<method name="implCloseChannel()V" />
+		<method name="implCloseSelectableChannel()V" />
+		<method name="implConfigureBlocking(Z)V" />
+		<method name="isBlocking()Z" />
+		<method name="isRegistered()Z" />
+		<method name="keyFor(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey;" />
+		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
+		<method name="register(Ljava/nio/channels/Selector;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;" />
+	</class>
+	<class name="java/nio/channels/spi/AbstractSelectionKey" since="1">
+		<extends name="java/nio/channels/SelectionKey" />
+		<method name="&lt;init>()V" />
+		<method name="cancel()V" />
+		<method name="isValid()Z" />
+	</class>
+	<class name="java/nio/channels/spi/AbstractSelector" since="1">
+		<extends name="java/nio/channels/Selector" />
+		<method name="&lt;init>(Ljava/nio/channels/spi/SelectorProvider;)V" />
+		<method name="begin()V" />
+		<method name="cancelledKeys()Ljava/util/Set;" />
+		<method name="close()V" />
+		<method name="deregister(Ljava/nio/channels/spi/AbstractSelectionKey;)V" />
+		<method name="end()V" />
+		<method name="implCloseSelector()V" />
+		<method name="isOpen()Z" />
+		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
+		<method name="register(Ljava/nio/channels/spi/AbstractSelectableChannel;ILjava/lang/Object;)Ljava/nio/channels/SelectionKey;" />
+	</class>
+	<class name="java/nio/channels/spi/SelectorProvider" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="inheritedChannel()Ljava/nio/channels/Channel;" />
+		<method name="openDatagramChannel()Ljava/nio/channels/DatagramChannel;" />
+		<method name="openPipe()Ljava/nio/channels/Pipe;" />
+		<method name="openSelector()Ljava/nio/channels/spi/AbstractSelector;" />
+		<method name="openServerSocketChannel()Ljava/nio/channels/ServerSocketChannel;" />
+		<method name="openSocketChannel()Ljava/nio/channels/SocketChannel;" />
+		<method name="provider()Ljava/nio/channels/spi/SelectorProvider;" />
+	</class>
+	<class name="java/nio/charset/CharacterCodingException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/nio/charset/Charset" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(Ljava/lang/String;[Ljava/lang/String;)V" />
+		<method name="aliases()Ljava/util/Set;" />
+		<method name="availableCharsets()Ljava/util/SortedMap;" />
+		<method name="canEncode()Z" />
+		<method name="compareTo(Ljava/nio/charset/Charset;)I" />
+		<method name="contains(Ljava/nio/charset/Charset;)Z" />
+		<method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;" />
+		<method name="defaultCharset()Ljava/nio/charset/Charset;" />
+		<method name="displayName()Ljava/lang/String;" />
+		<method name="displayName(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="encode(Ljava/lang/String;)Ljava/nio/ByteBuffer;" />
+		<method name="encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="forName(Ljava/lang/String;)Ljava/nio/charset/Charset;" />
+		<method name="hashCode()I" />
+		<method name="isRegistered()Z" />
+		<method name="isSupported(Ljava/lang/String;)Z" />
+		<method name="name()Ljava/lang/String;" />
+		<method name="newDecoder()Ljava/nio/charset/CharsetDecoder;" />
+		<method name="newEncoder()Ljava/nio/charset/CharsetEncoder;" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/nio/charset/CharsetDecoder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/nio/charset/Charset;FF)V" />
+		<method name="averageCharsPerByte()F" />
+		<method name="charset()Ljava/nio/charset/Charset;" />
+		<method name="decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;" />
+		<method name="decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;" />
+		<method name="decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;" />
+		<method name="detectedCharset()Ljava/nio/charset/Charset;" />
+		<method name="flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;" />
+		<method name="implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;" />
+		<method name="implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V" />
+		<method name="implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V" />
+		<method name="implReplaceWith(Ljava/lang/String;)V" />
+		<method name="implReset()V" />
+		<method name="isAutoDetecting()Z" />
+		<method name="isCharsetDetected()Z" />
+		<method name="malformedInputAction()Ljava/nio/charset/CodingErrorAction;" />
+		<method name="maxCharsPerByte()F" />
+		<method name="onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;" />
+		<method name="onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;" />
+		<method name="replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;" />
+		<method name="replacement()Ljava/lang/String;" />
+		<method name="reset()Ljava/nio/charset/CharsetDecoder;" />
+		<method name="unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;" />
+	</class>
+	<class name="java/nio/charset/CharsetEncoder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/nio/charset/Charset;FF)V" />
+		<method name="&lt;init>(Ljava/nio/charset/Charset;FF[B)V" />
+		<method name="averageBytesPerChar()F" />
+		<method name="canEncode(C)Z" />
+		<method name="canEncode(Ljava/lang/CharSequence;)Z" />
+		<method name="charset()Ljava/nio/charset/Charset;" />
+		<method name="encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;" />
+		<method name="encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;" />
+		<method name="encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;" />
+		<method name="flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;" />
+		<method name="implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;" />
+		<method name="implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V" />
+		<method name="implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V" />
+		<method name="implReplaceWith([B)V" />
+		<method name="implReset()V" />
+		<method name="isLegalReplacement([B)Z" />
+		<method name="malformedInputAction()Ljava/nio/charset/CodingErrorAction;" />
+		<method name="maxBytesPerChar()F" />
+		<method name="onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;" />
+		<method name="onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;" />
+		<method name="replaceWith([B)Ljava/nio/charset/CharsetEncoder;" />
+		<method name="replacement()[B" />
+		<method name="reset()Ljava/nio/charset/CharsetEncoder;" />
+		<method name="unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;" />
+	</class>
+	<class name="java/nio/charset/CoderMalfunctionError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+	</class>
+	<class name="java/nio/charset/CoderResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="isError()Z" />
+		<method name="isMalformed()Z" />
+		<method name="isOverflow()Z" />
+		<method name="isUnderflow()Z" />
+		<method name="isUnmappable()Z" />
+		<method name="length()I" />
+		<method name="malformedForLength(I)Ljava/nio/charset/CoderResult;" />
+		<method name="throwException()V" />
+		<method name="unmappableForLength(I)Ljava/nio/charset/CoderResult;" />
+		<field name="OVERFLOW" />
+		<field name="UNDERFLOW" />
+	</class>
+	<class name="java/nio/charset/CodingErrorAction" since="1">
+		<extends name="java/lang/Object" />
+		<field name="IGNORE" />
+		<field name="REPLACE" />
+		<field name="REPORT" />
+	</class>
+	<class name="java/nio/charset/IllegalCharsetNameException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getCharsetName()Ljava/lang/String;" />
+	</class>
+	<class name="java/nio/charset/MalformedInputException" since="1">
+		<extends name="java/nio/charset/CharacterCodingException" />
+		<method name="&lt;init>(I)V" />
+		<method name="getInputLength()I" />
+	</class>
+	<class name="java/nio/charset/UnmappableCharacterException" since="1">
+		<extends name="java/nio/charset/CharacterCodingException" />
+		<method name="&lt;init>(I)V" />
+		<method name="getInputLength()I" />
+	</class>
+	<class name="java/nio/charset/UnsupportedCharsetException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getCharsetName()Ljava/lang/String;" />
+	</class>
+	<class name="java/nio/charset/spi/CharsetProvider" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="charsetForName(Ljava/lang/String;)Ljava/nio/charset/Charset;" />
+		<method name="charsets()Ljava/util/Iterator;" />
+	</class>
+	<class name="java/security/AccessControlContext" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/AccessControlContext;Ljava/security/DomainCombiner;)V" />
+		<method name="&lt;init>([Ljava/security/ProtectionDomain;)V" />
+		<method name="checkPermission(Ljava/security/Permission;)V" />
+		<method name="getDomainCombiner()Ljava/security/DomainCombiner;" />
+	</class>
+	<class name="java/security/AccessControlException" since="1">
+		<extends name="java/lang/SecurityException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/security/Permission;)V" />
+		<method name="getPermission()Ljava/security/Permission;" />
+	</class>
+	<class name="java/security/AccessController" since="1">
+		<extends name="java/lang/Object" />
+		<method name="checkPermission(Ljava/security/Permission;)V" />
+		<method name="doPrivileged(Ljava/security/PrivilegedAction;)LT;" />
+		<method name="doPrivileged(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)LT;" />
+		<method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;)LT;" />
+		<method name="doPrivileged(Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)LT;" />
+		<method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedAction;)LT;" since="9" />
+		<method name="doPrivilegedWithCombiner(Ljava/security/PrivilegedExceptionAction;)LT;" since="9" />
+		<method name="getContext()Ljava/security/AccessControlContext;" />
+	</class>
+	<class name="java/security/AlgorithmParameterGenerator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/AlgorithmParameterGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="generateParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameterGenerator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameterGenerator;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(I)V" />
+		<method name="init(ILjava/security/SecureRandom;)V" />
+		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="java/security/AlgorithmParameterGeneratorSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGenerateParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="engineInit(ILjava/security/SecureRandom;)V" />
+		<method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="java/security/AlgorithmParameters" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/AlgorithmParametersSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getEncoded()[B" />
+		<method name="getEncoded(Ljava/lang/String;)[B" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameters;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/AlgorithmParameters;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/AlgorithmParameters;" />
+		<method name="getParameterSpec(Ljava/lang/Class;)LT;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="init([B)V" />
+		<method name="init([BLjava/lang/String;)V" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/AlgorithmParametersSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGetEncoded()[B" />
+		<method name="engineGetEncoded(Ljava/lang/String;)[B" />
+		<method name="engineGetParameterSpec(Ljava/lang/Class;)LT;" />
+		<method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="engineInit([B)V" />
+		<method name="engineInit([BLjava/lang/String;)V" />
+		<method name="engineToString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/AllPermission" since="1">
+		<extends name="java/security/Permission" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/security/AuthProvider" since="1">
+		<extends name="java/security/Provider" />
+		<method name="&lt;init>(Ljava/lang/String;DLjava/lang/String;)V" />
+		<method name="login(Ljavax/security/auth/Subject;Ljavax/security/auth/callback/CallbackHandler;)V" />
+		<method name="logout()V" />
+		<method name="setCallbackHandler(Ljavax/security/auth/callback/CallbackHandler;)V" />
+	</class>
+	<class name="java/security/BasicPermission" since="1">
+		<extends name="java/security/Permission" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/security/Certificate" since="1">
+		<method name="decode(Ljava/io/InputStream;)V" />
+		<method name="encode(Ljava/io/OutputStream;)V" />
+		<method name="getFormat()Ljava/lang/String;" />
+		<method name="getGuarantor()Ljava/security/Principal;" />
+		<method name="getPrincipal()Ljava/security/Principal;" />
+		<method name="getPublicKey()Ljava/security/PublicKey;" />
+		<method name="toString(Z)Ljava/lang/String;" />
+	</class>
+	<class name="java/security/CodeSigner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V" />
+		<method name="getSignerCertPath()Ljava/security/cert/CertPath;" />
+		<method name="getTimestamp()Ljava/security/Timestamp;" />
+	</class>
+	<class name="java/security/CodeSource" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/net/URL;[Ljava/security/CodeSigner;)V" />
+		<method name="&lt;init>(Ljava/net/URL;[Ljava/security/cert/Certificate;)V" />
+		<method name="getCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getCodeSigners()[Ljava/security/CodeSigner;" />
+		<method name="getLocation()Ljava/net/URL;" />
+		<method name="implies(Ljava/security/CodeSource;)Z" />
+	</class>
+	<class name="java/security/DigestException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/DigestInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/security/MessageDigest;)V" />
+		<method name="getMessageDigest()Ljava/security/MessageDigest;" />
+		<method name="on(Z)V" />
+		<method name="setMessageDigest(Ljava/security/MessageDigest;)V" />
+		<field name="digest" />
+	</class>
+	<class name="java/security/DigestOutputStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/security/MessageDigest;)V" />
+		<method name="getMessageDigest()Ljava/security/MessageDigest;" />
+		<method name="on(Z)V" />
+		<method name="setMessageDigest(Ljava/security/MessageDigest;)V" />
+		<field name="digest" />
+	</class>
+	<class name="java/security/DomainCombiner" since="1">
+		<method name="combine([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;" />
+	</class>
+	<class name="java/security/GeneralSecurityException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/Guard" since="1">
+		<method name="checkGuard(Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/security/GuardedObject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/Object;Ljava/security/Guard;)V" />
+		<method name="getObject()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/Identity" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/Principal" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/security/IdentityScope;)V" />
+		<method name="addCertificate(Ljava/security/Certificate;)V" />
+		<method name="certificates()[Ljava/security/Certificate;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getInfo()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPublicKey()Ljava/security/PublicKey;" />
+		<method name="getScope()Ljava/security/IdentityScope;" />
+		<method name="identityEquals(Ljava/security/Identity;)Z" />
+		<method name="removeCertificate(Ljava/security/Certificate;)V" />
+		<method name="setInfo(Ljava/lang/String;)V" />
+		<method name="setPublicKey(Ljava/security/PublicKey;)V" />
+		<method name="toString(Z)Ljava/lang/String;" />
+	</class>
+	<class name="java/security/IdentityScope" since="1">
+		<extends name="java/security/Identity" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/security/IdentityScope;)V" />
+		<method name="addIdentity(Ljava/security/Identity;)V" />
+		<method name="getIdentity(Ljava/lang/String;)Ljava/security/Identity;" />
+		<method name="getIdentity(Ljava/security/Principal;)Ljava/security/Identity;" />
+		<method name="getIdentity(Ljava/security/PublicKey;)Ljava/security/Identity;" />
+		<method name="getSystemScope()Ljava/security/IdentityScope;" />
+		<method name="identities()Ljava/util/Enumeration;" />
+		<method name="removeIdentity(Ljava/security/Identity;)V" />
+		<method name="setSystemScope(Ljava/security/IdentityScope;)V" />
+		<method name="size()I" />
+	</class>
+	<class name="java/security/InvalidAlgorithmParameterException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/InvalidKeyException" since="1">
+		<extends name="java/security/KeyException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/InvalidParameterException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/Key" since="1">
+		<implements name="java/io/Serializable" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getEncoded()[B" />
+		<method name="getFormat()Ljava/lang/String;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/KeyException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/KeyFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/KeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;" />
+		<method name="generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/KeyFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;" />
+		<method name="getKeySpec(Ljava/security/Key;Ljava/lang/Class;)LT;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="translateKey(Ljava/security/Key;)Ljava/security/Key;" />
+	</class>
+	<class name="java/security/KeyFactorySpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGeneratePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;" />
+		<method name="engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;" />
+		<method name="engineGetKeySpec(Ljava/security/Key;Ljava/lang/Class;)LT;" />
+		<method name="engineTranslateKey(Ljava/security/Key;)Ljava/security/Key;" />
+	</class>
+	<class name="java/security/KeyManagementException" since="1">
+		<extends name="java/security/KeyException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/KeyPair" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V" />
+		<method name="getPrivate()Ljava/security/PrivateKey;" />
+		<method name="getPublic()Ljava/security/PublicKey;" />
+	</class>
+	<class name="java/security/KeyPairGenerator" since="1">
+		<extends name="java/security/KeyPairGeneratorSpi" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="genKeyPair()Ljava/security/KeyPair;" />
+		<method name="generateKeyPair()Ljava/security/KeyPair;" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/KeyPairGenerator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyPairGenerator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyPairGenerator;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="initialize(I)V" />
+		<method name="initialize(ILjava/security/SecureRandom;)V" />
+		<method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+	</class>
+	<class name="java/security/KeyPairGeneratorSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="generateKeyPair()Ljava/security/KeyPair;" />
+		<method name="initialize(ILjava/security/SecureRandom;)V" />
+		<method name="initialize(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="java/security/KeyRep" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/security/KeyRep$Type;Ljava/lang/String;Ljava/lang/String;[B)V" />
+		<method name="readResolve()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/KeyRep$Type" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/security/KeyRep$Type;" />
+		<method name="values()[Ljava/security/KeyRep$Type;" />
+		<field name="PRIVATE" />
+		<field name="PUBLIC" />
+		<field name="SECRET" />
+	</class>
+	<class name="java/security/KeyStore" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/KeyStoreSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="aliases()Ljava/util/Enumeration;" />
+		<method name="containsAlias(Ljava/lang/String;)Z" />
+		<method name="deleteEntry(Ljava/lang/String;)V" />
+		<method name="entryInstanceOf(Ljava/lang/String;Ljava/lang/Class;)Z" />
+		<method name="getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;" />
+		<method name="getCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;" />
+		<method name="getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;" />
+		<method name="getCreationDate(Ljava/lang/String;)Ljava/util/Date;" />
+		<method name="getDefaultType()Ljava/lang/String;" />
+		<method name="getEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/KeyStore;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/KeyStore;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyStore;" />
+		<method name="getKey(Ljava/lang/String;[C)Ljava/security/Key;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="isCertificateEntry(Ljava/lang/String;)Z" />
+		<method name="isKeyEntry(Ljava/lang/String;)Z" />
+		<method name="load(Ljava/io/InputStream;[C)V" />
+		<method name="load(Ljava/security/KeyStore$LoadStoreParameter;)V" />
+		<method name="setCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V" />
+		<method name="setEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V" />
+		<method name="setKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V" />
+		<method name="setKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V" />
+		<method name="size()I" />
+		<method name="store(Ljava/io/OutputStream;[C)V" />
+		<method name="store(Ljava/security/KeyStore$LoadStoreParameter;)V" />
+	</class>
+	<class name="java/security/KeyStore$Builder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getKeyStore()Ljava/security/KeyStore;" />
+		<method name="getProtectionParameter(Ljava/lang/String;)Ljava/security/KeyStore$ProtectionParameter;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/security/Provider;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;" />
+		<method name="newInstance(Ljava/security/KeyStore;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Builder;" />
+	</class>
+	<class name="java/security/KeyStore$CallbackHandlerProtection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/KeyStore$ProtectionParameter" />
+		<method name="&lt;init>(Ljavax/security/auth/callback/CallbackHandler;)V" />
+		<method name="getCallbackHandler()Ljavax/security/auth/callback/CallbackHandler;" />
+	</class>
+	<class name="java/security/KeyStore$Entry" since="1">
+	</class>
+	<class name="java/security/KeyStore$LoadStoreParameter" since="1">
+		<method name="getProtectionParameter()Ljava/security/KeyStore$ProtectionParameter;" />
+	</class>
+	<class name="java/security/KeyStore$PasswordProtection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="javax/security/auth/Destroyable" />
+		<implements name="java/security/KeyStore$ProtectionParameter" />
+		<method name="&lt;init>([C)V" />
+		<method name="destroy()V" />
+		<method name="getPassword()[C" />
+		<method name="isDestroyed()Z" />
+	</class>
+	<class name="java/security/KeyStore$PrivateKeyEntry" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/KeyStore$Entry" />
+		<method name="&lt;init>(Ljava/security/PrivateKey;[Ljava/security/cert/Certificate;)V" />
+		<method name="getCertificate()Ljava/security/cert/Certificate;" />
+		<method name="getCertificateChain()[Ljava/security/cert/Certificate;" />
+		<method name="getPrivateKey()Ljava/security/PrivateKey;" />
+	</class>
+	<class name="java/security/KeyStore$ProtectionParameter" since="1">
+	</class>
+	<class name="java/security/KeyStore$SecretKeyEntry" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/KeyStore$Entry" />
+		<method name="&lt;init>(Ljavax/crypto/SecretKey;)V" />
+		<method name="getSecretKey()Ljavax/crypto/SecretKey;" />
+	</class>
+	<class name="java/security/KeyStore$TrustedCertificateEntry" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/KeyStore$Entry" />
+		<method name="&lt;init>(Ljava/security/cert/Certificate;)V" />
+		<method name="getTrustedCertificate()Ljava/security/cert/Certificate;" />
+	</class>
+	<class name="java/security/KeyStoreException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/KeyStoreSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineAliases()Ljava/util/Enumeration;" />
+		<method name="engineContainsAlias(Ljava/lang/String;)Z" />
+		<method name="engineDeleteEntry(Ljava/lang/String;)V" />
+		<method name="engineEntryInstanceOf(Ljava/lang/String;Ljava/lang/Class;)Z" />
+		<method name="engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;" />
+		<method name="engineGetCertificateAlias(Ljava/security/cert/Certificate;)Ljava/lang/String;" />
+		<method name="engineGetCertificateChain(Ljava/lang/String;)[Ljava/security/cert/Certificate;" />
+		<method name="engineGetCreationDate(Ljava/lang/String;)Ljava/util/Date;" />
+		<method name="engineGetEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;" />
+		<method name="engineGetKey(Ljava/lang/String;[C)Ljava/security/Key;" />
+		<method name="engineIsCertificateEntry(Ljava/lang/String;)Z" />
+		<method name="engineIsKeyEntry(Ljava/lang/String;)Z" />
+		<method name="engineLoad(Ljava/io/InputStream;[C)V" />
+		<method name="engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V" />
+		<method name="engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V" />
+		<method name="engineSetEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V" />
+		<method name="engineSetKeyEntry(Ljava/lang/String;Ljava/security/Key;[C[Ljava/security/cert/Certificate;)V" />
+		<method name="engineSetKeyEntry(Ljava/lang/String;[B[Ljava/security/cert/Certificate;)V" />
+		<method name="engineSize()I" />
+		<method name="engineStore(Ljava/io/OutputStream;[C)V" />
+		<method name="engineStore(Ljava/security/KeyStore$LoadStoreParameter;)V" />
+	</class>
+	<class name="java/security/MessageDigest" since="1">
+		<extends name="java/security/MessageDigestSpi" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="digest()[B" />
+		<method name="digest([B)[B" />
+		<method name="digest([BII)I" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getDigestLength()I" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="isEqual([B[B)Z" />
+		<method name="reset()V" />
+		<method name="update(B)V" />
+		<method name="update(Ljava/nio/ByteBuffer;)V" />
+		<method name="update([B)V" />
+		<method name="update([BII)V" />
+	</class>
+	<class name="java/security/MessageDigestSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="engineDigest()[B" />
+		<method name="engineDigest([BII)I" />
+		<method name="engineGetDigestLength()I" />
+		<method name="engineReset()V" />
+		<method name="engineUpdate(B)V" />
+		<method name="engineUpdate(Ljava/nio/ByteBuffer;)V" />
+		<method name="engineUpdate([BII)V" />
+	</class>
+	<class name="java/security/NoSuchAlgorithmException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/NoSuchProviderException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/Permission" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/Guard" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="checkGuard(Ljava/lang/Object;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+		<method name="newPermissionCollection()Ljava/security/PermissionCollection;" />
+	</class>
+	<class name="java/security/PermissionCollection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="add(Ljava/security/Permission;)V" />
+		<method name="elements()Ljava/util/Enumeration;" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+		<method name="isReadOnly()Z" />
+		<method name="setReadOnly()V" />
+	</class>
+	<class name="java/security/Permissions" since="1">
+		<extends name="java/security/PermissionCollection" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="add(Ljava/security/Permission;)V" />
+		<method name="elements()Ljava/util/Enumeration;" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/security/Policy" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;)Ljava/security/Policy;" since="9" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;Ljava/lang/String;)Ljava/security/Policy;" since="9" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Policy$Parameters;Ljava/security/Provider;)Ljava/security/Policy;" since="9" />
+		<method name="getParameters()Ljava/security/Policy$Parameters;" since="9" />
+		<method name="getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;" />
+		<method name="getPermissions(Ljava/security/ProtectionDomain;)Ljava/security/PermissionCollection;" />
+		<method name="getPolicy()Ljava/security/Policy;" />
+		<method name="getProvider()Ljava/security/Provider;" since="9" />
+		<method name="getType()Ljava/lang/String;" since="9" />
+		<method name="implies(Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z" />
+		<method name="refresh()V" />
+		<method name="setPolicy(Ljava/security/Policy;)V" />
+		<field name="UNSUPPORTED_EMPTY_COLLECTION" since="9" />
+	</class>
+	<class name="java/security/Policy$Parameters" since="9">
+	</class>
+	<class name="java/security/PolicySpi" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGetPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;" />
+		<method name="engineGetPermissions(Ljava/security/ProtectionDomain;)Ljava/security/PermissionCollection;" />
+		<method name="engineImplies(Ljava/security/ProtectionDomain;Ljava/security/Permission;)Z" />
+		<method name="engineRefresh()V" />
+	</class>
+	<class name="java/security/Principal" since="1">
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/PrivateKey" since="1">
+		<implements name="java/security/Key" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/PrivilegedAction" since="1">
+		<method name="run()LT;" />
+	</class>
+	<class name="java/security/PrivilegedActionException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="getException()Ljava/lang/Exception;" />
+	</class>
+	<class name="java/security/PrivilegedExceptionAction" since="1">
+		<method name="run()LT;" />
+	</class>
+	<class name="java/security/ProtectionDomain" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V" />
+		<method name="&lt;init>(Ljava/security/CodeSource;Ljava/security/PermissionCollection;Ljava/lang/ClassLoader;[Ljava/security/Principal;)V" />
+		<method name="getClassLoader()Ljava/lang/ClassLoader;" />
+		<method name="getCodeSource()Ljava/security/CodeSource;" />
+		<method name="getPermissions()Ljava/security/PermissionCollection;" />
+		<method name="getPrincipals()[Ljava/security/Principal;" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/security/Provider" since="1">
+		<extends name="java/util/Properties" />
+		<method name="&lt;init>(Ljava/lang/String;DLjava/lang/String;)V" />
+		<method name="getInfo()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;" />
+		<method name="getServices()Ljava/util/Set;" />
+		<method name="getVersion()D" />
+		<method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="putAll(Ljava/util/Map;)V" />
+		<method name="putService(Ljava/security/Provider$Service;)V" />
+		<method name="removeService(Ljava/security/Provider$Service;)V" />
+	</class>
+	<class name="java/security/Provider$Service" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/util/Map;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getClassName()Ljava/lang/String;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="newInstance(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="supportsParameter(Ljava/lang/Object;)Z" />
+	</class>
+	<class name="java/security/ProviderException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/PublicKey" since="1">
+		<implements name="java/security/Key" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/SecureClassLoader" since="1">
+		<extends name="java/lang/ClassLoader" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/ClassLoader;)V" />
+		<method name="defineClass(Ljava/lang/String;Ljava/nio/ByteBuffer;Ljava/security/CodeSource;)Ljava/lang/Class;" />
+		<method name="defineClass(Ljava/lang/String;[BIILjava/security/CodeSource;)Ljava/lang/Class;" />
+		<method name="getPermissions(Ljava/security/CodeSource;)Ljava/security/PermissionCollection;" />
+	</class>
+	<class name="java/security/SecureRandom" since="1">
+		<extends name="java/util/Random" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="generateSeed(I)[B" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/SecureRandom;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/SecureRandom;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/SecureRandom;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getSeed(I)[B" />
+		<method name="next(I)I" />
+		<method name="setSeed([B)V" />
+	</class>
+	<class name="java/security/SecureRandomSpi" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="engineGenerateSeed(I)[B" />
+		<method name="engineNextBytes([B)V" />
+		<method name="engineSetSeed([B)V" />
+	</class>
+	<class name="java/security/Security" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addProvider(Ljava/security/Provider;)I" />
+		<method name="getAlgorithmProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getAlgorithms(Ljava/lang/String;)Ljava/util/Set;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getProvider(Ljava/lang/String;)Ljava/security/Provider;" />
+		<method name="getProviders()[Ljava/security/Provider;" />
+		<method name="getProviders(Ljava/lang/String;)[Ljava/security/Provider;" />
+		<method name="getProviders(Ljava/util/Map;)[Ljava/security/Provider;" />
+		<method name="insertProviderAt(Ljava/security/Provider;I)I" />
+		<method name="removeProvider(Ljava/lang/String;)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/SecurityPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/Signature" since="1">
+		<extends name="java/security/SignatureSpi" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/Signature;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Signature;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/Signature;" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="initSign(Ljava/security/PrivateKey;)V" />
+		<method name="initSign(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V" />
+		<method name="initVerify(Ljava/security/PublicKey;)V" />
+		<method name="initVerify(Ljava/security/cert/Certificate;)V" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setParameter(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="sign()[B" />
+		<method name="sign([BII)I" />
+		<method name="update(B)V" />
+		<method name="update(Ljava/nio/ByteBuffer;)V" />
+		<method name="update([B)V" />
+		<method name="update([BII)V" />
+		<method name="verify([B)Z" />
+		<method name="verify([BII)Z" />
+		<field name="SIGN" />
+		<field name="UNINITIALIZED" />
+		<field name="VERIFY" />
+		<field name="state" />
+	</class>
+	<class name="java/security/SignatureException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/SignatureSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="engineGetParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="engineGetParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="engineInitSign(Ljava/security/PrivateKey;)V" />
+		<method name="engineInitSign(Ljava/security/PrivateKey;Ljava/security/SecureRandom;)V" />
+		<method name="engineInitVerify(Ljava/security/PublicKey;)V" />
+		<method name="engineSetParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="engineSetParameter(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="engineSign()[B" />
+		<method name="engineSign([BII)I" />
+		<method name="engineUpdate(B)V" />
+		<method name="engineUpdate(Ljava/nio/ByteBuffer;)V" />
+		<method name="engineUpdate([BII)V" />
+		<method name="engineVerify([B)Z" />
+		<method name="engineVerify([BII)Z" />
+		<field name="appRandom" />
+	</class>
+	<class name="java/security/SignedObject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/io/Serializable;Ljava/security/PrivateKey;Ljava/security/Signature;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getObject()Ljava/lang/Object;" />
+		<method name="getSignature()[B" />
+		<method name="verify(Ljava/security/PublicKey;Ljava/security/Signature;)Z" />
+	</class>
+	<class name="java/security/Signer" since="1">
+		<extends name="java/security/Identity" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/security/IdentityScope;)V" />
+		<method name="getPrivateKey()Ljava/security/PrivateKey;" />
+		<method name="setKeyPair(Ljava/security/KeyPair;)V" />
+	</class>
+	<class name="java/security/Timestamp" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/util/Date;Ljava/security/cert/CertPath;)V" />
+		<method name="getSignerCertPath()Ljava/security/cert/CertPath;" />
+		<method name="getTimestamp()Ljava/util/Date;" />
+	</class>
+	<class name="java/security/UnrecoverableEntryException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/UnrecoverableKeyException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<extends name="java/security/UnrecoverableEntryException" since="9" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/UnresolvedPermission" since="1">
+		<extends name="java/security/Permission" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/cert/Certificate;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="getUnresolvedActions()Ljava/lang/String;" />
+		<method name="getUnresolvedCerts()[Ljava/security/cert/Certificate;" />
+		<method name="getUnresolvedName()Ljava/lang/String;" />
+		<method name="getUnresolvedType()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="java/security/acl/Acl" since="1">
+		<implements name="java/security/acl/Owner" />
+		<method name="addEntry(Ljava/security/Principal;Ljava/security/acl/AclEntry;)Z" />
+		<method name="checkPermission(Ljava/security/Principal;Ljava/security/acl/Permission;)Z" />
+		<method name="entries()Ljava/util/Enumeration;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPermissions(Ljava/security/Principal;)Ljava/util/Enumeration;" />
+		<method name="removeEntry(Ljava/security/Principal;Ljava/security/acl/AclEntry;)Z" />
+		<method name="setName(Ljava/security/Principal;Ljava/lang/String;)V" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/acl/AclEntry" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="addPermission(Ljava/security/acl/Permission;)Z" />
+		<method name="checkPermission(Ljava/security/acl/Permission;)Z" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getPrincipal()Ljava/security/Principal;" />
+		<method name="isNegative()Z" />
+		<method name="permissions()Ljava/util/Enumeration;" />
+		<method name="removePermission(Ljava/security/acl/Permission;)Z" />
+		<method name="setNegativePermissions()V" />
+		<method name="setPrincipal(Ljava/security/Principal;)Z" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/acl/AclNotFoundException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/security/acl/Group" since="1">
+		<implements name="java/security/Principal" />
+		<method name="addMember(Ljava/security/Principal;)Z" />
+		<method name="isMember(Ljava/security/Principal;)Z" />
+		<method name="members()Ljava/util/Enumeration;" />
+		<method name="removeMember(Ljava/security/Principal;)Z" />
+	</class>
+	<class name="java/security/acl/LastOwnerException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/security/acl/NotOwnerException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/security/acl/Owner" since="1">
+		<method name="addOwner(Ljava/security/Principal;Ljava/security/Principal;)Z" />
+		<method name="deleteOwner(Ljava/security/Principal;Ljava/security/Principal;)Z" />
+		<method name="isOwner(Ljava/security/Principal;)Z" />
+	</class>
+	<class name="java/security/acl/Permission" since="1">
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/CRL" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="isRevoked(Ljava/security/cert/Certificate;)Z" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/CRLException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/cert/CRLSelector" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="match(Ljava/security/cert/CRL;)Z" />
+	</class>
+	<class name="java/security/cert/CertPath" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getCertificates()Ljava/util/List;" />
+		<method name="getEncoded()[B" />
+		<method name="getEncoded(Ljava/lang/String;)[B" />
+		<method name="getEncodings()Ljava/util/Iterator;" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="writeReplace()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/CertPath$CertPathRep" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;[B)V" />
+		<method name="readResolve()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/CertPathBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/cert/CertPathBuilderSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="build(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getDefaultType()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertPathBuilder;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+	</class>
+	<class name="java/security/cert/CertPathBuilderException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/cert/CertPathBuilderResult" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getCertPath()Ljava/security/cert/CertPath;" />
+	</class>
+	<class name="java/security/cert/CertPathBuilderSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineBuild(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;" />
+	</class>
+	<class name="java/security/cert/CertPathParameters" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/CertPathValidator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/cert/CertPathValidatorSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getDefaultType()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertPathValidator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertPathValidator;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;" />
+	</class>
+	<class name="java/security/cert/CertPathValidatorException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;Ljava/security/cert/CertPath;I)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="getCertPath()Ljava/security/cert/CertPath;" />
+		<method name="getIndex()I" />
+	</class>
+	<class name="java/security/cert/CertPathValidatorResult" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/CertPathValidatorSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;" />
+	</class>
+	<class name="java/security/cert/CertSelector" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="match(Ljava/security/cert/Certificate;)Z" />
+	</class>
+	<class name="java/security/cert/CertStore" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/cert/CertStoreSpi;Ljava/security/Provider;Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)V" />
+		<method name="getCRLs(Ljava/security/cert/CRLSelector;)Ljava/util/Collection;" />
+		<method name="getCertStoreParameters()Ljava/security/cert/CertStoreParameters;" />
+		<method name="getCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;" />
+		<method name="getDefaultType()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;Ljava/lang/String;)Ljava/security/cert/CertStore;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;Ljava/security/Provider;)Ljava/security/cert/CertStore;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getType()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/CertStoreException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/cert/CertStoreParameters" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/CertStoreSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/cert/CertStoreParameters;)V" />
+		<method name="engineGetCRLs(Ljava/security/cert/CRLSelector;)Ljava/util/Collection;" />
+		<method name="engineGetCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;" />
+	</class>
+	<class name="java/security/cert/Certificate" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getEncoded()[B" />
+		<method name="getPublicKey()Ljava/security/PublicKey;" />
+		<method name="getType()Ljava/lang/String;" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="verify(Ljava/security/PublicKey;)V" />
+		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
+		<method name="writeReplace()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/Certificate$CertificateRep" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;[B)V" />
+		<method name="readResolve()Ljava/lang/Object;" />
+	</class>
+	<class name="java/security/cert/CertificateEncodingException" since="1">
+		<extends name="java/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/cert/CertificateException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/cert/CertificateExpiredException" since="1">
+		<extends name="java/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/cert/CertificateFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/cert/CertificateFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="generateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL;" />
+		<method name="generateCRLs(Ljava/io/InputStream;)Ljava/util/Collection;" />
+		<method name="generateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;" />
+		<method name="generateCertPath(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/cert/CertPath;" />
+		<method name="generateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;" />
+		<method name="generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;" />
+		<method name="generateCertificates(Ljava/io/InputStream;)Ljava/util/Collection;" />
+		<method name="getCertPathEncodings()Ljava/util/Iterator;" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/cert/CertificateFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/cert/CertificateFactory;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getType()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/CertificateFactorySpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGenerateCRL(Ljava/io/InputStream;)Ljava/security/cert/CRL;" />
+		<method name="engineGenerateCRLs(Ljava/io/InputStream;)Ljava/util/Collection;" />
+		<method name="engineGenerateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;" />
+		<method name="engineGenerateCertPath(Ljava/io/InputStream;Ljava/lang/String;)Ljava/security/cert/CertPath;" />
+		<method name="engineGenerateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;" />
+		<method name="engineGenerateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;" />
+		<method name="engineGenerateCertificates(Ljava/io/InputStream;)Ljava/util/Collection;" />
+		<method name="engineGetCertPathEncodings()Ljava/util/Iterator;" />
+	</class>
+	<class name="java/security/cert/CertificateNotYetValidException" since="1">
+		<extends name="java/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/cert/CertificateParsingException" since="1">
+		<extends name="java/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/cert/CollectionCertStoreParameters" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/CertStoreParameters" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getCollection()Ljava/util/Collection;" />
+	</class>
+	<class name="java/security/cert/LDAPCertStoreParameters" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/CertStoreParameters" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getPort()I" />
+		<method name="getServerName()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/PKIXBuilderParameters" since="1">
+		<extends name="java/security/cert/PKIXParameters" />
+		<method name="&lt;init>(Ljava/security/KeyStore;Ljava/security/cert/CertSelector;)V" />
+		<method name="&lt;init>(Ljava/util/Set;Ljava/security/cert/CertSelector;)V" />
+		<method name="getMaxPathLength()I" />
+		<method name="setMaxPathLength(I)V" />
+	</class>
+	<class name="java/security/cert/PKIXCertPathBuilderResult" since="1">
+		<extends name="java/security/cert/PKIXCertPathValidatorResult" />
+		<implements name="java/security/cert/CertPathBuilderResult" />
+		<method name="&lt;init>(Ljava/security/cert/CertPath;Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V" />
+		<method name="getCertPath()Ljava/security/cert/CertPath;" />
+	</class>
+	<class name="java/security/cert/PKIXCertPathChecker" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getSupportedExtensions()Ljava/util/Set;" />
+		<method name="init(Z)V" />
+		<method name="isForwardCheckingSupported()Z" />
+	</class>
+	<class name="java/security/cert/PKIXCertPathValidatorResult" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/CertPathValidatorResult" />
+		<method name="&lt;init>(Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getPolicyTree()Ljava/security/cert/PolicyNode;" />
+		<method name="getPublicKey()Ljava/security/PublicKey;" />
+		<method name="getTrustAnchor()Ljava/security/cert/TrustAnchor;" />
+	</class>
+	<class name="java/security/cert/PKIXParameters" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/CertPathParameters" />
+		<method name="&lt;init>(Ljava/security/KeyStore;)V" />
+		<method name="&lt;init>(Ljava/util/Set;)V" />
+		<method name="addCertPathChecker(Ljava/security/cert/PKIXCertPathChecker;)V" />
+		<method name="addCertStore(Ljava/security/cert/CertStore;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getCertPathCheckers()Ljava/util/List;" />
+		<method name="getCertStores()Ljava/util/List;" />
+		<method name="getDate()Ljava/util/Date;" />
+		<method name="getInitialPolicies()Ljava/util/Set;" />
+		<method name="getPolicyQualifiersRejected()Z" />
+		<method name="getSigProvider()Ljava/lang/String;" />
+		<method name="getTargetCertConstraints()Ljava/security/cert/CertSelector;" />
+		<method name="getTrustAnchors()Ljava/util/Set;" />
+		<method name="isAnyPolicyInhibited()Z" />
+		<method name="isExplicitPolicyRequired()Z" />
+		<method name="isPolicyMappingInhibited()Z" />
+		<method name="isRevocationEnabled()Z" />
+		<method name="setAnyPolicyInhibited(Z)V" />
+		<method name="setCertPathCheckers(Ljava/util/List;)V" />
+		<method name="setCertStores(Ljava/util/List;)V" />
+		<method name="setDate(Ljava/util/Date;)V" />
+		<method name="setExplicitPolicyRequired(Z)V" />
+		<method name="setInitialPolicies(Ljava/util/Set;)V" />
+		<method name="setPolicyMappingInhibited(Z)V" />
+		<method name="setPolicyQualifiersRejected(Z)V" />
+		<method name="setRevocationEnabled(Z)V" />
+		<method name="setSigProvider(Ljava/lang/String;)V" />
+		<method name="setTargetCertConstraints(Ljava/security/cert/CertSelector;)V" />
+		<method name="setTrustAnchors(Ljava/util/Set;)V" />
+	</class>
+	<class name="java/security/cert/PolicyNode" since="1">
+		<method name="getChildren()Ljava/util/Iterator;" />
+		<method name="getDepth()I" />
+		<method name="getExpectedPolicies()Ljava/util/Set;" />
+		<method name="getParent()Ljava/security/cert/PolicyNode;" />
+		<method name="getPolicyQualifiers()Ljava/util/Set;" />
+		<method name="getValidPolicy()Ljava/lang/String;" />
+		<method name="isCritical()Z" />
+	</class>
+	<class name="java/security/cert/PolicyQualifierInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>([B)V" />
+		<method name="getEncoded()[B" />
+		<method name="getPolicyQualifier()[B" />
+		<method name="getPolicyQualifierId()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/TrustAnchor" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/security/PublicKey;[B)V" />
+		<method name="&lt;init>(Ljava/security/cert/X509Certificate;[B)V" />
+		<method name="&lt;init>(Ljavax/security/auth/x500/X500Principal;Ljava/security/PublicKey;[B)V" />
+		<method name="getCA()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getCAName()Ljava/lang/String;" />
+		<method name="getCAPublicKey()Ljava/security/PublicKey;" />
+		<method name="getNameConstraints()[B" />
+		<method name="getTrustedCert()Ljava/security/cert/X509Certificate;" />
+	</class>
+	<class name="java/security/cert/X509CRL" since="1">
+		<extends name="java/security/cert/CRL" />
+		<implements name="java/security/cert/X509Extension" />
+		<method name="&lt;init>()V" />
+		<method name="getEncoded()[B" />
+		<method name="getIssuerDN()Ljava/security/Principal;" />
+		<method name="getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getNextUpdate()Ljava/util/Date;" />
+		<method name="getRevokedCertificate(Ljava/math/BigInteger;)Ljava/security/cert/X509CRLEntry;" />
+		<method name="getRevokedCertificate(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509CRLEntry;" />
+		<method name="getRevokedCertificates()Ljava/util/Set;" />
+		<method name="getSigAlgName()Ljava/lang/String;" />
+		<method name="getSigAlgOID()Ljava/lang/String;" />
+		<method name="getSigAlgParams()[B" />
+		<method name="getSignature()[B" />
+		<method name="getTBSCertList()[B" />
+		<method name="getThisUpdate()Ljava/util/Date;" />
+		<method name="getVersion()I" />
+		<method name="verify(Ljava/security/PublicKey;)V" />
+		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/cert/X509CRLEntry" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/X509Extension" />
+		<method name="&lt;init>()V" />
+		<method name="getCertificateIssuer()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getEncoded()[B" />
+		<method name="getRevocationDate()Ljava/util/Date;" />
+		<method name="getSerialNumber()Ljava/math/BigInteger;" />
+		<method name="hasExtensions()Z" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/cert/X509CRLSelector" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/CRLSelector" />
+		<method name="&lt;init>()V" />
+		<method name="addIssuer(Ljavax/security/auth/x500/X500Principal;)V" />
+		<method name="addIssuerName(Ljava/lang/String;)V" />
+		<method name="addIssuerName([B)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getCertificateChecking()Ljava/security/cert/X509Certificate;" />
+		<method name="getDateAndTime()Ljava/util/Date;" />
+		<method name="getIssuerNames()Ljava/util/Collection;" />
+		<method name="getIssuers()Ljava/util/Collection;" />
+		<method name="getMaxCRL()Ljava/math/BigInteger;" />
+		<method name="getMinCRL()Ljava/math/BigInteger;" />
+		<method name="match(Ljava/security/cert/CRL;)Z" />
+		<method name="setCertificateChecking(Ljava/security/cert/X509Certificate;)V" />
+		<method name="setDateAndTime(Ljava/util/Date;)V" />
+		<method name="setIssuerNames(Ljava/util/Collection;)V" />
+		<method name="setIssuers(Ljava/util/Collection;)V" />
+		<method name="setMaxCRLNumber(Ljava/math/BigInteger;)V" />
+		<method name="setMinCRLNumber(Ljava/math/BigInteger;)V" />
+	</class>
+	<class name="java/security/cert/X509CertSelector" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/cert/CertSelector" />
+		<method name="&lt;init>()V" />
+		<method name="addPathToName(ILjava/lang/String;)V" />
+		<method name="addPathToName(I[B)V" />
+		<method name="addSubjectAlternativeName(ILjava/lang/String;)V" />
+		<method name="addSubjectAlternativeName(I[B)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getAuthorityKeyIdentifier()[B" />
+		<method name="getBasicConstraints()I" />
+		<method name="getCertificate()Ljava/security/cert/X509Certificate;" />
+		<method name="getCertificateValid()Ljava/util/Date;" />
+		<method name="getExtendedKeyUsage()Ljava/util/Set;" />
+		<method name="getIssuer()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getIssuerAsBytes()[B" />
+		<method name="getIssuerAsString()Ljava/lang/String;" />
+		<method name="getKeyUsage()[Z" />
+		<method name="getMatchAllSubjectAltNames()Z" />
+		<method name="getNameConstraints()[B" />
+		<method name="getPathToNames()Ljava/util/Collection;" />
+		<method name="getPolicy()Ljava/util/Set;" />
+		<method name="getPrivateKeyValid()Ljava/util/Date;" />
+		<method name="getSerialNumber()Ljava/math/BigInteger;" />
+		<method name="getSubject()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getSubjectAlternativeNames()Ljava/util/Collection;" />
+		<method name="getSubjectAsBytes()[B" />
+		<method name="getSubjectAsString()Ljava/lang/String;" />
+		<method name="getSubjectKeyIdentifier()[B" />
+		<method name="getSubjectPublicKey()Ljava/security/PublicKey;" />
+		<method name="getSubjectPublicKeyAlgID()Ljava/lang/String;" />
+		<method name="match(Ljava/security/cert/Certificate;)Z" />
+		<method name="setAuthorityKeyIdentifier([B)V" />
+		<method name="setBasicConstraints(I)V" />
+		<method name="setCertificate(Ljava/security/cert/X509Certificate;)V" />
+		<method name="setCertificateValid(Ljava/util/Date;)V" />
+		<method name="setExtendedKeyUsage(Ljava/util/Set;)V" />
+		<method name="setIssuer(Ljava/lang/String;)V" />
+		<method name="setIssuer(Ljavax/security/auth/x500/X500Principal;)V" />
+		<method name="setIssuer([B)V" />
+		<method name="setKeyUsage([Z)V" />
+		<method name="setMatchAllSubjectAltNames(Z)V" />
+		<method name="setNameConstraints([B)V" />
+		<method name="setPathToNames(Ljava/util/Collection;)V" />
+		<method name="setPolicy(Ljava/util/Set;)V" />
+		<method name="setPrivateKeyValid(Ljava/util/Date;)V" />
+		<method name="setSerialNumber(Ljava/math/BigInteger;)V" />
+		<method name="setSubject(Ljava/lang/String;)V" />
+		<method name="setSubject(Ljavax/security/auth/x500/X500Principal;)V" />
+		<method name="setSubject([B)V" />
+		<method name="setSubjectAlternativeNames(Ljava/util/Collection;)V" />
+		<method name="setSubjectKeyIdentifier([B)V" />
+		<method name="setSubjectPublicKey(Ljava/security/PublicKey;)V" />
+		<method name="setSubjectPublicKey([B)V" />
+		<method name="setSubjectPublicKeyAlgID(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/cert/X509Certificate" since="1">
+		<extends name="java/security/cert/Certificate" />
+		<implements name="java/security/cert/X509Extension" />
+		<method name="&lt;init>()V" />
+		<method name="checkValidity()V" />
+		<method name="checkValidity(Ljava/util/Date;)V" />
+		<method name="getBasicConstraints()I" />
+		<method name="getExtendedKeyUsage()Ljava/util/List;" />
+		<method name="getIssuerAlternativeNames()Ljava/util/Collection;" />
+		<method name="getIssuerDN()Ljava/security/Principal;" />
+		<method name="getIssuerUniqueID()[Z" />
+		<method name="getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getKeyUsage()[Z" />
+		<method name="getNotAfter()Ljava/util/Date;" />
+		<method name="getNotBefore()Ljava/util/Date;" />
+		<method name="getSerialNumber()Ljava/math/BigInteger;" />
+		<method name="getSigAlgName()Ljava/lang/String;" />
+		<method name="getSigAlgOID()Ljava/lang/String;" />
+		<method name="getSigAlgParams()[B" />
+		<method name="getSignature()[B" />
+		<method name="getSubjectAlternativeNames()Ljava/util/Collection;" />
+		<method name="getSubjectDN()Ljava/security/Principal;" />
+		<method name="getSubjectUniqueID()[Z" />
+		<method name="getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;" />
+		<method name="getTBSCertificate()[B" />
+		<method name="getVersion()I" />
+	</class>
+	<class name="java/security/cert/X509Extension" since="1">
+		<method name="getCriticalExtensionOIDs()Ljava/util/Set;" />
+		<method name="getExtensionValue(Ljava/lang/String;)[B" />
+		<method name="getNonCriticalExtensionOIDs()Ljava/util/Set;" />
+		<method name="hasUnsupportedCriticalExtension()Z" />
+	</class>
+	<class name="java/security/interfaces/DSAKey" since="1">
+		<method name="getParams()Ljava/security/interfaces/DSAParams;" />
+	</class>
+	<class name="java/security/interfaces/DSAKeyPairGenerator" since="1">
+		<method name="initialize(IZLjava/security/SecureRandom;)V" />
+		<method name="initialize(Ljava/security/interfaces/DSAParams;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="java/security/interfaces/DSAParams" since="1">
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getP()Ljava/math/BigInteger;" />
+		<method name="getQ()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/interfaces/DSAPrivateKey" since="1">
+		<implements name="java/security/interfaces/DSAKey" />
+		<implements name="java/security/PrivateKey" />
+		<method name="getX()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/DSAPublicKey" since="1">
+		<implements name="java/security/interfaces/DSAKey" />
+		<implements name="java/security/PublicKey" />
+		<method name="getY()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/ECKey" since="1">
+		<method name="getParams()Ljava/security/spec/ECParameterSpec;" />
+	</class>
+	<class name="java/security/interfaces/ECPrivateKey" since="1">
+		<implements name="java/security/interfaces/ECKey" />
+		<implements name="java/security/PrivateKey" />
+		<method name="getS()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/ECPublicKey" since="1">
+		<implements name="java/security/interfaces/ECKey" />
+		<implements name="java/security/PublicKey" />
+		<method name="getW()Ljava/security/spec/ECPoint;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/RSAKey" since="1">
+		<method name="getModulus()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/interfaces/RSAMultiPrimePrivateCrtKey" since="1">
+		<implements name="java/security/interfaces/RSAPrivateKey" />
+		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
+		<method name="getOtherPrimeInfo()[Ljava/security/spec/RSAOtherPrimeInfo;" />
+		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
+		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
+		<method name="getPrimeP()Ljava/math/BigInteger;" />
+		<method name="getPrimeQ()Ljava/math/BigInteger;" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/RSAPrivateCrtKey" since="1">
+		<implements name="java/security/interfaces/RSAPrivateKey" />
+		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
+		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
+		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
+		<method name="getPrimeP()Ljava/math/BigInteger;" />
+		<method name="getPrimeQ()Ljava/math/BigInteger;" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/RSAPrivateKey" since="1">
+		<implements name="java/security/PrivateKey" />
+		<implements name="java/security/interfaces/RSAKey" />
+		<method name="getPrivateExponent()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/interfaces/RSAPublicKey" since="1">
+		<implements name="java/security/PublicKey" />
+		<implements name="java/security/interfaces/RSAKey" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="java/security/spec/AlgorithmParameterSpec" since="1">
+	</class>
+	<class name="java/security/spec/DSAParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<implements name="java/security/interfaces/DSAParams" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getP()Ljava/math/BigInteger;" />
+		<method name="getQ()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/DSAPrivateKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getP()Ljava/math/BigInteger;" />
+		<method name="getQ()Ljava/math/BigInteger;" />
+		<method name="getX()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/DSAPublicKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getP()Ljava/math/BigInteger;" />
+		<method name="getQ()Ljava/math/BigInteger;" />
+		<method name="getY()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/ECField" since="1">
+		<method name="getFieldSize()I" />
+	</class>
+	<class name="java/security/spec/ECFieldF2m" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/ECField" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/math/BigInteger;)V" />
+		<method name="&lt;init>(I[I)V" />
+		<method name="getFieldSize()I" />
+		<method name="getM()I" />
+		<method name="getMidTermsOfReductionPolynomial()[I" />
+		<method name="getReductionPolynomial()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/ECFieldFp" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/ECField" />
+		<method name="&lt;init>(Ljava/math/BigInteger;)V" />
+		<method name="getFieldSize()I" />
+		<method name="getP()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/ECGenParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getName()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/spec/ECParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(Ljava/security/spec/EllipticCurve;Ljava/security/spec/ECPoint;Ljava/math/BigInteger;I)V" />
+		<method name="getCofactor()I" />
+		<method name="getCurve()Ljava/security/spec/EllipticCurve;" />
+		<method name="getGenerator()Ljava/security/spec/ECPoint;" />
+		<method name="getOrder()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/ECPoint" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getAffineX()Ljava/math/BigInteger;" />
+		<method name="getAffineY()Ljava/math/BigInteger;" />
+		<field name="POINT_INFINITY" />
+	</class>
+	<class name="java/security/spec/ECPrivateKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/security/spec/ECParameterSpec;)V" />
+		<method name="getParams()Ljava/security/spec/ECParameterSpec;" />
+		<method name="getS()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/ECPublicKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V" />
+		<method name="getParams()Ljava/security/spec/ECParameterSpec;" />
+		<method name="getW()Ljava/security/spec/ECPoint;" />
+	</class>
+	<class name="java/security/spec/EllipticCurve" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="&lt;init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V" />
+		<method name="getA()Ljava/math/BigInteger;" />
+		<method name="getB()Ljava/math/BigInteger;" />
+		<method name="getField()Ljava/security/spec/ECField;" />
+		<method name="getSeed()[B" />
+	</class>
+	<class name="java/security/spec/EncodedKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>([B)V" />
+		<method name="getEncoded()[B" />
+		<method name="getFormat()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/spec/InvalidKeySpecException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/security/spec/InvalidParameterSpecException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/security/spec/KeySpec" since="1">
+	</class>
+	<class name="java/security/spec/MGF1ParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getDigestAlgorithm()Ljava/lang/String;" />
+		<field name="SHA1" />
+		<field name="SHA256" />
+		<field name="SHA384" />
+		<field name="SHA512" />
+	</class>
+	<class name="java/security/spec/PKCS8EncodedKeySpec" since="1">
+		<extends name="java/security/spec/EncodedKeySpec" />
+		<method name="&lt;init>([B)V" />
+		<method name="getFormat()Ljava/lang/String;" />
+	</class>
+	<class name="java/security/spec/PSSParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;II)V" />
+		<method name="getDigestAlgorithm()Ljava/lang/String;" />
+		<method name="getMGFAlgorithm()Ljava/lang/String;" />
+		<method name="getMGFParameters()Ljava/security/spec/AlgorithmParameterSpec;" />
+		<method name="getSaltLength()I" />
+		<method name="getTrailerField()I" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="java/security/spec/RSAKeyGenParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(ILjava/math/BigInteger;)V" />
+		<method name="getKeysize()I" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+		<field name="F0" />
+		<field name="F4" />
+	</class>
+	<class name="java/security/spec/RSAMultiPrimePrivateCrtKeySpec" since="1">
+		<extends name="java/security/spec/RSAPrivateKeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;[Ljava/security/spec/RSAOtherPrimeInfo;)V" />
+		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
+		<method name="getOtherPrimeInfo()[Ljava/security/spec/RSAOtherPrimeInfo;" />
+		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
+		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
+		<method name="getPrimeP()Ljava/math/BigInteger;" />
+		<method name="getPrimeQ()Ljava/math/BigInteger;" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/RSAOtherPrimeInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
+		<method name="getExponent()Ljava/math/BigInteger;" />
+		<method name="getPrime()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/RSAPrivateCrtKeySpec" since="1">
+		<extends name="java/security/spec/RSAPrivateKeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getCrtCoefficient()Ljava/math/BigInteger;" />
+		<method name="getPrimeExponentP()Ljava/math/BigInteger;" />
+		<method name="getPrimeExponentQ()Ljava/math/BigInteger;" />
+		<method name="getPrimeP()Ljava/math/BigInteger;" />
+		<method name="getPrimeQ()Ljava/math/BigInteger;" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/RSAPrivateKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getModulus()Ljava/math/BigInteger;" />
+		<method name="getPrivateExponent()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/RSAPublicKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getModulus()Ljava/math/BigInteger;" />
+		<method name="getPublicExponent()Ljava/math/BigInteger;" />
+	</class>
+	<class name="java/security/spec/X509EncodedKeySpec" since="1">
+		<extends name="java/security/spec/EncodedKeySpec" />
+		<method name="&lt;init>([B)V" />
+		<method name="getFormat()Ljava/lang/String;" />
+	</class>
+	<class name="java/sql/Array" since="1">
+		<method name="free()V" since="9" />
+		<method name="getArray()Ljava/lang/Object;" />
+		<method name="getArray(JI)Ljava/lang/Object;" />
+		<method name="getArray(JILjava/util/Map;)Ljava/lang/Object;" />
+		<method name="getArray(Ljava/util/Map;)Ljava/lang/Object;" />
+		<method name="getBaseType()I" />
+		<method name="getBaseTypeName()Ljava/lang/String;" />
+		<method name="getResultSet()Ljava/sql/ResultSet;" />
+		<method name="getResultSet(JI)Ljava/sql/ResultSet;" />
+		<method name="getResultSet(JILjava/util/Map;)Ljava/sql/ResultSet;" />
+		<method name="getResultSet(Ljava/util/Map;)Ljava/sql/ResultSet;" />
+	</class>
+	<class name="java/sql/BatchUpdateException" since="1">
+		<extends name="java/sql/SQLException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I[I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I[ILjava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;[ILjava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;[I)V" />
+		<method name="&lt;init>(Ljava/lang/String;[ILjava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>([I)V" />
+		<method name="&lt;init>([ILjava/lang/Throwable;)V" since="9" />
+		<method name="getUpdateCounts()[I" />
+	</class>
+	<class name="java/sql/Blob" since="1">
+		<method name="free()V" since="9" />
+		<method name="getBinaryStream()Ljava/io/InputStream;" />
+		<method name="getBinaryStream(JJ)Ljava/io/InputStream;" since="9" />
+		<method name="getBytes(JI)[B" />
+		<method name="length()J" />
+		<method name="position(Ljava/sql/Blob;J)J" />
+		<method name="position([BJ)J" />
+		<method name="setBinaryStream(J)Ljava/io/OutputStream;" />
+		<method name="setBytes(J[B)I" />
+		<method name="setBytes(J[BII)I" />
+		<method name="truncate(J)V" />
+	</class>
+	<class name="java/sql/CallableStatement" since="1">
+		<implements name="java/sql/PreparedStatement" />
+		<method name="getArray(I)Ljava/sql/Array;" />
+		<method name="getArray(Ljava/lang/String;)Ljava/sql/Array;" />
+		<method name="getBigDecimal(I)Ljava/math/BigDecimal;" />
+		<method name="getBigDecimal(II)Ljava/math/BigDecimal;" />
+		<method name="getBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal;" />
+		<method name="getBlob(I)Ljava/sql/Blob;" />
+		<method name="getBlob(Ljava/lang/String;)Ljava/sql/Blob;" />
+		<method name="getBoolean(I)Z" />
+		<method name="getBoolean(Ljava/lang/String;)Z" />
+		<method name="getByte(I)B" />
+		<method name="getByte(Ljava/lang/String;)B" />
+		<method name="getBytes(I)[B" />
+		<method name="getBytes(Ljava/lang/String;)[B" />
+		<method name="getCharacterStream(I)Ljava/io/Reader;" since="9" />
+		<method name="getCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9" />
+		<method name="getClob(I)Ljava/sql/Clob;" />
+		<method name="getClob(Ljava/lang/String;)Ljava/sql/Clob;" />
+		<method name="getDate(I)Ljava/sql/Date;" />
+		<method name="getDate(ILjava/util/Calendar;)Ljava/sql/Date;" />
+		<method name="getDate(Ljava/lang/String;)Ljava/sql/Date;" />
+		<method name="getDate(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Date;" />
+		<method name="getDouble(I)D" />
+		<method name="getDouble(Ljava/lang/String;)D" />
+		<method name="getFloat(I)F" />
+		<method name="getFloat(Ljava/lang/String;)F" />
+		<method name="getInt(I)I" />
+		<method name="getInt(Ljava/lang/String;)I" />
+		<method name="getLong(I)J" />
+		<method name="getLong(Ljava/lang/String;)J" />
+		<method name="getNCharacterStream(I)Ljava/io/Reader;" since="9" />
+		<method name="getNCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9" />
+		<method name="getNClob(I)Ljava/sql/NClob;" since="9" />
+		<method name="getNClob(Ljava/lang/String;)Ljava/sql/NClob;" since="9" />
+		<method name="getNString(I)Ljava/lang/String;" since="9" />
+		<method name="getNString(Ljava/lang/String;)Ljava/lang/String;" since="9" />
+		<method name="getObject(I)Ljava/lang/Object;" />
+		<method name="getObject(ILjava/util/Map;)Ljava/lang/Object;" />
+		<method name="getObject(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getObject(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;" />
+		<method name="getRef(I)Ljava/sql/Ref;" />
+		<method name="getRef(Ljava/lang/String;)Ljava/sql/Ref;" />
+		<method name="getRowId(I)Ljava/sql/RowId;" since="9" />
+		<method name="getRowId(Ljava/lang/String;)Ljava/sql/RowId;" since="9" />
+		<method name="getSQLXML(I)Ljava/sql/SQLXML;" since="9" />
+		<method name="getSQLXML(Ljava/lang/String;)Ljava/sql/SQLXML;" since="9" />
+		<method name="getShort(I)S" />
+		<method name="getShort(Ljava/lang/String;)S" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getTime(I)Ljava/sql/Time;" />
+		<method name="getTime(ILjava/util/Calendar;)Ljava/sql/Time;" />
+		<method name="getTime(Ljava/lang/String;)Ljava/sql/Time;" />
+		<method name="getTime(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Time;" />
+		<method name="getTimestamp(I)Ljava/sql/Timestamp;" />
+		<method name="getTimestamp(ILjava/util/Calendar;)Ljava/sql/Timestamp;" />
+		<method name="getTimestamp(Ljava/lang/String;)Ljava/sql/Timestamp;" />
+		<method name="getTimestamp(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Timestamp;" />
+		<method name="getURL(I)Ljava/net/URL;" />
+		<method name="getURL(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="registerOutParameter(II)V" />
+		<method name="registerOutParameter(III)V" />
+		<method name="registerOutParameter(IILjava/lang/String;)V" />
+		<method name="registerOutParameter(Ljava/lang/String;I)V" />
+		<method name="registerOutParameter(Ljava/lang/String;II)V" />
+		<method name="registerOutParameter(Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
+		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="setBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" />
+		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
+		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="setBlob(Ljava/lang/String;Ljava/sql/Blob;)V" since="9" />
+		<method name="setBoolean(Ljava/lang/String;Z)V" />
+		<method name="setByte(Ljava/lang/String;B)V" />
+		<method name="setBytes(Ljava/lang/String;[B)V" />
+		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" />
+		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setClob(Ljava/lang/String;Ljava/sql/Clob;)V" since="9" />
+		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;)V" />
+		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;Ljava/util/Calendar;)V" />
+		<method name="setDouble(Ljava/lang/String;D)V" />
+		<method name="setFloat(Ljava/lang/String;F)V" />
+		<method name="setInt(Ljava/lang/String;I)V" />
+		<method name="setLong(Ljava/lang/String;J)V" />
+		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9" />
+		<method name="setNString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
+		<method name="setNull(Ljava/lang/String;I)V" />
+		<method name="setNull(Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;I)V" />
+		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;II)V" />
+		<method name="setRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9" />
+		<method name="setSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9" />
+		<method name="setShort(Ljava/lang/String;S)V" />
+		<method name="setString(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;)V" />
+		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;Ljava/util/Calendar;)V" />
+		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" />
+		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;Ljava/util/Calendar;)V" />
+		<method name="setURL(Ljava/lang/String;Ljava/net/URL;)V" />
+		<method name="wasNull()Z" />
+	</class>
+	<class name="java/sql/ClientInfoStatus" since="9">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/sql/ClientInfoStatus;" />
+		<method name="values()[Ljava/sql/ClientInfoStatus;" />
+		<field name="REASON_UNKNOWN" />
+		<field name="REASON_UNKNOWN_PROPERTY" />
+		<field name="REASON_VALUE_INVALID" />
+		<field name="REASON_VALUE_TRUNCATED" />
+	</class>
+	<class name="java/sql/Clob" since="1">
+		<method name="free()V" since="9" />
+		<method name="getAsciiStream()Ljava/io/InputStream;" />
+		<method name="getCharacterStream()Ljava/io/Reader;" />
+		<method name="getCharacterStream(JJ)Ljava/io/Reader;" since="9" />
+		<method name="getSubString(JI)Ljava/lang/String;" />
+		<method name="length()J" />
+		<method name="position(Ljava/lang/String;J)J" />
+		<method name="position(Ljava/sql/Clob;J)J" />
+		<method name="setAsciiStream(J)Ljava/io/OutputStream;" />
+		<method name="setCharacterStream(J)Ljava/io/Writer;" />
+		<method name="setString(JLjava/lang/String;)I" />
+		<method name="setString(JLjava/lang/String;II)I" />
+		<method name="truncate(J)V" />
+	</class>
+	<class name="java/sql/Connection" since="1">
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="clearWarnings()V" />
+		<method name="close()V" />
+		<method name="commit()V" />
+		<method name="createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;" since="9" />
+		<method name="createBlob()Ljava/sql/Blob;" since="9" />
+		<method name="createClob()Ljava/sql/Clob;" since="9" />
+		<method name="createNClob()Ljava/sql/NClob;" since="9" />
+		<method name="createSQLXML()Ljava/sql/SQLXML;" since="9" />
+		<method name="createStatement()Ljava/sql/Statement;" />
+		<method name="createStatement(II)Ljava/sql/Statement;" />
+		<method name="createStatement(III)Ljava/sql/Statement;" />
+		<method name="createStruct(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Struct;" since="9" />
+		<method name="getAutoCommit()Z" />
+		<method name="getCatalog()Ljava/lang/String;" />
+		<method name="getClientInfo()Ljava/util/Properties;" since="9" />
+		<method name="getClientInfo(Ljava/lang/String;)Ljava/lang/String;" since="9" />
+		<method name="getHoldability()I" />
+		<method name="getMetaData()Ljava/sql/DatabaseMetaData;" />
+		<method name="getTransactionIsolation()I" />
+		<method name="getTypeMap()Ljava/util/Map;" />
+		<method name="getWarnings()Ljava/sql/SQLWarning;" />
+		<method name="isClosed()Z" />
+		<method name="isReadOnly()Z" />
+		<method name="isValid(I)Z" since="9" />
+		<method name="nativeSQL(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="prepareCall(Ljava/lang/String;)Ljava/sql/CallableStatement;" />
+		<method name="prepareCall(Ljava/lang/String;II)Ljava/sql/CallableStatement;" />
+		<method name="prepareCall(Ljava/lang/String;III)Ljava/sql/CallableStatement;" />
+		<method name="prepareStatement(Ljava/lang/String;)Ljava/sql/PreparedStatement;" />
+		<method name="prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;" />
+		<method name="prepareStatement(Ljava/lang/String;II)Ljava/sql/PreparedStatement;" />
+		<method name="prepareStatement(Ljava/lang/String;III)Ljava/sql/PreparedStatement;" />
+		<method name="prepareStatement(Ljava/lang/String;[I)Ljava/sql/PreparedStatement;" />
+		<method name="prepareStatement(Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/PreparedStatement;" />
+		<method name="releaseSavepoint(Ljava/sql/Savepoint;)V" />
+		<method name="rollback()V" />
+		<method name="rollback(Ljava/sql/Savepoint;)V" />
+		<method name="setAutoCommit(Z)V" />
+		<method name="setCatalog(Ljava/lang/String;)V" />
+		<method name="setClientInfo(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
+		<method name="setClientInfo(Ljava/util/Properties;)V" since="9" />
+		<method name="setHoldability(I)V" />
+		<method name="setReadOnly(Z)V" />
+		<method name="setSavepoint()Ljava/sql/Savepoint;" />
+		<method name="setSavepoint(Ljava/lang/String;)Ljava/sql/Savepoint;" />
+		<method name="setTransactionIsolation(I)V" />
+		<method name="setTypeMap(Ljava/util/Map;)V" />
+		<field name="TRANSACTION_NONE" />
+		<field name="TRANSACTION_READ_COMMITTED" />
+		<field name="TRANSACTION_READ_UNCOMMITTED" />
+		<field name="TRANSACTION_REPEATABLE_READ" />
+		<field name="TRANSACTION_SERIALIZABLE" />
+	</class>
+	<class name="java/sql/DataTruncation" since="1">
+		<extends name="java/sql/SQLWarning" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(IZZII)V" />
+		<method name="&lt;init>(IZZIILjava/lang/Throwable;)V" since="9" />
+		<method name="getDataSize()I" />
+		<method name="getIndex()I" />
+		<method name="getParameter()Z" />
+		<method name="getRead()Z" />
+		<method name="getTransferSize()I" />
+	</class>
+	<class name="java/sql/DatabaseMetaData" since="1">
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="allProceduresAreCallable()Z" />
+		<method name="allTablesAreSelectable()Z" />
+		<method name="autoCommitFailureClosesAllResultSets()Z" since="9" />
+		<method name="dataDefinitionCausesTransactionCommit()Z" />
+		<method name="dataDefinitionIgnoredInTransactions()Z" />
+		<method name="deletesAreDetected(I)Z" />
+		<method name="doesMaxRowSizeIncludeBlobs()Z" />
+		<method name="getAttributes(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getBestRowIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/sql/ResultSet;" />
+		<method name="getCatalogSeparator()Ljava/lang/String;" />
+		<method name="getCatalogTerm()Ljava/lang/String;" />
+		<method name="getCatalogs()Ljava/sql/ResultSet;" />
+		<method name="getClientInfoProperties()Ljava/sql/ResultSet;" since="9" />
+		<method name="getColumnPrivileges(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getConnection()Ljava/sql/Connection;" />
+		<method name="getCrossReference(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getDatabaseMajorVersion()I" />
+		<method name="getDatabaseMinorVersion()I" />
+		<method name="getDatabaseProductName()Ljava/lang/String;" />
+		<method name="getDatabaseProductVersion()Ljava/lang/String;" />
+		<method name="getDefaultTransactionIsolation()I" />
+		<method name="getDriverMajorVersion()I" />
+		<method name="getDriverMinorVersion()I" />
+		<method name="getDriverName()Ljava/lang/String;" />
+		<method name="getDriverVersion()Ljava/lang/String;" />
+		<method name="getExportedKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getExtraNameCharacters()Ljava/lang/String;" />
+		<method name="getFunctionColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9" />
+		<method name="getFunctions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9" />
+		<method name="getIdentifierQuoteString()Ljava/lang/String;" />
+		<method name="getImportedKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getIndexInfo(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Ljava/sql/ResultSet;" />
+		<method name="getJDBCMajorVersion()I" />
+		<method name="getJDBCMinorVersion()I" />
+		<method name="getMaxBinaryLiteralLength()I" />
+		<method name="getMaxCatalogNameLength()I" />
+		<method name="getMaxCharLiteralLength()I" />
+		<method name="getMaxColumnNameLength()I" />
+		<method name="getMaxColumnsInGroupBy()I" />
+		<method name="getMaxColumnsInIndex()I" />
+		<method name="getMaxColumnsInOrderBy()I" />
+		<method name="getMaxColumnsInSelect()I" />
+		<method name="getMaxColumnsInTable()I" />
+		<method name="getMaxConnections()I" />
+		<method name="getMaxCursorNameLength()I" />
+		<method name="getMaxIndexLength()I" />
+		<method name="getMaxProcedureNameLength()I" />
+		<method name="getMaxRowSize()I" />
+		<method name="getMaxSchemaNameLength()I" />
+		<method name="getMaxStatementLength()I" />
+		<method name="getMaxStatements()I" />
+		<method name="getMaxTableNameLength()I" />
+		<method name="getMaxTablesInSelect()I" />
+		<method name="getMaxUserNameLength()I" />
+		<method name="getNumericFunctions()Ljava/lang/String;" />
+		<method name="getPrimaryKeys(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getProcedureColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getProcedureTerm()Ljava/lang/String;" />
+		<method name="getProcedures(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getResultSetHoldability()I" />
+		<method name="getRowIdLifetime()Ljava/sql/RowIdLifetime;" since="9" />
+		<method name="getSQLKeywords()Ljava/lang/String;" />
+		<method name="getSQLStateType()I" />
+		<method name="getSchemaTerm()Ljava/lang/String;" />
+		<method name="getSchemas()Ljava/sql/ResultSet;" />
+		<method name="getSchemas(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" since="9" />
+		<method name="getSearchStringEscape()Ljava/lang/String;" />
+		<method name="getStringFunctions()Ljava/lang/String;" />
+		<method name="getSuperTables(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getSuperTypes(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getSystemFunctions()Ljava/lang/String;" />
+		<method name="getTablePrivileges(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getTableTypes()Ljava/sql/ResultSet;" />
+		<method name="getTables(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="getTimeDateFunctions()Ljava/lang/String;" />
+		<method name="getTypeInfo()Ljava/sql/ResultSet;" />
+		<method name="getUDTs(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[I)Ljava/sql/ResultSet;" />
+		<method name="getURL()Ljava/lang/String;" />
+		<method name="getUserName()Ljava/lang/String;" />
+		<method name="getVersionColumns(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="insertsAreDetected(I)Z" />
+		<method name="isCatalogAtStart()Z" />
+		<method name="isReadOnly()Z" />
+		<method name="locatorsUpdateCopy()Z" />
+		<method name="nullPlusNonNullIsNull()Z" />
+		<method name="nullsAreSortedAtEnd()Z" />
+		<method name="nullsAreSortedAtStart()Z" />
+		<method name="nullsAreSortedHigh()Z" />
+		<method name="nullsAreSortedLow()Z" />
+		<method name="othersDeletesAreVisible(I)Z" />
+		<method name="othersInsertsAreVisible(I)Z" />
+		<method name="othersUpdatesAreVisible(I)Z" />
+		<method name="ownDeletesAreVisible(I)Z" />
+		<method name="ownInsertsAreVisible(I)Z" />
+		<method name="ownUpdatesAreVisible(I)Z" />
+		<method name="storesLowerCaseIdentifiers()Z" />
+		<method name="storesLowerCaseQuotedIdentifiers()Z" />
+		<method name="storesMixedCaseIdentifiers()Z" />
+		<method name="storesMixedCaseQuotedIdentifiers()Z" />
+		<method name="storesUpperCaseIdentifiers()Z" />
+		<method name="storesUpperCaseQuotedIdentifiers()Z" />
+		<method name="supportsANSI92EntryLevelSQL()Z" />
+		<method name="supportsANSI92FullSQL()Z" />
+		<method name="supportsANSI92IntermediateSQL()Z" />
+		<method name="supportsAlterTableWithAddColumn()Z" />
+		<method name="supportsAlterTableWithDropColumn()Z" />
+		<method name="supportsBatchUpdates()Z" />
+		<method name="supportsCatalogsInDataManipulation()Z" />
+		<method name="supportsCatalogsInIndexDefinitions()Z" />
+		<method name="supportsCatalogsInPrivilegeDefinitions()Z" />
+		<method name="supportsCatalogsInProcedureCalls()Z" />
+		<method name="supportsCatalogsInTableDefinitions()Z" />
+		<method name="supportsColumnAliasing()Z" />
+		<method name="supportsConvert()Z" />
+		<method name="supportsConvert(II)Z" />
+		<method name="supportsCoreSQLGrammar()Z" />
+		<method name="supportsCorrelatedSubqueries()Z" />
+		<method name="supportsDataDefinitionAndDataManipulationTransactions()Z" />
+		<method name="supportsDataManipulationTransactionsOnly()Z" />
+		<method name="supportsDifferentTableCorrelationNames()Z" />
+		<method name="supportsExpressionsInOrderBy()Z" />
+		<method name="supportsExtendedSQLGrammar()Z" />
+		<method name="supportsFullOuterJoins()Z" />
+		<method name="supportsGetGeneratedKeys()Z" />
+		<method name="supportsGroupBy()Z" />
+		<method name="supportsGroupByBeyondSelect()Z" />
+		<method name="supportsGroupByUnrelated()Z" />
+		<method name="supportsIntegrityEnhancementFacility()Z" />
+		<method name="supportsLikeEscapeClause()Z" />
+		<method name="supportsLimitedOuterJoins()Z" />
+		<method name="supportsMinimumSQLGrammar()Z" />
+		<method name="supportsMixedCaseIdentifiers()Z" />
+		<method name="supportsMixedCaseQuotedIdentifiers()Z" />
+		<method name="supportsMultipleOpenResults()Z" />
+		<method name="supportsMultipleResultSets()Z" />
+		<method name="supportsMultipleTransactions()Z" />
+		<method name="supportsNamedParameters()Z" />
+		<method name="supportsNonNullableColumns()Z" />
+		<method name="supportsOpenCursorsAcrossCommit()Z" />
+		<method name="supportsOpenCursorsAcrossRollback()Z" />
+		<method name="supportsOpenStatementsAcrossCommit()Z" />
+		<method name="supportsOpenStatementsAcrossRollback()Z" />
+		<method name="supportsOrderByUnrelated()Z" />
+		<method name="supportsOuterJoins()Z" />
+		<method name="supportsPositionedDelete()Z" />
+		<method name="supportsPositionedUpdate()Z" />
+		<method name="supportsResultSetConcurrency(II)Z" />
+		<method name="supportsResultSetHoldability(I)Z" />
+		<method name="supportsResultSetType(I)Z" />
+		<method name="supportsSavepoints()Z" />
+		<method name="supportsSchemasInDataManipulation()Z" />
+		<method name="supportsSchemasInIndexDefinitions()Z" />
+		<method name="supportsSchemasInPrivilegeDefinitions()Z" />
+		<method name="supportsSchemasInProcedureCalls()Z" />
+		<method name="supportsSchemasInTableDefinitions()Z" />
+		<method name="supportsSelectForUpdate()Z" />
+		<method name="supportsStatementPooling()Z" />
+		<method name="supportsStoredFunctionsUsingCallSyntax()Z" since="9" />
+		<method name="supportsStoredProcedures()Z" />
+		<method name="supportsSubqueriesInComparisons()Z" />
+		<method name="supportsSubqueriesInExists()Z" />
+		<method name="supportsSubqueriesInIns()Z" />
+		<method name="supportsSubqueriesInQuantifieds()Z" />
+		<method name="supportsTableCorrelationNames()Z" />
+		<method name="supportsTransactionIsolationLevel(I)Z" />
+		<method name="supportsTransactions()Z" />
+		<method name="supportsUnion()Z" />
+		<method name="supportsUnionAll()Z" />
+		<method name="updatesAreDetected(I)Z" />
+		<method name="usesLocalFilePerTable()Z" />
+		<method name="usesLocalFiles()Z" />
+		<field name="attributeNoNulls" />
+		<field name="attributeNullable" />
+		<field name="attributeNullableUnknown" />
+		<field name="bestRowNotPseudo" />
+		<field name="bestRowPseudo" />
+		<field name="bestRowSession" />
+		<field name="bestRowTemporary" />
+		<field name="bestRowTransaction" />
+		<field name="bestRowUnknown" />
+		<field name="columnNoNulls" />
+		<field name="columnNullable" />
+		<field name="columnNullableUnknown" />
+		<field name="functionColumnIn" since="9" />
+		<field name="functionColumnInOut" since="9" />
+		<field name="functionColumnOut" since="9" />
+		<field name="functionColumnResult" since="9" />
+		<field name="functionColumnUnknown" since="9" />
+		<field name="functionNoNulls" since="9" />
+		<field name="functionNoTable" since="9" />
+		<field name="functionNullable" since="9" />
+		<field name="functionNullableUnknown" since="9" />
+		<field name="functionResultUnknown" since="9" />
+		<field name="functionReturn" since="9" />
+		<field name="functionReturnsTable" since="9" />
+		<field name="importedKeyCascade" />
+		<field name="importedKeyInitiallyDeferred" />
+		<field name="importedKeyInitiallyImmediate" />
+		<field name="importedKeyNoAction" />
+		<field name="importedKeyNotDeferrable" />
+		<field name="importedKeyRestrict" />
+		<field name="importedKeySetDefault" />
+		<field name="importedKeySetNull" />
+		<field name="procedureColumnIn" />
+		<field name="procedureColumnInOut" />
+		<field name="procedureColumnOut" />
+		<field name="procedureColumnResult" />
+		<field name="procedureColumnReturn" />
+		<field name="procedureColumnUnknown" />
+		<field name="procedureNoNulls" />
+		<field name="procedureNoResult" />
+		<field name="procedureNullable" />
+		<field name="procedureNullableUnknown" />
+		<field name="procedureResultUnknown" />
+		<field name="procedureReturnsResult" />
+		<field name="sqlStateSQL" since="9" />
+		<field name="sqlStateSQL99" />
+		<field name="sqlStateXOpen" />
+		<field name="tableIndexClustered" />
+		<field name="tableIndexHashed" />
+		<field name="tableIndexOther" />
+		<field name="tableIndexStatistic" />
+		<field name="typeNoNulls" />
+		<field name="typeNullable" />
+		<field name="typeNullableUnknown" />
+		<field name="typePredBasic" />
+		<field name="typePredChar" />
+		<field name="typePredNone" />
+		<field name="typeSearchable" />
+		<field name="versionColumnNotPseudo" />
+		<field name="versionColumnPseudo" />
+		<field name="versionColumnUnknown" />
+	</class>
+	<class name="java/sql/Date" since="1">
+		<extends name="java/util/Date" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(J)V" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/sql/Date;" />
+	</class>
+	<class name="java/sql/Driver" since="1">
+		<method name="acceptsURL(Ljava/lang/String;)Z" />
+		<method name="connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;" />
+		<method name="getMajorVersion()I" />
+		<method name="getMinorVersion()I" />
+		<method name="getPropertyInfo(Ljava/lang/String;Ljava/util/Properties;)[Ljava/sql/DriverPropertyInfo;" />
+		<method name="jdbcCompliant()Z" />
+	</class>
+	<class name="java/sql/DriverManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="deregisterDriver(Ljava/sql/Driver;)V" />
+		<method name="getConnection(Ljava/lang/String;)Ljava/sql/Connection;" />
+		<method name="getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;" />
+		<method name="getConnection(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;" />
+		<method name="getDriver(Ljava/lang/String;)Ljava/sql/Driver;" />
+		<method name="getDrivers()Ljava/util/Enumeration;" />
+		<method name="getLogStream()Ljava/io/PrintStream;" />
+		<method name="getLogWriter()Ljava/io/PrintWriter;" />
+		<method name="getLoginTimeout()I" />
+		<method name="println(Ljava/lang/String;)V" />
+		<method name="registerDriver(Ljava/sql/Driver;)V" />
+		<method name="setLogStream(Ljava/io/PrintStream;)V" />
+		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
+		<method name="setLoginTimeout(I)V" />
+	</class>
+	<class name="java/sql/DriverPropertyInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="choices" />
+		<field name="description" />
+		<field name="name" />
+		<field name="required" />
+		<field name="value" />
+	</class>
+	<class name="java/sql/NClob" since="9">
+		<implements name="java/sql/Clob" />
+	</class>
+	<class name="java/sql/ParameterMetaData" since="1">
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="getParameterClassName(I)Ljava/lang/String;" />
+		<method name="getParameterCount()I" />
+		<method name="getParameterMode(I)I" />
+		<method name="getParameterType(I)I" />
+		<method name="getParameterTypeName(I)Ljava/lang/String;" />
+		<method name="getPrecision(I)I" />
+		<method name="getScale(I)I" />
+		<method name="isNullable(I)I" />
+		<method name="isSigned(I)Z" />
+		<field name="parameterModeIn" />
+		<field name="parameterModeInOut" />
+		<field name="parameterModeOut" />
+		<field name="parameterModeUnknown" />
+		<field name="parameterNoNulls" />
+		<field name="parameterNullable" />
+		<field name="parameterNullableUnknown" />
+	</class>
+	<class name="java/sql/PreparedStatement" since="1">
+		<implements name="java/sql/Statement" />
+		<method name="addBatch()V" />
+		<method name="clearParameters()V" />
+		<method name="execute()Z" />
+		<method name="executeQuery()Ljava/sql/ResultSet;" />
+		<method name="executeUpdate()I" />
+		<method name="getMetaData()Ljava/sql/ResultSetMetaData;" />
+		<method name="getParameterMetaData()Ljava/sql/ParameterMetaData;" />
+		<method name="setArray(ILjava/sql/Array;)V" />
+		<method name="setAsciiStream(ILjava/io/InputStream;)V" since="9" />
+		<method name="setAsciiStream(ILjava/io/InputStream;I)V" />
+		<method name="setAsciiStream(ILjava/io/InputStream;J)V" since="9" />
+		<method name="setBigDecimal(ILjava/math/BigDecimal;)V" />
+		<method name="setBinaryStream(ILjava/io/InputStream;)V" since="9" />
+		<method name="setBinaryStream(ILjava/io/InputStream;I)V" />
+		<method name="setBinaryStream(ILjava/io/InputStream;J)V" since="9" />
+		<method name="setBlob(ILjava/io/InputStream;)V" since="9" />
+		<method name="setBlob(ILjava/io/InputStream;J)V" since="9" />
+		<method name="setBlob(ILjava/sql/Blob;)V" />
+		<method name="setBoolean(IZ)V" />
+		<method name="setByte(IB)V" />
+		<method name="setBytes(I[B)V" />
+		<method name="setCharacterStream(ILjava/io/Reader;)V" since="9" />
+		<method name="setCharacterStream(ILjava/io/Reader;I)V" />
+		<method name="setCharacterStream(ILjava/io/Reader;J)V" since="9" />
+		<method name="setClob(ILjava/io/Reader;)V" since="9" />
+		<method name="setClob(ILjava/io/Reader;J)V" since="9" />
+		<method name="setClob(ILjava/sql/Clob;)V" />
+		<method name="setDate(ILjava/sql/Date;)V" />
+		<method name="setDate(ILjava/sql/Date;Ljava/util/Calendar;)V" />
+		<method name="setDouble(ID)V" />
+		<method name="setFloat(IF)V" />
+		<method name="setInt(II)V" />
+		<method name="setLong(IJ)V" />
+		<method name="setNCharacterStream(ILjava/io/Reader;)V" since="9" />
+		<method name="setNCharacterStream(ILjava/io/Reader;J)V" since="9" />
+		<method name="setNClob(ILjava/io/Reader;)V" since="9" />
+		<method name="setNClob(ILjava/io/Reader;J)V" since="9" />
+		<method name="setNClob(ILjava/sql/NClob;)V" since="9" />
+		<method name="setNString(ILjava/lang/String;)V" since="9" />
+		<method name="setNull(II)V" />
+		<method name="setNull(IILjava/lang/String;)V" />
+		<method name="setObject(ILjava/lang/Object;)V" />
+		<method name="setObject(ILjava/lang/Object;I)V" />
+		<method name="setObject(ILjava/lang/Object;II)V" />
+		<method name="setRef(ILjava/sql/Ref;)V" />
+		<method name="setRowId(ILjava/sql/RowId;)V" since="9" />
+		<method name="setSQLXML(ILjava/sql/SQLXML;)V" since="9" />
+		<method name="setShort(IS)V" />
+		<method name="setString(ILjava/lang/String;)V" />
+		<method name="setTime(ILjava/sql/Time;)V" />
+		<method name="setTime(ILjava/sql/Time;Ljava/util/Calendar;)V" />
+		<method name="setTimestamp(ILjava/sql/Timestamp;)V" />
+		<method name="setTimestamp(ILjava/sql/Timestamp;Ljava/util/Calendar;)V" />
+		<method name="setURL(ILjava/net/URL;)V" />
+		<method name="setUnicodeStream(ILjava/io/InputStream;I)V" />
+	</class>
+	<class name="java/sql/Ref" since="1">
+		<method name="getBaseTypeName()Ljava/lang/String;" />
+		<method name="getObject()Ljava/lang/Object;" />
+		<method name="getObject(Ljava/util/Map;)Ljava/lang/Object;" />
+		<method name="setObject(Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/sql/ResultSet" since="1">
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="absolute(I)Z" />
+		<method name="afterLast()V" />
+		<method name="beforeFirst()V" />
+		<method name="cancelRowUpdates()V" />
+		<method name="clearWarnings()V" />
+		<method name="close()V" />
+		<method name="deleteRow()V" />
+		<method name="findColumn(Ljava/lang/String;)I" />
+		<method name="first()Z" />
+		<method name="getArray(I)Ljava/sql/Array;" />
+		<method name="getArray(Ljava/lang/String;)Ljava/sql/Array;" />
+		<method name="getAsciiStream(I)Ljava/io/InputStream;" />
+		<method name="getAsciiStream(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="getBigDecimal(I)Ljava/math/BigDecimal;" />
+		<method name="getBigDecimal(II)Ljava/math/BigDecimal;" />
+		<method name="getBigDecimal(Ljava/lang/String;)Ljava/math/BigDecimal;" />
+		<method name="getBigDecimal(Ljava/lang/String;I)Ljava/math/BigDecimal;" />
+		<method name="getBinaryStream(I)Ljava/io/InputStream;" />
+		<method name="getBinaryStream(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="getBlob(I)Ljava/sql/Blob;" />
+		<method name="getBlob(Ljava/lang/String;)Ljava/sql/Blob;" />
+		<method name="getBoolean(I)Z" />
+		<method name="getBoolean(Ljava/lang/String;)Z" />
+		<method name="getByte(I)B" />
+		<method name="getByte(Ljava/lang/String;)B" />
+		<method name="getBytes(I)[B" />
+		<method name="getBytes(Ljava/lang/String;)[B" />
+		<method name="getCharacterStream(I)Ljava/io/Reader;" />
+		<method name="getCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" />
+		<method name="getClob(I)Ljava/sql/Clob;" />
+		<method name="getClob(Ljava/lang/String;)Ljava/sql/Clob;" />
+		<method name="getConcurrency()I" />
+		<method name="getCursorName()Ljava/lang/String;" />
+		<method name="getDate(I)Ljava/sql/Date;" />
+		<method name="getDate(ILjava/util/Calendar;)Ljava/sql/Date;" />
+		<method name="getDate(Ljava/lang/String;)Ljava/sql/Date;" />
+		<method name="getDate(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Date;" />
+		<method name="getDouble(I)D" />
+		<method name="getDouble(Ljava/lang/String;)D" />
+		<method name="getFetchDirection()I" />
+		<method name="getFetchSize()I" />
+		<method name="getFloat(I)F" />
+		<method name="getFloat(Ljava/lang/String;)F" />
+		<method name="getHoldability()I" since="9" />
+		<method name="getInt(I)I" />
+		<method name="getInt(Ljava/lang/String;)I" />
+		<method name="getLong(I)J" />
+		<method name="getLong(Ljava/lang/String;)J" />
+		<method name="getMetaData()Ljava/sql/ResultSetMetaData;" />
+		<method name="getNCharacterStream(I)Ljava/io/Reader;" since="9" />
+		<method name="getNCharacterStream(Ljava/lang/String;)Ljava/io/Reader;" since="9" />
+		<method name="getNClob(I)Ljava/sql/NClob;" since="9" />
+		<method name="getNClob(Ljava/lang/String;)Ljava/sql/NClob;" since="9" />
+		<method name="getNString(I)Ljava/lang/String;" since="9" />
+		<method name="getNString(Ljava/lang/String;)Ljava/lang/String;" since="9" />
+		<method name="getObject(I)Ljava/lang/Object;" />
+		<method name="getObject(ILjava/util/Map;)Ljava/lang/Object;" />
+		<method name="getObject(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getObject(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/Object;" />
+		<method name="getRef(I)Ljava/sql/Ref;" />
+		<method name="getRef(Ljava/lang/String;)Ljava/sql/Ref;" />
+		<method name="getRow()I" />
+		<method name="getRowId(I)Ljava/sql/RowId;" since="9" />
+		<method name="getRowId(Ljava/lang/String;)Ljava/sql/RowId;" since="9" />
+		<method name="getSQLXML(I)Ljava/sql/SQLXML;" since="9" />
+		<method name="getSQLXML(Ljava/lang/String;)Ljava/sql/SQLXML;" since="9" />
+		<method name="getShort(I)S" />
+		<method name="getShort(Ljava/lang/String;)S" />
+		<method name="getStatement()Ljava/sql/Statement;" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getTime(I)Ljava/sql/Time;" />
+		<method name="getTime(ILjava/util/Calendar;)Ljava/sql/Time;" />
+		<method name="getTime(Ljava/lang/String;)Ljava/sql/Time;" />
+		<method name="getTime(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Time;" />
+		<method name="getTimestamp(I)Ljava/sql/Timestamp;" />
+		<method name="getTimestamp(ILjava/util/Calendar;)Ljava/sql/Timestamp;" />
+		<method name="getTimestamp(Ljava/lang/String;)Ljava/sql/Timestamp;" />
+		<method name="getTimestamp(Ljava/lang/String;Ljava/util/Calendar;)Ljava/sql/Timestamp;" />
+		<method name="getType()I" />
+		<method name="getURL(I)Ljava/net/URL;" />
+		<method name="getURL(Ljava/lang/String;)Ljava/net/URL;" />
+		<method name="getUnicodeStream(I)Ljava/io/InputStream;" />
+		<method name="getUnicodeStream(Ljava/lang/String;)Ljava/io/InputStream;" />
+		<method name="getWarnings()Ljava/sql/SQLWarning;" />
+		<method name="insertRow()V" />
+		<method name="isAfterLast()Z" />
+		<method name="isBeforeFirst()Z" />
+		<method name="isClosed()Z" since="9" />
+		<method name="isFirst()Z" />
+		<method name="isLast()Z" />
+		<method name="last()Z" />
+		<method name="moveToCurrentRow()V" />
+		<method name="moveToInsertRow()V" />
+		<method name="next()Z" />
+		<method name="previous()Z" />
+		<method name="refreshRow()V" />
+		<method name="relative(I)Z" />
+		<method name="rowDeleted()Z" />
+		<method name="rowInserted()Z" />
+		<method name="rowUpdated()Z" />
+		<method name="setFetchDirection(I)V" />
+		<method name="setFetchSize(I)V" />
+		<method name="updateArray(ILjava/sql/Array;)V" />
+		<method name="updateArray(Ljava/lang/String;Ljava/sql/Array;)V" />
+		<method name="updateAsciiStream(ILjava/io/InputStream;)V" since="9" />
+		<method name="updateAsciiStream(ILjava/io/InputStream;I)V" />
+		<method name="updateAsciiStream(ILjava/io/InputStream;J)V" since="9" />
+		<method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
+		<method name="updateAsciiStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="updateBigDecimal(ILjava/math/BigDecimal;)V" />
+		<method name="updateBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" />
+		<method name="updateBinaryStream(ILjava/io/InputStream;)V" since="9" />
+		<method name="updateBinaryStream(ILjava/io/InputStream;I)V" />
+		<method name="updateBinaryStream(ILjava/io/InputStream;J)V" since="9" />
+		<method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" />
+		<method name="updateBinaryStream(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="updateBlob(ILjava/io/InputStream;)V" since="9" />
+		<method name="updateBlob(ILjava/io/InputStream;J)V" since="9" />
+		<method name="updateBlob(ILjava/sql/Blob;)V" />
+		<method name="updateBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="updateBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="updateBlob(Ljava/lang/String;Ljava/sql/Blob;)V" />
+		<method name="updateBoolean(IZ)V" />
+		<method name="updateBoolean(Ljava/lang/String;Z)V" />
+		<method name="updateByte(IB)V" />
+		<method name="updateByte(Ljava/lang/String;B)V" />
+		<method name="updateBytes(I[B)V" />
+		<method name="updateBytes(Ljava/lang/String;[B)V" />
+		<method name="updateCharacterStream(ILjava/io/Reader;)V" since="9" />
+		<method name="updateCharacterStream(ILjava/io/Reader;I)V" />
+		<method name="updateCharacterStream(ILjava/io/Reader;J)V" since="9" />
+		<method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" />
+		<method name="updateCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="updateClob(ILjava/io/Reader;)V" since="9" />
+		<method name="updateClob(ILjava/io/Reader;J)V" since="9" />
+		<method name="updateClob(ILjava/sql/Clob;)V" />
+		<method name="updateClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="updateClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="updateClob(Ljava/lang/String;Ljava/sql/Clob;)V" />
+		<method name="updateDate(ILjava/sql/Date;)V" />
+		<method name="updateDate(Ljava/lang/String;Ljava/sql/Date;)V" />
+		<method name="updateDouble(ID)V" />
+		<method name="updateDouble(Ljava/lang/String;D)V" />
+		<method name="updateFloat(IF)V" />
+		<method name="updateFloat(Ljava/lang/String;F)V" />
+		<method name="updateInt(II)V" />
+		<method name="updateInt(Ljava/lang/String;I)V" />
+		<method name="updateLong(IJ)V" />
+		<method name="updateLong(Ljava/lang/String;J)V" />
+		<method name="updateNCharacterStream(ILjava/io/Reader;)V" since="9" />
+		<method name="updateNCharacterStream(ILjava/io/Reader;J)V" since="9" />
+		<method name="updateNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="updateNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="updateNClob(ILjava/io/Reader;)V" since="9" />
+		<method name="updateNClob(ILjava/io/Reader;J)V" since="9" />
+		<method name="updateNClob(ILjava/sql/NClob;)V" since="9" />
+		<method name="updateNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="updateNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="updateNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9" />
+		<method name="updateNString(ILjava/lang/String;)V" since="9" />
+		<method name="updateNString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
+		<method name="updateNull(I)V" />
+		<method name="updateNull(Ljava/lang/String;)V" />
+		<method name="updateObject(ILjava/lang/Object;)V" />
+		<method name="updateObject(ILjava/lang/Object;I)V" />
+		<method name="updateObject(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="updateObject(Ljava/lang/String;Ljava/lang/Object;I)V" />
+		<method name="updateRef(ILjava/sql/Ref;)V" />
+		<method name="updateRef(Ljava/lang/String;Ljava/sql/Ref;)V" />
+		<method name="updateRow()V" />
+		<method name="updateRowId(ILjava/sql/RowId;)V" since="9" />
+		<method name="updateRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9" />
+		<method name="updateSQLXML(ILjava/sql/SQLXML;)V" since="9" />
+		<method name="updateSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9" />
+		<method name="updateShort(IS)V" />
+		<method name="updateShort(Ljava/lang/String;S)V" />
+		<method name="updateString(ILjava/lang/String;)V" />
+		<method name="updateString(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="updateTime(ILjava/sql/Time;)V" />
+		<method name="updateTime(Ljava/lang/String;Ljava/sql/Time;)V" />
+		<method name="updateTimestamp(ILjava/sql/Timestamp;)V" />
+		<method name="updateTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" />
+		<method name="wasNull()Z" />
+		<field name="CLOSE_CURSORS_AT_COMMIT" />
+		<field name="CONCUR_READ_ONLY" />
+		<field name="CONCUR_UPDATABLE" />
+		<field name="FETCH_FORWARD" />
+		<field name="FETCH_REVERSE" />
+		<field name="FETCH_UNKNOWN" />
+		<field name="HOLD_CURSORS_OVER_COMMIT" />
+		<field name="TYPE_FORWARD_ONLY" />
+		<field name="TYPE_SCROLL_INSENSITIVE" />
+		<field name="TYPE_SCROLL_SENSITIVE" />
+	</class>
+	<class name="java/sql/ResultSetMetaData" since="1">
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="getCatalogName(I)Ljava/lang/String;" />
+		<method name="getColumnClassName(I)Ljava/lang/String;" />
+		<method name="getColumnCount()I" />
+		<method name="getColumnDisplaySize(I)I" />
+		<method name="getColumnLabel(I)Ljava/lang/String;" />
+		<method name="getColumnName(I)Ljava/lang/String;" />
+		<method name="getColumnType(I)I" />
+		<method name="getColumnTypeName(I)Ljava/lang/String;" />
+		<method name="getPrecision(I)I" />
+		<method name="getScale(I)I" />
+		<method name="getSchemaName(I)Ljava/lang/String;" />
+		<method name="getTableName(I)Ljava/lang/String;" />
+		<method name="isAutoIncrement(I)Z" />
+		<method name="isCaseSensitive(I)Z" />
+		<method name="isCurrency(I)Z" />
+		<method name="isDefinitelyWritable(I)Z" />
+		<method name="isNullable(I)I" />
+		<method name="isReadOnly(I)Z" />
+		<method name="isSearchable(I)Z" />
+		<method name="isSigned(I)Z" />
+		<method name="isWritable(I)Z" />
+		<field name="columnNoNulls" />
+		<field name="columnNullable" />
+		<field name="columnNullableUnknown" />
+	</class>
+	<class name="java/sql/RowId" since="9">
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getBytes()[B" />
+		<method name="hashCode()I" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="java/sql/RowIdLifetime" since="9">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/sql/RowIdLifetime;" />
+		<method name="values()[Ljava/sql/RowIdLifetime;" />
+		<field name="ROWID_UNSUPPORTED" />
+		<field name="ROWID_VALID_FOREVER" />
+		<field name="ROWID_VALID_OTHER" />
+		<field name="ROWID_VALID_SESSION" />
+		<field name="ROWID_VALID_TRANSACTION" />
+	</class>
+	<class name="java/sql/SQLClientInfoException" since="9">
+		<extends name="java/sql/SQLException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/util/Map;Ljava/lang/Throwable;)V" />
+		<method name="getFailedProperties()Ljava/util/Map;" />
+	</class>
+	<class name="java/sql/SQLData" since="1">
+		<method name="getSQLTypeName()Ljava/lang/String;" />
+		<method name="readSQL(Ljava/sql/SQLInput;Ljava/lang/String;)V" />
+		<method name="writeSQL(Ljava/sql/SQLOutput;)V" />
+	</class>
+	<class name="java/sql/SQLDataException" since="9">
+		<extends name="java/sql/SQLNonTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLException" since="1">
+		<extends name="java/lang/Exception" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/lang/Iterable" since="9" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
+		<method name="getErrorCode()I" />
+		<method name="getNextException()Ljava/sql/SQLException;" />
+		<method name="getSQLState()Ljava/lang/String;" />
+		<method name="iterator()Ljava/util/Iterator;" since="9" />
+		<method name="setNextException(Ljava/sql/SQLException;)V" />
+	</class>
+	<class name="java/sql/SQLFeatureNotSupportedException" since="9">
+		<extends name="java/sql/SQLNonTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLInput" since="1">
+		<method name="readArray()Ljava/sql/Array;" />
+		<method name="readAsciiStream()Ljava/io/InputStream;" />
+		<method name="readBigDecimal()Ljava/math/BigDecimal;" />
+		<method name="readBinaryStream()Ljava/io/InputStream;" />
+		<method name="readBlob()Ljava/sql/Blob;" />
+		<method name="readBoolean()Z" />
+		<method name="readByte()B" />
+		<method name="readBytes()[B" />
+		<method name="readCharacterStream()Ljava/io/Reader;" />
+		<method name="readClob()Ljava/sql/Clob;" />
+		<method name="readDate()Ljava/sql/Date;" />
+		<method name="readDouble()D" />
+		<method name="readFloat()F" />
+		<method name="readInt()I" />
+		<method name="readLong()J" />
+		<method name="readNClob()Ljava/sql/NClob;" since="9" />
+		<method name="readNString()Ljava/lang/String;" since="9" />
+		<method name="readObject()Ljava/lang/Object;" />
+		<method name="readRef()Ljava/sql/Ref;" />
+		<method name="readRowId()Ljava/sql/RowId;" since="9" />
+		<method name="readSQLXML()Ljava/sql/SQLXML;" since="9" />
+		<method name="readShort()S" />
+		<method name="readString()Ljava/lang/String;" />
+		<method name="readTime()Ljava/sql/Time;" />
+		<method name="readTimestamp()Ljava/sql/Timestamp;" />
+		<method name="readURL()Ljava/net/URL;" />
+		<method name="wasNull()Z" />
+	</class>
+	<class name="java/sql/SQLIntegrityConstraintViolationException" since="9">
+		<extends name="java/sql/SQLNonTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLInvalidAuthorizationSpecException" since="9">
+		<extends name="java/sql/SQLNonTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLNonTransientConnectionException" since="9">
+		<extends name="java/sql/SQLNonTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLNonTransientException" since="9">
+		<extends name="java/sql/SQLException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLOutput" since="1">
+		<method name="writeArray(Ljava/sql/Array;)V" />
+		<method name="writeAsciiStream(Ljava/io/InputStream;)V" />
+		<method name="writeBigDecimal(Ljava/math/BigDecimal;)V" />
+		<method name="writeBinaryStream(Ljava/io/InputStream;)V" />
+		<method name="writeBlob(Ljava/sql/Blob;)V" />
+		<method name="writeBoolean(Z)V" />
+		<method name="writeByte(B)V" />
+		<method name="writeBytes([B)V" />
+		<method name="writeCharacterStream(Ljava/io/Reader;)V" />
+		<method name="writeClob(Ljava/sql/Clob;)V" />
+		<method name="writeDate(Ljava/sql/Date;)V" />
+		<method name="writeDouble(D)V" />
+		<method name="writeFloat(F)V" />
+		<method name="writeInt(I)V" />
+		<method name="writeLong(J)V" />
+		<method name="writeNClob(Ljava/sql/NClob;)V" since="9" />
+		<method name="writeNString(Ljava/lang/String;)V" since="9" />
+		<method name="writeObject(Ljava/sql/SQLData;)V" />
+		<method name="writeRef(Ljava/sql/Ref;)V" />
+		<method name="writeRowId(Ljava/sql/RowId;)V" since="9" />
+		<method name="writeSQLXML(Ljava/sql/SQLXML;)V" since="9" />
+		<method name="writeShort(S)V" />
+		<method name="writeString(Ljava/lang/String;)V" />
+		<method name="writeStruct(Ljava/sql/Struct;)V" />
+		<method name="writeTime(Ljava/sql/Time;)V" />
+		<method name="writeTimestamp(Ljava/sql/Timestamp;)V" />
+		<method name="writeURL(Ljava/net/URL;)V" />
+	</class>
+	<class name="java/sql/SQLPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<implements name="java/security/Guard" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/sql/SQLRecoverableException" since="9">
+		<extends name="java/sql/SQLException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLSyntaxErrorException" since="9">
+		<extends name="java/sql/SQLNonTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLTimeoutException" since="9">
+		<extends name="java/sql/SQLTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLTransactionRollbackException" since="9">
+		<extends name="java/sql/SQLTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLTransientConnectionException" since="9">
+		<extends name="java/sql/SQLTransientException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLTransientException" since="9">
+		<extends name="java/sql/SQLException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/sql/SQLWarning" since="1">
+		<extends name="java/sql/SQLException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" since="9" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" since="9" />
+		<method name="getNextWarning()Ljava/sql/SQLWarning;" />
+		<method name="setNextWarning(Ljava/sql/SQLWarning;)V" />
+	</class>
+	<class name="java/sql/SQLXML" since="9">
+		<method name="free()V" />
+		<method name="getBinaryStream()Ljava/io/InputStream;" />
+		<method name="getCharacterStream()Ljava/io/Reader;" />
+		<method name="getSource(Ljava/lang/Class;)LT;" />
+		<method name="getString()Ljava/lang/String;" />
+		<method name="setBinaryStream()Ljava/io/OutputStream;" />
+		<method name="setCharacterStream()Ljava/io/Writer;" />
+		<method name="setResult(Ljava/lang/Class;)LT;" />
+		<method name="setString(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/sql/Savepoint" since="1">
+		<method name="getSavepointId()I" />
+		<method name="getSavepointName()Ljava/lang/String;" />
+	</class>
+	<class name="java/sql/Statement" since="1">
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="addBatch(Ljava/lang/String;)V" />
+		<method name="cancel()V" />
+		<method name="clearBatch()V" />
+		<method name="clearWarnings()V" />
+		<method name="close()V" />
+		<method name="execute(Ljava/lang/String;)Z" />
+		<method name="execute(Ljava/lang/String;I)Z" />
+		<method name="execute(Ljava/lang/String;[I)Z" />
+		<method name="execute(Ljava/lang/String;[Ljava/lang/String;)Z" />
+		<method name="executeBatch()[I" />
+		<method name="executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet;" />
+		<method name="executeUpdate(Ljava/lang/String;)I" />
+		<method name="executeUpdate(Ljava/lang/String;I)I" />
+		<method name="executeUpdate(Ljava/lang/String;[I)I" />
+		<method name="executeUpdate(Ljava/lang/String;[Ljava/lang/String;)I" />
+		<method name="getConnection()Ljava/sql/Connection;" />
+		<method name="getFetchDirection()I" />
+		<method name="getFetchSize()I" />
+		<method name="getGeneratedKeys()Ljava/sql/ResultSet;" />
+		<method name="getMaxFieldSize()I" />
+		<method name="getMaxRows()I" />
+		<method name="getMoreResults()Z" />
+		<method name="getMoreResults(I)Z" />
+		<method name="getQueryTimeout()I" />
+		<method name="getResultSet()Ljava/sql/ResultSet;" />
+		<method name="getResultSetConcurrency()I" />
+		<method name="getResultSetHoldability()I" />
+		<method name="getResultSetType()I" />
+		<method name="getUpdateCount()I" />
+		<method name="getWarnings()Ljava/sql/SQLWarning;" />
+		<method name="isClosed()Z" since="9" />
+		<method name="isPoolable()Z" since="9" />
+		<method name="setCursorName(Ljava/lang/String;)V" />
+		<method name="setEscapeProcessing(Z)V" />
+		<method name="setFetchDirection(I)V" />
+		<method name="setFetchSize(I)V" />
+		<method name="setMaxFieldSize(I)V" />
+		<method name="setMaxRows(I)V" />
+		<method name="setPoolable(Z)V" since="9" />
+		<method name="setQueryTimeout(I)V" />
+		<field name="CLOSE_ALL_RESULTS" />
+		<field name="CLOSE_CURRENT_RESULT" />
+		<field name="EXECUTE_FAILED" />
+		<field name="KEEP_CURRENT_RESULT" />
+		<field name="NO_GENERATED_KEYS" />
+		<field name="RETURN_GENERATED_KEYS" />
+		<field name="SUCCESS_NO_INFO" />
+	</class>
+	<class name="java/sql/Struct" since="1">
+		<method name="getAttributes()[Ljava/lang/Object;" />
+		<method name="getAttributes(Ljava/util/Map;)[Ljava/lang/Object;" />
+		<method name="getSQLTypeName()Ljava/lang/String;" />
+	</class>
+	<class name="java/sql/Time" since="1">
+		<extends name="java/util/Date" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(J)V" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/sql/Time;" />
+	</class>
+	<class name="java/sql/Timestamp" since="1">
+		<extends name="java/util/Date" />
+		<method name="&lt;init>(IIIIIII)V" />
+		<method name="&lt;init>(J)V" />
+		<method name="after(Ljava/sql/Timestamp;)Z" />
+		<method name="before(Ljava/sql/Timestamp;)Z" />
+		<method name="compareTo(Ljava/sql/Timestamp;)I" />
+		<method name="equals(Ljava/sql/Timestamp;)Z" />
+		<method name="getNanos()I" />
+		<method name="setNanos(I)V" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/sql/Timestamp;" />
+	</class>
+	<class name="java/sql/Types" since="1">
+		<extends name="java/lang/Object" />
+		<field name="ARRAY" />
+		<field name="BIGINT" />
+		<field name="BINARY" />
+		<field name="BIT" />
+		<field name="BLOB" />
+		<field name="BOOLEAN" />
+		<field name="CHAR" />
+		<field name="CLOB" />
+		<field name="DATALINK" />
+		<field name="DATE" />
+		<field name="DECIMAL" />
+		<field name="DISTINCT" />
+		<field name="DOUBLE" />
+		<field name="FLOAT" />
+		<field name="INTEGER" />
+		<field name="JAVA_OBJECT" />
+		<field name="LONGNVARCHAR" since="9" />
+		<field name="LONGVARBINARY" />
+		<field name="LONGVARCHAR" />
+		<field name="NCHAR" since="9" />
+		<field name="NCLOB" since="9" />
+		<field name="NULL" />
+		<field name="NUMERIC" />
+		<field name="NVARCHAR" since="9" />
+		<field name="OTHER" />
+		<field name="REAL" />
+		<field name="REF" />
+		<field name="ROWID" since="9" />
+		<field name="SMALLINT" />
+		<field name="SQLXML" since="9" />
+		<field name="STRUCT" />
+		<field name="TIME" />
+		<field name="TIMESTAMP" />
+		<field name="TINYINT" />
+		<field name="VARBINARY" />
+		<field name="VARCHAR" />
+	</class>
+	<class name="java/sql/Wrapper" since="9">
+		<method name="isWrapperFor(Ljava/lang/Class;)Z" />
+		<method name="unwrap(Ljava/lang/Class;)LT;" />
+	</class>
+	<class name="java/text/Annotation" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/Object;)V" />
+		<method name="getValue()Ljava/lang/Object;" />
+	</class>
+	<class name="java/text/AttributedCharacterIterator" since="1">
+		<implements name="java/text/CharacterIterator" />
+		<method name="getAllAttributeKeys()Ljava/util/Set;" />
+		<method name="getAttribute(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/lang/Object;" />
+		<method name="getAttributes()Ljava/util/Map;" />
+		<method name="getRunLimit()I" />
+		<method name="getRunLimit(Ljava/text/AttributedCharacterIterator$Attribute;)I" />
+		<method name="getRunLimit(Ljava/util/Set;)I" />
+		<method name="getRunStart()I" />
+		<method name="getRunStart(Ljava/text/AttributedCharacterIterator$Attribute;)I" />
+		<method name="getRunStart(Ljava/util/Set;)I" />
+	</class>
+	<class name="java/text/AttributedCharacterIterator$Attribute" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="readResolve()Ljava/lang/Object;" />
+		<field name="INPUT_METHOD_SEGMENT" />
+		<field name="LANGUAGE" />
+		<field name="READING" />
+	</class>
+	<class name="java/text/AttributedString" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;)V" />
+		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;II)V" />
+		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;II[Ljava/text/AttributedCharacterIterator$Attribute;)V" />
+		<method name="addAttribute(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)V" />
+		<method name="addAttribute(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V" />
+		<method name="addAttributes(Ljava/util/Map;II)V" />
+		<method name="getIterator()Ljava/text/AttributedCharacterIterator;" />
+		<method name="getIterator([Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/text/AttributedCharacterIterator;" />
+		<method name="getIterator([Ljava/text/AttributedCharacterIterator$Attribute;II)Ljava/text/AttributedCharacterIterator;" />
+	</class>
+	<class name="java/text/Bidi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/text/AttributedCharacterIterator;)V" />
+		<method name="&lt;init>([CI[BIII)V" />
+		<method name="baseIsLeftToRight()Z" />
+		<method name="createLineBidi(II)Ljava/text/Bidi;" />
+		<method name="getBaseLevel()I" />
+		<method name="getLength()I" />
+		<method name="getLevelAt(I)I" />
+		<method name="getRunCount()I" />
+		<method name="getRunLevel(I)I" />
+		<method name="getRunLimit(I)I" />
+		<method name="getRunStart(I)I" />
+		<method name="isLeftToRight()Z" />
+		<method name="isMixed()Z" />
+		<method name="isRightToLeft()Z" />
+		<method name="reorderVisually([BI[Ljava/lang/Object;II)V" />
+		<method name="requiresBidi([CII)Z" />
+		<field name="DIRECTION_DEFAULT_LEFT_TO_RIGHT" />
+		<field name="DIRECTION_DEFAULT_RIGHT_TO_LEFT" />
+		<field name="DIRECTION_LEFT_TO_RIGHT" />
+		<field name="DIRECTION_RIGHT_TO_LEFT" />
+	</class>
+	<class name="java/text/BreakIterator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="current()I" />
+		<method name="first()I" />
+		<method name="following(I)I" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" />
+		<method name="getCharacterInstance()Ljava/text/BreakIterator;" />
+		<method name="getCharacterInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
+		<method name="getInt([BI)I" />
+		<method name="getLineInstance()Ljava/text/BreakIterator;" />
+		<method name="getLineInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
+		<method name="getLong([BI)J" />
+		<method name="getSentenceInstance()Ljava/text/BreakIterator;" />
+		<method name="getSentenceInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
+		<method name="getShort([BI)S" />
+		<method name="getText()Ljava/text/CharacterIterator;" />
+		<method name="getWordInstance()Ljava/text/BreakIterator;" />
+		<method name="getWordInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;" />
+		<method name="isBoundary(I)Z" />
+		<method name="last()I" />
+		<method name="next()I" />
+		<method name="next(I)I" />
+		<method name="preceding(I)I" />
+		<method name="previous()I" />
+		<method name="setText(Ljava/lang/String;)V" />
+		<method name="setText(Ljava/text/CharacterIterator;)V" />
+		<field name="DONE" />
+	</class>
+	<class name="java/text/CharacterIterator" since="1">
+		<implements name="java/lang/Cloneable" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="current()C" />
+		<method name="first()C" />
+		<method name="getBeginIndex()I" />
+		<method name="getEndIndex()I" />
+		<method name="getIndex()I" />
+		<method name="last()C" />
+		<method name="next()C" />
+		<method name="previous()C" />
+		<method name="setIndex(I)C" />
+		<field name="DONE" />
+	</class>
+	<class name="java/text/ChoiceFormat" since="1">
+		<extends name="java/text/NumberFormat" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>([D[Ljava/lang/String;)V" />
+		<method name="applyPattern(Ljava/lang/String;)V" />
+		<method name="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="getFormats()[Ljava/lang/Object;" />
+		<method name="getLimits()[D" />
+		<method name="nextDouble(D)D" />
+		<method name="nextDouble(DZ)D" />
+		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;" />
+		<method name="previousDouble(D)D" />
+		<method name="setChoices([D[Ljava/lang/String;)V" />
+		<method name="toPattern()Ljava/lang/String;" />
+	</class>
+	<class name="java/text/CollationElementIterator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getMaxExpansion(I)I" />
+		<method name="getOffset()I" />
+		<method name="next()I" />
+		<method name="previous()I" />
+		<method name="primaryOrder(I)I" />
+		<method name="reset()V" />
+		<method name="secondaryOrder(I)S" />
+		<method name="setOffset(I)V" />
+		<method name="setText(Ljava/lang/String;)V" />
+		<method name="setText(Ljava/text/CharacterIterator;)V" />
+		<method name="tertiaryOrder(I)S" />
+		<field name="NULLORDER" />
+	</class>
+	<class name="java/text/CollationKey" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" since="9" />
+		<method name="compareTo(Ljava/text/CollationKey;)I" />
+		<method name="getSourceString()Ljava/lang/String;" />
+		<method name="toByteArray()[B" />
+	</class>
+	<class name="java/text/Collator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Comparator" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="compare(Ljava/lang/Object;Ljava/lang/Object;)I" />
+		<method name="compare(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="equals(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" />
+		<method name="getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey;" />
+		<method name="getDecomposition()I" />
+		<method name="getInstance()Ljava/text/Collator;" />
+		<method name="getInstance(Ljava/util/Locale;)Ljava/text/Collator;" />
+		<method name="getStrength()I" />
+		<method name="hashCode()I" />
+		<method name="setDecomposition(I)V" />
+		<method name="setStrength(I)V" />
+		<field name="CANONICAL_DECOMPOSITION" />
+		<field name="FULL_DECOMPOSITION" />
+		<field name="IDENTICAL" />
+		<field name="NO_DECOMPOSITION" />
+		<field name="PRIMARY" />
+		<field name="SECONDARY" />
+		<field name="TERTIARY" />
+	</class>
+	<class name="java/text/DateFormat" since="1">
+		<extends name="java/text/Format" />
+		<method name="&lt;init>()V" />
+		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(Ljava/util/Date;)Ljava/lang/String;" />
+		<method name="format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" />
+		<method name="getCalendar()Ljava/util/Calendar;" />
+		<method name="getDateInstance()Ljava/text/DateFormat;" />
+		<method name="getDateInstance(I)Ljava/text/DateFormat;" />
+		<method name="getDateInstance(ILjava/util/Locale;)Ljava/text/DateFormat;" />
+		<method name="getDateTimeInstance()Ljava/text/DateFormat;" />
+		<method name="getDateTimeInstance(II)Ljava/text/DateFormat;" />
+		<method name="getDateTimeInstance(IILjava/util/Locale;)Ljava/text/DateFormat;" />
+		<method name="getInstance()Ljava/text/DateFormat;" />
+		<method name="getNumberFormat()Ljava/text/NumberFormat;" />
+		<method name="getTimeInstance()Ljava/text/DateFormat;" />
+		<method name="getTimeInstance(I)Ljava/text/DateFormat;" />
+		<method name="getTimeInstance(ILjava/util/Locale;)Ljava/text/DateFormat;" />
+		<method name="getTimeZone()Ljava/util/TimeZone;" />
+		<method name="isLenient()Z" />
+		<method name="parse(Ljava/lang/String;)Ljava/util/Date;" />
+		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;" />
+		<method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
+		<method name="setCalendar(Ljava/util/Calendar;)V" />
+		<method name="setLenient(Z)V" />
+		<method name="setNumberFormat(Ljava/text/NumberFormat;)V" />
+		<method name="setTimeZone(Ljava/util/TimeZone;)V" />
+		<field name="AM_PM_FIELD" />
+		<field name="DATE_FIELD" />
+		<field name="DAY_OF_WEEK_FIELD" />
+		<field name="DAY_OF_WEEK_IN_MONTH_FIELD" />
+		<field name="DAY_OF_YEAR_FIELD" />
+		<field name="DEFAULT" />
+		<field name="ERA_FIELD" />
+		<field name="FULL" />
+		<field name="HOUR0_FIELD" />
+		<field name="HOUR1_FIELD" />
+		<field name="HOUR_OF_DAY0_FIELD" />
+		<field name="HOUR_OF_DAY1_FIELD" />
+		<field name="LONG" />
+		<field name="MEDIUM" />
+		<field name="MILLISECOND_FIELD" />
+		<field name="MINUTE_FIELD" />
+		<field name="MONTH_FIELD" />
+		<field name="SECOND_FIELD" />
+		<field name="SHORT" />
+		<field name="TIMEZONE_FIELD" />
+		<field name="WEEK_OF_MONTH_FIELD" />
+		<field name="WEEK_OF_YEAR_FIELD" />
+		<field name="YEAR_FIELD" />
+		<field name="calendar" />
+		<field name="numberFormat" />
+	</class>
+	<class name="java/text/DateFormat$Field" since="1">
+		<extends name="java/text/Format$Field" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="getCalendarField()I" />
+		<method name="ofCalendarField(I)Ljava/text/DateFormat$Field;" />
+		<field name="AM_PM" />
+		<field name="DAY_OF_MONTH" />
+		<field name="DAY_OF_WEEK" />
+		<field name="DAY_OF_WEEK_IN_MONTH" />
+		<field name="DAY_OF_YEAR" />
+		<field name="ERA" />
+		<field name="HOUR0" />
+		<field name="HOUR1" />
+		<field name="HOUR_OF_DAY0" />
+		<field name="HOUR_OF_DAY1" />
+		<field name="MILLISECOND" />
+		<field name="MINUTE" />
+		<field name="MONTH" />
+		<field name="SECOND" />
+		<field name="TIME_ZONE" />
+		<field name="WEEK_OF_MONTH" />
+		<field name="WEEK_OF_YEAR" />
+		<field name="YEAR" />
+	</class>
+	<class name="java/text/DateFormatSymbols" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Locale;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getAmPmStrings()[Ljava/lang/String;" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" since="9" />
+		<method name="getEras()[Ljava/lang/String;" />
+		<method name="getInstance()Ljava/text/DateFormatSymbols;" since="9" />
+		<method name="getInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;" since="9" />
+		<method name="getLocalPatternChars()Ljava/lang/String;" />
+		<method name="getMonths()[Ljava/lang/String;" />
+		<method name="getShortMonths()[Ljava/lang/String;" />
+		<method name="getShortWeekdays()[Ljava/lang/String;" />
+		<method name="getWeekdays()[Ljava/lang/String;" />
+		<method name="getZoneStrings()[[Ljava/lang/String;" />
+		<method name="setAmPmStrings([Ljava/lang/String;)V" />
+		<method name="setEras([Ljava/lang/String;)V" />
+		<method name="setLocalPatternChars(Ljava/lang/String;)V" />
+		<method name="setMonths([Ljava/lang/String;)V" />
+		<method name="setShortMonths([Ljava/lang/String;)V" />
+		<method name="setShortWeekdays([Ljava/lang/String;)V" />
+		<method name="setWeekdays([Ljava/lang/String;)V" />
+		<method name="setZoneStrings([[Ljava/lang/String;)V" />
+	</class>
+	<class name="java/text/DecimalFormat" since="1">
+		<extends name="java/text/NumberFormat" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/text/DecimalFormatSymbols;)V" />
+		<method name="applyLocalizedPattern(Ljava/lang/String;)V" />
+		<method name="applyPattern(Ljava/lang/String;)V" />
+		<method name="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols;" />
+		<method name="getGroupingSize()I" />
+		<method name="getMultiplier()I" />
+		<method name="getNegativePrefix()Ljava/lang/String;" />
+		<method name="getNegativeSuffix()Ljava/lang/String;" />
+		<method name="getPositivePrefix()Ljava/lang/String;" />
+		<method name="getPositiveSuffix()Ljava/lang/String;" />
+		<method name="isDecimalSeparatorAlwaysShown()Z" />
+		<method name="isParseBigDecimal()Z" />
+		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;" />
+		<method name="setDecimalFormatSymbols(Ljava/text/DecimalFormatSymbols;)V" />
+		<method name="setDecimalSeparatorAlwaysShown(Z)V" />
+		<method name="setGroupingSize(I)V" />
+		<method name="setMultiplier(I)V" />
+		<method name="setNegativePrefix(Ljava/lang/String;)V" />
+		<method name="setNegativeSuffix(Ljava/lang/String;)V" />
+		<method name="setParseBigDecimal(Z)V" />
+		<method name="setPositivePrefix(Ljava/lang/String;)V" />
+		<method name="setPositiveSuffix(Ljava/lang/String;)V" />
+		<method name="toLocalizedPattern()Ljava/lang/String;" />
+		<method name="toPattern()Ljava/lang/String;" />
+	</class>
+	<class name="java/text/DecimalFormatSymbols" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Locale;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" since="9" />
+		<method name="getCurrency()Ljava/util/Currency;" />
+		<method name="getCurrencySymbol()Ljava/lang/String;" />
+		<method name="getDecimalSeparator()C" />
+		<method name="getDigit()C" />
+		<method name="getExponentSeparator()Ljava/lang/String;" since="9" />
+		<method name="getGroupingSeparator()C" />
+		<method name="getInfinity()Ljava/lang/String;" />
+		<method name="getInstance()Ljava/text/DecimalFormatSymbols;" since="9" />
+		<method name="getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols;" since="9" />
+		<method name="getInternationalCurrencySymbol()Ljava/lang/String;" />
+		<method name="getMinusSign()C" />
+		<method name="getMonetaryDecimalSeparator()C" />
+		<method name="getNaN()Ljava/lang/String;" />
+		<method name="getPatternSeparator()C" />
+		<method name="getPerMill()C" />
+		<method name="getPercent()C" />
+		<method name="getZeroDigit()C" />
+		<method name="setCurrency(Ljava/util/Currency;)V" />
+		<method name="setCurrencySymbol(Ljava/lang/String;)V" />
+		<method name="setDecimalSeparator(C)V" />
+		<method name="setDigit(C)V" />
+		<method name="setExponentSeparator(Ljava/lang/String;)V" since="9" />
+		<method name="setGroupingSeparator(C)V" />
+		<method name="setInfinity(Ljava/lang/String;)V" />
+		<method name="setInternationalCurrencySymbol(Ljava/lang/String;)V" />
+		<method name="setMinusSign(C)V" />
+		<method name="setMonetaryDecimalSeparator(C)V" />
+		<method name="setNaN(Ljava/lang/String;)V" />
+		<method name="setPatternSeparator(C)V" />
+		<method name="setPerMill(C)V" />
+		<method name="setPercent(C)V" />
+		<method name="setZeroDigit(C)V" />
+	</class>
+	<class name="java/text/FieldPosition" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/text/Format$Field;)V" />
+		<method name="&lt;init>(Ljava/text/Format$Field;I)V" />
+		<method name="getBeginIndex()I" />
+		<method name="getEndIndex()I" />
+		<method name="getField()I" />
+		<method name="getFieldAttribute()Ljava/text/Format$Field;" />
+		<method name="setBeginIndex(I)V" />
+		<method name="setEndIndex(I)V" />
+	</class>
+	<class name="java/text/Format" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="format(Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="formatToCharacterIterator(Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator;" />
+		<method name="parseObject(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
+	</class>
+	<class name="java/text/Format$Field" since="1">
+		<extends name="java/text/AttributedCharacterIterator$Attribute" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/text/MessageFormat" since="1">
+		<extends name="java/text/Format" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Locale;)V" />
+		<method name="applyPattern(Ljava/lang/String;)V" />
+		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="format([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="getFormats()[Ljava/text/Format;" />
+		<method name="getFormatsByArgumentIndex()[Ljava/text/Format;" />
+		<method name="getLocale()Ljava/util/Locale;" />
+		<method name="parse(Ljava/lang/String;)[Ljava/lang/Object;" />
+		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)[Ljava/lang/Object;" />
+		<method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
+		<method name="setFormat(ILjava/text/Format;)V" />
+		<method name="setFormatByArgumentIndex(ILjava/text/Format;)V" />
+		<method name="setFormats([Ljava/text/Format;)V" />
+		<method name="setFormatsByArgumentIndex([Ljava/text/Format;)V" />
+		<method name="setLocale(Ljava/util/Locale;)V" />
+		<method name="toPattern()Ljava/lang/String;" />
+	</class>
+	<class name="java/text/MessageFormat$Field" since="1">
+		<extends name="java/text/Format$Field" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="ARGUMENT" />
+	</class>
+	<class name="java/text/Normalizer" since="9">
+		<extends name="java/lang/Object" />
+		<method name="isNormalized(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Z" />
+		<method name="normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;" />
+	</class>
+	<class name="java/text/Normalizer$Form" since="9">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/text/Normalizer$Form;" />
+		<method name="values()[Ljava/text/Normalizer$Form;" />
+		<field name="NFC" />
+		<field name="NFD" />
+		<field name="NFKC" />
+		<field name="NFKD" />
+	</class>
+	<class name="java/text/NumberFormat" since="1">
+		<extends name="java/text/Format" />
+		<method name="&lt;init>()V" />
+		<method name="format(D)Ljava/lang/String;" />
+		<method name="format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(J)Ljava/lang/String;" />
+		<method name="format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" />
+		<method name="getCurrency()Ljava/util/Currency;" />
+		<method name="getCurrencyInstance()Ljava/text/NumberFormat;" />
+		<method name="getCurrencyInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
+		<method name="getInstance()Ljava/text/NumberFormat;" />
+		<method name="getInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
+		<method name="getIntegerInstance()Ljava/text/NumberFormat;" />
+		<method name="getIntegerInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
+		<method name="getMaximumFractionDigits()I" />
+		<method name="getMaximumIntegerDigits()I" />
+		<method name="getMinimumFractionDigits()I" />
+		<method name="getMinimumIntegerDigits()I" />
+		<method name="getNumberInstance()Ljava/text/NumberFormat;" />
+		<method name="getNumberInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
+		<method name="getPercentInstance()Ljava/text/NumberFormat;" />
+		<method name="getPercentInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;" />
+		<method name="getRoundingMode()Ljava/math/RoundingMode;" since="9" />
+		<method name="isGroupingUsed()Z" />
+		<method name="isParseIntegerOnly()Z" />
+		<method name="parse(Ljava/lang/String;)Ljava/lang/Number;" />
+		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;" />
+		<method name="parseObject(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Object;" />
+		<method name="setCurrency(Ljava/util/Currency;)V" />
+		<method name="setGroupingUsed(Z)V" />
+		<method name="setMaximumFractionDigits(I)V" />
+		<method name="setMaximumIntegerDigits(I)V" />
+		<method name="setMinimumFractionDigits(I)V" />
+		<method name="setMinimumIntegerDigits(I)V" />
+		<method name="setParseIntegerOnly(Z)V" />
+		<method name="setRoundingMode(Ljava/math/RoundingMode;)V" since="9" />
+		<field name="FRACTION_FIELD" />
+		<field name="INTEGER_FIELD" />
+	</class>
+	<class name="java/text/NumberFormat$Field" since="1">
+		<extends name="java/text/Format$Field" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="CURRENCY" />
+		<field name="DECIMAL_SEPARATOR" />
+		<field name="EXPONENT" />
+		<field name="EXPONENT_SIGN" />
+		<field name="EXPONENT_SYMBOL" />
+		<field name="FRACTION" />
+		<field name="GROUPING_SEPARATOR" />
+		<field name="INTEGER" />
+		<field name="PERCENT" />
+		<field name="PERMILLE" />
+		<field name="SIGN" />
+	</class>
+	<class name="java/text/ParseException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="getErrorOffset()I" />
+	</class>
+	<class name="java/text/ParsePosition" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="getErrorIndex()I" />
+		<method name="getIndex()I" />
+		<method name="setErrorIndex(I)V" />
+		<method name="setIndex(I)V" />
+	</class>
+	<class name="java/text/RuleBasedCollator" since="1">
+		<extends name="java/text/Collator" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="compare(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getCollationElementIterator(Ljava/lang/String;)Ljava/text/CollationElementIterator;" />
+		<method name="getCollationElementIterator(Ljava/text/CharacterIterator;)Ljava/text/CollationElementIterator;" />
+		<method name="getCollationKey(Ljava/lang/String;)Ljava/text/CollationKey;" />
+		<method name="getRules()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+	</class>
+	<class name="java/text/SimpleDateFormat" since="1">
+		<extends name="java/text/DateFormat" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/text/DateFormatSymbols;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Locale;)V" />
+		<method name="applyLocalizedPattern(Ljava/lang/String;)V" />
+		<method name="applyPattern(Ljava/lang/String;)V" />
+		<method name="format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;" />
+		<method name="get2DigitYearStart()Ljava/util/Date;" />
+		<method name="getDateFormatSymbols()Ljava/text/DateFormatSymbols;" />
+		<method name="parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;" />
+		<method name="set2DigitYearStart(Ljava/util/Date;)V" />
+		<method name="setDateFormatSymbols(Ljava/text/DateFormatSymbols;)V" />
+		<method name="toLocalizedPattern()Ljava/lang/String;" />
+		<method name="toPattern()Ljava/lang/String;" />
+	</class>
+	<class name="java/text/StringCharacterIterator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/text/CharacterIterator" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;III)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="current()C" />
+		<method name="first()C" />
+		<method name="getBeginIndex()I" />
+		<method name="getEndIndex()I" />
+		<method name="getIndex()I" />
+		<method name="last()C" />
+		<method name="next()C" />
+		<method name="previous()C" />
+		<method name="setIndex(I)C" />
+		<method name="setText(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/AbstractCollection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Collection" />
+		<method name="&lt;init>()V" />
+		<method name="add(LE;)Z" />
+		<method name="addAll(Ljava/util/Collection;)Z" />
+		<method name="clear()V" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="containsAll(Ljava/util/Collection;)Z" />
+		<method name="isEmpty()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="remove(Ljava/lang/Object;)Z" />
+		<method name="removeAll(Ljava/util/Collection;)Z" />
+		<method name="retainAll(Ljava/util/Collection;)Z" />
+		<method name="size()I" />
+		<method name="toArray()[Ljava/lang/Object;" />
+		<method name="toArray([LT;)[LT;" />
+	</class>
+	<class name="java/util/AbstractList" since="1">
+		<extends name="java/util/AbstractCollection" />
+		<implements name="java/util/List" />
+		<method name="&lt;init>()V" />
+		<method name="add(ILE;)V" />
+		<method name="addAll(ILjava/util/Collection;)Z" />
+		<method name="get(I)LE;" />
+		<method name="indexOf(Ljava/lang/Object;)I" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="lastIndexOf(Ljava/lang/Object;)I" />
+		<method name="listIterator()Ljava/util/ListIterator;" />
+		<method name="listIterator(I)Ljava/util/ListIterator;" />
+		<method name="remove(I)LE;" />
+		<method name="removeRange(II)V" />
+		<method name="set(ILE;)LE;" />
+		<method name="subList(II)Ljava/util/List;" />
+		<field name="modCount" />
+	</class>
+	<class name="java/util/AbstractMap" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Map" />
+		<method name="&lt;init>()V" />
+		<method name="clear()V" />
+		<method name="containsKey(Ljava/lang/Object;)Z" />
+		<method name="containsValue(Ljava/lang/Object;)Z" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="get(Ljava/lang/Object;)LV;" />
+		<method name="isEmpty()Z" />
+		<method name="keySet()Ljava/util/Set;" />
+		<method name="put(LK;LV;)LV;" />
+		<method name="putAll(Ljava/util/Map;)V" />
+		<method name="remove(Ljava/lang/Object;)LV;" />
+		<method name="size()I" />
+		<method name="values()Ljava/util/Collection;" />
+	</class>
+	<class name="java/util/AbstractMap$SimpleEntry" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Map$Entry" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(LK;LV;)V" />
+		<method name="&lt;init>(Ljava/util/Map$Entry;)V" />
+		<method name="getKey()LK;" />
+		<method name="getValue()LV;" />
+		<method name="setValue(LV;)LV;" />
+	</class>
+	<class name="java/util/AbstractMap$SimpleImmutableEntry" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Map$Entry" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(LK;LV;)V" />
+		<method name="&lt;init>(Ljava/util/Map$Entry;)V" />
+		<method name="getKey()LK;" />
+		<method name="getValue()LV;" />
+		<method name="setValue(LV;)LV;" />
+	</class>
+	<class name="java/util/AbstractQueue" since="1">
+		<extends name="java/util/AbstractCollection" />
+		<implements name="java/util/Queue" />
+		<method name="&lt;init>()V" />
+		<method name="element()LE;" />
+		<method name="remove()LE;" />
+	</class>
+	<class name="java/util/AbstractSequentialList" since="1">
+		<extends name="java/util/AbstractList" />
+		<method name="&lt;init>()V" />
+		<method name="get(I)LE;" />
+		<method name="listIterator(I)Ljava/util/ListIterator;" />
+	</class>
+	<class name="java/util/AbstractSet" since="1">
+		<extends name="java/util/AbstractCollection" />
+		<implements name="java/util/Set" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/util/ArrayDeque" since="9">
+		<extends name="java/util/AbstractCollection" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Deque" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="addFirst(LE;)V" />
+		<method name="addLast(LE;)V" />
+		<method name="clone()Ljava/util/ArrayDeque;" />
+		<method name="descendingIterator()Ljava/util/Iterator;" />
+		<method name="element()LE;" />
+		<method name="getFirst()LE;" />
+		<method name="getLast()LE;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offerFirst(LE;)Z" />
+		<method name="offerLast(LE;)Z" />
+		<method name="peek()LE;" />
+		<method name="peekFirst()LE;" />
+		<method name="peekLast()LE;" />
+		<method name="poll()LE;" />
+		<method name="pollFirst()LE;" />
+		<method name="pollLast()LE;" />
+		<method name="pop()LE;" />
+		<method name="push(LE;)V" />
+		<method name="remove()LE;" />
+		<method name="removeFirst()LE;" />
+		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
+		<method name="removeLast()LE;" />
+		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/ArrayList" since="1">
+		<extends name="java/util/AbstractList" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/List" />
+		<implements name="java/util/RandomAccess" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="ensureCapacity(I)V" />
+		<method name="get(I)LE;" />
+		<method name="size()I" />
+		<method name="trimToSize()V" />
+	</class>
+	<class name="java/util/Arrays" since="1">
+		<extends name="java/lang/Object" />
+		<method name="asList([LT;)Ljava/util/List;" />
+		<method name="binarySearch([BB)I" />
+		<method name="binarySearch([BIIB)I" since="9" />
+		<method name="binarySearch([CC)I" />
+		<method name="binarySearch([CIIC)I" since="9" />
+		<method name="binarySearch([DD)I" />
+		<method name="binarySearch([DIID)I" since="9" />
+		<method name="binarySearch([FF)I" />
+		<method name="binarySearch([FIIF)I" since="9" />
+		<method name="binarySearch([II)I" />
+		<method name="binarySearch([IIII)I" since="9" />
+		<method name="binarySearch([JIIJ)I" since="9" />
+		<method name="binarySearch([JJ)I" />
+		<method name="binarySearch([LT;IILT;Ljava/util/Comparator;)I" since="9" />
+		<method name="binarySearch([LT;LT;Ljava/util/Comparator;)I" />
+		<method name="binarySearch([Ljava/lang/Object;IILjava/lang/Object;)I" since="9" />
+		<method name="binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I" />
+		<method name="binarySearch([SIIS)I" since="9" />
+		<method name="binarySearch([SS)I" />
+		<method name="copyOf([BI)[B" since="9" />
+		<method name="copyOf([CI)[C" since="9" />
+		<method name="copyOf([DI)[D" since="9" />
+		<method name="copyOf([FI)[F" since="9" />
+		<method name="copyOf([II)[I" since="9" />
+		<method name="copyOf([JI)[J" since="9" />
+		<method name="copyOf([LT;I)[LT;" since="9" />
+		<method name="copyOf([LU;ILjava/lang/Class;)[LT;" since="9" />
+		<method name="copyOf([SI)[S" since="9" />
+		<method name="copyOf([ZI)[Z" since="9" />
+		<method name="copyOfRange([BII)[B" since="9" />
+		<method name="copyOfRange([CII)[C" since="9" />
+		<method name="copyOfRange([DII)[D" since="9" />
+		<method name="copyOfRange([FII)[F" since="9" />
+		<method name="copyOfRange([III)[I" since="9" />
+		<method name="copyOfRange([JII)[J" since="9" />
+		<method name="copyOfRange([LT;II)[LT;" since="9" />
+		<method name="copyOfRange([LU;IILjava/lang/Class;)[LT;" since="9" />
+		<method name="copyOfRange([SII)[S" since="9" />
+		<method name="copyOfRange([ZII)[Z" since="9" />
+		<method name="deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z" />
+		<method name="deepHashCode([Ljava/lang/Object;)I" />
+		<method name="deepToString([Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="equals([B[B)Z" />
+		<method name="equals([C[C)Z" />
+		<method name="equals([D[D)Z" />
+		<method name="equals([F[F)Z" />
+		<method name="equals([I[I)Z" />
+		<method name="equals([J[J)Z" />
+		<method name="equals([Ljava/lang/Object;[Ljava/lang/Object;)Z" />
+		<method name="equals([S[S)Z" />
+		<method name="equals([Z[Z)Z" />
+		<method name="fill([BB)V" />
+		<method name="fill([BIIB)V" />
+		<method name="fill([CC)V" />
+		<method name="fill([CIIC)V" />
+		<method name="fill([DD)V" />
+		<method name="fill([DIID)V" />
+		<method name="fill([FF)V" />
+		<method name="fill([FIIF)V" />
+		<method name="fill([II)V" />
+		<method name="fill([IIII)V" />
+		<method name="fill([JIIJ)V" />
+		<method name="fill([JJ)V" />
+		<method name="fill([Ljava/lang/Object;IILjava/lang/Object;)V" />
+		<method name="fill([Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="fill([SIIS)V" />
+		<method name="fill([SS)V" />
+		<method name="fill([ZIIZ)V" />
+		<method name="fill([ZZ)V" />
+		<method name="hashCode([B)I" />
+		<method name="hashCode([C)I" />
+		<method name="hashCode([D)I" />
+		<method name="hashCode([F)I" />
+		<method name="hashCode([I)I" />
+		<method name="hashCode([J)I" />
+		<method name="hashCode([Ljava/lang/Object;)I" />
+		<method name="hashCode([S)I" />
+		<method name="hashCode([Z)I" />
+		<method name="sort([B)V" />
+		<method name="sort([BII)V" />
+		<method name="sort([C)V" />
+		<method name="sort([CII)V" />
+		<method name="sort([D)V" />
+		<method name="sort([DII)V" />
+		<method name="sort([F)V" />
+		<method name="sort([FII)V" />
+		<method name="sort([I)V" />
+		<method name="sort([III)V" />
+		<method name="sort([J)V" />
+		<method name="sort([JII)V" />
+		<method name="sort([LT;IILjava/util/Comparator;)V" />
+		<method name="sort([LT;Ljava/util/Comparator;)V" />
+		<method name="sort([Ljava/lang/Object;)V" />
+		<method name="sort([Ljava/lang/Object;II)V" />
+		<method name="sort([S)V" />
+		<method name="sort([SII)V" />
+		<method name="toString([B)Ljava/lang/String;" />
+		<method name="toString([C)Ljava/lang/String;" />
+		<method name="toString([D)Ljava/lang/String;" />
+		<method name="toString([F)Ljava/lang/String;" />
+		<method name="toString([I)Ljava/lang/String;" />
+		<method name="toString([J)Ljava/lang/String;" />
+		<method name="toString([Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="toString([S)Ljava/lang/String;" />
+		<method name="toString([Z)Ljava/lang/String;" />
+	</class>
+	<class name="java/util/BitSet" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="and(Ljava/util/BitSet;)V" />
+		<method name="andNot(Ljava/util/BitSet;)V" />
+		<method name="cardinality()I" />
+		<method name="clear()V" />
+		<method name="clear(I)V" />
+		<method name="clear(II)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="flip(I)V" />
+		<method name="flip(II)V" />
+		<method name="get(I)Z" />
+		<method name="get(II)Ljava/util/BitSet;" />
+		<method name="intersects(Ljava/util/BitSet;)Z" />
+		<method name="isEmpty()Z" />
+		<method name="length()I" />
+		<method name="nextClearBit(I)I" />
+		<method name="nextSetBit(I)I" />
+		<method name="or(Ljava/util/BitSet;)V" />
+		<method name="set(I)V" />
+		<method name="set(II)V" />
+		<method name="set(IIZ)V" />
+		<method name="set(IZ)V" />
+		<method name="size()I" />
+		<method name="xor(Ljava/util/BitSet;)V" />
+	</class>
+	<class name="java/util/Calendar" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/TimeZone;Ljava/util/Locale;)V" />
+		<method name="add(II)V" />
+		<method name="after(Ljava/lang/Object;)Z" />
+		<method name="before(Ljava/lang/Object;)Z" />
+		<method name="clear()V" />
+		<method name="clear(I)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="compareTo(Ljava/util/Calendar;)I" />
+		<method name="complete()V" />
+		<method name="computeFields()V" />
+		<method name="computeTime()V" />
+		<method name="get(I)I" />
+		<method name="getActualMaximum(I)I" />
+		<method name="getActualMinimum(I)I" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" />
+		<method name="getDisplayName(IILjava/util/Locale;)Ljava/lang/String;" since="9" />
+		<method name="getDisplayNames(IILjava/util/Locale;)Ljava/util/Map;" since="9" />
+		<method name="getFirstDayOfWeek()I" />
+		<method name="getGreatestMinimum(I)I" />
+		<method name="getInstance()Ljava/util/Calendar;" />
+		<method name="getInstance(Ljava/util/Locale;)Ljava/util/Calendar;" />
+		<method name="getInstance(Ljava/util/TimeZone;)Ljava/util/Calendar;" />
+		<method name="getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;" />
+		<method name="getLeastMaximum(I)I" />
+		<method name="getMaximum(I)I" />
+		<method name="getMinimalDaysInFirstWeek()I" />
+		<method name="getMinimum(I)I" />
+		<method name="getTime()Ljava/util/Date;" />
+		<method name="getTimeInMillis()J" />
+		<method name="getTimeZone()Ljava/util/TimeZone;" />
+		<method name="internalGet(I)I" />
+		<method name="isLenient()Z" />
+		<method name="isSet(I)Z" />
+		<method name="roll(II)V" />
+		<method name="roll(IZ)V" />
+		<method name="set(II)V" />
+		<method name="set(III)V" />
+		<method name="set(IIIII)V" />
+		<method name="set(IIIIII)V" />
+		<method name="setFirstDayOfWeek(I)V" />
+		<method name="setLenient(Z)V" />
+		<method name="setMinimalDaysInFirstWeek(I)V" />
+		<method name="setTime(Ljava/util/Date;)V" />
+		<method name="setTimeInMillis(J)V" />
+		<method name="setTimeZone(Ljava/util/TimeZone;)V" />
+		<field name="ALL_STYLES" since="9" />
+		<field name="AM" />
+		<field name="AM_PM" />
+		<field name="APRIL" />
+		<field name="AUGUST" />
+		<field name="DATE" />
+		<field name="DAY_OF_MONTH" />
+		<field name="DAY_OF_WEEK" />
+		<field name="DAY_OF_WEEK_IN_MONTH" />
+		<field name="DAY_OF_YEAR" />
+		<field name="DECEMBER" />
+		<field name="DST_OFFSET" />
+		<field name="ERA" />
+		<field name="FEBRUARY" />
+		<field name="FIELD_COUNT" />
+		<field name="FRIDAY" />
+		<field name="HOUR" />
+		<field name="HOUR_OF_DAY" />
+		<field name="JANUARY" />
+		<field name="JULY" />
+		<field name="JUNE" />
+		<field name="LONG" since="9" />
+		<field name="MARCH" />
+		<field name="MAY" />
+		<field name="MILLISECOND" />
+		<field name="MINUTE" />
+		<field name="MONDAY" />
+		<field name="MONTH" />
+		<field name="NOVEMBER" />
+		<field name="OCTOBER" />
+		<field name="PM" />
+		<field name="SATURDAY" />
+		<field name="SECOND" />
+		<field name="SEPTEMBER" />
+		<field name="SHORT" since="9" />
+		<field name="SUNDAY" />
+		<field name="THURSDAY" />
+		<field name="TUESDAY" />
+		<field name="UNDECIMBER" />
+		<field name="WEDNESDAY" />
+		<field name="WEEK_OF_MONTH" />
+		<field name="WEEK_OF_YEAR" />
+		<field name="YEAR" />
+		<field name="ZONE_OFFSET" />
+		<field name="areFieldsSet" />
+		<field name="fields" />
+		<field name="isSet" />
+		<field name="isTimeSet" />
+		<field name="time" />
+	</class>
+	<class name="java/util/Collection" since="1">
+		<implements name="java/lang/Iterable" />
+		<method name="add(LE;)Z" />
+		<method name="addAll(Ljava/util/Collection;)Z" />
+		<method name="clear()V" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="containsAll(Ljava/util/Collection;)Z" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="hashCode()I" />
+		<method name="isEmpty()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="remove(Ljava/lang/Object;)Z" />
+		<method name="removeAll(Ljava/util/Collection;)Z" />
+		<method name="retainAll(Ljava/util/Collection;)Z" />
+		<method name="size()I" />
+		<method name="toArray()[Ljava/lang/Object;" />
+		<method name="toArray([LT;)[LT;" />
+	</class>
+	<class name="java/util/Collections" since="1">
+		<extends name="java/lang/Object" />
+		<method name="addAll(Ljava/util/Collection;[LT;)Z" />
+		<method name="asLifoQueue(Ljava/util/Deque;)Ljava/util/Queue;" since="9" />
+		<method name="binarySearch(Ljava/util/List;LT;)I" />
+		<method name="binarySearch(Ljava/util/List;LT;Ljava/util/Comparator;)I" />
+		<method name="checkedCollection(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;" />
+		<method name="checkedList(Ljava/util/List;Ljava/lang/Class;)Ljava/util/List;" />
+		<method name="checkedMap(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/Map;" />
+		<method name="checkedSet(Ljava/util/Set;Ljava/lang/Class;)Ljava/util/Set;" />
+		<method name="checkedSortedMap(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)Ljava/util/SortedMap;" />
+		<method name="checkedSortedSet(Ljava/util/SortedSet;Ljava/lang/Class;)Ljava/util/SortedSet;" />
+		<method name="copy(Ljava/util/List;Ljava/util/List;)V" />
+		<method name="disjoint(Ljava/util/Collection;Ljava/util/Collection;)Z" />
+		<method name="emptyList()Ljava/util/List;" />
+		<method name="emptyMap()Ljava/util/Map;" />
+		<method name="emptySet()Ljava/util/Set;" />
+		<method name="enumeration(Ljava/util/Collection;)Ljava/util/Enumeration;" />
+		<method name="fill(Ljava/util/List;LT;)V" />
+		<method name="frequency(Ljava/util/Collection;Ljava/lang/Object;)I" />
+		<method name="indexOfSubList(Ljava/util/List;Ljava/util/List;)I" />
+		<method name="lastIndexOfSubList(Ljava/util/List;Ljava/util/List;)I" />
+		<method name="list(Ljava/util/Enumeration;)Ljava/util/ArrayList;" />
+		<method name="max(Ljava/util/Collection;)LT;" />
+		<method name="max(Ljava/util/Collection;Ljava/util/Comparator;)LT;" />
+		<method name="min(Ljava/util/Collection;)LT;" />
+		<method name="min(Ljava/util/Collection;Ljava/util/Comparator;)LT;" />
+		<method name="nCopies(ILT;)Ljava/util/List;" />
+		<method name="newSetFromMap(Ljava/util/Map;)Ljava/util/Set;" since="9" />
+		<method name="replaceAll(Ljava/util/List;LT;LT;)Z" />
+		<method name="reverse(Ljava/util/List;)V" />
+		<method name="reverseOrder()Ljava/util/Comparator;" />
+		<method name="reverseOrder(Ljava/util/Comparator;)Ljava/util/Comparator;" />
+		<method name="rotate(Ljava/util/List;I)V" />
+		<method name="shuffle(Ljava/util/List;)V" />
+		<method name="shuffle(Ljava/util/List;Ljava/util/Random;)V" />
+		<method name="singleton(LE;)Ljava/util/Set;" />
+		<method name="singletonList(LE;)Ljava/util/List;" />
+		<method name="singletonMap(LK;LV;)Ljava/util/Map;" />
+		<method name="sort(Ljava/util/List;)V" />
+		<method name="sort(Ljava/util/List;Ljava/util/Comparator;)V" />
+		<method name="swap(Ljava/util/List;II)V" />
+		<method name="synchronizedCollection(Ljava/util/Collection;)Ljava/util/Collection;" />
+		<method name="synchronizedList(Ljava/util/List;)Ljava/util/List;" />
+		<method name="synchronizedMap(Ljava/util/Map;)Ljava/util/Map;" />
+		<method name="synchronizedSet(Ljava/util/Set;)Ljava/util/Set;" />
+		<method name="synchronizedSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap;" />
+		<method name="synchronizedSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet;" />
+		<method name="unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;" />
+		<method name="unmodifiableList(Ljava/util/List;)Ljava/util/List;" />
+		<method name="unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;" />
+		<method name="unmodifiableSet(Ljava/util/Set;)Ljava/util/Set;" />
+		<method name="unmodifiableSortedMap(Ljava/util/SortedMap;)Ljava/util/SortedMap;" />
+		<method name="unmodifiableSortedSet(Ljava/util/SortedSet;)Ljava/util/SortedSet;" />
+		<field name="EMPTY_LIST" />
+		<field name="EMPTY_MAP" />
+		<field name="EMPTY_SET" />
+	</class>
+	<class name="java/util/Comparator" since="1">
+		<method name="compare(LT;LT;)I" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+	</class>
+	<class name="java/util/ConcurrentModificationException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/Currency" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="getCurrencyCode()Ljava/lang/String;" />
+		<method name="getDefaultFractionDigits()I" />
+		<method name="getInstance(Ljava/lang/String;)Ljava/util/Currency;" />
+		<method name="getInstance(Ljava/util/Locale;)Ljava/util/Currency;" />
+		<method name="getSymbol()Ljava/lang/String;" />
+		<method name="getSymbol(Ljava/util/Locale;)Ljava/lang/String;" />
+	</class>
+	<class name="java/util/Date" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(IIIII)V" />
+		<method name="&lt;init>(IIIIII)V" />
+		<method name="&lt;init>(J)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="UTC(IIIIII)J" />
+		<method name="after(Ljava/util/Date;)Z" />
+		<method name="before(Ljava/util/Date;)Z" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="compareTo(Ljava/util/Date;)I" />
+		<method name="getDate()I" />
+		<method name="getDay()I" />
+		<method name="getHours()I" />
+		<method name="getMinutes()I" />
+		<method name="getMonth()I" />
+		<method name="getSeconds()I" />
+		<method name="getTime()J" />
+		<method name="getTimezoneOffset()I" />
+		<method name="getYear()I" />
+		<method name="parse(Ljava/lang/String;)J" />
+		<method name="setDate(I)V" />
+		<method name="setHours(I)V" />
+		<method name="setMinutes(I)V" />
+		<method name="setMonth(I)V" />
+		<method name="setSeconds(I)V" />
+		<method name="setTime(J)V" />
+		<method name="setYear(I)V" />
+		<method name="toGMTString()Ljava/lang/String;" />
+		<method name="toLocaleString()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/Deque" since="9">
+		<implements name="java/util/Queue" />
+		<method name="add(LE;)Z" since="11" />
+		<method name="addFirst(LE;)V" />
+		<method name="addLast(LE;)V" />
+		<method name="contains(Ljava/lang/Object;)Z" since="11" />
+		<method name="descendingIterator()Ljava/util/Iterator;" />
+		<method name="element()LE;" since="11" />
+		<method name="getFirst()LE;" />
+		<method name="getLast()LE;" />
+		<method name="iterator()Ljava/util/Iterator;" since="11" />
+		<method name="offer(LE;)Z" since="11" />
+		<method name="offerFirst(LE;)Z" />
+		<method name="offerLast(LE;)Z" />
+		<method name="peek()LE;" since="11" />
+		<method name="peekFirst()LE;" />
+		<method name="peekLast()LE;" />
+		<method name="poll()LE;" since="11" />
+		<method name="pollFirst()LE;" />
+		<method name="pollLast()LE;" />
+		<method name="pop()LE;" />
+		<method name="push(LE;)V" />
+		<method name="remove()LE;" since="11" />
+		<method name="remove(Ljava/lang/Object;)Z" since="11" />
+		<method name="removeFirst()LE;" />
+		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
+		<method name="removeLast()LE;" />
+		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
+		<method name="size()I" since="11" />
+	</class>
+	<class name="java/util/Dictionary" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="elements()Ljava/util/Enumeration;" />
+		<method name="get(Ljava/lang/Object;)LV;" />
+		<method name="isEmpty()Z" />
+		<method name="keys()Ljava/util/Enumeration;" />
+		<method name="put(LK;LV;)LV;" />
+		<method name="remove(Ljava/lang/Object;)LV;" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/DuplicateFormatFlagsException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getFlags()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/EmptyStackException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/util/EnumMap" since="1">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Map" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Ljava/util/EnumMap;)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="clone()Ljava/util/EnumMap;" />
+		<method name="entrySet()Ljava/util/Set;" />
+	</class>
+	<class name="java/util/EnumSet" since="1">
+		<extends name="java/util/AbstractSet" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="allOf(Ljava/lang/Class;)Ljava/util/EnumSet;" />
+		<method name="clone()Ljava/util/EnumSet;" />
+		<method name="complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;" />
+		<method name="copyOf(Ljava/util/Collection;)Ljava/util/EnumSet;" />
+		<method name="copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;" />
+		<method name="noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;" />
+		<method name="of(LE;)Ljava/util/EnumSet;" />
+		<method name="of(LE;LE;)Ljava/util/EnumSet;" />
+		<method name="of(LE;LE;LE;)Ljava/util/EnumSet;" />
+		<method name="of(LE;LE;LE;LE;)Ljava/util/EnumSet;" />
+		<method name="of(LE;LE;LE;LE;LE;)Ljava/util/EnumSet;" />
+		<method name="of(LE;[LE;)Ljava/util/EnumSet;" />
+		<method name="range(LE;LE;)Ljava/util/EnumSet;" />
+	</class>
+	<class name="java/util/Enumeration" since="1">
+		<method name="hasMoreElements()Z" />
+		<method name="nextElement()LE;" />
+	</class>
+	<class name="java/util/EventListener" since="1">
+	</class>
+	<class name="java/util/EventListenerProxy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/EventListener" />
+		<method name="&lt;init>(Ljava/util/EventListener;)V" />
+		<method name="getListener()Ljava/util/EventListener;" />
+	</class>
+	<class name="java/util/EventObject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/Object;)V" />
+		<method name="getSource()Ljava/lang/Object;" />
+		<field name="source" />
+	</class>
+	<class name="java/util/FormatFlagsConversionMismatchException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;C)V" />
+		<method name="getConversion()C" />
+		<method name="getFlags()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/Formattable" since="1">
+		<method name="formatTo(Ljava/util/Formatter;III)V" />
+	</class>
+	<class name="java/util/FormattableFlags" since="1">
+		<extends name="java/lang/Object" />
+		<field name="ALTERNATE" />
+		<field name="LEFT_JUSTIFY" />
+		<field name="UPPERCASE" />
+	</class>
+	<class name="java/util/Formatter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Closeable" />
+		<implements name="java/io/Flushable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;Ljava/util/Locale;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/lang/String;Ljava/util/Locale;)V" />
+		<method name="&lt;init>(Ljava/io/PrintStream;)V" />
+		<method name="&lt;init>(Ljava/lang/Appendable;)V" />
+		<method name="&lt;init>(Ljava/lang/Appendable;Ljava/util/Locale;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Locale;)V" />
+		<method name="&lt;init>(Ljava/util/Locale;)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;" />
+		<method name="format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;" />
+		<method name="ioException()Ljava/io/IOException;" />
+		<method name="locale()Ljava/util/Locale;" />
+		<method name="out()Ljava/lang/Appendable;" />
+	</class>
+	<class name="java/util/Formatter$BigDecimalLayoutForm" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/util/Formatter$BigDecimalLayoutForm;" />
+		<method name="values()[Ljava/util/Formatter$BigDecimalLayoutForm;" />
+		<field name="DECIMAL_FLOAT" />
+		<field name="SCIENTIFIC" />
+	</class>
+	<class name="java/util/FormatterClosedException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/util/GregorianCalendar" since="1">
+		<extends name="java/util/Calendar" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(IIIII)V" />
+		<method name="&lt;init>(IIIIII)V" />
+		<method name="&lt;init>(Ljava/util/Locale;)V" />
+		<method name="&lt;init>(Ljava/util/TimeZone;)V" />
+		<method name="&lt;init>(Ljava/util/TimeZone;Ljava/util/Locale;)V" />
+		<method name="add(II)V" />
+		<method name="computeFields()V" />
+		<method name="computeTime()V" />
+		<method name="getGreatestMinimum(I)I" />
+		<method name="getGregorianChange()Ljava/util/Date;" />
+		<method name="getLeastMaximum(I)I" />
+		<method name="getMaximum(I)I" />
+		<method name="getMinimum(I)I" />
+		<method name="isLeapYear(I)Z" />
+		<method name="roll(IZ)V" />
+		<method name="setGregorianChange(Ljava/util/Date;)V" />
+		<field name="AD" />
+		<field name="BC" />
+	</class>
+	<class name="java/util/HashMap" since="1">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Map" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="entrySet()Ljava/util/Set;" />
+	</class>
+	<class name="java/util/HashSet" since="1">
+		<extends name="java/util/AbstractSet" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/util/Set" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/Hashtable" since="1">
+		<extends name="java/util/Dictionary" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Map" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="containsKey(Ljava/lang/Object;)Z" />
+		<method name="containsValue(Ljava/lang/Object;)Z" />
+		<method name="elements()Ljava/util/Enumeration;" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="get(Ljava/lang/Object;)LV;" />
+		<method name="isEmpty()Z" />
+		<method name="keySet()Ljava/util/Set;" />
+		<method name="keys()Ljava/util/Enumeration;" />
+		<method name="put(LK;LV;)LV;" />
+		<method name="putAll(Ljava/util/Map;)V" />
+		<method name="rehash()V" />
+		<method name="remove(Ljava/lang/Object;)LV;" />
+		<method name="size()I" />
+		<method name="values()Ljava/util/Collection;" />
+	</class>
+	<class name="java/util/IdentityHashMap" since="1">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Map" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="entrySet()Ljava/util/Set;" />
+	</class>
+	<class name="java/util/IllegalFormatCodePointException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="getCodePoint()I" />
+	</class>
+	<class name="java/util/IllegalFormatConversionException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(CLjava/lang/Class;)V" />
+		<method name="getArgumentClass()Ljava/lang/Class;" />
+		<method name="getConversion()C" />
+	</class>
+	<class name="java/util/IllegalFormatException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<implements name="java/io/Serializable" />
+	</class>
+	<class name="java/util/IllegalFormatFlagsException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getFlags()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/IllegalFormatPrecisionException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(I)V" />
+		<method name="getPrecision()I" />
+	</class>
+	<class name="java/util/IllegalFormatWidthException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(I)V" />
+		<method name="getWidth()I" />
+	</class>
+	<class name="java/util/InputMismatchException" since="1">
+		<extends name="java/util/NoSuchElementException" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/InvalidPropertiesFormatException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/Iterator" since="1">
+		<method name="hasNext()Z" />
+		<method name="next()LE;" />
+		<method name="remove()V" />
+	</class>
+	<class name="java/util/LinkedHashMap" since="1">
+		<extends name="java/util/HashMap" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" />
+		<method name="&lt;init>(IFZ)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="removeEldestEntry(Ljava/util/Map$Entry;)Z" />
+	</class>
+	<class name="java/util/LinkedHashSet" since="1">
+		<extends name="java/util/HashSet" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/util/Set" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+	</class>
+	<class name="java/util/LinkedList" since="1">
+		<extends name="java/util/AbstractSequentialList" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/List" />
+		<implements name="java/util/Queue" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/util/Deque" since="9" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="addFirst(LE;)V" />
+		<method name="addLast(LE;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="descendingIterator()Ljava/util/Iterator;" since="9" />
+		<method name="element()LE;" />
+		<method name="getFirst()LE;" />
+		<method name="getLast()LE;" />
+		<method name="listIterator(I)Ljava/util/ListIterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offerFirst(LE;)Z" since="9" />
+		<method name="offerLast(LE;)Z" since="9" />
+		<method name="peek()LE;" />
+		<method name="peekFirst()LE;" since="9" />
+		<method name="peekLast()LE;" since="9" />
+		<method name="poll()LE;" />
+		<method name="pollFirst()LE;" since="9" />
+		<method name="pollLast()LE;" since="9" />
+		<method name="pop()LE;" since="9" />
+		<method name="push(LE;)V" since="9" />
+		<method name="remove()LE;" />
+		<method name="removeFirst()LE;" />
+		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" since="9" />
+		<method name="removeLast()LE;" />
+		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" since="9" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/List" since="1">
+		<implements name="java/util/Collection" />
+		<method name="add(ILE;)V" />
+		<method name="add(LE;)Z" />
+		<method name="addAll(ILjava/util/Collection;)Z" />
+		<method name="addAll(Ljava/util/Collection;)Z" />
+		<method name="clear()V" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="containsAll(Ljava/util/Collection;)Z" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="get(I)LE;" />
+		<method name="hashCode()I" />
+		<method name="indexOf(Ljava/lang/Object;)I" />
+		<method name="isEmpty()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="lastIndexOf(Ljava/lang/Object;)I" />
+		<method name="listIterator()Ljava/util/ListIterator;" />
+		<method name="listIterator(I)Ljava/util/ListIterator;" />
+		<method name="remove(I)LE;" />
+		<method name="remove(Ljava/lang/Object;)Z" />
+		<method name="removeAll(Ljava/util/Collection;)Z" />
+		<method name="retainAll(Ljava/util/Collection;)Z" />
+		<method name="set(ILE;)LE;" />
+		<method name="size()I" />
+		<method name="subList(II)Ljava/util/List;" />
+		<method name="toArray()[Ljava/lang/Object;" />
+		<method name="toArray([LT;)[LT;" />
+	</class>
+	<class name="java/util/ListIterator" since="1">
+		<implements name="java/util/Iterator" />
+		<method name="add(LE;)V" />
+		<method name="hasNext()Z" />
+		<method name="hasPrevious()Z" />
+		<method name="next()LE;" />
+		<method name="nextIndex()I" />
+		<method name="previous()LE;" />
+		<method name="previousIndex()I" />
+		<method name="remove()V" />
+		<method name="set(LE;)V" />
+	</class>
+	<class name="java/util/ListResourceBundle" since="1">
+		<extends name="java/util/ResourceBundle" />
+		<method name="&lt;init>()V" />
+		<method name="getContents()[[Ljava/lang/Object;" />
+		<method name="getKeys()Ljava/util/Enumeration;" />
+		<method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;" />
+	</class>
+	<class name="java/util/Locale" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getAvailableLocales()[Ljava/util/Locale;" />
+		<method name="getCountry()Ljava/lang/String;" />
+		<method name="getDefault()Ljava/util/Locale;" />
+		<method name="getDisplayCountry()Ljava/lang/String;" />
+		<method name="getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="getDisplayLanguage()Ljava/lang/String;" />
+		<method name="getDisplayLanguage(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="getDisplayName()Ljava/lang/String;" />
+		<method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="getDisplayVariant()Ljava/lang/String;" />
+		<method name="getDisplayVariant(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="getISO3Country()Ljava/lang/String;" />
+		<method name="getISO3Language()Ljava/lang/String;" />
+		<method name="getISOCountries()[Ljava/lang/String;" />
+		<method name="getISOLanguages()[Ljava/lang/String;" />
+		<method name="getLanguage()Ljava/lang/String;" />
+		<method name="getVariant()Ljava/lang/String;" />
+		<method name="setDefault(Ljava/util/Locale;)V" />
+		<method name="toString()Ljava/lang/String;" />
+		<field name="CANADA" />
+		<field name="CANADA_FRENCH" />
+		<field name="CHINA" />
+		<field name="CHINESE" />
+		<field name="ENGLISH" />
+		<field name="FRANCE" />
+		<field name="FRENCH" />
+		<field name="GERMAN" />
+		<field name="GERMANY" />
+		<field name="ITALIAN" />
+		<field name="ITALY" />
+		<field name="JAPAN" />
+		<field name="JAPANESE" />
+		<field name="KOREA" />
+		<field name="KOREAN" />
+		<field name="PRC" />
+		<field name="ROOT" since="9" />
+		<field name="SIMPLIFIED_CHINESE" />
+		<field name="TAIWAN" />
+		<field name="TRADITIONAL_CHINESE" />
+		<field name="UK" />
+		<field name="US" />
+	</class>
+	<class name="java/util/Map" since="1">
+		<method name="clear()V" />
+		<method name="containsKey(Ljava/lang/Object;)Z" />
+		<method name="containsValue(Ljava/lang/Object;)Z" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="get(Ljava/lang/Object;)LV;" />
+		<method name="hashCode()I" />
+		<method name="isEmpty()Z" />
+		<method name="keySet()Ljava/util/Set;" />
+		<method name="put(LK;LV;)LV;" />
+		<method name="putAll(Ljava/util/Map;)V" />
+		<method name="remove(Ljava/lang/Object;)LV;" />
+		<method name="size()I" />
+		<method name="values()Ljava/util/Collection;" />
+	</class>
+	<class name="java/util/Map$Entry" since="1">
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getKey()LK;" />
+		<method name="getValue()LV;" />
+		<method name="hashCode()I" />
+		<method name="setValue(LV;)LV;" />
+	</class>
+	<class name="java/util/MissingFormatArgumentException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getFormatSpecifier()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/MissingFormatWidthException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getFormatSpecifier()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/MissingResourceException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getClassName()Ljava/lang/String;" />
+		<method name="getKey()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/NavigableMap" since="9">
+		<implements name="java/util/SortedMap" />
+		<method name="ceilingEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="ceilingKey(LK;)LK;" />
+		<method name="descendingKeySet()Ljava/util/NavigableSet;" />
+		<method name="descendingMap()Ljava/util/NavigableMap;" />
+		<method name="firstEntry()Ljava/util/Map$Entry;" />
+		<method name="floorEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="floorKey(LK;)LK;" />
+		<method name="headMap(LK;)Ljava/util/SortedMap;" since="11" />
+		<method name="headMap(LK;Z)Ljava/util/NavigableMap;" />
+		<method name="higherEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="higherKey(LK;)LK;" />
+		<method name="lastEntry()Ljava/util/Map$Entry;" />
+		<method name="lowerEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="lowerKey(LK;)LK;" />
+		<method name="navigableKeySet()Ljava/util/NavigableSet;" />
+		<method name="pollFirstEntry()Ljava/util/Map$Entry;" />
+		<method name="pollLastEntry()Ljava/util/Map$Entry;" />
+		<method name="subMap(LK;LK;)Ljava/util/SortedMap;" since="11" />
+		<method name="subMap(LK;ZLK;Z)Ljava/util/NavigableMap;" />
+		<method name="tailMap(LK;)Ljava/util/SortedMap;" since="11" />
+		<method name="tailMap(LK;Z)Ljava/util/NavigableMap;" />
+	</class>
+	<class name="java/util/NavigableSet" since="9">
+		<implements name="java/util/SortedSet" />
+		<method name="ceiling(LE;)LE;" />
+		<method name="descendingIterator()Ljava/util/Iterator;" />
+		<method name="descendingSet()Ljava/util/NavigableSet;" />
+		<method name="floor(LE;)LE;" />
+		<method name="headSet(LE;)Ljava/util/SortedSet;" since="11" />
+		<method name="headSet(LE;Z)Ljava/util/NavigableSet;" />
+		<method name="higher(LE;)LE;" />
+		<method name="iterator()Ljava/util/Iterator;" since="11" />
+		<method name="lower(LE;)LE;" />
+		<method name="pollFirst()LE;" />
+		<method name="pollLast()LE;" />
+		<method name="subSet(LE;LE;)Ljava/util/SortedSet;" since="11" />
+		<method name="subSet(LE;ZLE;Z)Ljava/util/NavigableSet;" />
+		<method name="tailSet(LE;)Ljava/util/SortedSet;" since="11" />
+		<method name="tailSet(LE;Z)Ljava/util/NavigableSet;" />
+	</class>
+	<class name="java/util/NoSuchElementException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/Observable" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addObserver(Ljava/util/Observer;)V" />
+		<method name="clearChanged()V" />
+		<method name="countObservers()I" />
+		<method name="deleteObserver(Ljava/util/Observer;)V" />
+		<method name="deleteObservers()V" />
+		<method name="hasChanged()Z" />
+		<method name="notifyObservers()V" />
+		<method name="notifyObservers(Ljava/lang/Object;)V" />
+		<method name="setChanged()V" />
+	</class>
+	<class name="java/util/Observer" since="1">
+		<method name="update(Ljava/util/Observable;Ljava/lang/Object;)V" />
+	</class>
+	<class name="java/util/PriorityQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/util/Comparator;)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="&lt;init>(Ljava/util/PriorityQueue;)V" />
+		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/Properties" since="1">
+		<extends name="java/util/Hashtable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Properties;)V" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="list(Ljava/io/PrintStream;)V" />
+		<method name="list(Ljava/io/PrintWriter;)V" />
+		<method name="load(Ljava/io/InputStream;)V" />
+		<method name="load(Ljava/io/Reader;)V" since="9" />
+		<method name="loadFromXML(Ljava/io/InputStream;)V" />
+		<method name="propertyNames()Ljava/util/Enumeration;" />
+		<method name="save(Ljava/io/OutputStream;Ljava/lang/String;)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="store(Ljava/io/OutputStream;Ljava/lang/String;)V" />
+		<method name="store(Ljava/io/Writer;Ljava/lang/String;)V" since="9" />
+		<method name="storeToXML(Ljava/io/OutputStream;Ljava/lang/String;)V" />
+		<method name="storeToXML(Ljava/io/OutputStream;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="stringPropertyNames()Ljava/util/Set;" since="9" />
+		<field name="defaults" />
+	</class>
+	<class name="java/util/PropertyPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/PropertyResourceBundle" since="1">
+		<extends name="java/util/ResourceBundle" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" since="9" />
+		<method name="getKeys()Ljava/util/Enumeration;" />
+		<method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;" />
+	</class>
+	<class name="java/util/Queue" since="1">
+		<implements name="java/util/Collection" />
+		<method name="add(LE;)Z" since="11" />
+		<method name="element()LE;" />
+		<method name="offer(LE;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="remove()LE;" />
+	</class>
+	<class name="java/util/Random" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(J)V" />
+		<method name="next(I)I" />
+		<method name="nextBoolean()Z" />
+		<method name="nextBytes([B)V" />
+		<method name="nextDouble()D" />
+		<method name="nextFloat()F" />
+		<method name="nextGaussian()D" />
+		<method name="nextInt()I" />
+		<method name="nextInt(I)I" />
+		<method name="nextLong()J" />
+		<method name="setSeed(J)V" />
+	</class>
+	<class name="java/util/RandomAccess" since="1">
+	</class>
+	<class name="java/util/ResourceBundle" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clearCache()V" since="9" />
+		<method name="clearCache(Ljava/lang/ClassLoader;)V" since="9" />
+		<method name="containsKey(Ljava/lang/String;)Z" since="9" />
+		<method name="getBundle(Ljava/lang/String;)Ljava/util/ResourceBundle;" />
+		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/ResourceBundle;" />
+		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;" />
+		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9" />
+		<method name="getBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9" />
+		<method name="getBundle(Ljava/lang/String;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle;" since="9" />
+		<method name="getKeys()Ljava/util/Enumeration;" />
+		<method name="getLocale()Ljava/util/Locale;" />
+		<method name="getObject(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getStringArray(Ljava/lang/String;)[Ljava/lang/String;" />
+		<method name="handleGetObject(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="handleKeySet()Ljava/util/Set;" since="9" />
+		<method name="keySet()Ljava/util/Set;" since="9" />
+		<method name="setParent(Ljava/util/ResourceBundle;)V" />
+		<field name="parent" />
+	</class>
+	<class name="java/util/ResourceBundle$Control" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getCandidateLocales(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/List;" />
+		<method name="getControl(Ljava/util/List;)Ljava/util/ResourceBundle$Control;" />
+		<method name="getFallbackLocale(Ljava/lang/String;Ljava/util/Locale;)Ljava/util/Locale;" />
+		<method name="getFormats(Ljava/lang/String;)Ljava/util/List;" />
+		<method name="getNoFallbackControl(Ljava/util/List;)Ljava/util/ResourceBundle$Control;" />
+		<method name="getTimeToLive(Ljava/lang/String;Ljava/util/Locale;)J" />
+		<method name="needsReload(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle;J)Z" />
+		<method name="newBundle(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Ljava/util/ResourceBundle;" />
+		<method name="toBundleName(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="toResourceName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<field name="FORMAT_CLASS" />
+		<field name="FORMAT_DEFAULT" />
+		<field name="FORMAT_PROPERTIES" />
+		<field name="TTL_DONT_CACHE" />
+		<field name="TTL_NO_EXPIRATION_CONTROL" />
+	</class>
+	<class name="java/util/Scanner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Iterator" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Readable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/nio/channels/ReadableByteChannel;)V" />
+		<method name="&lt;init>(Ljava/nio/channels/ReadableByteChannel;Ljava/lang/String;)V" />
+		<method name="close()V" />
+		<method name="delimiter()Ljava/util/regex/Pattern;" />
+		<method name="findInLine(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="findInLine(Ljava/util/regex/Pattern;)Ljava/lang/String;" />
+		<method name="findWithinHorizon(Ljava/lang/String;I)Ljava/lang/String;" />
+		<method name="findWithinHorizon(Ljava/util/regex/Pattern;I)Ljava/lang/String;" />
+		<method name="hasNext()Z" />
+		<method name="hasNext(Ljava/lang/String;)Z" />
+		<method name="hasNext(Ljava/util/regex/Pattern;)Z" />
+		<method name="hasNextBigDecimal()Z" />
+		<method name="hasNextBigInteger()Z" />
+		<method name="hasNextBigInteger(I)Z" />
+		<method name="hasNextBoolean()Z" />
+		<method name="hasNextByte()Z" />
+		<method name="hasNextByte(I)Z" />
+		<method name="hasNextDouble()Z" />
+		<method name="hasNextFloat()Z" />
+		<method name="hasNextInt()Z" />
+		<method name="hasNextInt(I)Z" />
+		<method name="hasNextLine()Z" />
+		<method name="hasNextLong()Z" />
+		<method name="hasNextLong(I)Z" />
+		<method name="hasNextShort()Z" />
+		<method name="hasNextShort(I)Z" />
+		<method name="ioException()Ljava/io/IOException;" />
+		<method name="locale()Ljava/util/Locale;" />
+		<method name="match()Ljava/util/regex/MatchResult;" />
+		<method name="next()Ljava/lang/String;" />
+		<method name="next(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="next(Ljava/util/regex/Pattern;)Ljava/lang/String;" />
+		<method name="nextBigDecimal()Ljava/math/BigDecimal;" />
+		<method name="nextBigInteger()Ljava/math/BigInteger;" />
+		<method name="nextBigInteger(I)Ljava/math/BigInteger;" />
+		<method name="nextBoolean()Z" />
+		<method name="nextByte()B" />
+		<method name="nextByte(I)B" />
+		<method name="nextDouble()D" />
+		<method name="nextFloat()F" />
+		<method name="nextInt()I" />
+		<method name="nextInt(I)I" />
+		<method name="nextLine()Ljava/lang/String;" />
+		<method name="nextLong()J" />
+		<method name="nextLong(I)J" />
+		<method name="nextShort()S" />
+		<method name="nextShort(I)S" />
+		<method name="radix()I" />
+		<method name="remove()V" />
+		<method name="reset()Ljava/util/Scanner;" since="9" />
+		<method name="skip(Ljava/lang/String;)Ljava/util/Scanner;" />
+		<method name="skip(Ljava/util/regex/Pattern;)Ljava/util/Scanner;" />
+		<method name="useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;" />
+		<method name="useDelimiter(Ljava/util/regex/Pattern;)Ljava/util/Scanner;" />
+		<method name="useLocale(Ljava/util/Locale;)Ljava/util/Scanner;" />
+		<method name="useRadix(I)Ljava/util/Scanner;" />
+	</class>
+	<class name="java/util/ServiceConfigurationError" since="9">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/ServiceLoader" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Iterable" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="load(Ljava/lang/Class;)Ljava/util/ServiceLoader;" />
+		<method name="load(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;" />
+		<method name="loadInstalled(Ljava/lang/Class;)Ljava/util/ServiceLoader;" />
+		<method name="reload()V" />
+	</class>
+	<class name="java/util/Set" since="1">
+		<implements name="java/util/Collection" />
+		<method name="add(LE;)Z" />
+		<method name="addAll(Ljava/util/Collection;)Z" />
+		<method name="clear()V" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="containsAll(Ljava/util/Collection;)Z" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="hashCode()I" />
+		<method name="isEmpty()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="remove(Ljava/lang/Object;)Z" />
+		<method name="removeAll(Ljava/util/Collection;)Z" />
+		<method name="retainAll(Ljava/util/Collection;)Z" />
+		<method name="size()I" />
+		<method name="toArray()[Ljava/lang/Object;" />
+		<method name="toArray([LT;)[LT;" />
+	</class>
+	<class name="java/util/SimpleTimeZone" since="1">
+		<extends name="java/util/TimeZone" />
+		<method name="&lt;init>(ILjava/lang/String;)V" />
+		<method name="&lt;init>(ILjava/lang/String;IIIIIIII)V" />
+		<method name="&lt;init>(ILjava/lang/String;IIIIIIIII)V" />
+		<method name="&lt;init>(ILjava/lang/String;IIIIIIIIIII)V" />
+		<method name="getOffset(IIIIII)I" />
+		<method name="getRawOffset()I" />
+		<method name="inDaylightTime(Ljava/util/Date;)Z" />
+		<method name="setDSTSavings(I)V" />
+		<method name="setEndRule(III)V" />
+		<method name="setEndRule(IIII)V" />
+		<method name="setEndRule(IIIIZ)V" />
+		<method name="setRawOffset(I)V" />
+		<method name="setStartRule(III)V" />
+		<method name="setStartRule(IIII)V" />
+		<method name="setStartRule(IIIIZ)V" />
+		<method name="setStartYear(I)V" />
+		<method name="useDaylightTime()Z" />
+		<field name="STANDARD_TIME" />
+		<field name="UTC_TIME" />
+		<field name="WALL_TIME" />
+	</class>
+	<class name="java/util/SortedMap" since="1">
+		<implements name="java/util/Map" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="firstKey()LK;" />
+		<method name="headMap(LK;)Ljava/util/SortedMap;" />
+		<method name="lastKey()LK;" />
+		<method name="subMap(LK;LK;)Ljava/util/SortedMap;" />
+		<method name="tailMap(LK;)Ljava/util/SortedMap;" />
+	</class>
+	<class name="java/util/SortedSet" since="1">
+		<implements name="java/util/Set" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="first()LE;" />
+		<method name="headSet(LE;)Ljava/util/SortedSet;" />
+		<method name="last()LE;" />
+		<method name="subSet(LE;LE;)Ljava/util/SortedSet;" />
+		<method name="tailSet(LE;)Ljava/util/SortedSet;" />
+	</class>
+	<class name="java/util/Stack" since="1">
+		<extends name="java/util/Vector" />
+		<method name="&lt;init>()V" />
+		<method name="empty()Z" />
+		<method name="peek()LE;" />
+		<method name="pop()LE;" />
+		<method name="push(LE;)LE;" />
+		<method name="search(Ljava/lang/Object;)I" />
+	</class>
+	<class name="java/util/StringTokenizer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Enumeration" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Z)V" />
+		<method name="countTokens()I" />
+		<method name="hasMoreElements()Z" />
+		<method name="hasMoreTokens()Z" />
+		<method name="nextElement()Ljava/lang/Object;" />
+		<method name="nextToken()Ljava/lang/String;" />
+		<method name="nextToken(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="java/util/TimeZone" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getAvailableIDs()[Ljava/lang/String;" />
+		<method name="getAvailableIDs(I)[Ljava/lang/String;" />
+		<method name="getDSTSavings()I" />
+		<method name="getDefault()Ljava/util/TimeZone;" />
+		<method name="getDisplayName()Ljava/lang/String;" />
+		<method name="getDisplayName(Ljava/util/Locale;)Ljava/lang/String;" />
+		<method name="getDisplayName(ZI)Ljava/lang/String;" />
+		<method name="getDisplayName(ZILjava/util/Locale;)Ljava/lang/String;" />
+		<method name="getID()Ljava/lang/String;" />
+		<method name="getOffset(IIIIII)I" />
+		<method name="getOffset(J)I" />
+		<method name="getRawOffset()I" />
+		<method name="getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;" />
+		<method name="hasSameRules(Ljava/util/TimeZone;)Z" />
+		<method name="inDaylightTime(Ljava/util/Date;)Z" />
+		<method name="setDefault(Ljava/util/TimeZone;)V" />
+		<method name="setID(Ljava/lang/String;)V" />
+		<method name="setRawOffset(I)V" />
+		<method name="useDaylightTime()Z" />
+		<field name="LONG" />
+		<field name="SHORT" />
+	</class>
+	<class name="java/util/Timer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Z)V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="cancel()V" />
+		<method name="purge()I" />
+		<method name="schedule(Ljava/util/TimerTask;J)V" />
+		<method name="schedule(Ljava/util/TimerTask;JJ)V" />
+		<method name="schedule(Ljava/util/TimerTask;Ljava/util/Date;)V" />
+		<method name="schedule(Ljava/util/TimerTask;Ljava/util/Date;J)V" />
+		<method name="scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V" />
+		<method name="scheduleAtFixedRate(Ljava/util/TimerTask;Ljava/util/Date;J)V" />
+	</class>
+	<class name="java/util/TimerTask" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Runnable" />
+		<method name="&lt;init>()V" />
+		<method name="cancel()Z" />
+		<method name="run()V" />
+		<method name="scheduledExecutionTime()J" />
+	</class>
+	<class name="java/util/TooManyListenersException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/TreeMap" since="1">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/util/SortedMap" />
+		<implements name="java/util/NavigableMap" since="9" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Comparator;)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/util/SortedMap;)V" />
+		<method name="ceilingEntry(LK;)Ljava/util/Map$Entry;" since="9" />
+		<method name="ceilingKey(LK;)LK;" since="9" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="descendingKeySet()Ljava/util/NavigableSet;" since="9" />
+		<method name="descendingMap()Ljava/util/NavigableMap;" since="9" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="firstEntry()Ljava/util/Map$Entry;" since="9" />
+		<method name="firstKey()LK;" />
+		<method name="floorEntry(LK;)Ljava/util/Map$Entry;" since="9" />
+		<method name="floorKey(LK;)LK;" since="9" />
+		<method name="headMap(LK;)Ljava/util/SortedMap;" />
+		<method name="headMap(LK;Z)Ljava/util/NavigableMap;" since="9" />
+		<method name="higherEntry(LK;)Ljava/util/Map$Entry;" since="9" />
+		<method name="higherKey(LK;)LK;" since="9" />
+		<method name="lastEntry()Ljava/util/Map$Entry;" since="9" />
+		<method name="lastKey()LK;" />
+		<method name="lowerEntry(LK;)Ljava/util/Map$Entry;" since="9" />
+		<method name="lowerKey(LK;)LK;" since="9" />
+		<method name="navigableKeySet()Ljava/util/NavigableSet;" since="9" />
+		<method name="pollFirstEntry()Ljava/util/Map$Entry;" since="9" />
+		<method name="pollLastEntry()Ljava/util/Map$Entry;" since="9" />
+		<method name="subMap(LK;LK;)Ljava/util/SortedMap;" />
+		<method name="subMap(LK;ZLK;Z)Ljava/util/NavigableMap;" since="9" />
+		<method name="tailMap(LK;)Ljava/util/SortedMap;" />
+		<method name="tailMap(LK;Z)Ljava/util/NavigableMap;" since="9" />
+	</class>
+	<class name="java/util/TreeSet" since="1">
+		<extends name="java/util/AbstractSet" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<implements name="java/util/SortedSet" />
+		<implements name="java/util/NavigableSet" since="9" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="&lt;init>(Ljava/util/Comparator;)V" />
+		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
+		<method name="ceiling(LE;)LE;" since="9" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="descendingIterator()Ljava/util/Iterator;" since="9" />
+		<method name="descendingSet()Ljava/util/NavigableSet;" since="9" />
+		<method name="first()LE;" />
+		<method name="floor(LE;)LE;" since="9" />
+		<method name="headSet(LE;)Ljava/util/SortedSet;" />
+		<method name="headSet(LE;Z)Ljava/util/NavigableSet;" since="9" />
+		<method name="higher(LE;)LE;" since="9" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="last()LE;" />
+		<method name="lower(LE;)LE;" since="9" />
+		<method name="pollFirst()LE;" since="9" />
+		<method name="pollLast()LE;" since="9" />
+		<method name="size()I" />
+		<method name="subSet(LE;LE;)Ljava/util/SortedSet;" />
+		<method name="subSet(LE;ZLE;Z)Ljava/util/NavigableSet;" since="9" />
+		<method name="tailSet(LE;)Ljava/util/SortedSet;" />
+		<method name="tailSet(LE;Z)Ljava/util/NavigableSet;" since="9" />
+	</class>
+	<class name="java/util/UUID" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Comparable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(JJ)V" />
+		<method name="clockSequence()I" />
+		<method name="compareTo(Ljava/util/UUID;)I" />
+		<method name="fromString(Ljava/lang/String;)Ljava/util/UUID;" />
+		<method name="getLeastSignificantBits()J" />
+		<method name="getMostSignificantBits()J" />
+		<method name="nameUUIDFromBytes([B)Ljava/util/UUID;" />
+		<method name="node()J" />
+		<method name="randomUUID()Ljava/util/UUID;" />
+		<method name="timestamp()J" />
+		<method name="variant()I" />
+		<method name="version()I" />
+	</class>
+	<class name="java/util/UnknownFormatConversionException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getConversion()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/UnknownFormatFlagsException" since="1">
+		<extends name="java/util/IllegalFormatException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getFlags()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/Vector" since="1">
+		<extends name="java/util/AbstractList" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/List" />
+		<implements name="java/util/RandomAccess" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="addElement(LE;)V" />
+		<method name="capacity()I" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="copyInto([Ljava/lang/Object;)V" />
+		<method name="elementAt(I)LE;" />
+		<method name="elements()Ljava/util/Enumeration;" />
+		<method name="ensureCapacity(I)V" />
+		<method name="firstElement()LE;" />
+		<method name="get(I)LE;" />
+		<method name="indexOf(Ljava/lang/Object;I)I" />
+		<method name="insertElementAt(LE;I)V" />
+		<method name="lastElement()LE;" />
+		<method name="lastIndexOf(Ljava/lang/Object;I)I" />
+		<method name="removeAllElements()V" />
+		<method name="removeElement(Ljava/lang/Object;)Z" />
+		<method name="removeElementAt(I)V" />
+		<method name="setElementAt(LE;I)V" />
+		<method name="setSize(I)V" />
+		<method name="size()I" />
+		<method name="trimToSize()V" />
+		<field name="capacityIncrement" />
+		<field name="elementCount" />
+		<field name="elementData" />
+	</class>
+	<class name="java/util/WeakHashMap" since="1">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/util/Map" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="entrySet()Ljava/util/Set;" />
+	</class>
+	<class name="java/util/concurrent/AbstractExecutorService" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/ExecutorService" />
+		<method name="&lt;init>()V" />
+		<method name="invokeAll(Ljava/util/Collection;)Ljava/util/List;" />
+		<method name="invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;" />
+		<method name="invokeAny(Ljava/util/Collection;)LT;" />
+		<method name="invokeAny(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)LT;" />
+		<method name="newTaskFor(Ljava/lang/Runnable;LT;)Ljava/util/concurrent/RunnableFuture;" since="9" />
+		<method name="newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;" since="9" />
+		<method name="submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/lang/Runnable;LT;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
+	</class>
+	<class name="java/util/concurrent/ArrayBlockingQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/concurrent/BlockingQueue" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IZ)V" />
+		<method name="&lt;init>(IZLjava/util/Collection;)V" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="put(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+	</class>
+	<class name="java/util/concurrent/BlockingDeque" since="9">
+		<implements name="java/util/concurrent/BlockingQueue" />
+		<implements name="java/util/Deque" />
+		<method name="add(LE;)Z" />
+		<method name="addFirst(LE;)V" />
+		<method name="addLast(LE;)V" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="element()LE;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="offerFirst(LE;)Z" />
+		<method name="offerFirst(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="offerLast(LE;)Z" />
+		<method name="offerLast(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="pollFirst(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="pollLast(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="push(LE;)V" />
+		<method name="put(LE;)V" />
+		<method name="putFirst(LE;)V" />
+		<method name="putLast(LE;)V" />
+		<method name="remove()LE;" />
+		<method name="remove(Ljava/lang/Object;)Z" />
+		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
+		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+		<method name="takeFirst()LE;" />
+		<method name="takeLast()LE;" />
+	</class>
+	<class name="java/util/concurrent/BlockingQueue" since="1">
+		<implements name="java/util/Queue" />
+		<method name="add(LE;)Z" />
+		<method name="contains(Ljava/lang/Object;)Z" since="5" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="put(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="remove(Ljava/lang/Object;)Z" since="5" />
+		<method name="take()LE;" />
+	</class>
+	<class name="java/util/concurrent/BrokenBarrierException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/concurrent/Callable" since="1">
+		<method name="call()LV;" />
+	</class>
+	<class name="java/util/concurrent/CancellationException" since="1">
+		<extends name="java/lang/IllegalStateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/concurrent/CompletionService" since="1">
+		<method name="poll()Ljava/util/concurrent/Future;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/lang/Runnable;LV;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
+		<method name="take()Ljava/util/concurrent/Future;" />
+	</class>
+	<class name="java/util/concurrent/ConcurrentHashMap" since="1">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/util/concurrent/ConcurrentMap" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IF)V" since="9" />
+		<method name="&lt;init>(IFI)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="elements()Ljava/util/Enumeration;" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="keys()Ljava/util/Enumeration;" />
+		<method name="putIfAbsent(LK;LV;)LV;" />
+		<method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" />
+		<method name="replace(LK;LV;)LV;" />
+		<method name="replace(LK;LV;LV;)Z" />
+	</class>
+	<class name="java/util/concurrent/ConcurrentLinkedQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/Queue" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/concurrent/ConcurrentMap" since="1">
+		<implements name="java/util/Map" />
+		<method name="putIfAbsent(LK;LV;)LV;" />
+		<method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" />
+		<method name="replace(LK;LV;)LV;" />
+		<method name="replace(LK;LV;LV;)Z" />
+	</class>
+	<class name="java/util/concurrent/ConcurrentNavigableMap" since="9">
+		<implements name="java/util/concurrent/ConcurrentMap" />
+		<implements name="java/util/NavigableMap" />
+		<method name="descendingKeySet()Ljava/util/NavigableSet;" />
+		<method name="descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="headMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="headMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="keySet()Ljava/util/NavigableSet;" />
+		<method name="navigableKeySet()Ljava/util/NavigableSet;" />
+		<method name="subMap(LK;LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="subMap(LK;ZLK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="tailMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="tailMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+	</class>
+	<class name="java/util/concurrent/ConcurrentSkipListMap" since="9">
+		<extends name="java/util/AbstractMap" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/concurrent/ConcurrentNavigableMap" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Comparator;)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="&lt;init>(Ljava/util/SortedMap;)V" />
+		<method name="ceilingEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="ceilingKey(LK;)LK;" />
+		<method name="clone()Ljava/util/concurrent/ConcurrentSkipListMap;" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="descendingKeySet()Ljava/util/NavigableSet;" />
+		<method name="descendingMap()Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="firstEntry()Ljava/util/Map$Entry;" />
+		<method name="firstKey()LK;" />
+		<method name="floorEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="floorKey(LK;)LK;" />
+		<method name="headMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="headMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="higherEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="higherKey(LK;)LK;" />
+		<method name="lastEntry()Ljava/util/Map$Entry;" />
+		<method name="lastKey()LK;" />
+		<method name="lowerEntry(LK;)Ljava/util/Map$Entry;" />
+		<method name="lowerKey(LK;)LK;" />
+		<method name="navigableKeySet()Ljava/util/NavigableSet;" />
+		<method name="pollFirstEntry()Ljava/util/Map$Entry;" />
+		<method name="pollLastEntry()Ljava/util/Map$Entry;" />
+		<method name="putIfAbsent(LK;LV;)LV;" />
+		<method name="remove(Ljava/lang/Object;Ljava/lang/Object;)Z" />
+		<method name="replace(LK;LV;)LV;" />
+		<method name="replace(LK;LV;LV;)Z" />
+		<method name="subMap(LK;LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="subMap(LK;ZLK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="tailMap(LK;)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+		<method name="tailMap(LK;Z)Ljava/util/concurrent/ConcurrentNavigableMap;" />
+	</class>
+	<class name="java/util/concurrent/ConcurrentSkipListSet" since="9">
+		<extends name="java/util/AbstractSet" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/NavigableSet" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="&lt;init>(Ljava/util/Comparator;)V" />
+		<method name="&lt;init>(Ljava/util/SortedSet;)V" />
+		<method name="ceiling(LE;)LE;" />
+		<method name="clone()Ljava/util/concurrent/ConcurrentSkipListSet;" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="descendingIterator()Ljava/util/Iterator;" />
+		<method name="descendingSet()Ljava/util/NavigableSet;" />
+		<method name="first()LE;" />
+		<method name="floor(LE;)LE;" />
+		<method name="headSet(LE;)Ljava/util/NavigableSet;" />
+		<method name="headSet(LE;Z)Ljava/util/NavigableSet;" />
+		<method name="higher(LE;)LE;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="last()LE;" />
+		<method name="lower(LE;)LE;" />
+		<method name="pollFirst()LE;" />
+		<method name="pollLast()LE;" />
+		<method name="size()I" />
+		<method name="subSet(LE;LE;)Ljava/util/NavigableSet;" />
+		<method name="subSet(LE;ZLE;Z)Ljava/util/NavigableSet;" />
+		<method name="tailSet(LE;)Ljava/util/NavigableSet;" />
+		<method name="tailSet(LE;Z)Ljava/util/NavigableSet;" />
+	</class>
+	<class name="java/util/concurrent/CopyOnWriteArrayList" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/List" />
+		<implements name="java/util/RandomAccess" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="&lt;init>([LE;)V" />
+		<method name="add(ILE;)V" />
+		<method name="add(LE;)Z" />
+		<method name="addAll(ILjava/util/Collection;)Z" />
+		<method name="addAll(Ljava/util/Collection;)Z" />
+		<method name="addAllAbsent(Ljava/util/Collection;)I" />
+		<method name="addIfAbsent(LE;)Z" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="contains(Ljava/lang/Object;)Z" />
+		<method name="containsAll(Ljava/util/Collection;)Z" />
+		<method name="get(I)LE;" />
+		<method name="indexOf(LE;I)I" />
+		<method name="indexOf(Ljava/lang/Object;)I" />
+		<method name="isEmpty()Z" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="lastIndexOf(LE;I)I" />
+		<method name="lastIndexOf(Ljava/lang/Object;)I" />
+		<method name="listIterator()Ljava/util/ListIterator;" />
+		<method name="listIterator(I)Ljava/util/ListIterator;" />
+		<method name="remove(I)LE;" />
+		<method name="remove(Ljava/lang/Object;)Z" />
+		<method name="removeAll(Ljava/util/Collection;)Z" />
+		<method name="retainAll(Ljava/util/Collection;)Z" />
+		<method name="set(ILE;)LE;" />
+		<method name="size()I" />
+		<method name="subList(II)Ljava/util/List;" />
+		<method name="toArray()[Ljava/lang/Object;" />
+		<method name="toArray([LT;)[LT;" />
+	</class>
+	<class name="java/util/concurrent/CopyOnWriteArraySet" since="1">
+		<extends name="java/util/AbstractSet" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="size()I" />
+	</class>
+	<class name="java/util/concurrent/CountDownLatch" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="await()V" />
+		<method name="await(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="countDown()V" />
+		<method name="getCount()J" />
+	</class>
+	<class name="java/util/concurrent/CyclicBarrier" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/lang/Runnable;)V" />
+		<method name="await()I" />
+		<method name="await(JLjava/util/concurrent/TimeUnit;)I" />
+		<method name="getNumberWaiting()I" />
+		<method name="getParties()I" />
+		<method name="isBroken()Z" />
+		<method name="reset()V" />
+	</class>
+	<class name="java/util/concurrent/DelayQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/concurrent/BlockingQueue" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="put(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+	</class>
+	<class name="java/util/concurrent/Delayed" since="1">
+		<implements name="java/lang/Comparable" />
+		<method name="getDelay(Ljava/util/concurrent/TimeUnit;)J" />
+	</class>
+	<class name="java/util/concurrent/Exchanger" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="exchange(LV;)LV;" />
+		<method name="exchange(LV;JLjava/util/concurrent/TimeUnit;)LV;" />
+	</class>
+	<class name="java/util/concurrent/ExecutionException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/concurrent/Executor" since="1">
+		<method name="execute(Ljava/lang/Runnable;)V" />
+	</class>
+	<class name="java/util/concurrent/ExecutorCompletionService" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/CompletionService" />
+		<method name="&lt;init>(Ljava/util/concurrent/Executor;)V" />
+		<method name="&lt;init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/BlockingQueue;)V" />
+		<method name="poll()Ljava/util/concurrent/Future;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/lang/Runnable;LV;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
+		<method name="take()Ljava/util/concurrent/Future;" />
+	</class>
+	<class name="java/util/concurrent/ExecutorService" since="1">
+		<implements name="java/util/concurrent/Executor" />
+		<method name="awaitTermination(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="invokeAll(Ljava/util/Collection;)Ljava/util/List;" />
+		<method name="invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;" />
+		<method name="invokeAny(Ljava/util/Collection;)LT;" />
+		<method name="invokeAny(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)LT;" />
+		<method name="isShutdown()Z" />
+		<method name="isTerminated()Z" />
+		<method name="shutdown()V" />
+		<method name="shutdownNow()Ljava/util/List;" />
+		<method name="submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/lang/Runnable;LT;)Ljava/util/concurrent/Future;" />
+		<method name="submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;" />
+	</class>
+	<class name="java/util/concurrent/Executors" since="1">
+		<extends name="java/lang/Object" />
+		<method name="callable(Ljava/lang/Runnable;)Ljava/util/concurrent/Callable;" />
+		<method name="callable(Ljava/lang/Runnable;LT;)Ljava/util/concurrent/Callable;" />
+		<method name="callable(Ljava/security/PrivilegedAction;)Ljava/util/concurrent/Callable;" />
+		<method name="callable(Ljava/security/PrivilegedExceptionAction;)Ljava/util/concurrent/Callable;" />
+		<method name="defaultThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
+		<method name="newCachedThreadPool()Ljava/util/concurrent/ExecutorService;" />
+		<method name="newCachedThreadPool(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;" />
+		<method name="newFixedThreadPool(I)Ljava/util/concurrent/ExecutorService;" />
+		<method name="newFixedThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;" />
+		<method name="newScheduledThreadPool(I)Ljava/util/concurrent/ScheduledExecutorService;" />
+		<method name="newScheduledThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;" />
+		<method name="newSingleThreadExecutor()Ljava/util/concurrent/ExecutorService;" />
+		<method name="newSingleThreadExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ExecutorService;" />
+		<method name="newSingleThreadScheduledExecutor()Ljava/util/concurrent/ScheduledExecutorService;" />
+		<method name="newSingleThreadScheduledExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;" />
+		<method name="privilegedCallable(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;" />
+		<method name="privilegedCallableUsingCurrentClassLoader(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;" />
+		<method name="privilegedThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
+		<method name="unconfigurableExecutorService(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ExecutorService;" />
+		<method name="unconfigurableScheduledExecutorService(Ljava/util/concurrent/ScheduledExecutorService;)Ljava/util/concurrent/ScheduledExecutorService;" />
+	</class>
+	<class name="java/util/concurrent/Future" since="1">
+		<method name="cancel(Z)Z" />
+		<method name="get()LV;" />
+		<method name="get(JLjava/util/concurrent/TimeUnit;)LV;" />
+		<method name="isCancelled()Z" />
+		<method name="isDone()Z" />
+	</class>
+	<class name="java/util/concurrent/FutureTask" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/Future" />
+		<implements name="java/lang/Runnable" />
+		<implements name="java/util/concurrent/RunnableFuture" since="9" />
+		<method name="&lt;init>(Ljava/lang/Runnable;LV;)V" />
+		<method name="&lt;init>(Ljava/util/concurrent/Callable;)V" />
+		<method name="cancel(Z)Z" />
+		<method name="done()V" />
+		<method name="get()LV;" />
+		<method name="get(JLjava/util/concurrent/TimeUnit;)LV;" />
+		<method name="isCancelled()Z" />
+		<method name="isDone()Z" />
+		<method name="run()V" />
+		<method name="runAndReset()Z" />
+		<method name="set(LV;)V" />
+		<method name="setException(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/concurrent/LinkedBlockingDeque" since="9">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/concurrent/BlockingDeque" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="addFirst(LE;)V" />
+		<method name="addLast(LE;)V" />
+		<method name="descendingIterator()Ljava/util/Iterator;" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="getFirst()LE;" />
+		<method name="getLast()LE;" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="offerFirst(LE;)Z" />
+		<method name="offerFirst(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="offerLast(LE;)Z" />
+		<method name="offerLast(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="peekFirst()LE;" />
+		<method name="peekLast()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="pollFirst()LE;" />
+		<method name="pollFirst(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="pollLast()LE;" />
+		<method name="pollLast(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="pop()LE;" />
+		<method name="push(LE;)V" />
+		<method name="put(LE;)V" />
+		<method name="putFirst(LE;)V" />
+		<method name="putLast(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="removeFirst()LE;" />
+		<method name="removeFirstOccurrence(Ljava/lang/Object;)Z" />
+		<method name="removeLast()LE;" />
+		<method name="removeLastOccurrence(Ljava/lang/Object;)Z" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+		<method name="takeFirst()LE;" />
+		<method name="takeLast()LE;" />
+	</class>
+	<class name="java/util/concurrent/LinkedBlockingQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/concurrent/BlockingQueue" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="put(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+	</class>
+	<class name="java/util/concurrent/PriorityBlockingQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/concurrent/BlockingQueue" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/util/Comparator;)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="comparator()Ljava/util/Comparator;" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="put(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+	</class>
+	<class name="java/util/concurrent/RejectedExecutionException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/concurrent/RejectedExecutionHandler" since="1">
+		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
+	</class>
+	<class name="java/util/concurrent/RunnableFuture" since="9">
+		<implements name="java/util/concurrent/Future" />
+		<implements name="java/lang/Runnable" />
+		<method name="run()V" />
+	</class>
+	<class name="java/util/concurrent/RunnableScheduledFuture" since="9">
+		<implements name="java/util/concurrent/RunnableFuture" />
+		<implements name="java/util/concurrent/ScheduledFuture" />
+		<method name="isPeriodic()Z" />
+	</class>
+	<class name="java/util/concurrent/ScheduledExecutorService" since="1">
+		<implements name="java/util/concurrent/ExecutorService" />
+		<method name="schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+	</class>
+	<class name="java/util/concurrent/ScheduledFuture" since="1">
+		<implements name="java/util/concurrent/Delayed" />
+		<implements name="java/util/concurrent/Future" />
+	</class>
+	<class name="java/util/concurrent/ScheduledThreadPoolExecutor" since="1">
+		<extends name="java/util/concurrent/ThreadPoolExecutor" />
+		<implements name="java/util/concurrent/ScheduledExecutorService" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(ILjava/util/concurrent/RejectedExecutionHandler;)V" />
+		<method name="&lt;init>(ILjava/util/concurrent/ThreadFactory;)V" />
+		<method name="&lt;init>(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V" />
+		<method name="decorateTask(Ljava/lang/Runnable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;" since="9" />
+		<method name="decorateTask(Ljava/util/concurrent/Callable;Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;" since="9" />
+		<method name="getContinueExistingPeriodicTasksAfterShutdownPolicy()Z" />
+		<method name="getExecuteExistingDelayedTasksAfterShutdownPolicy()Z" />
+		<method name="schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="schedule(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="scheduleWithFixedDelay(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;" />
+		<method name="setContinueExistingPeriodicTasksAfterShutdownPolicy(Z)V" />
+		<method name="setExecuteExistingDelayedTasksAfterShutdownPolicy(Z)V" />
+	</class>
+	<class name="java/util/concurrent/Semaphore" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IZ)V" />
+		<method name="acquire()V" />
+		<method name="acquire(I)V" />
+		<method name="acquireUninterruptibly()V" />
+		<method name="acquireUninterruptibly(I)V" />
+		<method name="availablePermits()I" />
+		<method name="drainPermits()I" />
+		<method name="getQueueLength()I" />
+		<method name="getQueuedThreads()Ljava/util/Collection;" />
+		<method name="hasQueuedThreads()Z" />
+		<method name="isFair()Z" />
+		<method name="reducePermits(I)V" />
+		<method name="release()V" />
+		<method name="release(I)V" />
+		<method name="tryAcquire()Z" />
+		<method name="tryAcquire(I)Z" />
+		<method name="tryAcquire(IJLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="tryAcquire(JLjava/util/concurrent/TimeUnit;)Z" />
+	</class>
+	<class name="java/util/concurrent/SynchronousQueue" since="1">
+		<extends name="java/util/AbstractQueue" />
+		<implements name="java/util/concurrent/BlockingQueue" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="drainTo(Ljava/util/Collection;)I" />
+		<method name="drainTo(Ljava/util/Collection;I)I" />
+		<method name="iterator()Ljava/util/Iterator;" />
+		<method name="offer(LE;)Z" />
+		<method name="offer(LE;JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="peek()LE;" />
+		<method name="poll()LE;" />
+		<method name="poll(JLjava/util/concurrent/TimeUnit;)LE;" />
+		<method name="put(LE;)V" />
+		<method name="remainingCapacity()I" />
+		<method name="size()I" />
+		<method name="take()LE;" />
+	</class>
+	<class name="java/util/concurrent/ThreadFactory" since="1">
+		<method name="newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;" />
+	</class>
+	<class name="java/util/concurrent/ThreadPoolExecutor" since="1">
+		<extends name="java/util/concurrent/AbstractExecutorService" />
+		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V" />
+		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V" />
+		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V" />
+		<method name="&lt;init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V" />
+		<method name="afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V" />
+		<method name="allowCoreThreadTimeOut(Z)V" since="9" />
+		<method name="allowsCoreThreadTimeOut()Z" since="9" />
+		<method name="awaitTermination(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V" />
+		<method name="execute(Ljava/lang/Runnable;)V" />
+		<method name="getActiveCount()I" />
+		<method name="getCompletedTaskCount()J" />
+		<method name="getCorePoolSize()I" />
+		<method name="getKeepAliveTime(Ljava/util/concurrent/TimeUnit;)J" />
+		<method name="getLargestPoolSize()I" />
+		<method name="getMaximumPoolSize()I" />
+		<method name="getPoolSize()I" />
+		<method name="getQueue()Ljava/util/concurrent/BlockingQueue;" />
+		<method name="getRejectedExecutionHandler()Ljava/util/concurrent/RejectedExecutionHandler;" />
+		<method name="getTaskCount()J" />
+		<method name="getThreadFactory()Ljava/util/concurrent/ThreadFactory;" />
+		<method name="isShutdown()Z" />
+		<method name="isTerminated()Z" />
+		<method name="isTerminating()Z" />
+		<method name="prestartAllCoreThreads()I" />
+		<method name="prestartCoreThread()Z" />
+		<method name="purge()V" />
+		<method name="remove(Ljava/lang/Runnable;)Z" />
+		<method name="setCorePoolSize(I)V" />
+		<method name="setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="setMaximumPoolSize(I)V" />
+		<method name="setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V" />
+		<method name="setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V" />
+		<method name="shutdown()V" />
+		<method name="shutdownNow()Ljava/util/List;" />
+		<method name="terminated()V" />
+	</class>
+	<class name="java/util/concurrent/ThreadPoolExecutor$AbortPolicy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/RejectedExecutionHandler" />
+		<method name="&lt;init>()V" />
+		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
+	</class>
+	<class name="java/util/concurrent/ThreadPoolExecutor$CallerRunsPolicy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/RejectedExecutionHandler" />
+		<method name="&lt;init>()V" />
+		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
+	</class>
+	<class name="java/util/concurrent/ThreadPoolExecutor$DiscardOldestPolicy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/RejectedExecutionHandler" />
+		<method name="&lt;init>()V" />
+		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
+	</class>
+	<class name="java/util/concurrent/ThreadPoolExecutor$DiscardPolicy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/RejectedExecutionHandler" />
+		<method name="&lt;init>()V" />
+		<method name="rejectedExecution(Ljava/lang/Runnable;Ljava/util/concurrent/ThreadPoolExecutor;)V" />
+	</class>
+	<class name="java/util/concurrent/TimeUnit" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="convert(JLjava/util/concurrent/TimeUnit;)J" />
+		<method name="sleep(J)V" />
+		<method name="timedJoin(Ljava/lang/Thread;J)V" />
+		<method name="timedWait(Ljava/lang/Object;J)V" />
+		<method name="toDays(J)J" since="9" />
+		<method name="toHours(J)J" since="9" />
+		<method name="toMicros(J)J" />
+		<method name="toMillis(J)J" />
+		<method name="toMinutes(J)J" since="9" />
+		<method name="toNanos(J)J" />
+		<method name="toSeconds(J)J" />
+		<method name="valueOf(Ljava/lang/String;)Ljava/util/concurrent/TimeUnit;" />
+		<method name="values()[Ljava/util/concurrent/TimeUnit;" />
+		<field name="DAYS" since="9" />
+		<field name="HOURS" since="9" />
+		<field name="MICROSECONDS" />
+		<field name="MILLISECONDS" />
+		<field name="MINUTES" since="9" />
+		<field name="NANOSECONDS" />
+		<field name="SECONDS" />
+	</class>
+	<class name="java/util/concurrent/TimeoutException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicBoolean" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="compareAndSet(ZZ)Z" />
+		<method name="get()Z" />
+		<method name="getAndSet(Z)Z" />
+		<method name="lazySet(Z)V" since="9" />
+		<method name="set(Z)V" />
+		<method name="weakCompareAndSet(ZZ)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicInteger" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="addAndGet(I)I" />
+		<method name="compareAndSet(II)Z" />
+		<method name="decrementAndGet()I" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="get()I" />
+		<method name="getAndAdd(I)I" />
+		<method name="getAndDecrement()I" />
+		<method name="getAndIncrement()I" />
+		<method name="getAndSet(I)I" />
+		<method name="incrementAndGet()I" />
+		<method name="intValue()I" />
+		<method name="lazySet(I)V" since="9" />
+		<method name="longValue()J" />
+		<method name="set(I)V" />
+		<method name="weakCompareAndSet(II)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicIntegerArray" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>([I)V" />
+		<method name="addAndGet(II)I" />
+		<method name="compareAndSet(III)Z" />
+		<method name="decrementAndGet(I)I" />
+		<method name="get(I)I" />
+		<method name="getAndAdd(II)I" />
+		<method name="getAndDecrement(I)I" />
+		<method name="getAndIncrement(I)I" />
+		<method name="getAndSet(II)I" />
+		<method name="incrementAndGet(I)I" />
+		<method name="lazySet(II)V" since="9" />
+		<method name="length()I" />
+		<method name="set(II)V" />
+		<method name="weakCompareAndSet(III)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicIntegerFieldUpdater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addAndGet(LT;I)I" />
+		<method name="compareAndSet(LT;II)Z" />
+		<method name="decrementAndGet(LT;)I" />
+		<method name="get(LT;)I" />
+		<method name="getAndAdd(LT;I)I" />
+		<method name="getAndDecrement(LT;)I" />
+		<method name="getAndIncrement(LT;)I" />
+		<method name="getAndSet(LT;I)I" />
+		<method name="incrementAndGet(LT;)I" />
+		<method name="lazySet(LT;I)V" since="9" />
+		<method name="newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;" />
+		<method name="set(LT;I)V" />
+		<method name="weakCompareAndSet(LT;II)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicLong" since="1">
+		<extends name="java/lang/Number" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(J)V" />
+		<method name="addAndGet(J)J" />
+		<method name="compareAndSet(JJ)Z" />
+		<method name="decrementAndGet()J" />
+		<method name="doubleValue()D" />
+		<method name="floatValue()F" />
+		<method name="get()J" />
+		<method name="getAndAdd(J)J" />
+		<method name="getAndDecrement()J" />
+		<method name="getAndIncrement()J" />
+		<method name="getAndSet(J)J" />
+		<method name="incrementAndGet()J" />
+		<method name="intValue()I" />
+		<method name="lazySet(J)V" since="9" />
+		<method name="longValue()J" />
+		<method name="set(J)V" />
+		<method name="weakCompareAndSet(JJ)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicLongArray" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>([J)V" />
+		<method name="addAndGet(IJ)J" />
+		<method name="compareAndSet(IJJ)Z" />
+		<method name="decrementAndGet(I)J" />
+		<method name="get(I)J" />
+		<method name="getAndAdd(IJ)J" />
+		<method name="getAndDecrement(I)J" />
+		<method name="getAndIncrement(I)J" />
+		<method name="getAndSet(IJ)J" />
+		<method name="incrementAndGet(I)J" />
+		<method name="lazySet(IJ)V" since="9" />
+		<method name="length()I" />
+		<method name="set(IJ)V" />
+		<method name="weakCompareAndSet(IJJ)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicLongFieldUpdater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addAndGet(LT;J)J" />
+		<method name="compareAndSet(LT;JJ)Z" />
+		<method name="decrementAndGet(LT;)J" />
+		<method name="get(LT;)J" />
+		<method name="getAndAdd(LT;J)J" />
+		<method name="getAndDecrement(LT;)J" />
+		<method name="getAndIncrement(LT;)J" />
+		<method name="getAndSet(LT;J)J" />
+		<method name="incrementAndGet(LT;)J" />
+		<method name="lazySet(LT;J)V" since="9" />
+		<method name="newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;" />
+		<method name="set(LT;J)V" />
+		<method name="weakCompareAndSet(LT;JJ)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicMarkableReference" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(LV;Z)V" />
+		<method name="attemptMark(LV;Z)Z" />
+		<method name="compareAndSet(LV;LV;ZZ)Z" />
+		<method name="get([Z)LV;" />
+		<method name="getReference()LV;" />
+		<method name="isMarked()Z" />
+		<method name="set(LV;Z)V" />
+		<method name="weakCompareAndSet(LV;LV;ZZ)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicReference" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(LV;)V" />
+		<method name="compareAndSet(LV;LV;)Z" />
+		<method name="get()LV;" />
+		<method name="getAndSet(LV;)LV;" />
+		<method name="lazySet(LV;)V" since="9" />
+		<method name="set(LV;)V" />
+		<method name="weakCompareAndSet(LV;LV;)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicReferenceArray" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>([LE;)V" />
+		<method name="compareAndSet(ILE;LE;)Z" />
+		<method name="get(I)LE;" />
+		<method name="getAndSet(ILE;)LE;" />
+		<method name="lazySet(ILE;)V" since="9" />
+		<method name="length()I" />
+		<method name="set(ILE;)V" />
+		<method name="weakCompareAndSet(ILE;LE;)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicReferenceFieldUpdater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="compareAndSet(LT;LV;LV;)Z" />
+		<method name="get(LT;)LV;" />
+		<method name="getAndSet(LT;LV;)LV;" />
+		<method name="lazySet(LT;LV;)V" since="9" />
+		<method name="newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;" />
+		<method name="set(LT;LV;)V" />
+		<method name="weakCompareAndSet(LT;LV;LV;)Z" />
+	</class>
+	<class name="java/util/concurrent/atomic/AtomicStampedReference" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(LV;I)V" />
+		<method name="attemptStamp(LV;I)Z" />
+		<method name="compareAndSet(LV;LV;II)Z" />
+		<method name="get([I)LV;" />
+		<method name="getReference()LV;" />
+		<method name="getStamp()I" />
+		<method name="set(LV;I)V" />
+		<method name="weakCompareAndSet(LV;LV;II)Z" />
+	</class>
+	<class name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="5">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="getExclusiveOwnerThread()Ljava/lang/Thread;" />
+		<method name="setExclusiveOwnerThread(Ljava/lang/Thread;)V" />
+	</class>
+	<class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer" since="9">
+		<extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="acquire(J)V" />
+		<method name="acquireInterruptibly(J)V" />
+		<method name="acquireShared(J)V" />
+		<method name="acquireSharedInterruptibly(J)V" />
+		<method name="compareAndSetState(JJ)Z" />
+		<method name="getExclusiveQueuedThreads()Ljava/util/Collection;" />
+		<method name="getFirstQueuedThread()Ljava/lang/Thread;" />
+		<method name="getQueueLength()I" />
+		<method name="getQueuedThreads()Ljava/util/Collection;" />
+		<method name="getSharedQueuedThreads()Ljava/util/Collection;" />
+		<method name="getState()J" />
+		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)I" />
+		<method name="getWaitingThreads(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Ljava/util/Collection;" />
+		<method name="hasContended()Z" />
+		<method name="hasQueuedThreads()Z" />
+		<method name="hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Z" />
+		<method name="isHeldExclusively()Z" />
+		<method name="isQueued(Ljava/lang/Thread;)Z" />
+		<method name="owns(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;)Z" />
+		<method name="release(J)Z" />
+		<method name="releaseShared(J)Z" />
+		<method name="setState(J)V" />
+		<method name="tryAcquire(J)Z" />
+		<method name="tryAcquireNanos(JJ)Z" />
+		<method name="tryAcquireShared(J)J" />
+		<method name="tryAcquireSharedNanos(JJ)Z" />
+		<method name="tryRelease(J)Z" />
+		<method name="tryReleaseShared(J)Z" />
+	</class>
+	<class name="java/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject" since="9">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/locks/Condition" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="await()V" />
+		<method name="await(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="awaitNanos(J)J" />
+		<method name="awaitUninterruptibly()V" />
+		<method name="awaitUntil(Ljava/util/Date;)Z" />
+		<method name="getWaitQueueLength()I" />
+		<method name="getWaitingThreads()Ljava/util/Collection;" />
+		<method name="hasWaiters()Z" />
+		<method name="signal()V" />
+		<method name="signalAll()V" />
+	</class>
+	<class name="java/util/concurrent/locks/AbstractQueuedSynchronizer" since="1">
+		<extends name="java/lang/Object" />
+		<extends name="java/util/concurrent/locks/AbstractOwnableSynchronizer" since="4" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="acquire(I)V" />
+		<method name="acquireInterruptibly(I)V" />
+		<method name="acquireShared(I)V" />
+		<method name="acquireSharedInterruptibly(I)V" />
+		<method name="compareAndSetState(II)Z" />
+		<method name="getExclusiveQueuedThreads()Ljava/util/Collection;" />
+		<method name="getFirstQueuedThread()Ljava/lang/Thread;" />
+		<method name="getQueueLength()I" />
+		<method name="getQueuedThreads()Ljava/util/Collection;" />
+		<method name="getSharedQueuedThreads()Ljava/util/Collection;" />
+		<method name="getState()I" />
+		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)I" />
+		<method name="getWaitingThreads(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Ljava/util/Collection;" />
+		<method name="hasContended()Z" />
+		<method name="hasQueuedThreads()Z" />
+		<method name="hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z" />
+		<method name="isHeldExclusively()Z" />
+		<method name="isQueued(Ljava/lang/Thread;)Z" />
+		<method name="owns(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z" />
+		<method name="release(I)Z" />
+		<method name="releaseShared(I)Z" />
+		<method name="setState(I)V" />
+		<method name="tryAcquire(I)Z" />
+		<method name="tryAcquireNanos(IJ)Z" />
+		<method name="tryAcquireShared(I)I" />
+		<method name="tryAcquireSharedNanos(IJ)Z" />
+		<method name="tryRelease(I)Z" />
+		<method name="tryReleaseShared(I)Z" />
+	</class>
+	<class name="java/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/locks/Condition" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="await()V" />
+		<method name="await(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="awaitNanos(J)J" />
+		<method name="awaitUninterruptibly()V" />
+		<method name="awaitUntil(Ljava/util/Date;)Z" />
+		<method name="getWaitQueueLength()I" />
+		<method name="getWaitingThreads()Ljava/util/Collection;" />
+		<method name="hasWaiters()Z" />
+		<method name="signal()V" />
+		<method name="signalAll()V" />
+	</class>
+	<class name="java/util/concurrent/locks/Condition" since="1">
+		<method name="await()V" />
+		<method name="await(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="awaitNanos(J)J" />
+		<method name="awaitUninterruptibly()V" />
+		<method name="awaitUntil(Ljava/util/Date;)Z" />
+		<method name="signal()V" />
+		<method name="signalAll()V" />
+	</class>
+	<class name="java/util/concurrent/locks/Lock" since="1">
+		<method name="lock()V" />
+		<method name="lockInterruptibly()V" />
+		<method name="newCondition()Ljava/util/concurrent/locks/Condition;" />
+		<method name="tryLock()Z" />
+		<method name="tryLock(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="unlock()V" />
+	</class>
+	<class name="java/util/concurrent/locks/LockSupport" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getBlocker(Ljava/lang/Thread;)Ljava/lang/Object;" since="9" />
+		<method name="park()V" />
+		<method name="park(Ljava/lang/Object;)V" since="9" />
+		<method name="parkNanos(J)V" />
+		<method name="parkNanos(Ljava/lang/Object;J)V" since="9" />
+		<method name="parkUntil(J)V" />
+		<method name="parkUntil(Ljava/lang/Object;J)V" since="9" />
+		<method name="unpark(Ljava/lang/Thread;)V" />
+	</class>
+	<class name="java/util/concurrent/locks/ReadWriteLock" since="1">
+		<method name="readLock()Ljava/util/concurrent/locks/Lock;" />
+		<method name="writeLock()Ljava/util/concurrent/locks/Lock;" />
+	</class>
+	<class name="java/util/concurrent/locks/ReentrantLock" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/locks/Lock" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="getHoldCount()I" />
+		<method name="getOwner()Ljava/lang/Thread;" />
+		<method name="getQueueLength()I" />
+		<method name="getQueuedThreads()Ljava/util/Collection;" />
+		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/Condition;)I" />
+		<method name="getWaitingThreads(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;" />
+		<method name="hasQueuedThread(Ljava/lang/Thread;)Z" />
+		<method name="hasQueuedThreads()Z" />
+		<method name="hasWaiters(Ljava/util/concurrent/locks/Condition;)Z" />
+		<method name="isFair()Z" />
+		<method name="isHeldByCurrentThread()Z" />
+		<method name="isLocked()Z" />
+		<method name="lock()V" />
+		<method name="lockInterruptibly()V" />
+		<method name="newCondition()Ljava/util/concurrent/locks/Condition;" />
+		<method name="tryLock()Z" />
+		<method name="tryLock(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="unlock()V" />
+	</class>
+	<class name="java/util/concurrent/locks/ReentrantReadWriteLock" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/locks/ReadWriteLock" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="getOwner()Ljava/lang/Thread;" />
+		<method name="getQueueLength()I" />
+		<method name="getQueuedReaderThreads()Ljava/util/Collection;" />
+		<method name="getQueuedThreads()Ljava/util/Collection;" />
+		<method name="getQueuedWriterThreads()Ljava/util/Collection;" />
+		<method name="getReadHoldCount()I" since="9" />
+		<method name="getReadLockCount()I" />
+		<method name="getWaitQueueLength(Ljava/util/concurrent/locks/Condition;)I" />
+		<method name="getWaitingThreads(Ljava/util/concurrent/locks/Condition;)Ljava/util/Collection;" />
+		<method name="getWriteHoldCount()I" />
+		<method name="hasQueuedThread(Ljava/lang/Thread;)Z" />
+		<method name="hasQueuedThreads()Z" />
+		<method name="hasWaiters(Ljava/util/concurrent/locks/Condition;)Z" />
+		<method name="isFair()Z" />
+		<method name="isWriteLocked()Z" />
+		<method name="isWriteLockedByCurrentThread()Z" />
+		<method name="readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;" />
+		<method name="writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;" />
+	</class>
+	<class name="java/util/concurrent/locks/ReentrantReadWriteLock$ReadLock" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/locks/Lock" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V" />
+		<method name="lock()V" />
+		<method name="lockInterruptibly()V" />
+		<method name="newCondition()Ljava/util/concurrent/locks/Condition;" />
+		<method name="tryLock()Z" />
+		<method name="tryLock(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="unlock()V" />
+	</class>
+	<class name="java/util/concurrent/locks/ReentrantReadWriteLock$WriteLock" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/concurrent/locks/Lock" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V" />
+		<method name="getHoldCount()I" since="9" />
+		<method name="isHeldByCurrentThread()Z" since="9" />
+		<method name="lock()V" />
+		<method name="lockInterruptibly()V" />
+		<method name="newCondition()Ljava/util/concurrent/locks/Condition;" />
+		<method name="tryLock()Z" />
+		<method name="tryLock(JLjava/util/concurrent/TimeUnit;)Z" />
+		<method name="unlock()V" />
+	</class>
+	<class name="java/util/jar/Attributes" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/util/Map" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(Ljava/util/jar/Attributes;)V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="containsKey(Ljava/lang/Object;)Z" />
+		<method name="containsValue(Ljava/lang/Object;)Z" />
+		<method name="entrySet()Ljava/util/Set;" />
+		<method name="get(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;" />
+		<method name="isEmpty()Z" />
+		<method name="keySet()Ljava/util/Set;" />
+		<method name="put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="putAll(Ljava/util/Map;)V" />
+		<method name="putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="remove(Ljava/lang/Object;)Ljava/lang/Object;" />
+		<method name="size()I" />
+		<method name="values()Ljava/util/Collection;" />
+		<field name="map" />
+	</class>
+	<class name="java/util/jar/Attributes$Name" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<field name="CLASS_PATH" />
+		<field name="CONTENT_TYPE" />
+		<field name="EXTENSION_INSTALLATION" />
+		<field name="EXTENSION_LIST" />
+		<field name="EXTENSION_NAME" />
+		<field name="IMPLEMENTATION_TITLE" />
+		<field name="IMPLEMENTATION_URL" />
+		<field name="IMPLEMENTATION_VENDOR" />
+		<field name="IMPLEMENTATION_VENDOR_ID" />
+		<field name="IMPLEMENTATION_VERSION" />
+		<field name="MAIN_CLASS" />
+		<field name="MANIFEST_VERSION" />
+		<field name="SEALED" />
+		<field name="SIGNATURE_VERSION" />
+		<field name="SPECIFICATION_TITLE" />
+		<field name="SPECIFICATION_VENDOR" />
+		<field name="SPECIFICATION_VERSION" />
+	</class>
+	<class name="java/util/jar/JarEntry" since="1">
+		<extends name="java/util/zip/ZipEntry" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/util/jar/JarEntry;)V" />
+		<method name="&lt;init>(Ljava/util/zip/ZipEntry;)V" />
+		<method name="getAttributes()Ljava/util/jar/Attributes;" />
+		<method name="getCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getCodeSigners()[Ljava/security/CodeSigner;" />
+	</class>
+	<class name="java/util/jar/JarException" since="1">
+		<extends name="java/util/zip/ZipException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/jar/JarFile" since="1">
+		<extends name="java/util/zip/ZipFile" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;Z)V" />
+		<method name="&lt;init>(Ljava/io/File;ZI)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Z)V" />
+		<method name="getJarEntry(Ljava/lang/String;)Ljava/util/jar/JarEntry;" />
+		<method name="getManifest()Ljava/util/jar/Manifest;" />
+		<field name="MANIFEST_NAME" />
+	</class>
+	<class name="java/util/jar/JarInputStream" since="1">
+		<extends name="java/util/zip/ZipInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Z)V" />
+		<method name="getManifest()Ljava/util/jar/Manifest;" />
+		<method name="getNextJarEntry()Ljava/util/jar/JarEntry;" />
+	</class>
+	<class name="java/util/jar/JarOutputStream" since="1">
+		<extends name="java/util/zip/ZipOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/jar/Manifest;)V" />
+	</class>
+	<class name="java/util/jar/Manifest" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/util/jar/Manifest;)V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes;" />
+		<method name="getEntries()Ljava/util/Map;" />
+		<method name="getMainAttributes()Ljava/util/jar/Attributes;" />
+		<method name="read(Ljava/io/InputStream;)V" />
+		<method name="write(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="java/util/jar/Pack200" since="1">
+		<extends name="java/lang/Object" />
+		<method name="newPacker()Ljava/util/jar/Pack200$Packer;" />
+		<method name="newUnpacker()Ljava/util/jar/Pack200$Unpacker;" />
+	</class>
+	<class name="java/util/jar/Pack200$Packer" since="1">
+		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
+		<method name="pack(Ljava/util/jar/JarFile;Ljava/io/OutputStream;)V" />
+		<method name="pack(Ljava/util/jar/JarInputStream;Ljava/io/OutputStream;)V" />
+		<method name="properties()Ljava/util/SortedMap;" />
+		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
+		<field name="CLASS_ATTRIBUTE_PFX" />
+		<field name="CODE_ATTRIBUTE_PFX" />
+		<field name="DEFLATE_HINT" />
+		<field name="EFFORT" />
+		<field name="ERROR" />
+		<field name="FALSE" />
+		<field name="FIELD_ATTRIBUTE_PFX" />
+		<field name="KEEP" />
+		<field name="KEEP_FILE_ORDER" />
+		<field name="LATEST" />
+		<field name="METHOD_ATTRIBUTE_PFX" />
+		<field name="MODIFICATION_TIME" />
+		<field name="PASS" />
+		<field name="PASS_FILE_PFX" />
+		<field name="PROGRESS" />
+		<field name="SEGMENT_LIMIT" />
+		<field name="STRIP" />
+		<field name="TRUE" />
+		<field name="UNKNOWN_ATTRIBUTE" />
+	</class>
+	<class name="java/util/jar/Pack200$Unpacker" since="1">
+		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
+		<method name="properties()Ljava/util/SortedMap;" />
+		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
+		<method name="unpack(Ljava/io/File;Ljava/util/jar/JarOutputStream;)V" />
+		<method name="unpack(Ljava/io/InputStream;Ljava/util/jar/JarOutputStream;)V" />
+		<field name="DEFLATE_HINT" />
+		<field name="FALSE" />
+		<field name="KEEP" />
+		<field name="PROGRESS" />
+		<field name="TRUE" />
+	</class>
+	<class name="java/util/logging/ConsoleHandler" since="1">
+		<extends name="java/util/logging/StreamHandler" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="java/util/logging/ErrorManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="error(Ljava/lang/String;Ljava/lang/Exception;I)V" />
+		<field name="CLOSE_FAILURE" />
+		<field name="FLUSH_FAILURE" />
+		<field name="FORMAT_FAILURE" />
+		<field name="GENERIC_FAILURE" />
+		<field name="OPEN_FAILURE" />
+		<field name="WRITE_FAILURE" />
+	</class>
+	<class name="java/util/logging/FileHandler" since="1">
+		<extends name="java/util/logging/StreamHandler" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;II)V" />
+		<method name="&lt;init>(Ljava/lang/String;IIZ)V" />
+		<method name="&lt;init>(Ljava/lang/String;Z)V" />
+	</class>
+	<class name="java/util/logging/Filter" since="1">
+		<method name="isLoggable(Ljava/util/logging/LogRecord;)Z" />
+	</class>
+	<class name="java/util/logging/Formatter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
+		<method name="formatMessage(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
+		<method name="getHead(Ljava/util/logging/Handler;)Ljava/lang/String;" />
+		<method name="getTail(Ljava/util/logging/Handler;)Ljava/lang/String;" />
+	</class>
+	<class name="java/util/logging/Handler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getErrorManager()Ljava/util/logging/ErrorManager;" />
+		<method name="getFilter()Ljava/util/logging/Filter;" />
+		<method name="getFormatter()Ljava/util/logging/Formatter;" />
+		<method name="getLevel()Ljava/util/logging/Level;" />
+		<method name="isLoggable(Ljava/util/logging/LogRecord;)Z" />
+		<method name="publish(Ljava/util/logging/LogRecord;)V" />
+		<method name="reportError(Ljava/lang/String;Ljava/lang/Exception;I)V" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setErrorManager(Ljava/util/logging/ErrorManager;)V" />
+		<method name="setFilter(Ljava/util/logging/Filter;)V" />
+		<method name="setFormatter(Ljava/util/logging/Formatter;)V" />
+		<method name="setLevel(Ljava/util/logging/Level;)V" />
+	</class>
+	<class name="java/util/logging/Level" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="getLocalizedName()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getResourceBundleName()Ljava/lang/String;" />
+		<method name="intValue()I" />
+		<method name="parse(Ljava/lang/String;)Ljava/util/logging/Level;" />
+		<method name="toString()Ljava/lang/String;" />
+		<field name="ALL" />
+		<field name="CONFIG" />
+		<field name="FINE" />
+		<field name="FINER" />
+		<field name="FINEST" />
+		<field name="INFO" />
+		<field name="OFF" />
+		<field name="SEVERE" />
+		<field name="WARNING" />
+	</class>
+	<class name="java/util/logging/LogManager" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addLogger(Ljava/util/logging/Logger;)Z" />
+		<method name="addPropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
+		<method name="checkAccess()V" />
+		<method name="getLogManager()Ljava/util/logging/LogManager;" />
+		<method name="getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;" />
+		<method name="getLoggerNames()Ljava/util/Enumeration;" />
+		<method name="getLoggingMXBean()Ljava/util/logging/LoggingMXBean;" since="3" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="readConfiguration()V" />
+		<method name="readConfiguration(Ljava/io/InputStream;)V" />
+		<method name="removePropertyChangeListener(Ljava/beans/PropertyChangeListener;)V" since="3" />
+		<method name="reset()V" />
+		<field name="LOGGING_MXBEAN_NAME" />
+	</class>
+	<class name="java/util/logging/LogRecord" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/util/logging/Level;Ljava/lang/String;)V" />
+		<method name="getLevel()Ljava/util/logging/Level;" />
+		<method name="getLoggerName()Ljava/lang/String;" />
+		<method name="getMessage()Ljava/lang/String;" />
+		<method name="getMillis()J" />
+		<method name="getParameters()[Ljava/lang/Object;" />
+		<method name="getResourceBundle()Ljava/util/ResourceBundle;" />
+		<method name="getResourceBundleName()Ljava/lang/String;" />
+		<method name="getSequenceNumber()J" />
+		<method name="getSourceClassName()Ljava/lang/String;" />
+		<method name="getSourceMethodName()Ljava/lang/String;" />
+		<method name="getThreadID()I" />
+		<method name="getThrown()Ljava/lang/Throwable;" />
+		<method name="setLevel(Ljava/util/logging/Level;)V" />
+		<method name="setLoggerName(Ljava/lang/String;)V" />
+		<method name="setMessage(Ljava/lang/String;)V" />
+		<method name="setMillis(J)V" />
+		<method name="setParameters([Ljava/lang/Object;)V" />
+		<method name="setResourceBundle(Ljava/util/ResourceBundle;)V" />
+		<method name="setResourceBundleName(Ljava/lang/String;)V" />
+		<method name="setSequenceNumber(J)V" />
+		<method name="setSourceClassName(Ljava/lang/String;)V" />
+		<method name="setSourceMethodName(Ljava/lang/String;)V" />
+		<method name="setThreadID(I)V" />
+		<method name="setThrown(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/logging/Logger" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="addHandler(Ljava/util/logging/Handler;)V" />
+		<method name="config(Ljava/lang/String;)V" />
+		<method name="entering(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="entering(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="entering(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" />
+		<method name="exiting(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="exiting(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="fine(Ljava/lang/String;)V" />
+		<method name="finer(Ljava/lang/String;)V" />
+		<method name="finest(Ljava/lang/String;)V" />
+		<method name="getAnonymousLogger()Ljava/util/logging/Logger;" />
+		<method name="getAnonymousLogger(Ljava/lang/String;)Ljava/util/logging/Logger;" />
+		<method name="getFilter()Ljava/util/logging/Filter;" />
+		<method name="getHandlers()[Ljava/util/logging/Handler;" />
+		<method name="getLevel()Ljava/util/logging/Level;" />
+		<method name="getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;" />
+		<method name="getLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParent()Ljava/util/logging/Logger;" />
+		<method name="getResourceBundle()Ljava/util/ResourceBundle;" />
+		<method name="getResourceBundleName()Ljava/lang/String;" />
+		<method name="getUseParentHandlers()Z" />
+		<method name="info(Ljava/lang/String;)V" />
+		<method name="isLoggable(Ljava/util/logging/Level;)Z" />
+		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;)V" />
+		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="log(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V" />
+		<method name="log(Ljava/util/logging/LogRecord;)V" />
+		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" />
+		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="logrb(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V" />
+		<method name="removeHandler(Ljava/util/logging/Handler;)V" />
+		<method name="setFilter(Ljava/util/logging/Filter;)V" />
+		<method name="setLevel(Ljava/util/logging/Level;)V" />
+		<method name="setParent(Ljava/util/logging/Logger;)V" />
+		<method name="setUseParentHandlers(Z)V" />
+		<method name="severe(Ljava/lang/String;)V" />
+		<method name="throwing(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="warning(Ljava/lang/String;)V" />
+		<field name="GLOBAL_LOGGER_NAME" since="9" />
+		<field name="global" />
+	</class>
+	<class name="java/util/logging/LoggingMXBean" since="1">
+		<method name="getLoggerLevel(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getLoggerNames()Ljava/util/List;" />
+		<method name="getParentLoggerName(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="setLoggerLevel(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/logging/LoggingPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<implements name="java/security/Guard" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/logging/MemoryHandler" since="1">
+		<extends name="java/util/logging/Handler" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/util/logging/Handler;ILjava/util/logging/Level;)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="getPushLevel()Ljava/util/logging/Level;" />
+		<method name="publish(Ljava/util/logging/LogRecord;)V" />
+		<method name="push()V" />
+		<method name="setPushLevel(Ljava/util/logging/Level;)V" />
+	</class>
+	<class name="java/util/logging/SimpleFormatter" since="1">
+		<extends name="java/util/logging/Formatter" />
+		<method name="&lt;init>()V" />
+		<method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
+	</class>
+	<class name="java/util/logging/SocketHandler" since="1">
+		<extends name="java/util/logging/StreamHandler" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+	</class>
+	<class name="java/util/logging/StreamHandler" since="1">
+		<extends name="java/util/logging/Handler" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/logging/Formatter;)V" />
+		<method name="close()V" />
+		<method name="flush()V" />
+		<method name="publish(Ljava/util/logging/LogRecord;)V" />
+		<method name="setOutputStream(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="java/util/logging/XMLFormatter" since="1">
+		<extends name="java/util/logging/Formatter" />
+		<method name="&lt;init>()V" />
+		<method name="format(Ljava/util/logging/LogRecord;)Ljava/lang/String;" />
+	</class>
+	<class name="java/util/prefs/AbstractPreferences" since="1">
+		<extends name="java/util/prefs/Preferences" />
+		<method name="&lt;init>(Ljava/util/prefs/AbstractPreferences;Ljava/lang/String;)V" />
+		<method name="absolutePath()Ljava/lang/String;" />
+		<method name="addNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
+		<method name="addPreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
+		<method name="cachedChildren()[Ljava/util/prefs/AbstractPreferences;" />
+		<method name="childSpi(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;" />
+		<method name="childrenNames()[Ljava/lang/String;" />
+		<method name="childrenNamesSpi()[Ljava/lang/String;" />
+		<method name="clear()V" />
+		<method name="exportNode(Ljava/io/OutputStream;)V" />
+		<method name="exportSubtree(Ljava/io/OutputStream;)V" />
+		<method name="flush()V" />
+		<method name="flushSpi()V" />
+		<method name="get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getBoolean(Ljava/lang/String;Z)Z" />
+		<method name="getByteArray(Ljava/lang/String;[B)[B" />
+		<method name="getChild(Ljava/lang/String;)Ljava/util/prefs/AbstractPreferences;" />
+		<method name="getDouble(Ljava/lang/String;D)D" />
+		<method name="getFloat(Ljava/lang/String;F)F" />
+		<method name="getInt(Ljava/lang/String;I)I" />
+		<method name="getLong(Ljava/lang/String;J)J" />
+		<method name="getSpi(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="isRemoved()Z" />
+		<method name="isUserNode()Z" />
+		<method name="keys()[Ljava/lang/String;" />
+		<method name="keysSpi()[Ljava/lang/String;" />
+		<method name="name()Ljava/lang/String;" />
+		<method name="node(Ljava/lang/String;)Ljava/util/prefs/Preferences;" />
+		<method name="nodeExists(Ljava/lang/String;)Z" />
+		<method name="parent()Ljava/util/prefs/Preferences;" />
+		<method name="put(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="putBoolean(Ljava/lang/String;Z)V" />
+		<method name="putByteArray(Ljava/lang/String;[B)V" />
+		<method name="putDouble(Ljava/lang/String;D)V" />
+		<method name="putFloat(Ljava/lang/String;F)V" />
+		<method name="putInt(Ljava/lang/String;I)V" />
+		<method name="putLong(Ljava/lang/String;J)V" />
+		<method name="putSpi(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="remove(Ljava/lang/String;)V" />
+		<method name="removeNode()V" />
+		<method name="removeNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
+		<method name="removeNodeSpi()V" />
+		<method name="removePreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
+		<method name="removeSpi(Ljava/lang/String;)V" />
+		<method name="sync()V" />
+		<method name="syncSpi()V" />
+		<method name="toString()Ljava/lang/String;" />
+		<field name="lock" />
+		<field name="newNode" />
+	</class>
+	<class name="java/util/prefs/BackingStoreException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/prefs/InvalidPreferencesFormatException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="java/util/prefs/NodeChangeEvent" since="1">
+		<extends name="java/util/EventObject" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/util/prefs/Preferences;Ljava/util/prefs/Preferences;)V" />
+		<method name="getChild()Ljava/util/prefs/Preferences;" />
+		<method name="getParent()Ljava/util/prefs/Preferences;" />
+	</class>
+	<class name="java/util/prefs/NodeChangeListener" since="1">
+		<implements name="java/util/EventListener" />
+		<method name="childAdded(Ljava/util/prefs/NodeChangeEvent;)V" />
+		<method name="childRemoved(Ljava/util/prefs/NodeChangeEvent;)V" />
+	</class>
+	<class name="java/util/prefs/PreferenceChangeEvent" since="1">
+		<extends name="java/util/EventObject" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/util/prefs/Preferences;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getKey()Ljava/lang/String;" />
+		<method name="getNewValue()Ljava/lang/String;" />
+		<method name="getNode()Ljava/util/prefs/Preferences;" />
+	</class>
+	<class name="java/util/prefs/PreferenceChangeListener" since="1">
+		<implements name="java/util/EventListener" />
+		<method name="preferenceChange(Ljava/util/prefs/PreferenceChangeEvent;)V" />
+	</class>
+	<class name="java/util/prefs/Preferences" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="absolutePath()Ljava/lang/String;" />
+		<method name="addNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
+		<method name="addPreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
+		<method name="childrenNames()[Ljava/lang/String;" />
+		<method name="clear()V" />
+		<method name="exportNode(Ljava/io/OutputStream;)V" />
+		<method name="exportSubtree(Ljava/io/OutputStream;)V" />
+		<method name="flush()V" />
+		<method name="get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getBoolean(Ljava/lang/String;Z)Z" />
+		<method name="getByteArray(Ljava/lang/String;[B)[B" />
+		<method name="getDouble(Ljava/lang/String;D)D" />
+		<method name="getFloat(Ljava/lang/String;F)F" />
+		<method name="getInt(Ljava/lang/String;I)I" />
+		<method name="getLong(Ljava/lang/String;J)J" />
+		<method name="importPreferences(Ljava/io/InputStream;)V" />
+		<method name="isUserNode()Z" />
+		<method name="keys()[Ljava/lang/String;" />
+		<method name="name()Ljava/lang/String;" />
+		<method name="node(Ljava/lang/String;)Ljava/util/prefs/Preferences;" />
+		<method name="nodeExists(Ljava/lang/String;)Z" />
+		<method name="parent()Ljava/util/prefs/Preferences;" />
+		<method name="put(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="putBoolean(Ljava/lang/String;Z)V" />
+		<method name="putByteArray(Ljava/lang/String;[B)V" />
+		<method name="putDouble(Ljava/lang/String;D)V" />
+		<method name="putFloat(Ljava/lang/String;F)V" />
+		<method name="putInt(Ljava/lang/String;I)V" />
+		<method name="putLong(Ljava/lang/String;J)V" />
+		<method name="remove(Ljava/lang/String;)V" />
+		<method name="removeNode()V" />
+		<method name="removeNodeChangeListener(Ljava/util/prefs/NodeChangeListener;)V" />
+		<method name="removePreferenceChangeListener(Ljava/util/prefs/PreferenceChangeListener;)V" />
+		<method name="sync()V" />
+		<method name="systemNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;" />
+		<method name="systemRoot()Ljava/util/prefs/Preferences;" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="userNodeForPackage(Ljava/lang/Class;)Ljava/util/prefs/Preferences;" />
+		<method name="userRoot()Ljava/util/prefs/Preferences;" />
+		<field name="MAX_KEY_LENGTH" />
+		<field name="MAX_NAME_LENGTH" />
+		<field name="MAX_VALUE_LENGTH" />
+	</class>
+	<class name="java/util/prefs/PreferencesFactory" since="1">
+		<method name="systemRoot()Ljava/util/prefs/Preferences;" />
+		<method name="userRoot()Ljava/util/prefs/Preferences;" />
+	</class>
+	<class name="java/util/regex/MatchResult" since="1">
+		<method name="end()I" />
+		<method name="end(I)I" />
+		<method name="group()Ljava/lang/String;" />
+		<method name="group(I)Ljava/lang/String;" />
+		<method name="groupCount()I" />
+		<method name="start()I" />
+		<method name="start(I)I" />
+	</class>
+	<class name="java/util/regex/Matcher" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/regex/MatchResult" />
+		<method name="appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;" />
+		<method name="appendTail(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;" />
+		<method name="end()I" />
+		<method name="end(I)I" />
+		<method name="find()Z" />
+		<method name="find(I)Z" />
+		<method name="group()Ljava/lang/String;" />
+		<method name="group(I)Ljava/lang/String;" />
+		<method name="groupCount()I" />
+		<method name="hasAnchoringBounds()Z" />
+		<method name="hasTransparentBounds()Z" />
+		<method name="hitEnd()Z" />
+		<method name="lookingAt()Z" />
+		<method name="matches()Z" />
+		<method name="pattern()Ljava/util/regex/Pattern;" />
+		<method name="quoteReplacement(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="region(II)Ljava/util/regex/Matcher;" />
+		<method name="regionEnd()I" />
+		<method name="regionStart()I" />
+		<method name="replaceAll(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="replaceFirst(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="requireEnd()Z" />
+		<method name="reset()Ljava/util/regex/Matcher;" />
+		<method name="reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;" />
+		<method name="start()I" />
+		<method name="start(I)I" />
+		<method name="toMatchResult()Ljava/util/regex/MatchResult;" />
+		<method name="useAnchoringBounds(Z)Ljava/util/regex/Matcher;" />
+		<method name="usePattern(Ljava/util/regex/Pattern;)Ljava/util/regex/Matcher;" />
+		<method name="useTransparentBounds(Z)Ljava/util/regex/Matcher;" />
+	</class>
+	<class name="java/util/regex/Pattern" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="compile(Ljava/lang/String;)Ljava/util/regex/Pattern;" />
+		<method name="compile(Ljava/lang/String;I)Ljava/util/regex/Pattern;" />
+		<method name="flags()I" />
+		<method name="matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;" />
+		<method name="matches(Ljava/lang/String;Ljava/lang/CharSequence;)Z" />
+		<method name="pattern()Ljava/lang/String;" />
+		<method name="quote(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="split(Ljava/lang/CharSequence;)[Ljava/lang/String;" />
+		<method name="split(Ljava/lang/CharSequence;I)[Ljava/lang/String;" />
+		<field name="CANON_EQ" />
+		<field name="CASE_INSENSITIVE" />
+		<field name="COMMENTS" />
+		<field name="DOTALL" />
+		<field name="LITERAL" />
+		<field name="MULTILINE" />
+		<field name="UNICODE_CASE" />
+		<field name="UNIX_LINES" />
+	</class>
+	<class name="java/util/regex/PatternSyntaxException" since="1">
+		<extends name="java/lang/IllegalArgumentException" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="getDescription()Ljava/lang/String;" />
+		<method name="getIndex()I" />
+		<method name="getPattern()Ljava/lang/String;" />
+	</class>
+	<class name="java/util/zip/Adler32" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/zip/Checksum" />
+		<method name="&lt;init>()V" />
+		<method name="getValue()J" />
+		<method name="reset()V" />
+		<method name="update(I)V" />
+		<method name="update([B)V" />
+		<method name="update([BII)V" />
+	</class>
+	<class name="java/util/zip/CRC32" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/zip/Checksum" />
+		<method name="&lt;init>()V" />
+		<method name="getValue()J" />
+		<method name="reset()V" />
+		<method name="update(I)V" />
+		<method name="update([B)V" />
+		<method name="update([BII)V" />
+	</class>
+	<class name="java/util/zip/CheckedInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V" />
+		<method name="getChecksum()Ljava/util/zip/Checksum;" />
+	</class>
+	<class name="java/util/zip/CheckedOutputStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Checksum;)V" />
+		<method name="getChecksum()Ljava/util/zip/Checksum;" />
+	</class>
+	<class name="java/util/zip/Checksum" since="1">
+		<method name="getValue()J" />
+		<method name="reset()V" />
+		<method name="update(I)V" />
+		<method name="update([BII)V" />
+	</class>
+	<class name="java/util/zip/DataFormatException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/zip/Deflater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(IZ)V" />
+		<method name="deflate([B)I" />
+		<method name="deflate([BII)I" />
+		<method name="end()V" />
+		<method name="finish()V" />
+		<method name="finished()Z" />
+		<method name="getAdler()I" />
+		<method name="getBytesRead()J" />
+		<method name="getBytesWritten()J" />
+		<method name="getTotalIn()I" />
+		<method name="getTotalOut()I" />
+		<method name="needsInput()Z" />
+		<method name="reset()V" />
+		<method name="setDictionary([B)V" />
+		<method name="setDictionary([BII)V" />
+		<method name="setInput([B)V" />
+		<method name="setInput([BII)V" />
+		<method name="setLevel(I)V" />
+		<method name="setStrategy(I)V" />
+		<field name="BEST_COMPRESSION" />
+		<field name="BEST_SPEED" />
+		<field name="DEFAULT_COMPRESSION" />
+		<field name="DEFAULT_STRATEGY" />
+		<field name="DEFLATED" />
+		<field name="FILTERED" />
+		<field name="HUFFMAN_ONLY" />
+		<field name="NO_COMPRESSION" />
+	</class>
+	<class name="java/util/zip/DeflaterInputStream" since="9">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Deflater;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Deflater;I)V" />
+		<field name="buf" />
+		<field name="def" />
+	</class>
+	<class name="java/util/zip/DeflaterOutputStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;I)V" />
+		<method name="deflate()V" />
+		<method name="finish()V" />
+		<field name="buf" />
+		<field name="def" />
+	</class>
+	<class name="java/util/zip/GZIPInputStream" since="1">
+		<extends name="java/util/zip/InflaterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;I)V" />
+		<field name="GZIP_MAGIC" />
+		<field name="crc" />
+		<field name="eos" />
+	</class>
+	<class name="java/util/zip/GZIPOutputStream" since="1">
+		<extends name="java/util/zip/DeflaterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;I)V" />
+		<field name="crc" />
+	</class>
+	<class name="java/util/zip/Inflater" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Z)V" />
+		<method name="end()V" />
+		<method name="finished()Z" />
+		<method name="getAdler()I" />
+		<method name="getBytesRead()J" />
+		<method name="getBytesWritten()J" />
+		<method name="getRemaining()I" />
+		<method name="getTotalIn()I" />
+		<method name="getTotalOut()I" />
+		<method name="inflate([B)I" />
+		<method name="inflate([BII)I" />
+		<method name="needsDictionary()Z" />
+		<method name="needsInput()Z" />
+		<method name="reset()V" />
+		<method name="setDictionary([B)V" />
+		<method name="setDictionary([BII)V" />
+		<method name="setInput([B)V" />
+		<method name="setInput([BII)V" />
+	</class>
+	<class name="java/util/zip/InflaterInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V" />
+		<method name="fill()V" />
+		<field name="buf" />
+		<field name="inf" />
+		<field name="len" />
+	</class>
+	<class name="java/util/zip/InflaterOutputStream" since="9">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Inflater;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljava/util/zip/Inflater;I)V" />
+		<method name="finish()V" />
+		<field name="buf" />
+		<field name="inf" />
+	</class>
+	<class name="java/util/zip/ZipEntry" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/util/zip/ZipEntry;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getComment()Ljava/lang/String;" />
+		<method name="getCompressedSize()J" />
+		<method name="getCrc()J" />
+		<method name="getExtra()[B" />
+		<method name="getMethod()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getSize()J" />
+		<method name="getTime()J" />
+		<method name="isDirectory()Z" />
+		<method name="setComment(Ljava/lang/String;)V" />
+		<method name="setCompressedSize(J)V" />
+		<method name="setCrc(J)V" />
+		<method name="setExtra([B)V" />
+		<method name="setMethod(I)V" />
+		<method name="setSize(J)V" />
+		<method name="setTime(J)V" />
+		<field name="DEFLATED" />
+		<field name="STORED" />
+	</class>
+	<class name="java/util/zip/ZipError" since="9">
+		<extends name="java/lang/InternalError" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/zip/ZipException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="java/util/zip/ZipFile" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/File;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="close()V" />
+		<method name="entries()Ljava/util/Enumeration;" />
+		<method name="getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;" />
+		<method name="getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="size()I" />
+		<field name="OPEN_DELETE" />
+		<field name="OPEN_READ" />
+	</class>
+	<class name="java/util/zip/ZipInputStream" since="1">
+		<extends name="java/util/zip/InflaterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="closeEntry()V" />
+		<method name="createZipEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;" />
+		<method name="getNextEntry()Ljava/util/zip/ZipEntry;" />
+	</class>
+	<class name="java/util/zip/ZipOutputStream" since="1">
+		<extends name="java/util/zip/DeflaterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="closeEntry()V" />
+		<method name="putNextEntry(Ljava/util/zip/ZipEntry;)V" />
+		<method name="setComment(Ljava/lang/String;)V" />
+		<method name="setLevel(I)V" />
+		<method name="setMethod(I)V" />
+		<field name="DEFLATED" />
+		<field name="STORED" />
+	</class>
+	<class name="javax/crypto/BadPaddingException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/crypto/Cipher" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="doFinal()[B" />
+		<method name="doFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
+		<method name="doFinal([B)[B" />
+		<method name="doFinal([BI)I" />
+		<method name="doFinal([BII)[B" />
+		<method name="doFinal([BII[B)I" />
+		<method name="doFinal([BII[BI)I" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getBlockSize()I" />
+		<method name="getExemptionMechanism()Ljavax/crypto/ExemptionMechanism;" />
+		<method name="getIV()[B" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Cipher;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;" />
+		<method name="getMaxAllowedKeyLength(Ljava/lang/String;)I" />
+		<method name="getMaxAllowedParameterSpec(Ljava/lang/String;)Ljava/security/spec/AlgorithmParameterSpec;" />
+		<method name="getOutputSize(I)I" />
+		<method name="getParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(ILjava/security/Key;)V" />
+		<method name="init(ILjava/security/Key;Ljava/security/AlgorithmParameters;)V" />
+		<method name="init(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V" />
+		<method name="init(ILjava/security/Key;Ljava/security/SecureRandom;)V" />
+		<method name="init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+		<method name="init(ILjava/security/cert/Certificate;)V" />
+		<method name="init(ILjava/security/cert/Certificate;Ljava/security/SecureRandom;)V" />
+		<method name="unwrap([BLjava/lang/String;I)Ljava/security/Key;" />
+		<method name="update(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
+		<method name="update([B)[B" />
+		<method name="update([BII)[B" />
+		<method name="update([BII[B)I" />
+		<method name="update([BII[BI)I" />
+		<method name="wrap(Ljava/security/Key;)[B" />
+		<field name="DECRYPT_MODE" />
+		<field name="ENCRYPT_MODE" />
+		<field name="PRIVATE_KEY" />
+		<field name="PUBLIC_KEY" />
+		<field name="SECRET_KEY" />
+		<field name="UNWRAP_MODE" />
+		<field name="WRAP_MODE" />
+	</class>
+	<class name="javax/crypto/CipherInputStream" since="1">
+		<extends name="java/io/FilterInputStream" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljavax/crypto/Cipher;)V" />
+	</class>
+	<class name="javax/crypto/CipherOutputStream" since="1">
+		<extends name="java/io/FilterOutputStream" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;Ljavax/crypto/Cipher;)V" />
+	</class>
+	<class name="javax/crypto/CipherSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineDoFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
+		<method name="engineDoFinal([BII)[B" />
+		<method name="engineDoFinal([BII[BI)I" />
+		<method name="engineGetBlockSize()I" />
+		<method name="engineGetIV()[B" />
+		<method name="engineGetKeySize(Ljava/security/Key;)I" />
+		<method name="engineGetOutputSize(I)I" />
+		<method name="engineGetParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="engineInit(ILjava/security/Key;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V" />
+		<method name="engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V" />
+		<method name="engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+		<method name="engineSetMode(Ljava/lang/String;)V" />
+		<method name="engineSetPadding(Ljava/lang/String;)V" />
+		<method name="engineUnwrap([BLjava/lang/String;I)Ljava/security/Key;" />
+		<method name="engineUpdate(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I" />
+		<method name="engineUpdate([BII)[B" />
+		<method name="engineUpdate([BII[BI)I" />
+		<method name="engineWrap(Ljava/security/Key;)[B" />
+	</class>
+	<class name="javax/crypto/EncryptedPrivateKeyInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;[B)V" />
+		<method name="&lt;init>(Ljava/security/AlgorithmParameters;[B)V" />
+		<method name="&lt;init>([B)V" />
+		<method name="getAlgName()Ljava/lang/String;" />
+		<method name="getAlgParameters()Ljava/security/AlgorithmParameters;" />
+		<method name="getEncoded()[B" />
+		<method name="getEncryptedData()[B" />
+		<method name="getKeySpec(Ljava/security/Key;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
+		<method name="getKeySpec(Ljava/security/Key;Ljava/lang/String;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
+		<method name="getKeySpec(Ljava/security/Key;Ljava/security/Provider;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
+		<method name="getKeySpec(Ljavax/crypto/Cipher;)Ljava/security/spec/PKCS8EncodedKeySpec;" />
+	</class>
+	<class name="javax/crypto/ExemptionMechanism" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/crypto/ExemptionMechanismSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="genExemptionBlob()[B" />
+		<method name="genExemptionBlob([B)I" />
+		<method name="genExemptionBlob([BI)I" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/ExemptionMechanism;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getOutputSize(I)I" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(Ljava/security/Key;)V" />
+		<method name="init(Ljava/security/Key;Ljava/security/AlgorithmParameters;)V" />
+		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="isCryptoAllowed(Ljava/security/Key;)Z" />
+	</class>
+	<class name="javax/crypto/ExemptionMechanismException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/crypto/ExemptionMechanismSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGenExemptionBlob()[B" />
+		<method name="engineGenExemptionBlob([BI)I" />
+		<method name="engineGetOutputSize(I)I" />
+		<method name="engineInit(Ljava/security/Key;)V" />
+		<method name="engineInit(Ljava/security/Key;Ljava/security/AlgorithmParameters;)V" />
+		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
+	</class>
+	<class name="javax/crypto/IllegalBlockSizeException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/crypto/KeyAgreement" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/crypto/KeyAgreementSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="doPhase(Ljava/security/Key;Z)Ljava/security/Key;" />
+		<method name="generateSecret()[B" />
+		<method name="generateSecret(Ljava/lang/String;)Ljavax/crypto/SecretKey;" />
+		<method name="generateSecret([BI)I" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/KeyAgreement;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyAgreement;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/KeyAgreement;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(Ljava/security/Key;)V" />
+		<method name="init(Ljava/security/Key;Ljava/security/SecureRandom;)V" />
+		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="javax/crypto/KeyAgreementSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineDoPhase(Ljava/security/Key;Z)Ljava/security/Key;" />
+		<method name="engineGenerateSecret()[B" />
+		<method name="engineGenerateSecret(Ljava/lang/String;)Ljavax/crypto/SecretKey;" />
+		<method name="engineGenerateSecret([BI)I" />
+		<method name="engineInit(Ljava/security/Key;Ljava/security/SecureRandom;)V" />
+		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="javax/crypto/KeyGenerator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/crypto/KeyGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="generateKey()Ljavax/crypto/SecretKey;" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyGenerator;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/KeyGenerator;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(I)V" />
+		<method name="init(ILjava/security/SecureRandom;)V" />
+		<method name="init(Ljava/security/SecureRandom;)V" />
+		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="javax/crypto/KeyGeneratorSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGenerateKey()Ljavax/crypto/SecretKey;" />
+		<method name="engineInit(ILjava/security/SecureRandom;)V" />
+		<method name="engineInit(Ljava/security/SecureRandom;)V" />
+		<method name="engineInit(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="javax/crypto/Mac" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>(Ljavax/crypto/MacSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="doFinal()[B" />
+		<method name="doFinal([B)[B" />
+		<method name="doFinal([BI)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/Mac;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Mac;" />
+		<method name="getMacLength()I" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(Ljava/security/Key;)V" />
+		<method name="init(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="reset()V" />
+		<method name="update(B)V" />
+		<method name="update(Ljava/nio/ByteBuffer;)V" />
+		<method name="update([B)V" />
+		<method name="update([BII)V" />
+	</class>
+	<class name="javax/crypto/MacSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="engineDoFinal()[B" />
+		<method name="engineGetMacLength()I" />
+		<method name="engineInit(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V" />
+		<method name="engineReset()V" />
+		<method name="engineUpdate(B)V" />
+		<method name="engineUpdate(Ljava/nio/ByteBuffer;)V" />
+		<method name="engineUpdate([BII)V" />
+	</class>
+	<class name="javax/crypto/NoSuchPaddingException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/crypto/NullCipher" since="1">
+		<extends name="javax/crypto/Cipher" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="javax/crypto/SealedObject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/io/Serializable;Ljavax/crypto/Cipher;)V" />
+		<method name="&lt;init>(Ljavax/crypto/SealedObject;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getObject(Ljava/security/Key;)Ljava/lang/Object;" />
+		<method name="getObject(Ljava/security/Key;Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getObject(Ljavax/crypto/Cipher;)Ljava/lang/Object;" />
+		<field name="encodedParams" />
+	</class>
+	<class name="javax/crypto/SecretKey" since="1">
+		<implements name="java/security/Key" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="javax/crypto/SecretKeyFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/crypto/SecretKeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="generateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/SecretKeyFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/SecretKeyFactory;" />
+		<method name="getKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="translateKey(Ljavax/crypto/SecretKey;)Ljavax/crypto/SecretKey;" />
+	</class>
+	<class name="javax/crypto/SecretKeyFactorySpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGenerateSecret(Ljava/security/spec/KeySpec;)Ljavax/crypto/SecretKey;" />
+		<method name="engineGetKeySpec(Ljavax/crypto/SecretKey;Ljava/lang/Class;)Ljava/security/spec/KeySpec;" />
+		<method name="engineTranslateKey(Ljavax/crypto/SecretKey;)Ljavax/crypto/SecretKey;" />
+	</class>
+	<class name="javax/crypto/ShortBufferException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/crypto/interfaces/DHKey" since="1">
+		<method name="getParams()Ljavax/crypto/spec/DHParameterSpec;" />
+	</class>
+	<class name="javax/crypto/interfaces/DHPrivateKey" since="1">
+		<implements name="javax/crypto/interfaces/DHKey" />
+		<implements name="java/security/PrivateKey" />
+		<method name="getX()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="javax/crypto/interfaces/DHPublicKey" since="1">
+		<implements name="javax/crypto/interfaces/DHKey" />
+		<implements name="java/security/PublicKey" />
+		<method name="getY()Ljava/math/BigInteger;" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="javax/crypto/interfaces/PBEKey" since="1">
+		<implements name="javax/crypto/SecretKey" />
+		<method name="getIterationCount()I" />
+		<method name="getPassword()[C" />
+		<method name="getSalt()[B" />
+		<field name="serialVersionUID" />
+	</class>
+	<class name="javax/crypto/spec/DESKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>([B)V" />
+		<method name="&lt;init>([BI)V" />
+		<method name="getKey()[B" />
+		<method name="isParityAdjusted([BI)Z" />
+		<method name="isWeak([BI)Z" />
+		<field name="DES_KEY_LEN" />
+	</class>
+	<class name="javax/crypto/spec/DESedeKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>([B)V" />
+		<method name="&lt;init>([BI)V" />
+		<method name="getKey()[B" />
+		<method name="isParityAdjusted([BI)Z" />
+		<field name="DES_EDE_KEY_LEN" />
+	</class>
+	<class name="javax/crypto/spec/DHGenParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(II)V" />
+		<method name="getExponentSize()I" />
+		<method name="getPrimeSize()I" />
+	</class>
+	<class name="javax/crypto/spec/DHParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;I)V" />
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getL()I" />
+		<method name="getP()Ljava/math/BigInteger;" />
+	</class>
+	<class name="javax/crypto/spec/DHPrivateKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getP()Ljava/math/BigInteger;" />
+		<method name="getX()Ljava/math/BigInteger;" />
+	</class>
+	<class name="javax/crypto/spec/DHPublicKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V" />
+		<method name="getG()Ljava/math/BigInteger;" />
+		<method name="getP()Ljava/math/BigInteger;" />
+		<method name="getY()Ljava/math/BigInteger;" />
+	</class>
+	<class name="javax/crypto/spec/IvParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>([B)V" />
+		<method name="&lt;init>([BII)V" />
+		<method name="getIV()[B" />
+	</class>
+	<class name="javax/crypto/spec/OAEPParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/security/spec/AlgorithmParameterSpec;Ljavax/crypto/spec/PSource;)V" />
+		<method name="getDigestAlgorithm()Ljava/lang/String;" />
+		<method name="getMGFAlgorithm()Ljava/lang/String;" />
+		<method name="getMGFParameters()Ljava/security/spec/AlgorithmParameterSpec;" />
+		<method name="getPSource()Ljavax/crypto/spec/PSource;" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="javax/crypto/spec/PBEKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<method name="&lt;init>([C)V" />
+		<method name="&lt;init>([C[BI)V" />
+		<method name="&lt;init>([C[BII)V" />
+		<method name="clearPassword()V" />
+		<method name="getIterationCount()I" />
+		<method name="getKeyLength()I" />
+		<method name="getPassword()[C" />
+		<method name="getSalt()[B" />
+	</class>
+	<class name="javax/crypto/spec/PBEParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>([BI)V" />
+		<method name="getIterationCount()I" />
+		<method name="getSalt()[B" />
+	</class>
+	<class name="javax/crypto/spec/PSource" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+	</class>
+	<class name="javax/crypto/spec/PSource$PSpecified" since="1">
+		<extends name="javax/crypto/spec/PSource" />
+		<method name="&lt;init>([B)V" />
+		<method name="getValue()[B" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="javax/crypto/spec/RC2ParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(I[B)V" />
+		<method name="&lt;init>(I[BI)V" />
+		<method name="getEffectiveKeyBits()I" />
+		<method name="getIV()[B" />
+	</class>
+	<class name="javax/crypto/spec/RC5ParameterSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/AlgorithmParameterSpec" />
+		<method name="&lt;init>(III)V" />
+		<method name="&lt;init>(III[B)V" />
+		<method name="&lt;init>(III[BI)V" />
+		<method name="getIV()[B" />
+		<method name="getRounds()I" />
+		<method name="getVersion()I" />
+		<method name="getWordSize()I" />
+	</class>
+	<class name="javax/crypto/spec/SecretKeySpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/spec/KeySpec" />
+		<implements name="javax/crypto/SecretKey" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>([BIILjava/lang/String;)V" />
+		<method name="&lt;init>([BLjava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getEncoded()[B" />
+		<method name="getFormat()Ljava/lang/String;" />
+	</class>
+	<class name="javax/microedition/khronos/egl/EGL" since="1">
+	</class>
+	<class name="javax/microedition/khronos/egl/EGL10" since="1">
+		<implements name="javax/microedition/khronos/egl/EGL" />
+		<method name="eglChooseConfig(Ljavax/microedition/khronos/egl/EGLDisplay;[I[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z" />
+		<method name="eglCopyBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljava/lang/Object;)Z" />
+		<method name="eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext;" />
+		<method name="eglCreatePbufferSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;[I)Ljavax/microedition/khronos/egl/EGLSurface;" />
+		<method name="eglCreatePixmapSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface;" />
+		<method name="eglCreateWindowSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljava/lang/Object;[I)Ljavax/microedition/khronos/egl/EGLSurface;" />
+		<method name="eglDestroyContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)Z" />
+		<method name="eglDestroySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z" />
+		<method name="eglGetConfigAttrib(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z" />
+		<method name="eglGetConfigs(Ljavax/microedition/khronos/egl/EGLDisplay;[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z" />
+		<method name="eglGetCurrentContext()Ljavax/microedition/khronos/egl/EGLContext;" />
+		<method name="eglGetCurrentDisplay()Ljavax/microedition/khronos/egl/EGLDisplay;" />
+		<method name="eglGetCurrentSurface(I)Ljavax/microedition/khronos/egl/EGLSurface;" />
+		<method name="eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay;" />
+		<method name="eglGetError()I" />
+		<method name="eglInitialize(Ljavax/microedition/khronos/egl/EGLDisplay;[I)Z" />
+		<method name="eglMakeCurrent(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLContext;)Z" />
+		<method name="eglQueryContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;I[I)Z" />
+		<method name="eglQueryString(Ljavax/microedition/khronos/egl/EGLDisplay;I)Ljava/lang/String;" />
+		<method name="eglQuerySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;I[I)Z" />
+		<method name="eglSwapBuffers(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z" />
+		<method name="eglTerminate(Ljavax/microedition/khronos/egl/EGLDisplay;)Z" />
+		<method name="eglWaitGL()Z" />
+		<method name="eglWaitNative(ILjava/lang/Object;)Z" />
+		<field name="EGL_ALPHA_FORMAT" />
+		<field name="EGL_ALPHA_MASK_SIZE" />
+		<field name="EGL_ALPHA_SIZE" />
+		<field name="EGL_BAD_ACCESS" />
+		<field name="EGL_BAD_ALLOC" />
+		<field name="EGL_BAD_ATTRIBUTE" />
+		<field name="EGL_BAD_CONFIG" />
+		<field name="EGL_BAD_CONTEXT" />
+		<field name="EGL_BAD_CURRENT_SURFACE" />
+		<field name="EGL_BAD_DISPLAY" />
+		<field name="EGL_BAD_MATCH" />
+		<field name="EGL_BAD_NATIVE_PIXMAP" />
+		<field name="EGL_BAD_NATIVE_WINDOW" />
+		<field name="EGL_BAD_PARAMETER" />
+		<field name="EGL_BAD_SURFACE" />
+		<field name="EGL_BLUE_SIZE" />
+		<field name="EGL_BUFFER_SIZE" />
+		<field name="EGL_COLORSPACE" />
+		<field name="EGL_COLOR_BUFFER_TYPE" />
+		<field name="EGL_CONFIG_CAVEAT" />
+		<field name="EGL_CONFIG_ID" />
+		<field name="EGL_CORE_NATIVE_ENGINE" />
+		<field name="EGL_DEFAULT_DISPLAY" />
+		<field name="EGL_DEPTH_SIZE" />
+		<field name="EGL_DONT_CARE" />
+		<field name="EGL_DRAW" />
+		<field name="EGL_EXTENSIONS" />
+		<field name="EGL_GREEN_SIZE" />
+		<field name="EGL_HEIGHT" />
+		<field name="EGL_HORIZONTAL_RESOLUTION" />
+		<field name="EGL_LARGEST_PBUFFER" />
+		<field name="EGL_LEVEL" />
+		<field name="EGL_LUMINANCE_BUFFER" />
+		<field name="EGL_LUMINANCE_SIZE" />
+		<field name="EGL_MAX_PBUFFER_HEIGHT" />
+		<field name="EGL_MAX_PBUFFER_PIXELS" />
+		<field name="EGL_MAX_PBUFFER_WIDTH" />
+		<field name="EGL_NATIVE_RENDERABLE" />
+		<field name="EGL_NATIVE_VISUAL_ID" />
+		<field name="EGL_NATIVE_VISUAL_TYPE" />
+		<field name="EGL_NONE" />
+		<field name="EGL_NON_CONFORMANT_CONFIG" />
+		<field name="EGL_NOT_INITIALIZED" />
+		<field name="EGL_NO_CONTEXT" />
+		<field name="EGL_NO_DISPLAY" />
+		<field name="EGL_NO_SURFACE" />
+		<field name="EGL_PBUFFER_BIT" />
+		<field name="EGL_PIXEL_ASPECT_RATIO" />
+		<field name="EGL_PIXMAP_BIT" />
+		<field name="EGL_READ" />
+		<field name="EGL_RED_SIZE" />
+		<field name="EGL_RENDERABLE_TYPE" />
+		<field name="EGL_RENDER_BUFFER" />
+		<field name="EGL_RGB_BUFFER" />
+		<field name="EGL_SAMPLES" />
+		<field name="EGL_SAMPLE_BUFFERS" />
+		<field name="EGL_SINGLE_BUFFER" />
+		<field name="EGL_SLOW_CONFIG" />
+		<field name="EGL_STENCIL_SIZE" />
+		<field name="EGL_SUCCESS" />
+		<field name="EGL_SURFACE_TYPE" />
+		<field name="EGL_TRANSPARENT_BLUE_VALUE" />
+		<field name="EGL_TRANSPARENT_GREEN_VALUE" />
+		<field name="EGL_TRANSPARENT_RED_VALUE" />
+		<field name="EGL_TRANSPARENT_RGB" />
+		<field name="EGL_TRANSPARENT_TYPE" />
+		<field name="EGL_VENDOR" />
+		<field name="EGL_VERSION" />
+		<field name="EGL_VERTICAL_RESOLUTION" />
+		<field name="EGL_WIDTH" />
+		<field name="EGL_WINDOW_BIT" />
+	</class>
+	<class name="javax/microedition/khronos/egl/EGL11" since="1">
+		<implements name="javax/microedition/khronos/egl/EGL10" />
+		<field name="EGL_CONTEXT_LOST" />
+	</class>
+	<class name="javax/microedition/khronos/egl/EGLConfig" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="javax/microedition/khronos/egl/EGLContext" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getEGL()Ljavax/microedition/khronos/egl/EGL;" />
+		<method name="getGL()Ljavax/microedition/khronos/opengles/GL;" />
+	</class>
+	<class name="javax/microedition/khronos/egl/EGLDisplay" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="javax/microedition/khronos/egl/EGLSurface" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="javax/microedition/khronos/opengles/GL" since="1">
+	</class>
+	<class name="javax/microedition/khronos/opengles/GL10" since="1">
+		<implements name="javax/microedition/khronos/opengles/GL" />
+		<method name="glActiveTexture(I)V" />
+		<method name="glAlphaFunc(IF)V" />
+		<method name="glAlphaFuncx(II)V" />
+		<method name="glBindTexture(II)V" />
+		<method name="glBlendFunc(II)V" />
+		<method name="glClear(I)V" />
+		<method name="glClearColor(FFFF)V" />
+		<method name="glClearColorx(IIII)V" />
+		<method name="glClearDepthf(F)V" />
+		<method name="glClearDepthx(I)V" />
+		<method name="glClearStencil(I)V" />
+		<method name="glClientActiveTexture(I)V" />
+		<method name="glColor4f(FFFF)V" />
+		<method name="glColor4x(IIII)V" />
+		<method name="glColorMask(ZZZZ)V" />
+		<method name="glColorPointer(IIILjava/nio/Buffer;)V" />
+		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCompressedTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCopyTexImage2D(IIIIIIII)V" />
+		<method name="glCopyTexSubImage2D(IIIIIIII)V" />
+		<method name="glCullFace(I)V" />
+		<method name="glDeleteTextures(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteTextures(I[II)V" />
+		<method name="glDepthFunc(I)V" />
+		<method name="glDepthMask(Z)V" />
+		<method name="glDepthRangef(FF)V" />
+		<method name="glDepthRangex(II)V" />
+		<method name="glDisable(I)V" />
+		<method name="glDisableClientState(I)V" />
+		<method name="glDrawArrays(III)V" />
+		<method name="glDrawElements(IIILjava/nio/Buffer;)V" />
+		<method name="glEnable(I)V" />
+		<method name="glEnableClientState(I)V" />
+		<method name="glFinish()V" />
+		<method name="glFlush()V" />
+		<method name="glFogf(IF)V" />
+		<method name="glFogfv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glFogfv(I[FI)V" />
+		<method name="glFogx(II)V" />
+		<method name="glFogxv(ILjava/nio/IntBuffer;)V" />
+		<method name="glFogxv(I[II)V" />
+		<method name="glFrontFace(I)V" />
+		<method name="glFrustumf(FFFFFF)V" />
+		<method name="glFrustumx(IIIIII)V" />
+		<method name="glGenTextures(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenTextures(I[II)V" />
+		<method name="glGetError()I" />
+		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetIntegerv(I[II)V" />
+		<method name="glGetString(I)Ljava/lang/String;" />
+		<method name="glHint(II)V" />
+		<method name="glLightModelf(IF)V" />
+		<method name="glLightModelfv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glLightModelfv(I[FI)V" />
+		<method name="glLightModelx(II)V" />
+		<method name="glLightModelxv(ILjava/nio/IntBuffer;)V" />
+		<method name="glLightModelxv(I[II)V" />
+		<method name="glLightf(IIF)V" />
+		<method name="glLightfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glLightfv(II[FI)V" />
+		<method name="glLightx(III)V" />
+		<method name="glLightxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glLightxv(II[II)V" />
+		<method name="glLineWidth(F)V" />
+		<method name="glLineWidthx(I)V" />
+		<method name="glLoadIdentity()V" />
+		<method name="glLoadMatrixf(Ljava/nio/FloatBuffer;)V" />
+		<method name="glLoadMatrixf([FI)V" />
+		<method name="glLoadMatrixx(Ljava/nio/IntBuffer;)V" />
+		<method name="glLoadMatrixx([II)V" />
+		<method name="glLogicOp(I)V" />
+		<method name="glMaterialf(IIF)V" />
+		<method name="glMaterialfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glMaterialfv(II[FI)V" />
+		<method name="glMaterialx(III)V" />
+		<method name="glMaterialxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glMaterialxv(II[II)V" />
+		<method name="glMatrixMode(I)V" />
+		<method name="glMultMatrixf(Ljava/nio/FloatBuffer;)V" />
+		<method name="glMultMatrixf([FI)V" />
+		<method name="glMultMatrixx(Ljava/nio/IntBuffer;)V" />
+		<method name="glMultMatrixx([II)V" />
+		<method name="glMultiTexCoord4f(IFFFF)V" />
+		<method name="glMultiTexCoord4x(IIIII)V" />
+		<method name="glNormal3f(FFF)V" />
+		<method name="glNormal3x(III)V" />
+		<method name="glNormalPointer(IILjava/nio/Buffer;)V" />
+		<method name="glOrthof(FFFFFF)V" />
+		<method name="glOrthox(IIIIII)V" />
+		<method name="glPixelStorei(II)V" />
+		<method name="glPointSize(F)V" />
+		<method name="glPointSizex(I)V" />
+		<method name="glPolygonOffset(FF)V" />
+		<method name="glPolygonOffsetx(II)V" />
+		<method name="glPopMatrix()V" />
+		<method name="glPushMatrix()V" />
+		<method name="glReadPixels(IIIIIILjava/nio/Buffer;)V" />
+		<method name="glRotatef(FFFF)V" />
+		<method name="glRotatex(IIII)V" />
+		<method name="glSampleCoverage(FZ)V" />
+		<method name="glSampleCoveragex(IZ)V" />
+		<method name="glScalef(FFF)V" />
+		<method name="glScalex(III)V" />
+		<method name="glScissor(IIII)V" />
+		<method name="glShadeModel(I)V" />
+		<method name="glStencilFunc(III)V" />
+		<method name="glStencilMask(I)V" />
+		<method name="glStencilOp(III)V" />
+		<method name="glTexCoordPointer(IIILjava/nio/Buffer;)V" />
+		<method name="glTexEnvf(IIF)V" />
+		<method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexEnvfv(II[FI)V" />
+		<method name="glTexEnvx(III)V" />
+		<method name="glTexEnvxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexEnvxv(II[II)V" />
+		<method name="glTexImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glTexParameterf(IIF)V" />
+		<method name="glTexParameterx(III)V" />
+		<method name="glTexSubImage2D(IIIIIIIILjava/nio/Buffer;)V" />
+		<method name="glTranslatef(FFF)V" />
+		<method name="glTranslatex(III)V" />
+		<method name="glVertexPointer(IIILjava/nio/Buffer;)V" />
+		<method name="glViewport(IIII)V" />
+		<field name="GL_ADD" />
+		<field name="GL_ALIASED_LINE_WIDTH_RANGE" />
+		<field name="GL_ALIASED_POINT_SIZE_RANGE" />
+		<field name="GL_ALPHA" />
+		<field name="GL_ALPHA_BITS" />
+		<field name="GL_ALPHA_TEST" />
+		<field name="GL_ALWAYS" />
+		<field name="GL_AMBIENT" />
+		<field name="GL_AMBIENT_AND_DIFFUSE" />
+		<field name="GL_AND" />
+		<field name="GL_AND_INVERTED" />
+		<field name="GL_AND_REVERSE" />
+		<field name="GL_BACK" />
+		<field name="GL_BLEND" />
+		<field name="GL_BLUE_BITS" />
+		<field name="GL_BYTE" />
+		<field name="GL_CCW" />
+		<field name="GL_CLAMP_TO_EDGE" />
+		<field name="GL_CLEAR" />
+		<field name="GL_COLOR_ARRAY" />
+		<field name="GL_COLOR_BUFFER_BIT" />
+		<field name="GL_COLOR_LOGIC_OP" />
+		<field name="GL_COLOR_MATERIAL" />
+		<field name="GL_COMPRESSED_TEXTURE_FORMATS" />
+		<field name="GL_CONSTANT_ATTENUATION" />
+		<field name="GL_COPY" />
+		<field name="GL_COPY_INVERTED" />
+		<field name="GL_CULL_FACE" />
+		<field name="GL_CW" />
+		<field name="GL_DECAL" />
+		<field name="GL_DECR" />
+		<field name="GL_DEPTH_BITS" />
+		<field name="GL_DEPTH_BUFFER_BIT" />
+		<field name="GL_DEPTH_TEST" />
+		<field name="GL_DIFFUSE" />
+		<field name="GL_DITHER" />
+		<field name="GL_DONT_CARE" />
+		<field name="GL_DST_ALPHA" />
+		<field name="GL_DST_COLOR" />
+		<field name="GL_EMISSION" />
+		<field name="GL_EQUAL" />
+		<field name="GL_EQUIV" />
+		<field name="GL_EXP" />
+		<field name="GL_EXP2" />
+		<field name="GL_EXTENSIONS" />
+		<field name="GL_FALSE" />
+		<field name="GL_FASTEST" />
+		<field name="GL_FIXED" />
+		<field name="GL_FLAT" />
+		<field name="GL_FLOAT" />
+		<field name="GL_FOG" />
+		<field name="GL_FOG_COLOR" />
+		<field name="GL_FOG_DENSITY" />
+		<field name="GL_FOG_END" />
+		<field name="GL_FOG_HINT" />
+		<field name="GL_FOG_MODE" />
+		<field name="GL_FOG_START" />
+		<field name="GL_FRONT" />
+		<field name="GL_FRONT_AND_BACK" />
+		<field name="GL_GEQUAL" />
+		<field name="GL_GREATER" />
+		<field name="GL_GREEN_BITS" />
+		<field name="GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES" />
+		<field name="GL_IMPLEMENTATION_COLOR_READ_TYPE_OES" />
+		<field name="GL_INCR" />
+		<field name="GL_INVALID_ENUM" />
+		<field name="GL_INVALID_OPERATION" />
+		<field name="GL_INVALID_VALUE" />
+		<field name="GL_INVERT" />
+		<field name="GL_KEEP" />
+		<field name="GL_LEQUAL" />
+		<field name="GL_LESS" />
+		<field name="GL_LIGHT0" />
+		<field name="GL_LIGHT1" />
+		<field name="GL_LIGHT2" />
+		<field name="GL_LIGHT3" />
+		<field name="GL_LIGHT4" />
+		<field name="GL_LIGHT5" />
+		<field name="GL_LIGHT6" />
+		<field name="GL_LIGHT7" />
+		<field name="GL_LIGHTING" />
+		<field name="GL_LIGHT_MODEL_AMBIENT" />
+		<field name="GL_LIGHT_MODEL_TWO_SIDE" />
+		<field name="GL_LINEAR" />
+		<field name="GL_LINEAR_ATTENUATION" />
+		<field name="GL_LINEAR_MIPMAP_LINEAR" />
+		<field name="GL_LINEAR_MIPMAP_NEAREST" />
+		<field name="GL_LINES" />
+		<field name="GL_LINE_LOOP" />
+		<field name="GL_LINE_SMOOTH" />
+		<field name="GL_LINE_SMOOTH_HINT" />
+		<field name="GL_LINE_STRIP" />
+		<field name="GL_LUMINANCE" />
+		<field name="GL_LUMINANCE_ALPHA" />
+		<field name="GL_MAX_ELEMENTS_INDICES" />
+		<field name="GL_MAX_ELEMENTS_VERTICES" />
+		<field name="GL_MAX_LIGHTS" />
+		<field name="GL_MAX_MODELVIEW_STACK_DEPTH" />
+		<field name="GL_MAX_PROJECTION_STACK_DEPTH" />
+		<field name="GL_MAX_TEXTURE_SIZE" />
+		<field name="GL_MAX_TEXTURE_STACK_DEPTH" />
+		<field name="GL_MAX_TEXTURE_UNITS" />
+		<field name="GL_MAX_VIEWPORT_DIMS" />
+		<field name="GL_MODELVIEW" />
+		<field name="GL_MODULATE" />
+		<field name="GL_MULTISAMPLE" />
+		<field name="GL_NAND" />
+		<field name="GL_NEAREST" />
+		<field name="GL_NEAREST_MIPMAP_LINEAR" />
+		<field name="GL_NEAREST_MIPMAP_NEAREST" />
+		<field name="GL_NEVER" />
+		<field name="GL_NICEST" />
+		<field name="GL_NOOP" />
+		<field name="GL_NOR" />
+		<field name="GL_NORMALIZE" />
+		<field name="GL_NORMAL_ARRAY" />
+		<field name="GL_NOTEQUAL" />
+		<field name="GL_NO_ERROR" />
+		<field name="GL_NUM_COMPRESSED_TEXTURE_FORMATS" />
+		<field name="GL_ONE" />
+		<field name="GL_ONE_MINUS_DST_ALPHA" />
+		<field name="GL_ONE_MINUS_DST_COLOR" />
+		<field name="GL_ONE_MINUS_SRC_ALPHA" />
+		<field name="GL_ONE_MINUS_SRC_COLOR" />
+		<field name="GL_OR" />
+		<field name="GL_OR_INVERTED" />
+		<field name="GL_OR_REVERSE" />
+		<field name="GL_OUT_OF_MEMORY" />
+		<field name="GL_PACK_ALIGNMENT" />
+		<field name="GL_PALETTE4_R5_G6_B5_OES" />
+		<field name="GL_PALETTE4_RGB5_A1_OES" />
+		<field name="GL_PALETTE4_RGB8_OES" />
+		<field name="GL_PALETTE4_RGBA4_OES" />
+		<field name="GL_PALETTE4_RGBA8_OES" />
+		<field name="GL_PALETTE8_R5_G6_B5_OES" />
+		<field name="GL_PALETTE8_RGB5_A1_OES" />
+		<field name="GL_PALETTE8_RGB8_OES" />
+		<field name="GL_PALETTE8_RGBA4_OES" />
+		<field name="GL_PALETTE8_RGBA8_OES" />
+		<field name="GL_PERSPECTIVE_CORRECTION_HINT" />
+		<field name="GL_POINTS" />
+		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
+		<field name="GL_POINT_SIZE" />
+		<field name="GL_POINT_SMOOTH" />
+		<field name="GL_POINT_SMOOTH_HINT" />
+		<field name="GL_POLYGON_OFFSET_FILL" />
+		<field name="GL_POLYGON_SMOOTH_HINT" />
+		<field name="GL_POSITION" />
+		<field name="GL_PROJECTION" />
+		<field name="GL_QUADRATIC_ATTENUATION" />
+		<field name="GL_RED_BITS" />
+		<field name="GL_RENDERER" />
+		<field name="GL_REPEAT" />
+		<field name="GL_REPLACE" />
+		<field name="GL_RESCALE_NORMAL" />
+		<field name="GL_RGB" />
+		<field name="GL_RGBA" />
+		<field name="GL_SAMPLE_ALPHA_TO_COVERAGE" />
+		<field name="GL_SAMPLE_ALPHA_TO_ONE" />
+		<field name="GL_SAMPLE_COVERAGE" />
+		<field name="GL_SCISSOR_TEST" />
+		<field name="GL_SET" />
+		<field name="GL_SHININESS" />
+		<field name="GL_SHORT" />
+		<field name="GL_SMOOTH" />
+		<field name="GL_SMOOTH_LINE_WIDTH_RANGE" />
+		<field name="GL_SMOOTH_POINT_SIZE_RANGE" />
+		<field name="GL_SPECULAR" />
+		<field name="GL_SPOT_CUTOFF" />
+		<field name="GL_SPOT_DIRECTION" />
+		<field name="GL_SPOT_EXPONENT" />
+		<field name="GL_SRC_ALPHA" />
+		<field name="GL_SRC_ALPHA_SATURATE" />
+		<field name="GL_SRC_COLOR" />
+		<field name="GL_STACK_OVERFLOW" />
+		<field name="GL_STACK_UNDERFLOW" />
+		<field name="GL_STENCIL_BITS" />
+		<field name="GL_STENCIL_BUFFER_BIT" />
+		<field name="GL_STENCIL_TEST" />
+		<field name="GL_SUBPIXEL_BITS" />
+		<field name="GL_TEXTURE" />
+		<field name="GL_TEXTURE0" />
+		<field name="GL_TEXTURE1" />
+		<field name="GL_TEXTURE10" />
+		<field name="GL_TEXTURE11" />
+		<field name="GL_TEXTURE12" />
+		<field name="GL_TEXTURE13" />
+		<field name="GL_TEXTURE14" />
+		<field name="GL_TEXTURE15" />
+		<field name="GL_TEXTURE16" />
+		<field name="GL_TEXTURE17" />
+		<field name="GL_TEXTURE18" />
+		<field name="GL_TEXTURE19" />
+		<field name="GL_TEXTURE2" />
+		<field name="GL_TEXTURE20" />
+		<field name="GL_TEXTURE21" />
+		<field name="GL_TEXTURE22" />
+		<field name="GL_TEXTURE23" />
+		<field name="GL_TEXTURE24" />
+		<field name="GL_TEXTURE25" />
+		<field name="GL_TEXTURE26" />
+		<field name="GL_TEXTURE27" />
+		<field name="GL_TEXTURE28" />
+		<field name="GL_TEXTURE29" />
+		<field name="GL_TEXTURE3" />
+		<field name="GL_TEXTURE30" />
+		<field name="GL_TEXTURE31" />
+		<field name="GL_TEXTURE4" />
+		<field name="GL_TEXTURE5" />
+		<field name="GL_TEXTURE6" />
+		<field name="GL_TEXTURE7" />
+		<field name="GL_TEXTURE8" />
+		<field name="GL_TEXTURE9" />
+		<field name="GL_TEXTURE_2D" />
+		<field name="GL_TEXTURE_COORD_ARRAY" />
+		<field name="GL_TEXTURE_ENV" />
+		<field name="GL_TEXTURE_ENV_COLOR" />
+		<field name="GL_TEXTURE_ENV_MODE" />
+		<field name="GL_TEXTURE_MAG_FILTER" />
+		<field name="GL_TEXTURE_MIN_FILTER" />
+		<field name="GL_TEXTURE_WRAP_S" />
+		<field name="GL_TEXTURE_WRAP_T" />
+		<field name="GL_TRIANGLES" />
+		<field name="GL_TRIANGLE_FAN" />
+		<field name="GL_TRIANGLE_STRIP" />
+		<field name="GL_TRUE" />
+		<field name="GL_UNPACK_ALIGNMENT" />
+		<field name="GL_UNSIGNED_BYTE" />
+		<field name="GL_UNSIGNED_SHORT" />
+		<field name="GL_UNSIGNED_SHORT_4_4_4_4" />
+		<field name="GL_UNSIGNED_SHORT_5_5_5_1" />
+		<field name="GL_UNSIGNED_SHORT_5_6_5" />
+		<field name="GL_VENDOR" />
+		<field name="GL_VERSION" />
+		<field name="GL_VERTEX_ARRAY" />
+		<field name="GL_XOR" />
+		<field name="GL_ZERO" />
+	</class>
+	<class name="javax/microedition/khronos/opengles/GL10Ext" since="1">
+		<implements name="javax/microedition/khronos/opengles/GL" />
+		<method name="glQueryMatrixxOES(Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;)I" />
+		<method name="glQueryMatrixxOES([II[II)I" />
+	</class>
+	<class name="javax/microedition/khronos/opengles/GL11" since="1">
+		<implements name="javax/microedition/khronos/opengles/GL10" />
+		<method name="glBindBuffer(II)V" />
+		<method name="glBufferData(IILjava/nio/Buffer;I)V" />
+		<method name="glBufferSubData(IIILjava/nio/Buffer;)V" />
+		<method name="glClipPlanef(ILjava/nio/FloatBuffer;)V" />
+		<method name="glClipPlanef(I[FI)V" />
+		<method name="glClipPlanex(ILjava/nio/IntBuffer;)V" />
+		<method name="glClipPlanex(I[II)V" />
+		<method name="glColor4ub(BBBB)V" />
+		<method name="glColorPointer(IIII)V" />
+		<method name="glDeleteBuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteBuffers(I[II)V" />
+		<method name="glDrawElements(IIII)V" />
+		<method name="glGenBuffers(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenBuffers(I[II)V" />
+		<method name="glGetBooleanv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetBooleanv(I[ZI)V" />
+		<method name="glGetBufferParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetBufferParameteriv(II[II)V" />
+		<method name="glGetClipPlanef(ILjava/nio/FloatBuffer;)V" />
+		<method name="glGetClipPlanef(I[FI)V" />
+		<method name="glGetClipPlanex(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetClipPlanex(I[II)V" />
+		<method name="glGetFixedv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetFixedv(I[II)V" />
+		<method name="glGetFloatv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glGetFloatv(I[FI)V" />
+		<method name="glGetLightfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetLightfv(II[FI)V" />
+		<method name="glGetLightxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetLightxv(II[II)V" />
+		<method name="glGetMaterialfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetMaterialfv(II[FI)V" />
+		<method name="glGetMaterialxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetMaterialxv(II[II)V" />
+		<method name="glGetPointerv(I[Ljava/nio/Buffer;)V" />
+		<method name="glGetTexEnviv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexEnviv(II[II)V" />
+		<method name="glGetTexEnvxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexEnvxv(II[II)V" />
+		<method name="glGetTexParameterfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetTexParameterfv(II[FI)V" />
+		<method name="glGetTexParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexParameteriv(II[II)V" />
+		<method name="glGetTexParameterxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexParameterxv(II[II)V" />
+		<method name="glIsBuffer(I)Z" />
+		<method name="glIsEnabled(I)Z" />
+		<method name="glIsTexture(I)Z" />
+		<method name="glNormalPointer(III)V" />
+		<method name="glPointParameterf(IF)V" />
+		<method name="glPointParameterfv(ILjava/nio/FloatBuffer;)V" />
+		<method name="glPointParameterfv(I[FI)V" />
+		<method name="glPointParameterx(II)V" />
+		<method name="glPointParameterxv(ILjava/nio/IntBuffer;)V" />
+		<method name="glPointParameterxv(I[II)V" />
+		<method name="glPointSizePointerOES(IILjava/nio/Buffer;)V" />
+		<method name="glTexCoordPointer(IIII)V" />
+		<method name="glTexEnvi(III)V" />
+		<method name="glTexEnviv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexEnviv(II[II)V" />
+		<method name="glTexParameterfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexParameterfv(II[FI)V" />
+		<method name="glTexParameteri(III)V" />
+		<method name="glTexParameteriv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexParameteriv(II[II)V" />
+		<method name="glTexParameterxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexParameterxv(II[II)V" />
+		<method name="glVertexPointer(IIII)V" />
+		<field name="GL_ACTIVE_TEXTURE" />
+		<field name="GL_ADD_SIGNED" />
+		<field name="GL_ALPHA_SCALE" />
+		<field name="GL_ALPHA_TEST_FUNC" />
+		<field name="GL_ALPHA_TEST_REF" />
+		<field name="GL_ARRAY_BUFFER" />
+		<field name="GL_ARRAY_BUFFER_BINDING" />
+		<field name="GL_BLEND_DST" />
+		<field name="GL_BLEND_SRC" />
+		<field name="GL_BUFFER_ACCESS" />
+		<field name="GL_BUFFER_SIZE" />
+		<field name="GL_BUFFER_USAGE" />
+		<field name="GL_CLIENT_ACTIVE_TEXTURE" />
+		<field name="GL_CLIP_PLANE0" />
+		<field name="GL_CLIP_PLANE1" />
+		<field name="GL_CLIP_PLANE2" />
+		<field name="GL_CLIP_PLANE3" />
+		<field name="GL_CLIP_PLANE4" />
+		<field name="GL_CLIP_PLANE5" />
+		<field name="GL_COLOR_ARRAY_BUFFER_BINDING" />
+		<field name="GL_COLOR_ARRAY_POINTER" />
+		<field name="GL_COLOR_ARRAY_SIZE" />
+		<field name="GL_COLOR_ARRAY_STRIDE" />
+		<field name="GL_COLOR_ARRAY_TYPE" />
+		<field name="GL_COLOR_CLEAR_VALUE" />
+		<field name="GL_COLOR_WRITEMASK" />
+		<field name="GL_COMBINE" />
+		<field name="GL_COMBINE_ALPHA" />
+		<field name="GL_COMBINE_RGB" />
+		<field name="GL_CONSTANT" />
+		<field name="GL_COORD_REPLACE_OES" />
+		<field name="GL_CULL_FACE_MODE" />
+		<field name="GL_CURRENT_COLOR" />
+		<field name="GL_CURRENT_NORMAL" />
+		<field name="GL_CURRENT_TEXTURE_COORDS" />
+		<field name="GL_DEPTH_CLEAR_VALUE" />
+		<field name="GL_DEPTH_FUNC" />
+		<field name="GL_DEPTH_RANGE" />
+		<field name="GL_DEPTH_WRITEMASK" />
+		<field name="GL_DOT3_RGB" />
+		<field name="GL_DOT3_RGBA" />
+		<field name="GL_DYNAMIC_DRAW" />
+		<field name="GL_ELEMENT_ARRAY_BUFFER" />
+		<field name="GL_ELEMENT_ARRAY_BUFFER_BINDING" />
+		<field name="GL_FRONT_FACE" />
+		<field name="GL_GENERATE_MIPMAP" />
+		<field name="GL_GENERATE_MIPMAP_HINT" />
+		<field name="GL_INTERPOLATE" />
+		<field name="GL_LINE_WIDTH" />
+		<field name="GL_LOGIC_OP_MODE" />
+		<field name="GL_MATRIX_MODE" />
+		<field name="GL_MAX_CLIP_PLANES" />
+		<field name="GL_MODELVIEW_MATRIX" />
+		<field name="GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_MODELVIEW_STACK_DEPTH" />
+		<field name="GL_NORMAL_ARRAY_BUFFER_BINDING" />
+		<field name="GL_NORMAL_ARRAY_POINTER" />
+		<field name="GL_NORMAL_ARRAY_STRIDE" />
+		<field name="GL_NORMAL_ARRAY_TYPE" />
+		<field name="GL_OPERAND0_ALPHA" />
+		<field name="GL_OPERAND0_RGB" />
+		<field name="GL_OPERAND1_ALPHA" />
+		<field name="GL_OPERAND1_RGB" />
+		<field name="GL_OPERAND2_ALPHA" />
+		<field name="GL_OPERAND2_RGB" />
+		<field name="GL_POINT_DISTANCE_ATTENUATION" />
+		<field name="GL_POINT_FADE_THRESHOLD_SIZE" />
+		<field name="GL_POINT_SIZE" />
+		<field name="GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_POINTER_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_STRIDE_OES" />
+		<field name="GL_POINT_SIZE_ARRAY_TYPE_OES" />
+		<field name="GL_POINT_SIZE_MAX" />
+		<field name="GL_POINT_SIZE_MIN" />
+		<field name="GL_POINT_SPRITE_OES" />
+		<field name="GL_POLYGON_OFFSET_FACTOR" />
+		<field name="GL_POLYGON_OFFSET_UNITS" />
+		<field name="GL_PREVIOUS" />
+		<field name="GL_PRIMARY_COLOR" />
+		<field name="GL_PROJECTION_MATRIX" />
+		<field name="GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_PROJECTION_STACK_DEPTH" />
+		<field name="GL_RGB_SCALE" />
+		<field name="GL_SAMPLES" />
+		<field name="GL_SAMPLE_BUFFERS" />
+		<field name="GL_SAMPLE_COVERAGE_INVERT" />
+		<field name="GL_SAMPLE_COVERAGE_VALUE" />
+		<field name="GL_SCISSOR_BOX" />
+		<field name="GL_SHADE_MODEL" />
+		<field name="GL_SRC0_ALPHA" />
+		<field name="GL_SRC0_RGB" />
+		<field name="GL_SRC1_ALPHA" />
+		<field name="GL_SRC1_RGB" />
+		<field name="GL_SRC2_ALPHA" />
+		<field name="GL_SRC2_RGB" />
+		<field name="GL_STATIC_DRAW" />
+		<field name="GL_STENCIL_CLEAR_VALUE" />
+		<field name="GL_STENCIL_FAIL" />
+		<field name="GL_STENCIL_FUNC" />
+		<field name="GL_STENCIL_PASS_DEPTH_FAIL" />
+		<field name="GL_STENCIL_PASS_DEPTH_PASS" />
+		<field name="GL_STENCIL_REF" />
+		<field name="GL_STENCIL_VALUE_MASK" />
+		<field name="GL_STENCIL_WRITEMASK" />
+		<field name="GL_SUBTRACT" />
+		<field name="GL_TEXTURE_BINDING_2D" />
+		<field name="GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING" />
+		<field name="GL_TEXTURE_COORD_ARRAY_POINTER" />
+		<field name="GL_TEXTURE_COORD_ARRAY_SIZE" />
+		<field name="GL_TEXTURE_COORD_ARRAY_STRIDE" />
+		<field name="GL_TEXTURE_COORD_ARRAY_TYPE" />
+		<field name="GL_TEXTURE_MATRIX" />
+		<field name="GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" />
+		<field name="GL_TEXTURE_STACK_DEPTH" />
+		<field name="GL_VERTEX_ARRAY_BUFFER_BINDING" />
+		<field name="GL_VERTEX_ARRAY_POINTER" />
+		<field name="GL_VERTEX_ARRAY_SIZE" />
+		<field name="GL_VERTEX_ARRAY_STRIDE" />
+		<field name="GL_VERTEX_ARRAY_TYPE" />
+		<field name="GL_VIEWPORT" />
+		<field name="GL_WRITE_ONLY" />
+	</class>
+	<class name="javax/microedition/khronos/opengles/GL11Ext" since="1">
+		<implements name="javax/microedition/khronos/opengles/GL" />
+		<method name="glCurrentPaletteMatrixOES(I)V" />
+		<method name="glDrawTexfOES(FFFFF)V" />
+		<method name="glDrawTexfvOES(Ljava/nio/FloatBuffer;)V" />
+		<method name="glDrawTexfvOES([FI)V" />
+		<method name="glDrawTexiOES(IIIII)V" />
+		<method name="glDrawTexivOES(Ljava/nio/IntBuffer;)V" />
+		<method name="glDrawTexivOES([II)V" />
+		<method name="glDrawTexsOES(SSSSS)V" />
+		<method name="glDrawTexsvOES(Ljava/nio/ShortBuffer;)V" />
+		<method name="glDrawTexsvOES([SI)V" />
+		<method name="glDrawTexxOES(IIIII)V" />
+		<method name="glDrawTexxvOES(Ljava/nio/IntBuffer;)V" />
+		<method name="glDrawTexxvOES([II)V" />
+		<method name="glEnable(I)V" />
+		<method name="glEnableClientState(I)V" />
+		<method name="glLoadPaletteFromModelViewMatrixOES()V" />
+		<method name="glMatrixIndexPointerOES(IIII)V" />
+		<method name="glMatrixIndexPointerOES(IIILjava/nio/Buffer;)V" />
+		<method name="glTexParameterfv(II[FI)V" />
+		<method name="glWeightPointerOES(IIII)V" />
+		<method name="glWeightPointerOES(IIILjava/nio/Buffer;)V" />
+		<field name="GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_POINTER_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_SIZE_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_STRIDE_OES" />
+		<field name="GL_MATRIX_INDEX_ARRAY_TYPE_OES" />
+		<field name="GL_MATRIX_PALETTE_OES" />
+		<field name="GL_MAX_PALETTE_MATRICES_OES" />
+		<field name="GL_MAX_VERTEX_UNITS_OES" />
+		<field name="GL_TEXTURE_CROP_RECT_OES" />
+		<field name="GL_WEIGHT_ARRAY_BUFFER_BINDING_OES" />
+		<field name="GL_WEIGHT_ARRAY_OES" />
+		<field name="GL_WEIGHT_ARRAY_POINTER_OES" />
+		<field name="GL_WEIGHT_ARRAY_SIZE_OES" />
+		<field name="GL_WEIGHT_ARRAY_STRIDE_OES" />
+		<field name="GL_WEIGHT_ARRAY_TYPE_OES" />
+	</class>
+	<class name="javax/microedition/khronos/opengles/GL11ExtensionPack" since="1">
+		<implements name="javax/microedition/khronos/opengles/GL" />
+		<method name="glBindFramebufferOES(II)V" />
+		<method name="glBindRenderbufferOES(II)V" />
+		<method name="glBindTexture(II)V" />
+		<method name="glBlendEquation(I)V" />
+		<method name="glBlendEquationSeparate(II)V" />
+		<method name="glBlendFuncSeparate(IIII)V" />
+		<method name="glCheckFramebufferStatusOES(I)I" />
+		<method name="glCompressedTexImage2D(IIIIIIILjava/nio/Buffer;)V" />
+		<method name="glCopyTexImage2D(IIIIIIII)V" />
+		<method name="glDeleteFramebuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteFramebuffersOES(I[II)V" />
+		<method name="glDeleteRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glDeleteRenderbuffersOES(I[II)V" />
+		<method name="glEnable(I)V" />
+		<method name="glFramebufferRenderbufferOES(IIII)V" />
+		<method name="glFramebufferTexture2DOES(IIIII)V" />
+		<method name="glGenFramebuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenFramebuffersOES(I[II)V" />
+		<method name="glGenRenderbuffersOES(ILjava/nio/IntBuffer;)V" />
+		<method name="glGenRenderbuffersOES(I[II)V" />
+		<method name="glGenerateMipmapOES(I)V" />
+		<method name="glGetFramebufferAttachmentParameterivOES(IIILjava/nio/IntBuffer;)V" />
+		<method name="glGetFramebufferAttachmentParameterivOES(III[II)V" />
+		<method name="glGetIntegerv(ILjava/nio/IntBuffer;)V" />
+		<method name="glGetIntegerv(I[II)V" />
+		<method name="glGetRenderbufferParameterivOES(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetRenderbufferParameterivOES(II[II)V" />
+		<method name="glGetTexGenfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glGetTexGenfv(II[FI)V" />
+		<method name="glGetTexGeniv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexGeniv(II[II)V" />
+		<method name="glGetTexGenxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glGetTexGenxv(II[II)V" />
+		<method name="glIsFramebufferOES(I)Z" />
+		<method name="glIsRenderbufferOES(I)Z" />
+		<method name="glRenderbufferStorageOES(IIII)V" />
+		<method name="glStencilOp(III)V" />
+		<method name="glTexEnvf(IIF)V" />
+		<method name="glTexEnvfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexEnvfv(II[FI)V" />
+		<method name="glTexEnvx(III)V" />
+		<method name="glTexEnvxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexEnvxv(II[II)V" />
+		<method name="glTexGenf(IIF)V" />
+		<method name="glTexGenfv(IILjava/nio/FloatBuffer;)V" />
+		<method name="glTexGenfv(II[FI)V" />
+		<method name="glTexGeni(III)V" />
+		<method name="glTexGeniv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexGeniv(II[II)V" />
+		<method name="glTexGenx(III)V" />
+		<method name="glTexGenxv(IILjava/nio/IntBuffer;)V" />
+		<method name="glTexGenxv(II[II)V" />
+		<method name="glTexParameterf(IIF)V" />
+		<field name="GL_BLEND_DST_ALPHA" />
+		<field name="GL_BLEND_DST_RGB" />
+		<field name="GL_BLEND_EQUATION" />
+		<field name="GL_BLEND_EQUATION_ALPHA" />
+		<field name="GL_BLEND_EQUATION_RGB" />
+		<field name="GL_BLEND_SRC_ALPHA" />
+		<field name="GL_BLEND_SRC_RGB" />
+		<field name="GL_COLOR_ATTACHMENT0_OES" />
+		<field name="GL_COLOR_ATTACHMENT10_OES" />
+		<field name="GL_COLOR_ATTACHMENT11_OES" />
+		<field name="GL_COLOR_ATTACHMENT12_OES" />
+		<field name="GL_COLOR_ATTACHMENT13_OES" />
+		<field name="GL_COLOR_ATTACHMENT14_OES" />
+		<field name="GL_COLOR_ATTACHMENT15_OES" />
+		<field name="GL_COLOR_ATTACHMENT1_OES" />
+		<field name="GL_COLOR_ATTACHMENT2_OES" />
+		<field name="GL_COLOR_ATTACHMENT3_OES" />
+		<field name="GL_COLOR_ATTACHMENT4_OES" />
+		<field name="GL_COLOR_ATTACHMENT5_OES" />
+		<field name="GL_COLOR_ATTACHMENT6_OES" />
+		<field name="GL_COLOR_ATTACHMENT7_OES" />
+		<field name="GL_COLOR_ATTACHMENT8_OES" />
+		<field name="GL_COLOR_ATTACHMENT9_OES" />
+		<field name="GL_DECR_WRAP" />
+		<field name="GL_DEPTH_ATTACHMENT_OES" />
+		<field name="GL_DEPTH_COMPONENT" />
+		<field name="GL_DEPTH_COMPONENT16" />
+		<field name="GL_DEPTH_COMPONENT24" />
+		<field name="GL_DEPTH_COMPONENT32" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" />
+		<field name="GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" />
+		<field name="GL_FRAMEBUFFER_BINDING_OES" />
+		<field name="GL_FRAMEBUFFER_COMPLETE_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" />
+		<field name="GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES" />
+		<field name="GL_FRAMEBUFFER_OES" />
+		<field name="GL_FRAMEBUFFER_UNSUPPORTED_OES" />
+		<field name="GL_FUNC_ADD" />
+		<field name="GL_FUNC_REVERSE_SUBTRACT" />
+		<field name="GL_FUNC_SUBTRACT" />
+		<field name="GL_INCR_WRAP" />
+		<field name="GL_INVALID_FRAMEBUFFER_OPERATION_OES" />
+		<field name="GL_MAX_COLOR_ATTACHMENTS_OES" />
+		<field name="GL_MAX_CUBE_MAP_TEXTURE_SIZE" />
+		<field name="GL_MAX_RENDERBUFFER_SIZE_OES" />
+		<field name="GL_MIRRORED_REPEAT" />
+		<field name="GL_NORMAL_MAP" />
+		<field name="GL_REFLECTION_MAP" />
+		<field name="GL_RENDERBUFFER_ALPHA_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_BINDING_OES" />
+		<field name="GL_RENDERBUFFER_BLUE_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_DEPTH_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_GREEN_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_HEIGHT_OES" />
+		<field name="GL_RENDERBUFFER_INTERNAL_FORMAT_OES" />
+		<field name="GL_RENDERBUFFER_OES" />
+		<field name="GL_RENDERBUFFER_RED_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_STENCIL_SIZE_OES" />
+		<field name="GL_RENDERBUFFER_WIDTH_OES" />
+		<field name="GL_RGB565_OES" />
+		<field name="GL_RGB5_A1" />
+		<field name="GL_RGB8" />
+		<field name="GL_RGBA4" />
+		<field name="GL_RGBA8" />
+		<field name="GL_STENCIL_ATTACHMENT_OES" />
+		<field name="GL_STENCIL_INDEX" />
+		<field name="GL_STENCIL_INDEX1_OES" />
+		<field name="GL_STENCIL_INDEX4_OES" />
+		<field name="GL_STENCIL_INDEX8_OES" />
+		<field name="GL_STR" />
+		<field name="GL_TEXTURE_BINDING_CUBE_MAP" />
+		<field name="GL_TEXTURE_CUBE_MAP" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_X" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Y" />
+		<field name="GL_TEXTURE_CUBE_MAP_NEGATIVE_Z" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Y" />
+		<field name="GL_TEXTURE_CUBE_MAP_POSITIVE_Z" />
+		<field name="GL_TEXTURE_GEN_MODE" />
+		<field name="GL_TEXTURE_GEN_STR" />
+	</class>
+	<class name="javax/net/ServerSocketFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="createServerSocket()Ljava/net/ServerSocket;" />
+		<method name="createServerSocket(I)Ljava/net/ServerSocket;" />
+		<method name="createServerSocket(II)Ljava/net/ServerSocket;" />
+		<method name="createServerSocket(IILjava/net/InetAddress;)Ljava/net/ServerSocket;" />
+		<method name="getDefault()Ljavax/net/ServerSocketFactory;" />
+	</class>
+	<class name="javax/net/SocketFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="createSocket()Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/lang/String;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/lang/String;ILjava/net/InetAddress;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Ljava/net/Socket;" />
+		<method name="getDefault()Ljavax/net/SocketFactory;" />
+	</class>
+	<class name="javax/net/ssl/CertPathTrustManagerParameters" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="javax/net/ssl/ManagerFactoryParameters" />
+		<method name="&lt;init>(Ljava/security/cert/CertPathParameters;)V" />
+		<method name="getParameters()Ljava/security/cert/CertPathParameters;" />
+	</class>
+	<class name="javax/net/ssl/HandshakeCompletedEvent" since="1">
+		<extends name="java/util/EventObject" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljavax/net/ssl/SSLSocket;Ljavax/net/ssl/SSLSession;)V" />
+		<method name="getCipherSuite()Ljava/lang/String;" />
+		<method name="getLocalCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getLocalPrincipal()Ljava/security/Principal;" />
+		<method name="getPeerCertificateChain()[Ljavax/security/cert/X509Certificate;" />
+		<method name="getPeerCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getPeerPrincipal()Ljava/security/Principal;" />
+		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
+		<method name="getSocket()Ljavax/net/ssl/SSLSocket;" />
+	</class>
+	<class name="javax/net/ssl/HandshakeCompletedListener" since="1">
+		<implements name="java/util/EventListener" />
+		<method name="handshakeCompleted(Ljavax/net/ssl/HandshakeCompletedEvent;)V" />
+	</class>
+	<class name="javax/net/ssl/HostnameVerifier" since="1">
+		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z" />
+	</class>
+	<class name="javax/net/ssl/HttpsURLConnection" since="1">
+		<extends name="java/net/HttpURLConnection" />
+		<method name="&lt;init>(Ljava/net/URL;)V" />
+		<method name="getCipherSuite()Ljava/lang/String;" />
+		<method name="getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;" />
+		<method name="getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
+		<method name="getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;" />
+		<method name="getLocalCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getLocalPrincipal()Ljava/security/Principal;" />
+		<method name="getPeerPrincipal()Ljava/security/Principal;" />
+		<method name="getSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
+		<method name="getServerCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="setDefaultHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V" />
+		<method name="setDefaultSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V" />
+		<method name="setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V" />
+		<method name="setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V" />
+		<field name="hostnameVerifier" />
+	</class>
+	<class name="javax/net/ssl/KeyManager" since="1">
+	</class>
+	<class name="javax/net/ssl/KeyManagerFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/net/ssl/KeyManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getDefaultAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/KeyManagerFactory;" />
+		<method name="getKeyManagers()[Ljavax/net/ssl/KeyManager;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="init(Ljava/security/KeyStore;[C)V" />
+		<method name="init(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
+	</class>
+	<class name="javax/net/ssl/KeyManagerFactorySpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGetKeyManagers()[Ljavax/net/ssl/KeyManager;" />
+		<method name="engineInit(Ljava/security/KeyStore;[C)V" />
+		<method name="engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
+	</class>
+	<class name="javax/net/ssl/KeyStoreBuilderParameters" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="javax/net/ssl/ManagerFactoryParameters" />
+		<method name="&lt;init>(Ljava/security/KeyStore$Builder;)V" />
+		<method name="&lt;init>(Ljava/util/List;)V" />
+		<method name="getParameters()Ljava/util/List;" />
+	</class>
+	<class name="javax/net/ssl/ManagerFactoryParameters" since="1">
+	</class>
+	<class name="javax/net/ssl/SSLContext" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/net/ssl/SSLContextSpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="createSSLEngine()Ljavax/net/ssl/SSLEngine;" />
+		<method name="createSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;" />
+		<method name="getClientSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
+		<method name="getDefault()Ljavax/net/ssl/SSLContext;" since="9" />
+		<method name="getDefaultSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/SSLContext;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/SSLContext;" />
+		<method name="getProtocol()Ljava/lang/String;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getServerSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
+		<method name="getServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory;" />
+		<method name="getSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
+		<method name="getSupportedSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
+		<method name="init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V" />
+		<method name="setDefault(Ljavax/net/ssl/SSLContext;)V" since="9" />
+	</class>
+	<class name="javax/net/ssl/SSLContextSpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineCreateSSLEngine()Ljavax/net/ssl/SSLEngine;" />
+		<method name="engineCreateSSLEngine(Ljava/lang/String;I)Ljavax/net/ssl/SSLEngine;" />
+		<method name="engineGetClientSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
+		<method name="engineGetDefaultSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
+		<method name="engineGetServerSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
+		<method name="engineGetServerSocketFactory()Ljavax/net/ssl/SSLServerSocketFactory;" />
+		<method name="engineGetSocketFactory()Ljavax/net/ssl/SSLSocketFactory;" />
+		<method name="engineGetSupportedSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
+		<method name="engineInit([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLEngine" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="beginHandshake()V" />
+		<method name="closeInbound()V" />
+		<method name="closeOutbound()V" />
+		<method name="getDelegatedTask()Ljava/lang/Runnable;" />
+		<method name="getEnableSessionCreation()Z" />
+		<method name="getEnabledCipherSuites()[Ljava/lang/String;" />
+		<method name="getEnabledProtocols()[Ljava/lang/String;" />
+		<method name="getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
+		<method name="getNeedClientAuth()Z" />
+		<method name="getPeerHost()Ljava/lang/String;" />
+		<method name="getPeerPort()I" />
+		<method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
+		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
+		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
+		<method name="getSupportedProtocols()[Ljava/lang/String;" />
+		<method name="getUseClientMode()Z" />
+		<method name="getWantClientAuth()Z" />
+		<method name="isInboundDone()Z" />
+		<method name="isOutboundDone()Z" />
+		<method name="setEnableSessionCreation(Z)V" />
+		<method name="setEnabledCipherSuites([Ljava/lang/String;)V" />
+		<method name="setEnabledProtocols([Ljava/lang/String;)V" />
+		<method name="setNeedClientAuth(Z)V" />
+		<method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="9" />
+		<method name="setUseClientMode(Z)V" />
+		<method name="setWantClientAuth(Z)V" />
+		<method name="unwrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
+		<method name="unwrap(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
+		<method name="unwrap(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;II)Ljavax/net/ssl/SSLEngineResult;" />
+		<method name="wrap(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
+		<method name="wrap([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
+		<method name="wrap([Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;" />
+	</class>
+	<class name="javax/net/ssl/SSLEngineResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/net/ssl/SSLEngineResult$Status;Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;II)V" />
+		<method name="bytesConsumed()I" />
+		<method name="bytesProduced()I" />
+		<method name="getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
+		<method name="getStatus()Ljavax/net/ssl/SSLEngineResult$Status;" />
+	</class>
+	<class name="javax/net/ssl/SSLEngineResult$HandshakeStatus" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
+		<method name="values()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;" />
+		<field name="FINISHED" />
+		<field name="NEED_TASK" />
+		<field name="NEED_UNWRAP" />
+		<field name="NEED_WRAP" />
+		<field name="NOT_HANDSHAKING" />
+	</class>
+	<class name="javax/net/ssl/SSLEngineResult$Status" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Ljavax/net/ssl/SSLEngineResult$Status;" />
+		<method name="values()[Ljavax/net/ssl/SSLEngineResult$Status;" />
+		<field name="BUFFER_OVERFLOW" />
+		<field name="BUFFER_UNDERFLOW" />
+		<field name="CLOSED" />
+		<field name="OK" />
+	</class>
+	<class name="javax/net/ssl/SSLException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLHandshakeException" since="1">
+		<extends name="javax/net/ssl/SSLException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLKeyException" since="1">
+		<extends name="javax/net/ssl/SSLException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLParameters" since="9">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([Ljava/lang/String;)V" />
+		<method name="&lt;init>([Ljava/lang/String;[Ljava/lang/String;)V" />
+		<method name="getCipherSuites()[Ljava/lang/String;" />
+		<method name="getNeedClientAuth()Z" />
+		<method name="getProtocols()[Ljava/lang/String;" />
+		<method name="getWantClientAuth()Z" />
+		<method name="setCipherSuites([Ljava/lang/String;)V" />
+		<method name="setNeedClientAuth(Z)V" />
+		<method name="setProtocols([Ljava/lang/String;)V" />
+		<method name="setWantClientAuth(Z)V" />
+	</class>
+	<class name="javax/net/ssl/SSLPeerUnverifiedException" since="1">
+		<extends name="javax/net/ssl/SSLException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLProtocolException" since="1">
+		<extends name="javax/net/ssl/SSLException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLServerSocket" since="1">
+		<extends name="java/net/ServerSocket" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="&lt;init>(II)V" />
+		<method name="&lt;init>(IILjava/net/InetAddress;)V" />
+		<method name="getEnableSessionCreation()Z" />
+		<method name="getEnabledCipherSuites()[Ljava/lang/String;" />
+		<method name="getEnabledProtocols()[Ljava/lang/String;" />
+		<method name="getNeedClientAuth()Z" />
+		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
+		<method name="getSupportedProtocols()[Ljava/lang/String;" />
+		<method name="getUseClientMode()Z" />
+		<method name="getWantClientAuth()Z" />
+		<method name="setEnableSessionCreation(Z)V" />
+		<method name="setEnabledCipherSuites([Ljava/lang/String;)V" />
+		<method name="setEnabledProtocols([Ljava/lang/String;)V" />
+		<method name="setNeedClientAuth(Z)V" />
+		<method name="setUseClientMode(Z)V" />
+		<method name="setWantClientAuth(Z)V" />
+	</class>
+	<class name="javax/net/ssl/SSLServerSocketFactory" since="1">
+		<extends name="javax/net/ServerSocketFactory" />
+		<method name="&lt;init>()V" />
+		<method name="getDefault()Ljavax/net/ServerSocketFactory;" />
+		<method name="getDefaultCipherSuites()[Ljava/lang/String;" />
+		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
+	</class>
+	<class name="javax/net/ssl/SSLSession" since="1">
+		<method name="getApplicationBufferSize()I" />
+		<method name="getCipherSuite()Ljava/lang/String;" />
+		<method name="getCreationTime()J" />
+		<method name="getId()[B" />
+		<method name="getLastAccessedTime()J" />
+		<method name="getLocalCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getLocalPrincipal()Ljava/security/Principal;" />
+		<method name="getPacketBufferSize()I" />
+		<method name="getPeerCertificateChain()[Ljavax/security/cert/X509Certificate;" />
+		<method name="getPeerCertificates()[Ljava/security/cert/Certificate;" />
+		<method name="getPeerHost()Ljava/lang/String;" />
+		<method name="getPeerPort()I" />
+		<method name="getPeerPrincipal()Ljava/security/Principal;" />
+		<method name="getProtocol()Ljava/lang/String;" />
+		<method name="getSessionContext()Ljavax/net/ssl/SSLSessionContext;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getValueNames()[Ljava/lang/String;" />
+		<method name="invalidate()V" />
+		<method name="isValid()Z" />
+		<method name="putValue(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="removeValue(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLSessionBindingEvent" since="1">
+		<extends name="java/util/EventObject" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljavax/net/ssl/SSLSession;Ljava/lang/String;)V" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
+	</class>
+	<class name="javax/net/ssl/SSLSessionBindingListener" since="1">
+		<implements name="java/util/EventListener" />
+		<method name="valueBound(Ljavax/net/ssl/SSLSessionBindingEvent;)V" />
+		<method name="valueUnbound(Ljavax/net/ssl/SSLSessionBindingEvent;)V" />
+	</class>
+	<class name="javax/net/ssl/SSLSessionContext" since="1">
+		<method name="getIds()Ljava/util/Enumeration;" />
+		<method name="getSession([B)Ljavax/net/ssl/SSLSession;" />
+		<method name="getSessionCacheSize()I" />
+		<method name="getSessionTimeout()I" />
+		<method name="setSessionCacheSize(I)V" />
+		<method name="setSessionTimeout(I)V" />
+	</class>
+	<class name="javax/net/ssl/SSLSocket" since="1">
+		<extends name="java/net/Socket" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/net/InetAddress;I)V" />
+		<method name="&lt;init>(Ljava/net/InetAddress;I)V" />
+		<method name="&lt;init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I)V" />
+		<method name="addHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V" />
+		<method name="getEnableSessionCreation()Z" />
+		<method name="getEnabledCipherSuites()[Ljava/lang/String;" />
+		<method name="getEnabledProtocols()[Ljava/lang/String;" />
+		<method name="getNeedClientAuth()Z" />
+		<method name="getSSLParameters()Ljavax/net/ssl/SSLParameters;" since="9" />
+		<method name="getSession()Ljavax/net/ssl/SSLSession;" />
+		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
+		<method name="getSupportedProtocols()[Ljava/lang/String;" />
+		<method name="getUseClientMode()Z" />
+		<method name="getWantClientAuth()Z" />
+		<method name="removeHandshakeCompletedListener(Ljavax/net/ssl/HandshakeCompletedListener;)V" />
+		<method name="setEnableSessionCreation(Z)V" />
+		<method name="setEnabledCipherSuites([Ljava/lang/String;)V" />
+		<method name="setEnabledProtocols([Ljava/lang/String;)V" />
+		<method name="setNeedClientAuth(Z)V" />
+		<method name="setSSLParameters(Ljavax/net/ssl/SSLParameters;)V" since="9" />
+		<method name="setUseClientMode(Z)V" />
+		<method name="setWantClientAuth(Z)V" />
+		<method name="startHandshake()V" />
+	</class>
+	<class name="javax/net/ssl/SSLSocketFactory" since="1">
+		<extends name="javax/net/SocketFactory" />
+		<method name="&lt;init>()V" />
+		<method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
+		<method name="getDefault()Ljavax/net/SocketFactory;" />
+		<method name="getDefaultCipherSuites()[Ljava/lang/String;" />
+		<method name="getSupportedCipherSuites()[Ljava/lang/String;" />
+	</class>
+	<class name="javax/net/ssl/TrustManager" since="1">
+	</class>
+	<class name="javax/net/ssl/TrustManagerFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljavax/net/ssl/TrustManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V" />
+		<method name="getAlgorithm()Ljava/lang/String;" />
+		<method name="getDefaultAlgorithm()Ljava/lang/String;" />
+		<method name="getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;" />
+		<method name="getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/TrustManagerFactory;" />
+		<method name="getProvider()Ljava/security/Provider;" />
+		<method name="getTrustManagers()[Ljavax/net/ssl/TrustManager;" />
+		<method name="init(Ljava/security/KeyStore;)V" />
+		<method name="init(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
+	</class>
+	<class name="javax/net/ssl/TrustManagerFactorySpi" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="engineGetTrustManagers()[Ljavax/net/ssl/TrustManager;" />
+		<method name="engineInit(Ljava/security/KeyStore;)V" />
+		<method name="engineInit(Ljavax/net/ssl/ManagerFactoryParameters;)V" />
+	</class>
+	<class name="javax/net/ssl/X509ExtendedKeyManager" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="javax/net/ssl/X509KeyManager" />
+		<method name="&lt;init>()V" />
+		<method name="chooseEngineClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;" />
+		<method name="chooseEngineServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;" />
+	</class>
+	<class name="javax/net/ssl/X509KeyManager" since="1">
+		<implements name="javax/net/ssl/KeyManager" />
+		<method name="chooseClientAlias([Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;" />
+		<method name="chooseServerAlias(Ljava/lang/String;[Ljava/security/Principal;Ljava/net/Socket;)Ljava/lang/String;" />
+		<method name="getCertificateChain(Ljava/lang/String;)[Ljava/security/cert/X509Certificate;" />
+		<method name="getClientAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;" />
+		<method name="getPrivateKey(Ljava/lang/String;)Ljava/security/PrivateKey;" />
+		<method name="getServerAliases(Ljava/lang/String;[Ljava/security/Principal;)[Ljava/lang/String;" />
+	</class>
+	<class name="javax/net/ssl/X509TrustManager" since="1">
+		<implements name="javax/net/ssl/TrustManager" />
+		<method name="checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V" />
+		<method name="checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V" />
+		<method name="getAcceptedIssuers()[Ljava/security/cert/X509Certificate;" />
+	</class>
+	<class name="javax/security/auth/AuthPermission" since="1">
+		<extends name="java/security/BasicPermission" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/auth/DestroyFailedException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/auth/Destroyable" since="1">
+		<method name="destroy()V" />
+		<method name="isDestroyed()Z" />
+	</class>
+	<class name="javax/security/auth/PrivateCredentialPermission" since="1">
+		<extends name="java/security/Permission" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getActions()Ljava/lang/String;" />
+		<method name="getCredentialClass()Ljava/lang/String;" />
+		<method name="getPrincipals()[[Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="implies(Ljava/security/Permission;)Z" />
+	</class>
+	<class name="javax/security/auth/Subject" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(ZLjava/util/Set;Ljava/util/Set;Ljava/util/Set;)V" />
+		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;)LT;" since="9" />
+		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;" />
+		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)LT;" since="9" />
+		<method name="doAs(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;" />
+		<method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)LT;" since="9" />
+		<method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;" />
+		<method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)LT;" since="9" />
+		<method name="doAsPrivileged(Ljavax/security/auth/Subject;Ljava/security/PrivilegedExceptionAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;" />
+		<method name="getPrincipals()Ljava/util/Set;" />
+		<method name="getPrincipals(Ljava/lang/Class;)Ljava/util/Set;" />
+		<method name="getPrivateCredentials()Ljava/util/Set;" />
+		<method name="getPrivateCredentials(Ljava/lang/Class;)Ljava/util/Set;" />
+		<method name="getPublicCredentials()Ljava/util/Set;" />
+		<method name="getPublicCredentials(Ljava/lang/Class;)Ljava/util/Set;" />
+		<method name="getSubject(Ljava/security/AccessControlContext;)Ljavax/security/auth/Subject;" />
+		<method name="isReadOnly()Z" />
+		<method name="setReadOnly()V" />
+	</class>
+	<class name="javax/security/auth/SubjectDomainCombiner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/DomainCombiner" />
+		<method name="&lt;init>(Ljavax/security/auth/Subject;)V" />
+		<method name="combine([Ljava/security/ProtectionDomain;[Ljava/security/ProtectionDomain;)[Ljava/security/ProtectionDomain;" />
+		<method name="getSubject()Ljavax/security/auth/Subject;" />
+	</class>
+	<class name="javax/security/auth/callback/Callback" since="1">
+	</class>
+	<class name="javax/security/auth/callback/CallbackHandler" since="1">
+		<method name="handle([Ljavax/security/auth/callback/Callback;)V" />
+	</class>
+	<class name="javax/security/auth/callback/PasswordCallback" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="javax/security/auth/callback/Callback" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;Z)V" />
+		<method name="clearPassword()V" />
+		<method name="getPassword()[C" />
+		<method name="getPrompt()Ljava/lang/String;" />
+		<method name="isEchoOn()Z" />
+		<method name="setPassword([C)V" />
+	</class>
+	<class name="javax/security/auth/callback/UnsupportedCallbackException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljavax/security/auth/callback/Callback;)V" />
+		<method name="&lt;init>(Ljavax/security/auth/callback/Callback;Ljava/lang/String;)V" />
+		<method name="getCallback()Ljavax/security/auth/callback/Callback;" />
+	</class>
+	<class name="javax/security/auth/login/LoginException" since="1">
+		<extends name="java/security/GeneralSecurityException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/auth/x500/X500Principal" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/Principal" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/util/Map;)V" since="9" />
+		<method name="&lt;init>([B)V" />
+		<method name="getEncoded()[B" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getName(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getName(Ljava/lang/String;Ljava/util/Map;)Ljava/lang/String;" since="9" />
+		<field name="CANONICAL" />
+		<field name="RFC1779" />
+		<field name="RFC2253" />
+	</class>
+	<class name="javax/security/cert/Certificate" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getEncoded()[B" />
+		<method name="getPublicKey()Ljava/security/PublicKey;" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="verify(Ljava/security/PublicKey;)V" />
+		<method name="verify(Ljava/security/PublicKey;Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/cert/CertificateEncodingException" since="1">
+		<extends name="javax/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/cert/CertificateException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/cert/CertificateExpiredException" since="1">
+		<extends name="javax/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/cert/CertificateNotYetValidException" since="1">
+		<extends name="javax/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/cert/CertificateParsingException" since="1">
+		<extends name="javax/security/cert/CertificateException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/security/cert/X509Certificate" since="1">
+		<extends name="javax/security/cert/Certificate" />
+		<method name="&lt;init>()V" />
+		<method name="checkValidity()V" />
+		<method name="checkValidity(Ljava/util/Date;)V" />
+		<method name="getInstance(Ljava/io/InputStream;)Ljavax/security/cert/X509Certificate;" />
+		<method name="getInstance([B)Ljavax/security/cert/X509Certificate;" />
+		<method name="getIssuerDN()Ljava/security/Principal;" />
+		<method name="getNotAfter()Ljava/util/Date;" />
+		<method name="getNotBefore()Ljava/util/Date;" />
+		<method name="getSerialNumber()Ljava/math/BigInteger;" />
+		<method name="getSigAlgName()Ljava/lang/String;" />
+		<method name="getSigAlgOID()Ljava/lang/String;" />
+		<method name="getSigAlgParams()[B" />
+		<method name="getSubjectDN()Ljava/security/Principal;" />
+		<method name="getVersion()I" />
+	</class>
+	<class name="javax/sql/CommonDataSource" since="9">
+		<method name="getLogWriter()Ljava/io/PrintWriter;" />
+		<method name="getLoginTimeout()I" />
+		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
+		<method name="setLoginTimeout(I)V" />
+	</class>
+	<class name="javax/sql/ConnectionEvent" since="1">
+		<extends name="java/util/EventObject" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljavax/sql/PooledConnection;)V" />
+		<method name="&lt;init>(Ljavax/sql/PooledConnection;Ljava/sql/SQLException;)V" />
+		<method name="getSQLException()Ljava/sql/SQLException;" />
+	</class>
+	<class name="javax/sql/ConnectionEventListener" since="1">
+		<implements name="java/util/EventListener" />
+		<method name="connectionClosed(Ljavax/sql/ConnectionEvent;)V" />
+		<method name="connectionErrorOccurred(Ljavax/sql/ConnectionEvent;)V" />
+	</class>
+	<class name="javax/sql/ConnectionPoolDataSource" since="1">
+		<implements name="javax/sql/CommonDataSource" since="9" />
+		<method name="getLogWriter()Ljava/io/PrintWriter;" />
+		<method name="getLoginTimeout()I" />
+		<method name="getPooledConnection()Ljavax/sql/PooledConnection;" />
+		<method name="getPooledConnection(Ljava/lang/String;Ljava/lang/String;)Ljavax/sql/PooledConnection;" />
+		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
+		<method name="setLoginTimeout(I)V" />
+	</class>
+	<class name="javax/sql/DataSource" since="1">
+		<implements name="javax/sql/CommonDataSource" since="9" />
+		<implements name="java/sql/Wrapper" since="9" />
+		<method name="getConnection()Ljava/sql/Connection;" />
+		<method name="getConnection(Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;" />
+		<method name="getLogWriter()Ljava/io/PrintWriter;" />
+		<method name="getLoginTimeout()I" />
+		<method name="setLogWriter(Ljava/io/PrintWriter;)V" />
+		<method name="setLoginTimeout(I)V" />
+	</class>
+	<class name="javax/sql/PooledConnection" since="1">
+		<method name="addConnectionEventListener(Ljavax/sql/ConnectionEventListener;)V" />
+		<method name="addStatementEventListener(Ljavax/sql/StatementEventListener;)V" since="9" />
+		<method name="close()V" />
+		<method name="getConnection()Ljava/sql/Connection;" />
+		<method name="removeConnectionEventListener(Ljavax/sql/ConnectionEventListener;)V" />
+		<method name="removeStatementEventListener(Ljavax/sql/StatementEventListener;)V" since="9" />
+	</class>
+	<class name="javax/sql/RowSet" since="1">
+		<implements name="java/sql/ResultSet" />
+		<method name="addRowSetListener(Ljavax/sql/RowSetListener;)V" />
+		<method name="clearParameters()V" />
+		<method name="execute()V" />
+		<method name="getCommand()Ljava/lang/String;" />
+		<method name="getDataSourceName()Ljava/lang/String;" />
+		<method name="getEscapeProcessing()Z" />
+		<method name="getMaxFieldSize()I" />
+		<method name="getMaxRows()I" />
+		<method name="getPassword()Ljava/lang/String;" />
+		<method name="getQueryTimeout()I" />
+		<method name="getTransactionIsolation()I" />
+		<method name="getTypeMap()Ljava/util/Map;" />
+		<method name="getUrl()Ljava/lang/String;" />
+		<method name="getUsername()Ljava/lang/String;" />
+		<method name="isReadOnly()Z" />
+		<method name="removeRowSetListener(Ljavax/sql/RowSetListener;)V" />
+		<method name="setArray(ILjava/sql/Array;)V" />
+		<method name="setAsciiStream(ILjava/io/InputStream;)V" since="9" />
+		<method name="setAsciiStream(ILjava/io/InputStream;I)V" />
+		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="setAsciiStream(Ljava/lang/String;Ljava/io/InputStream;I)V" since="9" />
+		<method name="setBigDecimal(ILjava/math/BigDecimal;)V" />
+		<method name="setBigDecimal(Ljava/lang/String;Ljava/math/BigDecimal;)V" since="9" />
+		<method name="setBinaryStream(ILjava/io/InputStream;)V" since="9" />
+		<method name="setBinaryStream(ILjava/io/InputStream;I)V" />
+		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="setBinaryStream(Ljava/lang/String;Ljava/io/InputStream;I)V" since="9" />
+		<method name="setBlob(ILjava/io/InputStream;)V" since="9" />
+		<method name="setBlob(ILjava/io/InputStream;J)V" since="9" />
+		<method name="setBlob(ILjava/sql/Blob;)V" />
+		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;)V" since="9" />
+		<method name="setBlob(Ljava/lang/String;Ljava/io/InputStream;J)V" since="9" />
+		<method name="setBlob(Ljava/lang/String;Ljava/sql/Blob;)V" since="9" />
+		<method name="setBoolean(IZ)V" />
+		<method name="setBoolean(Ljava/lang/String;Z)V" since="9" />
+		<method name="setByte(IB)V" />
+		<method name="setByte(Ljava/lang/String;B)V" since="9" />
+		<method name="setBytes(I[B)V" />
+		<method name="setBytes(Ljava/lang/String;[B)V" since="9" />
+		<method name="setCharacterStream(ILjava/io/Reader;)V" since="9" />
+		<method name="setCharacterStream(ILjava/io/Reader;I)V" />
+		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setCharacterStream(Ljava/lang/String;Ljava/io/Reader;I)V" since="9" />
+		<method name="setClob(ILjava/io/Reader;)V" since="9" />
+		<method name="setClob(ILjava/io/Reader;J)V" since="9" />
+		<method name="setClob(ILjava/sql/Clob;)V" />
+		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setClob(Ljava/lang/String;Ljava/sql/Clob;)V" since="9" />
+		<method name="setCommand(Ljava/lang/String;)V" />
+		<method name="setConcurrency(I)V" />
+		<method name="setDataSourceName(Ljava/lang/String;)V" />
+		<method name="setDate(ILjava/sql/Date;)V" />
+		<method name="setDate(ILjava/sql/Date;Ljava/util/Calendar;)V" />
+		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;)V" since="9" />
+		<method name="setDate(Ljava/lang/String;Ljava/sql/Date;Ljava/util/Calendar;)V" since="9" />
+		<method name="setDouble(ID)V" />
+		<method name="setDouble(Ljava/lang/String;D)V" since="9" />
+		<method name="setEscapeProcessing(Z)V" />
+		<method name="setFloat(IF)V" />
+		<method name="setFloat(Ljava/lang/String;F)V" since="9" />
+		<method name="setInt(II)V" />
+		<method name="setInt(Ljava/lang/String;I)V" since="9" />
+		<method name="setLong(IJ)V" />
+		<method name="setLong(Ljava/lang/String;J)V" since="9" />
+		<method name="setMaxFieldSize(I)V" />
+		<method name="setMaxRows(I)V" />
+		<method name="setNCharacterStream(ILjava/io/Reader;)V" since="9" />
+		<method name="setNCharacterStream(ILjava/io/Reader;J)V" since="9" />
+		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setNCharacterStream(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setNClob(ILjava/io/Reader;)V" since="9" />
+		<method name="setNClob(ILjava/io/Reader;J)V" since="9" />
+		<method name="setNClob(ILjava/sql/NClob;)V" since="9" />
+		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;)V" since="9" />
+		<method name="setNClob(Ljava/lang/String;Ljava/io/Reader;J)V" since="9" />
+		<method name="setNClob(Ljava/lang/String;Ljava/sql/NClob;)V" since="9" />
+		<method name="setNString(ILjava/lang/String;)V" since="9" />
+		<method name="setNString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
+		<method name="setNull(II)V" />
+		<method name="setNull(IILjava/lang/String;)V" />
+		<method name="setNull(Ljava/lang/String;I)V" since="9" />
+		<method name="setNull(Ljava/lang/String;ILjava/lang/String;)V" since="9" />
+		<method name="setObject(ILjava/lang/Object;)V" />
+		<method name="setObject(ILjava/lang/Object;I)V" />
+		<method name="setObject(ILjava/lang/Object;II)V" />
+		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;)V" since="9" />
+		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;I)V" since="9" />
+		<method name="setObject(Ljava/lang/String;Ljava/lang/Object;II)V" since="9" />
+		<method name="setPassword(Ljava/lang/String;)V" />
+		<method name="setQueryTimeout(I)V" />
+		<method name="setReadOnly(Z)V" />
+		<method name="setRef(ILjava/sql/Ref;)V" />
+		<method name="setRowId(ILjava/sql/RowId;)V" since="9" />
+		<method name="setRowId(Ljava/lang/String;Ljava/sql/RowId;)V" since="9" />
+		<method name="setSQLXML(ILjava/sql/SQLXML;)V" since="9" />
+		<method name="setSQLXML(Ljava/lang/String;Ljava/sql/SQLXML;)V" since="9" />
+		<method name="setShort(IS)V" />
+		<method name="setShort(Ljava/lang/String;S)V" since="9" />
+		<method name="setString(ILjava/lang/String;)V" />
+		<method name="setString(Ljava/lang/String;Ljava/lang/String;)V" since="9" />
+		<method name="setTime(ILjava/sql/Time;)V" />
+		<method name="setTime(ILjava/sql/Time;Ljava/util/Calendar;)V" />
+		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;)V" since="9" />
+		<method name="setTime(Ljava/lang/String;Ljava/sql/Time;Ljava/util/Calendar;)V" since="9" />
+		<method name="setTimestamp(ILjava/sql/Timestamp;)V" />
+		<method name="setTimestamp(ILjava/sql/Timestamp;Ljava/util/Calendar;)V" />
+		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;)V" since="9" />
+		<method name="setTimestamp(Ljava/lang/String;Ljava/sql/Timestamp;Ljava/util/Calendar;)V" since="9" />
+		<method name="setTransactionIsolation(I)V" />
+		<method name="setType(I)V" />
+		<method name="setTypeMap(Ljava/util/Map;)V" />
+		<method name="setURL(ILjava/net/URL;)V" since="9" />
+		<method name="setUrl(Ljava/lang/String;)V" />
+		<method name="setUsername(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/sql/RowSetEvent" since="1">
+		<extends name="java/util/EventObject" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljavax/sql/RowSet;)V" />
+	</class>
+	<class name="javax/sql/RowSetInternal" since="1">
+		<method name="getConnection()Ljava/sql/Connection;" />
+		<method name="getOriginal()Ljava/sql/ResultSet;" />
+		<method name="getOriginalRow()Ljava/sql/ResultSet;" />
+		<method name="getParams()[Ljava/lang/Object;" />
+		<method name="setMetaData(Ljavax/sql/RowSetMetaData;)V" />
+	</class>
+	<class name="javax/sql/RowSetListener" since="1">
+		<implements name="java/util/EventListener" />
+		<method name="cursorMoved(Ljavax/sql/RowSetEvent;)V" />
+		<method name="rowChanged(Ljavax/sql/RowSetEvent;)V" />
+		<method name="rowSetChanged(Ljavax/sql/RowSetEvent;)V" />
+	</class>
+	<class name="javax/sql/RowSetMetaData" since="1">
+		<implements name="java/sql/ResultSetMetaData" />
+		<method name="setAutoIncrement(IZ)V" />
+		<method name="setCaseSensitive(IZ)V" />
+		<method name="setCatalogName(ILjava/lang/String;)V" />
+		<method name="setColumnCount(I)V" />
+		<method name="setColumnDisplaySize(II)V" />
+		<method name="setColumnLabel(ILjava/lang/String;)V" />
+		<method name="setColumnName(ILjava/lang/String;)V" />
+		<method name="setColumnType(II)V" />
+		<method name="setColumnTypeName(ILjava/lang/String;)V" />
+		<method name="setCurrency(IZ)V" />
+		<method name="setNullable(II)V" />
+		<method name="setPrecision(II)V" />
+		<method name="setScale(II)V" />
+		<method name="setSchemaName(ILjava/lang/String;)V" />
+		<method name="setSearchable(IZ)V" />
+		<method name="setSigned(IZ)V" />
+		<method name="setTableName(ILjava/lang/String;)V" />
+	</class>
+	<class name="javax/sql/RowSetReader" since="1">
+		<method name="readData(Ljavax/sql/RowSetInternal;)V" />
+	</class>
+	<class name="javax/sql/RowSetWriter" since="1">
+		<method name="writeData(Ljavax/sql/RowSetInternal;)Z" />
+	</class>
+	<class name="javax/sql/StatementEvent" since="9">
+		<extends name="java/util/EventObject" />
+		<method name="&lt;init>(Ljavax/sql/PooledConnection;Ljava/sql/PreparedStatement;)V" />
+		<method name="&lt;init>(Ljavax/sql/PooledConnection;Ljava/sql/PreparedStatement;Ljava/sql/SQLException;)V" />
+		<method name="getSQLException()Ljava/sql/SQLException;" />
+		<method name="getStatement()Ljava/sql/PreparedStatement;" />
+	</class>
+	<class name="javax/sql/StatementEventListener" since="9">
+		<implements name="java/util/EventListener" />
+		<method name="statementClosed(Ljavax/sql/StatementEvent;)V" />
+		<method name="statementErrorOccurred(Ljavax/sql/StatementEvent;)V" />
+	</class>
+	<class name="javax/xml/XMLConstants" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<field name="DEFAULT_NS_PREFIX" />
+		<field name="FEATURE_SECURE_PROCESSING" />
+		<field name="NULL_NS_URI" />
+		<field name="RELAXNG_NS_URI" />
+		<field name="W3C_XML_SCHEMA_INSTANCE_NS_URI" />
+		<field name="W3C_XML_SCHEMA_NS_URI" />
+		<field name="W3C_XPATH_DATATYPE_NS_URI" />
+		<field name="XMLNS_ATTRIBUTE" />
+		<field name="XMLNS_ATTRIBUTE_NS_URI" />
+		<field name="XML_DTD_NS_URI" />
+		<field name="XML_NS_PREFIX" />
+		<field name="XML_NS_URI" />
+	</class>
+	<class name="javax/xml/datatype/DatatypeConfigurationException" since="8">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/xml/datatype/DatatypeConstants" since="8">
+		<extends name="java/lang/Object" />
+		<field name="APRIL" />
+		<field name="AUGUST" />
+		<field name="DATE" />
+		<field name="DATETIME" />
+		<field name="DAYS" />
+		<field name="DECEMBER" />
+		<field name="DURATION" />
+		<field name="DURATION_DAYTIME" />
+		<field name="DURATION_YEARMONTH" />
+		<field name="EQUAL" />
+		<field name="FEBRUARY" />
+		<field name="FIELD_UNDEFINED" />
+		<field name="GDAY" />
+		<field name="GMONTH" />
+		<field name="GMONTHDAY" />
+		<field name="GREATER" />
+		<field name="GYEAR" />
+		<field name="GYEARMONTH" />
+		<field name="HOURS" />
+		<field name="INDETERMINATE" />
+		<field name="JANUARY" />
+		<field name="JULY" />
+		<field name="JUNE" />
+		<field name="LESSER" />
+		<field name="MARCH" />
+		<field name="MAX_TIMEZONE_OFFSET" />
+		<field name="MAY" />
+		<field name="MINUTES" />
+		<field name="MIN_TIMEZONE_OFFSET" />
+		<field name="MONTHS" />
+		<field name="NOVEMBER" />
+		<field name="OCTOBER" />
+		<field name="SECONDS" />
+		<field name="SEPTEMBER" />
+		<field name="TIME" />
+		<field name="YEARS" />
+	</class>
+	<class name="javax/xml/datatype/DatatypeConstants$Field" since="8">
+		<extends name="java/lang/Object" />
+		<method name="getId()I" />
+	</class>
+	<class name="javax/xml/datatype/DatatypeFactory" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="newDuration(J)Ljavax/xml/datatype/Duration;" />
+		<method name="newDuration(Ljava/lang/String;)Ljavax/xml/datatype/Duration;" />
+		<method name="newDuration(ZIIIIII)Ljavax/xml/datatype/Duration;" />
+		<method name="newDuration(ZLjava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigDecimal;)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationDayTime(J)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationDayTime(Ljava/lang/String;)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationDayTime(ZIIII)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationDayTime(ZLjava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationYearMonth(J)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationYearMonth(Ljava/lang/String;)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationYearMonth(ZII)Ljavax/xml/datatype/Duration;" />
+		<method name="newDurationYearMonth(ZLjava/math/BigInteger;Ljava/math/BigInteger;)Ljavax/xml/datatype/Duration;" />
+		<method name="newInstance()Ljavax/xml/datatype/DatatypeFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/datatype/DatatypeFactory;" since="9" />
+		<method name="newXMLGregorianCalendar()Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendar(IIIIIIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendar(Ljava/lang/String;)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendar(Ljava/math/BigInteger;IIIIILjava/math/BigDecimal;I)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendar(Ljava/util/GregorianCalendar;)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendarDate(IIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendarTime(IIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendarTime(IIIII)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="newXMLGregorianCalendarTime(IIILjava/math/BigDecimal;I)Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<field name="DATATYPEFACTORY_IMPLEMENTATION_CLASS" />
+		<field name="DATATYPEFACTORY_PROPERTY" />
+	</class>
+	<class name="javax/xml/datatype/Duration" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="add(Ljavax/xml/datatype/Duration;)Ljavax/xml/datatype/Duration;" />
+		<method name="addTo(Ljava/util/Calendar;)V" />
+		<method name="addTo(Ljava/util/Date;)V" />
+		<method name="compare(Ljavax/xml/datatype/Duration;)I" />
+		<method name="getDays()I" />
+		<method name="getField(Ljavax/xml/datatype/DatatypeConstants$Field;)Ljava/lang/Number;" />
+		<method name="getHours()I" />
+		<method name="getMinutes()I" />
+		<method name="getMonths()I" />
+		<method name="getSeconds()I" />
+		<method name="getSign()I" />
+		<method name="getTimeInMillis(Ljava/util/Calendar;)J" />
+		<method name="getTimeInMillis(Ljava/util/Date;)J" />
+		<method name="getXMLSchemaType()Ljavax/xml/namespace/QName;" />
+		<method name="getYears()I" />
+		<method name="hashCode()I" />
+		<method name="isLongerThan(Ljavax/xml/datatype/Duration;)Z" />
+		<method name="isSet(Ljavax/xml/datatype/DatatypeConstants$Field;)Z" />
+		<method name="isShorterThan(Ljavax/xml/datatype/Duration;)Z" />
+		<method name="multiply(I)Ljavax/xml/datatype/Duration;" />
+		<method name="multiply(Ljava/math/BigDecimal;)Ljavax/xml/datatype/Duration;" />
+		<method name="negate()Ljavax/xml/datatype/Duration;" />
+		<method name="normalizeWith(Ljava/util/Calendar;)Ljavax/xml/datatype/Duration;" />
+		<method name="subtract(Ljavax/xml/datatype/Duration;)Ljavax/xml/datatype/Duration;" />
+	</class>
+	<class name="javax/xml/datatype/XMLGregorianCalendar" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="add(Ljavax/xml/datatype/Duration;)V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="compare(Ljavax/xml/datatype/XMLGregorianCalendar;)I" />
+		<method name="getDay()I" />
+		<method name="getEon()Ljava/math/BigInteger;" />
+		<method name="getEonAndYear()Ljava/math/BigInteger;" />
+		<method name="getFractionalSecond()Ljava/math/BigDecimal;" />
+		<method name="getHour()I" />
+		<method name="getMillisecond()I" />
+		<method name="getMinute()I" />
+		<method name="getMonth()I" />
+		<method name="getSecond()I" />
+		<method name="getTimeZone(I)Ljava/util/TimeZone;" />
+		<method name="getTimezone()I" />
+		<method name="getXMLSchemaType()Ljavax/xml/namespace/QName;" />
+		<method name="getYear()I" />
+		<method name="isValid()Z" />
+		<method name="normalize()Ljavax/xml/datatype/XMLGregorianCalendar;" />
+		<method name="reset()V" />
+		<method name="setDay(I)V" />
+		<method name="setFractionalSecond(Ljava/math/BigDecimal;)V" />
+		<method name="setHour(I)V" />
+		<method name="setMillisecond(I)V" />
+		<method name="setMinute(I)V" />
+		<method name="setMonth(I)V" />
+		<method name="setSecond(I)V" />
+		<method name="setTime(III)V" />
+		<method name="setTime(IIII)V" />
+		<method name="setTime(IIILjava/math/BigDecimal;)V" />
+		<method name="setTimezone(I)V" />
+		<method name="setYear(I)V" />
+		<method name="setYear(Ljava/math/BigInteger;)V" />
+		<method name="toGregorianCalendar()Ljava/util/GregorianCalendar;" />
+		<method name="toGregorianCalendar(Ljava/util/TimeZone;Ljava/util/Locale;Ljavax/xml/datatype/XMLGregorianCalendar;)Ljava/util/GregorianCalendar;" />
+		<method name="toXMLFormat()Ljava/lang/String;" />
+	</class>
+	<class name="javax/xml/namespace/NamespaceContext" since="8">
+		<method name="getNamespaceURI(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getPrefix(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getPrefixes(Ljava/lang/String;)Ljava/util/Iterator;" />
+	</class>
+	<class name="javax/xml/namespace/QName" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getLocalPart()Ljava/lang/String;" />
+		<method name="getNamespaceURI()Ljava/lang/String;" />
+		<method name="getPrefix()Ljava/lang/String;" />
+		<method name="hashCode()I" />
+		<method name="valueOf(Ljava/lang/String;)Ljavax/xml/namespace/QName;" />
+	</class>
+	<class name="javax/xml/parsers/DocumentBuilder" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getDOMImplementation()Lorg/w3c/dom/DOMImplementation;" />
+		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
+		<method name="isNamespaceAware()Z" />
+		<method name="isValidating()Z" />
+		<method name="isXIncludeAware()Z" />
+		<method name="newDocument()Lorg/w3c/dom/Document;" />
+		<method name="parse(Ljava/io/File;)Lorg/w3c/dom/Document;" />
+		<method name="parse(Ljava/io/InputStream;)Lorg/w3c/dom/Document;" />
+		<method name="parse(Ljava/io/InputStream;Ljava/lang/String;)Lorg/w3c/dom/Document;" />
+		<method name="parse(Ljava/lang/String;)Lorg/w3c/dom/Document;" />
+		<method name="parse(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;" />
+		<method name="reset()V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+	</class>
+	<class name="javax/xml/parsers/DocumentBuilderFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
+		<method name="isCoalescing()Z" />
+		<method name="isExpandEntityReferences()Z" />
+		<method name="isIgnoringComments()Z" />
+		<method name="isIgnoringElementContentWhitespace()Z" />
+		<method name="isNamespaceAware()Z" />
+		<method name="isValidating()Z" />
+		<method name="isXIncludeAware()Z" />
+		<method name="newDocumentBuilder()Ljavax/xml/parsers/DocumentBuilder;" />
+		<method name="newInstance()Ljavax/xml/parsers/DocumentBuilderFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/DocumentBuilderFactory;" since="9" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setCoalescing(Z)V" />
+		<method name="setExpandEntityReferences(Z)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setIgnoringComments(Z)V" />
+		<method name="setIgnoringElementContentWhitespace(Z)V" />
+		<method name="setNamespaceAware(Z)V" />
+		<method name="setSchema(Ljavax/xml/validation/Schema;)V" since="8" />
+		<method name="setValidating(Z)V" />
+		<method name="setXIncludeAware(Z)V" />
+	</class>
+	<class name="javax/xml/parsers/FactoryConfigurationError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/Exception;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getException()Ljava/lang/Exception;" />
+	</class>
+	<class name="javax/xml/parsers/ParserConfigurationException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/xml/parsers/SAXParser" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getParser()Lorg/xml/sax/Parser;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
+		<method name="getXMLReader()Lorg/xml/sax/XMLReader;" />
+		<method name="isNamespaceAware()Z" />
+		<method name="isValidating()Z" />
+		<method name="isXIncludeAware()Z" />
+		<method name="parse(Ljava/io/File;Lorg/xml/sax/HandlerBase;)V" />
+		<method name="parse(Ljava/io/File;Lorg/xml/sax/helpers/DefaultHandler;)V" />
+		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/HandlerBase;)V" />
+		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/HandlerBase;Ljava/lang/String;)V" />
+		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/helpers/DefaultHandler;)V" />
+		<method name="parse(Ljava/io/InputStream;Lorg/xml/sax/helpers/DefaultHandler;Ljava/lang/String;)V" />
+		<method name="parse(Ljava/lang/String;Lorg/xml/sax/HandlerBase;)V" />
+		<method name="parse(Ljava/lang/String;Lorg/xml/sax/helpers/DefaultHandler;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;Lorg/xml/sax/HandlerBase;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;Lorg/xml/sax/helpers/DefaultHandler;)V" />
+		<method name="reset()V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="javax/xml/parsers/SAXParserFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getSchema()Ljavax/xml/validation/Schema;" since="8" />
+		<method name="isNamespaceAware()Z" />
+		<method name="isValidating()Z" />
+		<method name="isXIncludeAware()Z" />
+		<method name="newInstance()Ljavax/xml/parsers/SAXParserFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/SAXParserFactory;" since="9" />
+		<method name="newSAXParser()Ljavax/xml/parsers/SAXParser;" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setNamespaceAware(Z)V" />
+		<method name="setSchema(Ljavax/xml/validation/Schema;)V" since="8" />
+		<method name="setValidating(Z)V" />
+		<method name="setXIncludeAware(Z)V" />
+	</class>
+	<class name="javax/xml/transform/ErrorListener" since="8">
+		<method name="error(Ljavax/xml/transform/TransformerException;)V" />
+		<method name="fatalError(Ljavax/xml/transform/TransformerException;)V" />
+		<method name="warning(Ljavax/xml/transform/TransformerException;)V" />
+	</class>
+	<class name="javax/xml/transform/OutputKeys" since="8">
+		<extends name="java/lang/Object" />
+		<field name="CDATA_SECTION_ELEMENTS" />
+		<field name="DOCTYPE_PUBLIC" />
+		<field name="DOCTYPE_SYSTEM" />
+		<field name="ENCODING" />
+		<field name="INDENT" />
+		<field name="MEDIA_TYPE" />
+		<field name="METHOD" />
+		<field name="OMIT_XML_DECLARATION" />
+		<field name="STANDALONE" />
+		<field name="VERSION" />
+	</class>
+	<class name="javax/xml/transform/Result" since="8">
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<field name="PI_DISABLE_OUTPUT_ESCAPING" />
+		<field name="PI_ENABLE_OUTPUT_ESCAPING" />
+	</class>
+	<class name="javax/xml/transform/Source" since="8">
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/xml/transform/SourceLocator" since="8">
+		<method name="getColumnNumber()I" />
+		<method name="getLineNumber()I" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+	</class>
+	<class name="javax/xml/transform/Templates" since="8">
+		<method name="getOutputProperties()Ljava/util/Properties;" />
+		<method name="newTransformer()Ljavax/xml/transform/Transformer;" />
+	</class>
+	<class name="javax/xml/transform/Transformer" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="clearParameters()V" />
+		<method name="getErrorListener()Ljavax/xml/transform/ErrorListener;" />
+		<method name="getOutputProperties()Ljava/util/Properties;" />
+		<method name="getOutputProperty(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getURIResolver()Ljavax/xml/transform/URIResolver;" />
+		<method name="reset()V" />
+		<method name="setErrorListener(Ljavax/xml/transform/ErrorListener;)V" />
+		<method name="setOutputProperties(Ljava/util/Properties;)V" />
+		<method name="setOutputProperty(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setURIResolver(Ljavax/xml/transform/URIResolver;)V" />
+		<method name="transform(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V" />
+	</class>
+	<class name="javax/xml/transform/TransformerConfigurationException" since="8">
+		<extends name="javax/xml/transform/TransformerException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/xml/transform/TransformerException" since="8">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljavax/xml/transform/SourceLocator;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+		<method name="getException()Ljava/lang/Throwable;" />
+		<method name="getLocationAsString()Ljava/lang/String;" />
+		<method name="getLocator()Ljavax/xml/transform/SourceLocator;" />
+		<method name="getMessageAndLocation()Ljava/lang/String;" />
+		<method name="setLocator(Ljavax/xml/transform/SourceLocator;)V" />
+	</class>
+	<class name="javax/xml/transform/TransformerFactory" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAssociatedStylesheet(Ljavax/xml/transform/Source;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/transform/Source;" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getErrorListener()Ljavax/xml/transform/ErrorListener;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getURIResolver()Ljavax/xml/transform/URIResolver;" />
+		<method name="newInstance()Ljavax/xml/transform/TransformerFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/transform/TransformerFactory;" since="9" />
+		<method name="newTemplates(Ljavax/xml/transform/Source;)Ljavax/xml/transform/Templates;" />
+		<method name="newTransformer()Ljavax/xml/transform/Transformer;" />
+		<method name="newTransformer(Ljavax/xml/transform/Source;)Ljavax/xml/transform/Transformer;" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setErrorListener(Ljavax/xml/transform/ErrorListener;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setURIResolver(Ljavax/xml/transform/URIResolver;)V" />
+	</class>
+	<class name="javax/xml/transform/TransformerFactoryConfigurationError" since="8">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/Exception;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getException()Ljava/lang/Exception;" />
+	</class>
+	<class name="javax/xml/transform/URIResolver" since="8">
+		<method name="resolve(Ljava/lang/String;Ljava/lang/String;)Ljavax/xml/transform/Source;" />
+	</class>
+	<class name="javax/xml/transform/dom/DOMLocator" since="8">
+		<implements name="javax/xml/transform/SourceLocator" />
+		<method name="getOriginatingNode()Lorg/w3c/dom/Node;" />
+	</class>
+	<class name="javax/xml/transform/dom/DOMResult" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="javax/xml/transform/Result" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/w3c/dom/Node;)V" />
+		<method name="&lt;init>(Lorg/w3c/dom/Node;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V" />
+		<method name="&lt;init>(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;Ljava/lang/String;)V" />
+		<method name="getNextSibling()Lorg/w3c/dom/Node;" />
+		<method name="getNode()Lorg/w3c/dom/Node;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setNextSibling(Lorg/w3c/dom/Node;)V" />
+		<method name="setNode(Lorg/w3c/dom/Node;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<field name="FEATURE" />
+	</class>
+	<class name="javax/xml/transform/dom/DOMSource" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="javax/xml/transform/Source" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/w3c/dom/Node;)V" />
+		<method name="&lt;init>(Lorg/w3c/dom/Node;Ljava/lang/String;)V" />
+		<method name="getNode()Lorg/w3c/dom/Node;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setNode(Lorg/w3c/dom/Node;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<field name="FEATURE" />
+	</class>
+	<class name="javax/xml/transform/sax/SAXResult" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="javax/xml/transform/Result" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="getHandler()Lorg/xml/sax/ContentHandler;" />
+		<method name="getLexicalHandler()Lorg/xml/sax/ext/LexicalHandler;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setHandler(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="setLexicalHandler(Lorg/xml/sax/ext/LexicalHandler;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<field name="FEATURE" />
+	</class>
+	<class name="javax/xml/transform/sax/SAXSource" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="javax/xml/transform/Source" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/InputSource;)V" />
+		<method name="&lt;init>(Lorg/xml/sax/XMLReader;Lorg/xml/sax/InputSource;)V" />
+		<method name="getInputSource()Lorg/xml/sax/InputSource;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="getXMLReader()Lorg/xml/sax/XMLReader;" />
+		<method name="setInputSource(Lorg/xml/sax/InputSource;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<method name="setXMLReader(Lorg/xml/sax/XMLReader;)V" />
+		<method name="sourceToInputSource(Ljavax/xml/transform/Source;)Lorg/xml/sax/InputSource;" />
+		<field name="FEATURE" />
+	</class>
+	<class name="javax/xml/transform/sax/SAXTransformerFactory" since="8">
+		<extends name="javax/xml/transform/TransformerFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newTemplatesHandler()Ljavax/xml/transform/sax/TemplatesHandler;" />
+		<method name="newTransformerHandler()Ljavax/xml/transform/sax/TransformerHandler;" />
+		<method name="newTransformerHandler(Ljavax/xml/transform/Source;)Ljavax/xml/transform/sax/TransformerHandler;" />
+		<method name="newTransformerHandler(Ljavax/xml/transform/Templates;)Ljavax/xml/transform/sax/TransformerHandler;" />
+		<method name="newXMLFilter(Ljavax/xml/transform/Source;)Lorg/xml/sax/XMLFilter;" />
+		<method name="newXMLFilter(Ljavax/xml/transform/Templates;)Lorg/xml/sax/XMLFilter;" />
+		<field name="FEATURE" />
+		<field name="FEATURE_XMLFILTER" />
+	</class>
+	<class name="javax/xml/transform/sax/TemplatesHandler" since="8">
+		<implements name="org/xml/sax/ContentHandler" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="getTemplates()Ljavax/xml/transform/Templates;" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/xml/transform/sax/TransformerHandler" since="8">
+		<implements name="org/xml/sax/ContentHandler" />
+		<implements name="org/xml/sax/DTDHandler" />
+		<implements name="org/xml/sax/ext/LexicalHandler" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="getTransformer()Ljavax/xml/transform/Transformer;" />
+		<method name="setResult(Ljavax/xml/transform/Result;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="javax/xml/transform/stream/StreamResult" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="javax/xml/transform/Result" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/OutputStream;)V" />
+		<method name="&lt;init>(Ljava/io/Writer;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getOutputStream()Ljava/io/OutputStream;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="getWriter()Ljava/io/Writer;" />
+		<method name="setOutputStream(Ljava/io/OutputStream;)V" />
+		<method name="setSystemId(Ljava/io/File;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<method name="setWriter(Ljava/io/Writer;)V" />
+		<field name="FEATURE" />
+	</class>
+	<class name="javax/xml/transform/stream/StreamSource" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="javax/xml/transform/Source" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/File;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/InputStream;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getInputStream()Ljava/io/InputStream;" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getReader()Ljava/io/Reader;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setInputStream(Ljava/io/InputStream;)V" />
+		<method name="setPublicId(Ljava/lang/String;)V" />
+		<method name="setReader(Ljava/io/Reader;)V" />
+		<method name="setSystemId(Ljava/io/File;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+		<field name="FEATURE" />
+	</class>
+	<class name="javax/xml/validation/Schema" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="newValidator()Ljavax/xml/validation/Validator;" />
+		<method name="newValidatorHandler()Ljavax/xml/validation/ValidatorHandler;" />
+	</class>
+	<class name="javax/xml/validation/SchemaFactory" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;" />
+		<method name="isSchemaLanguageSupported(Ljava/lang/String;)Z" />
+		<method name="newInstance(Ljava/lang/String;)Ljavax/xml/validation/SchemaFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/validation/SchemaFactory;" since="9" />
+		<method name="newSchema()Ljavax/xml/validation/Schema;" />
+		<method name="newSchema(Ljava/io/File;)Ljavax/xml/validation/Schema;" />
+		<method name="newSchema(Ljava/net/URL;)Ljavax/xml/validation/Schema;" />
+		<method name="newSchema(Ljavax/xml/transform/Source;)Ljavax/xml/validation/Schema;" />
+		<method name="newSchema([Ljavax/xml/transform/Source;)Ljavax/xml/validation/Schema;" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V" />
+	</class>
+	<class name="javax/xml/validation/SchemaFactoryLoader" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="newFactory(Ljava/lang/String;)Ljavax/xml/validation/SchemaFactory;" />
+	</class>
+	<class name="javax/xml/validation/TypeInfoProvider" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAttributeTypeInfo(I)Lorg/w3c/dom/TypeInfo;" />
+		<method name="getElementTypeInfo()Lorg/w3c/dom/TypeInfo;" />
+		<method name="isIdAttribute(I)Z" />
+		<method name="isSpecified(I)Z" />
+	</class>
+	<class name="javax/xml/validation/Validator" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;" />
+		<method name="reset()V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V" />
+		<method name="validate(Ljavax/xml/transform/Source;)V" />
+		<method name="validate(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)V" />
+	</class>
+	<class name="javax/xml/validation/ValidatorHandler" since="8">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/ContentHandler" />
+		<method name="&lt;init>()V" />
+		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getResourceResolver()Lorg/w3c/dom/ls/LSResourceResolver;" />
+		<method name="getTypeInfoProvider()Ljavax/xml/validation/TypeInfoProvider;" />
+		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setResourceResolver(Lorg/w3c/dom/ls/LSResourceResolver;)V" />
+	</class>
+	<class name="javax/xml/xpath/XPath" since="8">
+		<method name="compile(Ljava/lang/String;)Ljavax/xml/xpath/XPathExpression;" />
+		<method name="evaluate(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="evaluate(Ljava/lang/String;Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
+		<method name="evaluate(Ljava/lang/String;Lorg/xml/sax/InputSource;)Ljava/lang/String;" />
+		<method name="evaluate(Ljava/lang/String;Lorg/xml/sax/InputSource;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
+		<method name="getNamespaceContext()Ljavax/xml/namespace/NamespaceContext;" />
+		<method name="getXPathFunctionResolver()Ljavax/xml/xpath/XPathFunctionResolver;" />
+		<method name="getXPathVariableResolver()Ljavax/xml/xpath/XPathVariableResolver;" />
+		<method name="reset()V" />
+		<method name="setNamespaceContext(Ljavax/xml/namespace/NamespaceContext;)V" />
+		<method name="setXPathFunctionResolver(Ljavax/xml/xpath/XPathFunctionResolver;)V" />
+		<method name="setXPathVariableResolver(Ljavax/xml/xpath/XPathVariableResolver;)V" />
+	</class>
+	<class name="javax/xml/xpath/XPathConstants" since="8">
+		<extends name="java/lang/Object" />
+		<field name="BOOLEAN" />
+		<field name="DOM_OBJECT_MODEL" />
+		<field name="NODE" />
+		<field name="NODESET" />
+		<field name="NUMBER" />
+		<field name="STRING" />
+	</class>
+	<class name="javax/xml/xpath/XPathException" since="8">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/xml/xpath/XPathExpression" since="8">
+		<method name="evaluate(Ljava/lang/Object;)Ljava/lang/String;" />
+		<method name="evaluate(Ljava/lang/Object;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
+		<method name="evaluate(Lorg/xml/sax/InputSource;)Ljava/lang/String;" />
+		<method name="evaluate(Lorg/xml/sax/InputSource;Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
+	</class>
+	<class name="javax/xml/xpath/XPathExpressionException" since="8">
+		<extends name="javax/xml/xpath/XPathException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/xml/xpath/XPathFactory" since="8">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="isObjectModelSupported(Ljava/lang/String;)Z" />
+		<method name="newInstance()Ljavax/xml/xpath/XPathFactory;" />
+		<method name="newInstance(Ljava/lang/String;)Ljavax/xml/xpath/XPathFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/xpath/XPathFactory;" />
+		<method name="newXPath()Ljavax/xml/xpath/XPath;" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setXPathFunctionResolver(Ljavax/xml/xpath/XPathFunctionResolver;)V" />
+		<method name="setXPathVariableResolver(Ljavax/xml/xpath/XPathVariableResolver;)V" />
+		<field name="DEFAULT_OBJECT_MODEL_URI" />
+		<field name="DEFAULT_PROPERTY_NAME" />
+	</class>
+	<class name="javax/xml/xpath/XPathFactoryConfigurationException" since="8">
+		<extends name="javax/xml/xpath/XPathException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/xml/xpath/XPathFunction" since="8">
+		<method name="evaluate(Ljava/util/List;)Ljava/lang/Object;" />
+	</class>
+	<class name="javax/xml/xpath/XPathFunctionException" since="8">
+		<extends name="javax/xml/xpath/XPathExpressionException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="javax/xml/xpath/XPathFunctionResolver" since="8">
+		<method name="resolveFunction(Ljavax/xml/namespace/QName;I)Ljavax/xml/xpath/XPathFunction;" />
+	</class>
+	<class name="javax/xml/xpath/XPathVariableResolver" since="8">
+		<method name="resolveVariable(Ljavax/xml/namespace/QName;)Ljava/lang/Object;" />
+	</class>
+	<class name="junit/framework/Assert" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="assertEquals(BB)V" />
+		<method name="assertEquals(CC)V" />
+		<method name="assertEquals(DDD)V" />
+		<method name="assertEquals(FFF)V" />
+		<method name="assertEquals(II)V" />
+		<method name="assertEquals(JJ)V" />
+		<method name="assertEquals(Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertEquals(Ljava/lang/String;BB)V" />
+		<method name="assertEquals(Ljava/lang/String;CC)V" />
+		<method name="assertEquals(Ljava/lang/String;DDD)V" />
+		<method name="assertEquals(Ljava/lang/String;FFF)V" />
+		<method name="assertEquals(Ljava/lang/String;II)V" />
+		<method name="assertEquals(Ljava/lang/String;JJ)V" />
+		<method name="assertEquals(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertEquals(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="assertEquals(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="assertEquals(Ljava/lang/String;SS)V" />
+		<method name="assertEquals(Ljava/lang/String;ZZ)V" />
+		<method name="assertEquals(SS)V" />
+		<method name="assertEquals(ZZ)V" />
+		<method name="assertFalse(Ljava/lang/String;Z)V" />
+		<method name="assertFalse(Z)V" />
+		<method name="assertNotNull(Ljava/lang/Object;)V" />
+		<method name="assertNotNull(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="assertNotSame(Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertNotSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertNull(Ljava/lang/Object;)V" />
+		<method name="assertNull(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="assertSame(Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertSame(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" />
+		<method name="assertTrue(Ljava/lang/String;Z)V" />
+		<method name="assertTrue(Z)V" />
+		<method name="fail()V" />
+		<method name="fail(Ljava/lang/String;)V" />
+	</class>
+	<class name="junit/framework/AssertionFailedError" since="1">
+		<extends name="java/lang/Error" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="junit/framework/ComparisonFailure" since="1">
+		<extends name="junit/framework/AssertionFailedError" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="junit/framework/Protectable" since="1">
+		<method name="protect()V" />
+	</class>
+	<class name="junit/framework/Test" since="1">
+		<method name="countTestCases()I" />
+		<method name="run(Ljunit/framework/TestResult;)V" />
+	</class>
+	<class name="junit/framework/TestCase" since="1">
+		<extends name="junit/framework/Assert" />
+		<implements name="junit/framework/Test" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="countTestCases()I" />
+		<method name="createResult()Ljunit/framework/TestResult;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="run()Ljunit/framework/TestResult;" />
+		<method name="run(Ljunit/framework/TestResult;)V" />
+		<method name="runBare()V" />
+		<method name="runTest()V" />
+		<method name="setName(Ljava/lang/String;)V" />
+		<method name="setUp()V" />
+		<method name="tearDown()V" />
+	</class>
+	<class name="junit/framework/TestFailure" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
+		<method name="exceptionMessage()Ljava/lang/String;" />
+		<method name="failedTest()Ljunit/framework/Test;" />
+		<method name="isFailure()Z" />
+		<method name="thrownException()Ljava/lang/Throwable;" />
+		<method name="trace()Ljava/lang/String;" />
+		<field name="fFailedTest" />
+		<field name="fThrownException" />
+	</class>
+	<class name="junit/framework/TestListener" since="1">
+		<method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
+		<method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V" />
+		<method name="endTest(Ljunit/framework/Test;)V" />
+		<method name="startTest(Ljunit/framework/Test;)V" />
+	</class>
+	<class name="junit/framework/TestResult" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
+		<method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V" />
+		<method name="addListener(Ljunit/framework/TestListener;)V" />
+		<method name="endTest(Ljunit/framework/Test;)V" />
+		<method name="errorCount()I" />
+		<method name="errors()Ljava/util/Enumeration;" />
+		<method name="failureCount()I" />
+		<method name="failures()Ljava/util/Enumeration;" />
+		<method name="removeListener(Ljunit/framework/TestListener;)V" />
+		<method name="run(Ljunit/framework/TestCase;)V" />
+		<method name="runCount()I" />
+		<method name="runProtected(Ljunit/framework/Test;Ljunit/framework/Protectable;)V" />
+		<method name="shouldStop()Z" />
+		<method name="startTest(Ljunit/framework/Test;)V" />
+		<method name="stop()V" />
+		<method name="wasSuccessful()Z" />
+		<field name="fErrors" />
+		<field name="fFailures" />
+		<field name="fListeners" />
+		<field name="fRunTests" />
+	</class>
+	<class name="junit/framework/TestSuite" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="junit/framework/Test" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Class;)V" />
+		<method name="&lt;init>(Ljava/lang/Class;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="addTest(Ljunit/framework/Test;)V" />
+		<method name="addTestSuite(Ljava/lang/Class;)V" />
+		<method name="countTestCases()I" />
+		<method name="createTest(Ljava/lang/Class;Ljava/lang/String;)Ljunit/framework/Test;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getTestConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;" />
+		<method name="run(Ljunit/framework/TestResult;)V" />
+		<method name="runTest(Ljunit/framework/Test;Ljunit/framework/TestResult;)V" />
+		<method name="setName(Ljava/lang/String;)V" />
+		<method name="testAt(I)Ljunit/framework/Test;" />
+		<method name="testCount()I" />
+		<method name="tests()Ljava/util/Enumeration;" />
+	</class>
+	<class name="junit/runner/BaseTestRunner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="junit/framework/TestListener" />
+		<method name="&lt;init>()V" />
+		<method name="addError(Ljunit/framework/Test;Ljava/lang/Throwable;)V" />
+		<method name="addFailure(Ljunit/framework/Test;Ljunit/framework/AssertionFailedError;)V" />
+		<method name="clearStatus()V" />
+		<method name="elapsedTimeAsString(J)Ljava/lang/String;" />
+		<method name="endTest(Ljunit/framework/Test;)V" />
+		<method name="extractClassName(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getFilteredTrace(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getFilteredTrace(Ljava/lang/Throwable;)Ljava/lang/String;" />
+		<method name="getLoader()Ljunit/runner/TestSuiteLoader;" />
+		<method name="getPreference(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getPreference(Ljava/lang/String;I)I" />
+		<method name="getPreferences()Ljava/util/Properties;" />
+		<method name="getTest(Ljava/lang/String;)Ljunit/framework/Test;" />
+		<method name="inVAJava()Z" />
+		<method name="loadSuiteClass(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="processArguments([Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="runFailed(Ljava/lang/String;)V" />
+		<method name="savePreferences()V" />
+		<method name="setLoading(Z)V" />
+		<method name="setPreference(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setPreferences(Ljava/util/Properties;)V" />
+		<method name="showStackRaw()Z" />
+		<method name="startTest(Ljunit/framework/Test;)V" />
+		<method name="testEnded(Ljava/lang/String;)V" />
+		<method name="testFailed(ILjunit/framework/Test;Ljava/lang/Throwable;)V" />
+		<method name="testStarted(Ljava/lang/String;)V" />
+		<method name="truncate(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="useReloadingTestSuiteLoader()Z" />
+		<field name="SUITE_METHODNAME" />
+	</class>
+	<class name="junit/runner/TestSuiteLoader" since="1">
+		<method name="load(Ljava/lang/String;)Ljava/lang/Class;" />
+		<method name="reload(Ljava/lang/Class;)Ljava/lang/Class;" />
+	</class>
+	<class name="junit/runner/Version" since="1">
+		<extends name="java/lang/Object" />
+		<method name="id()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/commons/logging/Log" since="1">
+		<method name="debug(Ljava/lang/Object;)V" />
+		<method name="debug(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
+		<method name="error(Ljava/lang/Object;)V" />
+		<method name="error(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
+		<method name="fatal(Ljava/lang/Object;)V" />
+		<method name="fatal(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
+		<method name="info(Ljava/lang/Object;)V" />
+		<method name="info(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
+		<method name="isDebugEnabled()Z" />
+		<method name="isErrorEnabled()Z" />
+		<method name="isFatalEnabled()Z" />
+		<method name="isInfoEnabled()Z" />
+		<method name="isTraceEnabled()Z" />
+		<method name="isWarnEnabled()Z" />
+		<method name="trace(Ljava/lang/Object;)V" />
+		<method name="trace(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
+		<method name="warn(Ljava/lang/Object;)V" />
+		<method name="warn(Ljava/lang/Object;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/ConnectionClosedException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/ConnectionReuseStrategy" since="1">
+		<method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/FormattedHeader" since="1">
+		<implements name="org/apache/http/Header" />
+		<method name="getBuffer()Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="getValuePos()I" />
+	</class>
+	<class name="org/apache/http/Header" since="1">
+		<method name="getElements()[Lorg/apache/http/HeaderElement;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getValue()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/HeaderElement" since="1">
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParameter(I)Lorg/apache/http/NameValuePair;" />
+		<method name="getParameterByName(Ljava/lang/String;)Lorg/apache/http/NameValuePair;" />
+		<method name="getParameterCount()I" />
+		<method name="getParameters()[Lorg/apache/http/NameValuePair;" />
+		<method name="getValue()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/HeaderElementIterator" since="1">
+		<implements name="java/util/Iterator" />
+		<method name="hasNext()Z" />
+		<method name="nextElement()Lorg/apache/http/HeaderElement;" />
+	</class>
+	<class name="org/apache/http/HeaderIterator" since="1">
+		<implements name="java/util/Iterator" />
+		<method name="hasNext()Z" />
+		<method name="nextHeader()Lorg/apache/http/Header;" />
+	</class>
+	<class name="org/apache/http/HttpClientConnection" since="1">
+		<implements name="org/apache/http/HttpConnection" />
+		<method name="flush()V" />
+		<method name="isResponseAvailable(I)Z" />
+		<method name="receiveResponseEntity(Lorg/apache/http/HttpResponse;)V" />
+		<method name="receiveResponseHeader()Lorg/apache/http/HttpResponse;" />
+		<method name="sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
+		<method name="sendRequestHeader(Lorg/apache/http/HttpRequest;)V" />
+	</class>
+	<class name="org/apache/http/HttpConnection" since="1">
+		<method name="close()V" />
+		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
+		<method name="getSocketTimeout()I" />
+		<method name="isOpen()Z" />
+		<method name="isStale()Z" />
+		<method name="setSocketTimeout(I)V" />
+		<method name="shutdown()V" />
+	</class>
+	<class name="org/apache/http/HttpConnectionMetrics" since="1">
+		<method name="getMetric(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getReceivedBytesCount()J" />
+		<method name="getRequestCount()J" />
+		<method name="getResponseCount()J" />
+		<method name="getSentBytesCount()J" />
+		<method name="reset()V" />
+	</class>
+	<class name="org/apache/http/HttpEntity" since="1">
+		<method name="consumeContent()V" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentEncoding()Lorg/apache/http/Header;" />
+		<method name="getContentLength()J" />
+		<method name="getContentType()Lorg/apache/http/Header;" />
+		<method name="isChunked()Z" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="org/apache/http/HttpEntityEnclosingRequest" since="1">
+		<implements name="org/apache/http/HttpRequest" />
+		<method name="expectContinue()Z" />
+		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
+		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
+	</class>
+	<class name="org/apache/http/HttpException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/HttpHost" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getHostName()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="getSchemeName()Ljava/lang/String;" />
+		<method name="toHostString()Ljava/lang/String;" />
+		<method name="toURI()Ljava/lang/String;" />
+		<field name="DEFAULT_SCHEME_NAME" />
+		<field name="hostname" />
+		<field name="lcHostname" />
+		<field name="port" />
+		<field name="schemeName" />
+	</class>
+	<class name="org/apache/http/HttpInetConnection" since="1">
+		<implements name="org/apache/http/HttpConnection" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
+		<method name="getRemotePort()I" />
+	</class>
+	<class name="org/apache/http/HttpMessage" since="1">
+		<method name="addHeader(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="addHeader(Lorg/apache/http/Header;)V" />
+		<method name="containsHeader(Ljava/lang/String;)Z" />
+		<method name="getAllHeaders()[Lorg/apache/http/Header;" />
+		<method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;" />
+		<method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="headerIterator()Lorg/apache/http/HeaderIterator;" />
+		<method name="headerIterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;" />
+		<method name="removeHeader(Lorg/apache/http/Header;)V" />
+		<method name="removeHeaders(Ljava/lang/String;)V" />
+		<method name="setHeader(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setHeader(Lorg/apache/http/Header;)V" />
+		<method name="setHeaders([Lorg/apache/http/Header;)V" />
+		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/HttpRequest" since="1">
+		<implements name="org/apache/http/HttpMessage" />
+		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
+	</class>
+	<class name="org/apache/http/HttpRequestFactory" since="1">
+		<method name="newHttpRequest(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/HttpRequest;" />
+		<method name="newHttpRequest(Lorg/apache/http/RequestLine;)Lorg/apache/http/HttpRequest;" />
+	</class>
+	<class name="org/apache/http/HttpRequestInterceptor" since="1">
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/HttpResponse" since="1">
+		<implements name="org/apache/http/HttpMessage" />
+		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
+		<method name="getLocale()Ljava/util/Locale;" />
+		<method name="getStatusLine()Lorg/apache/http/StatusLine;" />
+		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
+		<method name="setLocale(Ljava/util/Locale;)V" />
+		<method name="setReasonPhrase(Ljava/lang/String;)V" />
+		<method name="setStatusCode(I)V" />
+		<method name="setStatusLine(Lorg/apache/http/ProtocolVersion;I)V" />
+		<method name="setStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
+		<method name="setStatusLine(Lorg/apache/http/StatusLine;)V" />
+	</class>
+	<class name="org/apache/http/HttpResponseFactory" since="1">
+		<method name="newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="newHttpResponse(Lorg/apache/http/StatusLine;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+	</class>
+	<class name="org/apache/http/HttpResponseInterceptor" since="1">
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/HttpServerConnection" since="1">
+		<implements name="org/apache/http/HttpConnection" />
+		<method name="flush()V" />
+		<method name="receiveRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
+		<method name="receiveRequestHeader()Lorg/apache/http/HttpRequest;" />
+		<method name="sendResponseEntity(Lorg/apache/http/HttpResponse;)V" />
+		<method name="sendResponseHeader(Lorg/apache/http/HttpResponse;)V" />
+	</class>
+	<class name="org/apache/http/HttpStatus" since="1">
+		<field name="SC_ACCEPTED" />
+		<field name="SC_BAD_GATEWAY" />
+		<field name="SC_BAD_REQUEST" />
+		<field name="SC_CONFLICT" />
+		<field name="SC_CONTINUE" />
+		<field name="SC_CREATED" />
+		<field name="SC_EXPECTATION_FAILED" />
+		<field name="SC_FAILED_DEPENDENCY" />
+		<field name="SC_FORBIDDEN" />
+		<field name="SC_GATEWAY_TIMEOUT" />
+		<field name="SC_GONE" />
+		<field name="SC_HTTP_VERSION_NOT_SUPPORTED" />
+		<field name="SC_INSUFFICIENT_SPACE_ON_RESOURCE" />
+		<field name="SC_INSUFFICIENT_STORAGE" />
+		<field name="SC_INTERNAL_SERVER_ERROR" />
+		<field name="SC_LENGTH_REQUIRED" />
+		<field name="SC_LOCKED" />
+		<field name="SC_METHOD_FAILURE" />
+		<field name="SC_METHOD_NOT_ALLOWED" />
+		<field name="SC_MOVED_PERMANENTLY" />
+		<field name="SC_MOVED_TEMPORARILY" />
+		<field name="SC_MULTIPLE_CHOICES" />
+		<field name="SC_MULTI_STATUS" />
+		<field name="SC_NON_AUTHORITATIVE_INFORMATION" />
+		<field name="SC_NOT_ACCEPTABLE" />
+		<field name="SC_NOT_FOUND" />
+		<field name="SC_NOT_IMPLEMENTED" />
+		<field name="SC_NOT_MODIFIED" />
+		<field name="SC_NO_CONTENT" />
+		<field name="SC_OK" />
+		<field name="SC_PARTIAL_CONTENT" />
+		<field name="SC_PAYMENT_REQUIRED" />
+		<field name="SC_PRECONDITION_FAILED" />
+		<field name="SC_PROCESSING" />
+		<field name="SC_PROXY_AUTHENTICATION_REQUIRED" />
+		<field name="SC_REQUESTED_RANGE_NOT_SATISFIABLE" />
+		<field name="SC_REQUEST_TIMEOUT" />
+		<field name="SC_REQUEST_TOO_LONG" />
+		<field name="SC_REQUEST_URI_TOO_LONG" />
+		<field name="SC_RESET_CONTENT" />
+		<field name="SC_SEE_OTHER" />
+		<field name="SC_SERVICE_UNAVAILABLE" />
+		<field name="SC_SWITCHING_PROTOCOLS" />
+		<field name="SC_TEMPORARY_REDIRECT" />
+		<field name="SC_UNAUTHORIZED" />
+		<field name="SC_UNPROCESSABLE_ENTITY" />
+		<field name="SC_UNSUPPORTED_MEDIA_TYPE" />
+		<field name="SC_USE_PROXY" />
+	</class>
+	<class name="org/apache/http/HttpVersion" since="1">
+		<extends name="org/apache/http/ProtocolVersion" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(II)V" />
+		<field name="HTTP" />
+		<field name="HTTP_0_9" />
+		<field name="HTTP_1_0" />
+		<field name="HTTP_1_1" />
+	</class>
+	<class name="org/apache/http/MalformedChunkCodingException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/MethodNotSupportedException" since="1">
+		<extends name="org/apache/http/HttpException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/NameValuePair" since="1">
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getValue()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/NoHttpResponseException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/ParseException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/ProtocolException" since="1">
+		<extends name="org/apache/http/HttpException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/ProtocolVersion" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>(Ljava/lang/String;II)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="compareToVersion(Lorg/apache/http/ProtocolVersion;)I" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="forVersion(II)Lorg/apache/http/ProtocolVersion;" />
+		<method name="getMajor()I" />
+		<method name="getMinor()I" />
+		<method name="getProtocol()Ljava/lang/String;" />
+		<method name="greaterEquals(Lorg/apache/http/ProtocolVersion;)Z" />
+		<method name="hashCode()I" />
+		<method name="isComparable(Lorg/apache/http/ProtocolVersion;)Z" />
+		<method name="lessEquals(Lorg/apache/http/ProtocolVersion;)Z" />
+		<field name="major" />
+		<field name="minor" />
+		<field name="protocol" />
+	</class>
+	<class name="org/apache/http/ReasonPhraseCatalog" since="1">
+		<method name="getReason(ILjava/util/Locale;)Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/RequestLine" since="1">
+		<method name="getMethod()Ljava/lang/String;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getUri()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/StatusLine" since="1">
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getReasonPhrase()Ljava/lang/String;" />
+		<method name="getStatusCode()I" />
+	</class>
+	<class name="org/apache/http/TokenIterator" since="1">
+		<implements name="java/util/Iterator" />
+		<method name="hasNext()Z" />
+		<method name="nextToken()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/UnsupportedHttpVersionException" since="1">
+		<extends name="org/apache/http/ProtocolException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/auth/AUTH" since="1">
+		<extends name="java/lang/Object" />
+		<field name="PROXY_AUTH" />
+		<field name="PROXY_AUTH_RESP" />
+		<field name="WWW_AUTH" />
+		<field name="WWW_AUTH_RESP" />
+	</class>
+	<class name="org/apache/http/auth/AuthScheme" since="1">
+		<method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getRealm()Ljava/lang/String;" />
+		<method name="getSchemeName()Ljava/lang/String;" />
+		<method name="isComplete()Z" />
+		<method name="isConnectionBased()Z" />
+		<method name="processChallenge(Lorg/apache/http/Header;)V" />
+	</class>
+	<class name="org/apache/http/auth/AuthSchemeFactory" since="1">
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
+	</class>
+	<class name="org/apache/http/auth/AuthSchemeRegistry" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAuthScheme(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
+		<method name="getSchemeNames()Ljava/util/List;" />
+		<method name="register(Ljava/lang/String;Lorg/apache/http/auth/AuthSchemeFactory;)V" />
+		<method name="setItems(Ljava/util/Map;)V" />
+		<method name="unregister(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/auth/AuthScope" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;I)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Lorg/apache/http/auth/AuthScope;)V" />
+		<method name="getHost()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="getRealm()Ljava/lang/String;" />
+		<method name="getScheme()Ljava/lang/String;" />
+		<method name="match(Lorg/apache/http/auth/AuthScope;)I" />
+		<field name="ANY" />
+		<field name="ANY_HOST" />
+		<field name="ANY_PORT" />
+		<field name="ANY_REALM" />
+		<field name="ANY_SCHEME" />
+	</class>
+	<class name="org/apache/http/auth/AuthState" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getAuthScheme()Lorg/apache/http/auth/AuthScheme;" />
+		<method name="getAuthScope()Lorg/apache/http/auth/AuthScope;" />
+		<method name="getCredentials()Lorg/apache/http/auth/Credentials;" />
+		<method name="invalidate()V" />
+		<method name="isValid()Z" />
+		<method name="setAuthScheme(Lorg/apache/http/auth/AuthScheme;)V" />
+		<method name="setAuthScope(Lorg/apache/http/auth/AuthScope;)V" />
+		<method name="setCredentials(Lorg/apache/http/auth/Credentials;)V" />
+	</class>
+	<class name="org/apache/http/auth/AuthenticationException" since="1">
+		<extends name="org/apache/http/ProtocolException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/auth/BasicUserPrincipal" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/Principal" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getName()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/auth/Credentials" since="1">
+		<method name="getPassword()Ljava/lang/String;" />
+		<method name="getUserPrincipal()Ljava/security/Principal;" />
+	</class>
+	<class name="org/apache/http/auth/InvalidCredentialsException" since="1">
+		<extends name="org/apache/http/auth/AuthenticationException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/auth/MalformedChallengeException" since="1">
+		<extends name="org/apache/http/ProtocolException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/auth/NTCredentials" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/auth/Credentials" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getDomain()Ljava/lang/String;" />
+		<method name="getPassword()Ljava/lang/String;" />
+		<method name="getUserName()Ljava/lang/String;" />
+		<method name="getUserPrincipal()Ljava/security/Principal;" />
+		<method name="getWorkstation()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/auth/NTUserPrincipal" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/security/Principal" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getDomain()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getUsername()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/auth/UsernamePasswordCredentials" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/auth/Credentials" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getPassword()Ljava/lang/String;" />
+		<method name="getUserName()Ljava/lang/String;" />
+		<method name="getUserPrincipal()Ljava/security/Principal;" />
+	</class>
+	<class name="org/apache/http/auth/params/AuthPNames" since="1">
+		<field name="CREDENTIAL_CHARSET" />
+	</class>
+	<class name="org/apache/http/auth/params/AuthParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setCredentialCharset(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/auth/params/AuthParams" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getCredentialCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
+		<method name="setCredentialCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/client/AuthenticationHandler" since="1">
+		<method name="getChallenges(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map;" />
+		<method name="isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+		<method name="selectScheme(Ljava/util/Map;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme;" />
+	</class>
+	<class name="org/apache/http/client/CircularRedirectException" since="1">
+		<extends name="org/apache/http/client/RedirectException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/client/ClientProtocolException" since="1">
+		<extends name="java/io/IOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+		<method name="&lt;init>(Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/client/CookieStore" since="1">
+		<method name="addCookie(Lorg/apache/http/cookie/Cookie;)V" />
+		<method name="clear()V" />
+		<method name="clearExpired(Ljava/util/Date;)Z" />
+		<method name="getCookies()Ljava/util/List;" />
+	</class>
+	<class name="org/apache/http/client/CredentialsProvider" since="1">
+		<method name="clear()V" />
+		<method name="getCredentials(Lorg/apache/http/auth/AuthScope;)Lorg/apache/http/auth/Credentials;" />
+		<method name="setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V" />
+	</class>
+	<class name="org/apache/http/client/HttpClient" since="1">
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;)LT;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;)LT;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
+		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
+	</class>
+	<class name="org/apache/http/client/HttpRequestRetryHandler" since="1">
+		<method name="retryRequest(Ljava/io/IOException;ILorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/client/HttpResponseException" since="1">
+		<extends name="org/apache/http/client/ClientProtocolException" />
+		<method name="&lt;init>(ILjava/lang/String;)V" />
+		<method name="getStatusCode()I" />
+	</class>
+	<class name="org/apache/http/client/NonRepeatableRequestException" since="1">
+		<extends name="org/apache/http/ProtocolException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/client/RedirectException" since="1">
+		<extends name="org/apache/http/ProtocolException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/client/RedirectHandler" since="1">
+		<method name="getLocationURI(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/net/URI;" />
+		<method name="isRedirectRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/client/RequestDirector" since="1">
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+	</class>
+	<class name="org/apache/http/client/ResponseHandler" since="1">
+		<method name="handleResponse(Lorg/apache/http/HttpResponse;)LT;" />
+	</class>
+	<class name="org/apache/http/client/UserTokenHandler" since="1">
+		<method name="getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;" />
+	</class>
+	<class name="org/apache/http/client/entity/UrlEncodedFormEntity" since="1">
+		<extends name="org/apache/http/entity/StringEntity" />
+		<method name="&lt;init>(Ljava/util/List;)V" />
+		<method name="&lt;init>(Ljava/util/List;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/client/methods/AbortableHttpRequest" since="1">
+		<method name="abort()V" />
+		<method name="setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V" />
+		<method name="setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpDelete" since="1">
+		<extends name="org/apache/http/client/methods/HttpRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" since="1">
+		<extends name="org/apache/http/client/methods/HttpRequestBase" />
+		<implements name="org/apache/http/HttpEntityEnclosingRequest" />
+		<method name="&lt;init>()V" />
+		<method name="expectContinue()Z" />
+		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
+		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpGet" since="1">
+		<extends name="org/apache/http/client/methods/HttpRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpHead" since="1">
+		<extends name="org/apache/http/client/methods/HttpRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpOptions" since="1">
+		<extends name="org/apache/http/client/methods/HttpRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getAllowedMethods(Lorg/apache/http/HttpResponse;)Ljava/util/Set;" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpPost" since="1">
+		<extends name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpPut" since="1">
+		<extends name="org/apache/http/client/methods/HttpEntityEnclosingRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpRequestBase" since="1">
+		<extends name="org/apache/http/message/AbstractHttpMessage" />
+		<implements name="org/apache/http/client/methods/AbortableHttpRequest" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/client/methods/HttpUriRequest" />
+		<method name="&lt;init>()V" />
+		<method name="abort()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
+		<method name="getURI()Ljava/net/URI;" />
+		<method name="isAborted()Z" />
+		<method name="setConnectionRequest(Lorg/apache/http/conn/ClientConnectionRequest;)V" />
+		<method name="setReleaseTrigger(Lorg/apache/http/conn/ConnectionReleaseTrigger;)V" />
+		<method name="setURI(Ljava/net/URI;)V" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpTrace" since="1">
+		<extends name="org/apache/http/client/methods/HttpRequestBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/net/URI;)V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<field name="METHOD_NAME" />
+	</class>
+	<class name="org/apache/http/client/methods/HttpUriRequest" since="1">
+		<implements name="org/apache/http/HttpRequest" />
+		<method name="abort()V" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<method name="getURI()Ljava/net/URI;" />
+		<method name="isAborted()Z" />
+	</class>
+	<class name="org/apache/http/client/params/AllClientPNames" since="1">
+		<implements name="org/apache/http/auth/params/AuthPNames" />
+		<implements name="org/apache/http/client/params/ClientPNames" />
+		<implements name="org/apache/http/conn/params/ConnConnectionPNames" />
+		<implements name="org/apache/http/conn/params/ConnManagerPNames" />
+		<implements name="org/apache/http/conn/params/ConnRoutePNames" />
+		<implements name="org/apache/http/cookie/params/CookieSpecPNames" />
+		<implements name="org/apache/http/params/CoreConnectionPNames" />
+		<implements name="org/apache/http/params/CoreProtocolPNames" />
+	</class>
+	<class name="org/apache/http/client/params/AuthPolicy" since="1">
+		<extends name="java/lang/Object" />
+		<field name="BASIC" />
+		<field name="DIGEST" />
+		<field name="NTLM" />
+	</class>
+	<class name="org/apache/http/client/params/ClientPNames" since="1">
+		<field name="ALLOW_CIRCULAR_REDIRECTS" />
+		<field name="CONNECTION_MANAGER_FACTORY" />
+		<field name="CONNECTION_MANAGER_FACTORY_CLASS_NAME" />
+		<field name="COOKIE_POLICY" />
+		<field name="DEFAULT_HEADERS" />
+		<field name="DEFAULT_HOST" />
+		<field name="HANDLE_AUTHENTICATION" />
+		<field name="HANDLE_REDIRECTS" />
+		<field name="MAX_REDIRECTS" />
+		<field name="REJECT_RELATIVE_REDIRECT" />
+		<field name="VIRTUAL_HOST" />
+	</class>
+	<class name="org/apache/http/client/params/ClientParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setAllowCircularRedirects(Z)V" />
+		<method name="setConnectionManagerFactory(Lorg/apache/http/conn/ClientConnectionManagerFactory;)V" />
+		<method name="setConnectionManagerFactoryClassName(Ljava/lang/String;)V" />
+		<method name="setCookiePolicy(Ljava/lang/String;)V" />
+		<method name="setDefaultHeaders(Ljava/util/Collection;)V" />
+		<method name="setDefaultHost(Lorg/apache/http/HttpHost;)V" />
+		<method name="setHandleAuthentication(Z)V" />
+		<method name="setHandleRedirects(Z)V" />
+		<method name="setMaxRedirects(I)V" />
+		<method name="setRejectRelativeRedirect(Z)V" />
+		<method name="setVirtualHost(Lorg/apache/http/HttpHost;)V" />
+	</class>
+	<class name="org/apache/http/client/params/CookiePolicy" since="1">
+		<extends name="java/lang/Object" />
+		<field name="BEST_MATCH" />
+		<field name="BROWSER_COMPATIBILITY" />
+		<field name="NETSCAPE" />
+		<field name="RFC_2109" />
+		<field name="RFC_2965" />
+	</class>
+	<class name="org/apache/http/client/params/HttpClientParams" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getCookiePolicy(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
+		<method name="isAuthenticating(Lorg/apache/http/params/HttpParams;)Z" />
+		<method name="isRedirecting(Lorg/apache/http/params/HttpParams;)Z" />
+		<method name="setAuthenticating(Lorg/apache/http/params/HttpParams;Z)V" />
+		<method name="setCookiePolicy(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
+		<method name="setRedirecting(Lorg/apache/http/params/HttpParams;Z)V" />
+	</class>
+	<class name="org/apache/http/client/protocol/ClientContext" since="1">
+		<field name="AUTHSCHEME_REGISTRY" />
+		<field name="AUTH_SCHEME_PREF" />
+		<field name="COOKIESPEC_REGISTRY" />
+		<field name="COOKIE_ORIGIN" />
+		<field name="COOKIE_SPEC" />
+		<field name="COOKIE_STORE" />
+		<field name="CREDS_PROVIDER" />
+		<field name="PROXY_AUTH_STATE" />
+		<field name="TARGET_AUTH_STATE" />
+		<field name="USER_TOKEN" />
+	</class>
+	<class name="org/apache/http/client/protocol/ClientContextConfigurer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/protocol/ClientContext" />
+		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="setAuthSchemePref(Ljava/util/List;)V" />
+		<method name="setAuthSchemeRegistry(Lorg/apache/http/auth/AuthSchemeRegistry;)V" />
+		<method name="setCookieSpecRegistry(Lorg/apache/http/cookie/CookieSpecRegistry;)V" />
+		<method name="setCookieStore(Lorg/apache/http/client/CookieStore;)V" />
+		<method name="setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V" />
+	</class>
+	<class name="org/apache/http/client/protocol/RequestAddCookies" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/client/protocol/RequestDefaultHeaders" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/client/protocol/RequestProxyAuthentication" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/client/protocol/RequestTargetAuthentication" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/client/protocol/ResponseProcessCookies" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpResponseInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/client/utils/CloneUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="clone(Ljava/lang/Object;)Ljava/lang/Object;" />
+	</class>
+	<class name="org/apache/http/client/utils/URIUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="createURI(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/net/URI;" />
+		<method name="resolve(Ljava/net/URI;Ljava/lang/String;)Ljava/net/URI;" />
+		<method name="resolve(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI;" />
+		<method name="rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;)Ljava/net/URI;" />
+		<method name="rewriteURI(Ljava/net/URI;Lorg/apache/http/HttpHost;Z)Ljava/net/URI;" />
+	</class>
+	<class name="org/apache/http/client/utils/URLEncodedUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="format(Ljava/util/List;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="isEncoded(Lorg/apache/http/HttpEntity;)Z" />
+		<method name="parse(Ljava/net/URI;Ljava/lang/String;)Ljava/util/List;" />
+		<method name="parse(Ljava/util/List;Ljava/util/Scanner;Ljava/lang/String;)V" />
+		<method name="parse(Lorg/apache/http/HttpEntity;)Ljava/util/List;" />
+		<field name="CONTENT_TYPE" />
+	</class>
+	<class name="org/apache/http/conn/BasicEofSensorWatcher" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/EofSensorWatcher" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ManagedClientConnection;Z)V" />
+		<method name="eofDetected(Ljava/io/InputStream;)Z" />
+		<method name="streamAbort(Ljava/io/InputStream;)Z" />
+		<method name="streamClosed(Ljava/io/InputStream;)Z" />
+		<field name="attemptReuse" />
+		<field name="managedConn" />
+	</class>
+	<class name="org/apache/http/conn/BasicManagedEntity" since="1">
+		<extends name="org/apache/http/entity/HttpEntityWrapper" />
+		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
+		<implements name="org/apache/http/conn/EofSensorWatcher" />
+		<method name="&lt;init>(Lorg/apache/http/HttpEntity;Lorg/apache/http/conn/ManagedClientConnection;Z)V" />
+		<method name="abortConnection()V" />
+		<method name="eofDetected(Ljava/io/InputStream;)Z" />
+		<method name="releaseConnection()V" />
+		<method name="releaseManagedConnection()V" />
+		<method name="streamAbort(Ljava/io/InputStream;)Z" />
+		<method name="streamClosed(Ljava/io/InputStream;)Z" />
+		<field name="attemptReuse" />
+		<field name="managedConn" />
+	</class>
+	<class name="org/apache/http/conn/ClientConnectionManager" since="1">
+		<method name="closeExpiredConnections()V" />
+		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry;" />
+		<method name="releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest;" />
+		<method name="shutdown()V" />
+	</class>
+	<class name="org/apache/http/conn/ClientConnectionManagerFactory" since="1">
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionManager;" />
+	</class>
+	<class name="org/apache/http/conn/ClientConnectionOperator" since="1">
+		<method name="createConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
+		<method name="openConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="updateSecureConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/conn/ClientConnectionRequest" since="1">
+		<method name="abortRequest()V" />
+		<method name="getConnection(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/conn/ManagedClientConnection;" />
+	</class>
+	<class name="org/apache/http/conn/ConnectTimeoutException" since="1">
+		<extends name="java/io/InterruptedIOException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/conn/ConnectionKeepAliveStrategy" since="1">
+		<method name="getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J" />
+	</class>
+	<class name="org/apache/http/conn/ConnectionPoolTimeoutException" since="1">
+		<extends name="org/apache/http/conn/ConnectTimeoutException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/conn/ConnectionReleaseTrigger" since="1">
+		<method name="abortConnection()V" />
+		<method name="releaseConnection()V" />
+	</class>
+	<class name="org/apache/http/conn/EofSensorInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
+		<method name="&lt;init>(Ljava/io/InputStream;Lorg/apache/http/conn/EofSensorWatcher;)V" />
+		<method name="abortConnection()V" />
+		<method name="checkAbort()V" />
+		<method name="checkClose()V" />
+		<method name="checkEOF(I)V" />
+		<method name="isReadAllowed()Z" />
+		<method name="read()I" />
+		<method name="releaseConnection()V" />
+		<field name="wrappedStream" />
+	</class>
+	<class name="org/apache/http/conn/EofSensorWatcher" since="1">
+		<method name="eofDetected(Ljava/io/InputStream;)Z" />
+		<method name="streamAbort(Ljava/io/InputStream;)Z" />
+		<method name="streamClosed(Ljava/io/InputStream;)Z" />
+	</class>
+	<class name="org/apache/http/conn/HttpHostConnectException" since="1">
+		<extends name="java/net/ConnectException" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/ConnectException;)V" />
+		<method name="getHost()Lorg/apache/http/HttpHost;" />
+	</class>
+	<class name="org/apache/http/conn/ManagedClientConnection" since="1">
+		<implements name="org/apache/http/conn/ConnectionReleaseTrigger" />
+		<implements name="org/apache/http/HttpClientConnection" />
+		<implements name="org/apache/http/HttpInetConnection" />
+		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="getSSLSession()Ljavax/net/ssl/SSLSession;" />
+		<method name="getState()Ljava/lang/Object;" />
+		<method name="isMarkedReusable()Z" />
+		<method name="isSecure()Z" />
+		<method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="markReusable()V" />
+		<method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setIdleDuration(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="setState(Ljava/lang/Object;)V" />
+		<method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
+		<method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V" />
+		<method name="unmarkReusable()V" />
+	</class>
+	<class name="org/apache/http/conn/MultihomePlainSocketFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/scheme/SocketFactory" />
+		<method name="connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket;" />
+		<method name="createSocket()Ljava/net/Socket;" />
+		<method name="getSocketFactory()Lorg/apache/http/conn/MultihomePlainSocketFactory;" />
+		<method name="isSecure(Ljava/net/Socket;)Z" />
+	</class>
+	<class name="org/apache/http/conn/OperatedClientConnection" since="1">
+		<implements name="org/apache/http/HttpClientConnection" />
+		<implements name="org/apache/http/HttpInetConnection" />
+		<method name="getSocket()Ljava/net/Socket;" />
+		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
+		<method name="isSecure()Z" />
+		<method name="openCompleted(ZLorg/apache/http/params/HttpParams;)V" />
+		<method name="opening(Ljava/net/Socket;Lorg/apache/http/HttpHost;)V" />
+		<method name="update(Ljava/net/Socket;Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnConnectionPNames" since="1">
+		<field name="MAX_STATUS_LINE_GARBAGE" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnConnectionParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setMaxStatusLineGarbage(I)V" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnManagerPNames" since="1">
+		<field name="MAX_CONNECTIONS_PER_ROUTE" />
+		<field name="MAX_TOTAL_CONNECTIONS" />
+		<field name="TIMEOUT" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnManagerParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setConnectionsPerRoute(Lorg/apache/http/conn/params/ConnPerRouteBean;)V" />
+		<method name="setMaxTotalConnections(I)V" />
+		<method name="setTimeout(J)V" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnManagerParams" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/params/ConnManagerPNames" />
+		<method name="&lt;init>()V" />
+		<method name="getMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/params/ConnPerRoute;" />
+		<method name="getMaxTotalConnections(Lorg/apache/http/params/HttpParams;)I" />
+		<method name="getTimeout(Lorg/apache/http/params/HttpParams;)J" />
+		<method name="setMaxConnectionsPerRoute(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/params/ConnPerRoute;)V" />
+		<method name="setMaxTotalConnections(Lorg/apache/http/params/HttpParams;I)V" />
+		<method name="setTimeout(Lorg/apache/http/params/HttpParams;J)V" />
+		<field name="DEFAULT_MAX_TOTAL_CONNECTIONS" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnPerRoute" since="1">
+		<method name="getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnPerRouteBean" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/params/ConnPerRoute" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(I)V" />
+		<method name="getDefaultMax()I" />
+		<method name="getMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;)I" />
+		<method name="setDefaultMaxPerRoute(I)V" />
+		<method name="setMaxForRoute(Lorg/apache/http/conn/routing/HttpRoute;I)V" />
+		<method name="setMaxForRoutes(Ljava/util/Map;)V" />
+		<field name="DEFAULT_MAX_CONNECTIONS_PER_ROUTE" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnRoutePNames" since="1">
+		<field name="DEFAULT_PROXY" />
+		<field name="FORCED_ROUTE" />
+		<field name="LOCAL_ADDRESS" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnRouteParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setDefaultProxy(Lorg/apache/http/HttpHost;)V" />
+		<method name="setForcedRoute(Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="setLocalAddress(Ljava/net/InetAddress;)V" />
+	</class>
+	<class name="org/apache/http/conn/params/ConnRouteParams" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/params/ConnRoutePNames" />
+		<method name="getDefaultProxy(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/HttpHost;" />
+		<method name="getForcedRoute(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="getLocalAddress(Lorg/apache/http/params/HttpParams;)Ljava/net/InetAddress;" />
+		<method name="setDefaultProxy(Lorg/apache/http/params/HttpParams;Lorg/apache/http/HttpHost;)V" />
+		<method name="setForcedRoute(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="setLocalAddress(Lorg/apache/http/params/HttpParams;Ljava/net/InetAddress;)V" />
+		<field name="NO_HOST" />
+		<field name="NO_ROUTE" />
+	</class>
+	<class name="org/apache/http/conn/routing/BasicRouteDirector" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/routing/HttpRouteDirector" />
+		<method name="&lt;init>()V" />
+		<method name="directStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
+		<method name="firstStep(Lorg/apache/http/conn/routing/RouteInfo;)I" />
+		<method name="nextStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
+		<method name="proxiedStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
+	</class>
+	<class name="org/apache/http/conn/routing/HttpRoute" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/conn/routing/RouteInfo" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;)V" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/HttpHost;Z)V" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Z)V" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;[Lorg/apache/http/HttpHost;ZLorg/apache/http/conn/routing/RouteInfo$TunnelType;Lorg/apache/http/conn/routing/RouteInfo$LayerType;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getHopCount()I" />
+		<method name="getHopTarget(I)Lorg/apache/http/HttpHost;" />
+		<method name="getLayerType()Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getProxyHost()Lorg/apache/http/HttpHost;" />
+		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
+		<method name="getTunnelType()Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
+		<method name="hashCode()I" />
+		<method name="isLayered()Z" />
+		<method name="isSecure()Z" />
+		<method name="isTunnelled()Z" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/conn/routing/HttpRouteDirector" since="1">
+		<method name="nextStep(Lorg/apache/http/conn/routing/RouteInfo;Lorg/apache/http/conn/routing/RouteInfo;)I" />
+		<field name="COMPLETE" />
+		<field name="CONNECT_PROXY" />
+		<field name="CONNECT_TARGET" />
+		<field name="LAYER_PROTOCOL" />
+		<field name="TUNNEL_PROXY" />
+		<field name="TUNNEL_TARGET" />
+		<field name="UNREACHABLE" />
+	</class>
+	<class name="org/apache/http/conn/routing/HttpRoutePlanner" since="1">
+		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
+	</class>
+	<class name="org/apache/http/conn/routing/RouteInfo" since="1">
+		<method name="getHopCount()I" />
+		<method name="getHopTarget(I)Lorg/apache/http/HttpHost;" />
+		<method name="getLayerType()Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getProxyHost()Lorg/apache/http/HttpHost;" />
+		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
+		<method name="getTunnelType()Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
+		<method name="isLayered()Z" />
+		<method name="isSecure()Z" />
+		<method name="isTunnelled()Z" />
+	</class>
+	<class name="org/apache/http/conn/routing/RouteInfo$LayerType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
+		<method name="values()[Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
+		<field name="LAYERED" />
+		<field name="PLAIN" />
+	</class>
+	<class name="org/apache/http/conn/routing/RouteInfo$TunnelType" since="1">
+		<extends name="java/lang/Enum" />
+		<method name="valueOf(Ljava/lang/String;)Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
+		<method name="values()[Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
+		<field name="PLAIN" />
+		<field name="TUNNELLED" />
+	</class>
+	<class name="org/apache/http/conn/routing/RouteTracker" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/conn/routing/RouteInfo" />
+		<method name="&lt;init>(Lorg/apache/http/HttpHost;Ljava/net/InetAddress;)V" />
+		<method name="&lt;init>(Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="connectProxy(Lorg/apache/http/HttpHost;Z)V" />
+		<method name="connectTarget(Z)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getHopCount()I" />
+		<method name="getHopTarget(I)Lorg/apache/http/HttpHost;" />
+		<method name="getLayerType()Lorg/apache/http/conn/routing/RouteInfo$LayerType;" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getProxyHost()Lorg/apache/http/HttpHost;" />
+		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
+		<method name="getTunnelType()Lorg/apache/http/conn/routing/RouteInfo$TunnelType;" />
+		<method name="hashCode()I" />
+		<method name="isConnected()Z" />
+		<method name="isLayered()Z" />
+		<method name="isSecure()Z" />
+		<method name="isTunnelled()Z" />
+		<method name="layerProtocol(Z)V" />
+		<method name="toRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="tunnelProxy(Lorg/apache/http/HttpHost;Z)V" />
+		<method name="tunnelTarget(Z)V" />
+	</class>
+	<class name="org/apache/http/conn/scheme/HostNameResolver" since="1">
+		<method name="resolve(Ljava/lang/String;)Ljava/net/InetAddress;" />
+	</class>
+	<class name="org/apache/http/conn/scheme/LayeredSocketFactory" since="1">
+		<implements name="org/apache/http/conn/scheme/SocketFactory" />
+		<method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
+	</class>
+	<class name="org/apache/http/conn/scheme/PlainSocketFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/scheme/SocketFactory" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/apache/http/conn/scheme/HostNameResolver;)V" />
+		<method name="connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket;" />
+		<method name="createSocket()Ljava/net/Socket;" />
+		<method name="getSocketFactory()Lorg/apache/http/conn/scheme/PlainSocketFactory;" />
+		<method name="isSecure(Ljava/net/Socket;)Z" />
+	</class>
+	<class name="org/apache/http/conn/scheme/Scheme" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Lorg/apache/http/conn/scheme/SocketFactory;I)V" />
+		<method name="equals(Ljava/lang/Object;)Z" />
+		<method name="getDefaultPort()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getSocketFactory()Lorg/apache/http/conn/scheme/SocketFactory;" />
+		<method name="isLayered()Z" />
+		<method name="resolvePort(I)I" />
+		<method name="toString()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/conn/scheme/SchemeRegistry" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="get(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;" />
+		<method name="getScheme(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;" />
+		<method name="getScheme(Lorg/apache/http/HttpHost;)Lorg/apache/http/conn/scheme/Scheme;" />
+		<method name="getSchemeNames()Ljava/util/List;" />
+		<method name="register(Lorg/apache/http/conn/scheme/Scheme;)Lorg/apache/http/conn/scheme/Scheme;" />
+		<method name="setItems(Ljava/util/Map;)V" />
+		<method name="unregister(Ljava/lang/String;)Lorg/apache/http/conn/scheme/Scheme;" />
+	</class>
+	<class name="org/apache/http/conn/scheme/SocketFactory" since="1">
+		<method name="connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket;" />
+		<method name="createSocket()Ljava/net/Socket;" />
+		<method name="isSecure(Ljava/net/Socket;)Z" />
+	</class>
+	<class name="org/apache/http/conn/ssl/AbstractVerifier" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/ssl/X509HostnameVerifier" />
+		<method name="&lt;init>()V" />
+		<method name="acceptableCountryWildcard(Ljava/lang/String;)Z" />
+		<method name="countDots(Ljava/lang/String;)I" />
+		<method name="getCNs(Ljava/security/cert/X509Certificate;)[Ljava/lang/String;" />
+		<method name="getDNSSubjectAlts(Ljava/security/cert/X509Certificate;)[Ljava/lang/String;" />
+		<method name="verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)V" />
+		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z" />
+		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V" />
+		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Z)V" />
+	</class>
+	<class name="org/apache/http/conn/ssl/AllowAllHostnameVerifier" since="1">
+		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
+		<method name="&lt;init>()V" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/conn/ssl/BrowserCompatHostnameVerifier" since="1">
+		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
+		<method name="&lt;init>()V" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/conn/ssl/SSLSocketFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/scheme/LayeredSocketFactory" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/security/KeyStore;Ljava/lang/String;Ljava/security/KeyStore;Ljava/security/SecureRandom;Lorg/apache/http/conn/scheme/HostNameResolver;)V" />
+		<method name="&lt;init>(Ljava/security/KeyStore;)V" />
+		<method name="&lt;init>(Ljava/security/KeyStore;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/security/KeyStore;Ljava/lang/String;Ljava/security/KeyStore;)V" />
+		<method name="connectSocket(Ljava/net/Socket;Ljava/lang/String;ILjava/net/InetAddress;ILorg/apache/http/params/HttpParams;)Ljava/net/Socket;" />
+		<method name="createSocket()Ljava/net/Socket;" />
+		<method name="createSocket(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;" />
+		<method name="getHostnameVerifier()Lorg/apache/http/conn/ssl/X509HostnameVerifier;" />
+		<method name="getSocketFactory()Lorg/apache/http/conn/ssl/SSLSocketFactory;" />
+		<method name="isSecure(Ljava/net/Socket;)Z" />
+		<method name="setHostnameVerifier(Lorg/apache/http/conn/ssl/X509HostnameVerifier;)V" />
+		<field name="ALLOW_ALL_HOSTNAME_VERIFIER" />
+		<field name="BROWSER_COMPATIBLE_HOSTNAME_VERIFIER" />
+		<field name="SSL" />
+		<field name="SSLV2" />
+		<field name="STRICT_HOSTNAME_VERIFIER" />
+		<field name="TLS" />
+	</class>
+	<class name="org/apache/http/conn/ssl/StrictHostnameVerifier" since="1">
+		<extends name="org/apache/http/conn/ssl/AbstractVerifier" />
+		<method name="&lt;init>()V" />
+		<method name="toString()Ljava/lang/String;" />
+		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/conn/ssl/X509HostnameVerifier" since="1">
+		<implements name="javax/net/ssl/HostnameVerifier" />
+		<method name="verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)V" />
+		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z" />
+		<method name="verify(Ljava/lang/String;Ljavax/net/ssl/SSLSocket;)V" />
+		<method name="verify(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/conn/util/InetAddressUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="isIPv4Address(Ljava/lang/String;)Z" />
+		<method name="isIPv6Address(Ljava/lang/String;)Z" />
+		<method name="isIPv6HexCompressedAddress(Ljava/lang/String;)Z" />
+		<method name="isIPv6StdAddress(Ljava/lang/String;)Z" />
+	</class>
+	<class name="org/apache/http/cookie/ClientCookie" since="1">
+		<implements name="org/apache/http/cookie/Cookie" />
+		<method name="containsAttribute(Ljava/lang/String;)Z" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
+		<field name="COMMENTURL_ATTR" />
+		<field name="COMMENT_ATTR" />
+		<field name="DISCARD_ATTR" />
+		<field name="DOMAIN_ATTR" />
+		<field name="EXPIRES_ATTR" />
+		<field name="MAX_AGE_ATTR" />
+		<field name="PATH_ATTR" />
+		<field name="PORT_ATTR" />
+		<field name="SECURE_ATTR" />
+		<field name="VERSION_ATTR" />
+	</class>
+	<class name="org/apache/http/cookie/Cookie" since="1">
+		<method name="getComment()Ljava/lang/String;" />
+		<method name="getCommentURL()Ljava/lang/String;" />
+		<method name="getDomain()Ljava/lang/String;" />
+		<method name="getExpiryDate()Ljava/util/Date;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPorts()[I" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="getVersion()I" />
+		<method name="isExpired(Ljava/util/Date;)Z" />
+		<method name="isPersistent()Z" />
+		<method name="isSecure()Z" />
+	</class>
+	<class name="org/apache/http/cookie/CookieAttributeHandler" since="1">
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/cookie/CookieIdentityComparator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Comparator" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="compare(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/Cookie;)I" />
+	</class>
+	<class name="org/apache/http/cookie/CookieOrigin" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;ILjava/lang/String;Z)V" />
+		<method name="getHost()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPort()I" />
+		<method name="isSecure()Z" />
+	</class>
+	<class name="org/apache/http/cookie/CookiePathComparator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/util/Comparator" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="compare(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/Cookie;)I" />
+	</class>
+	<class name="org/apache/http/cookie/CookieSpec" since="1">
+		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
+		<method name="getVersion()I" />
+		<method name="getVersionHeader()Lorg/apache/http/Header;" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/cookie/CookieSpecFactory" since="1">
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+	</class>
+	<class name="org/apache/http/cookie/CookieSpecRegistry" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getCookieSpec(Ljava/lang/String;)Lorg/apache/http/cookie/CookieSpec;" />
+		<method name="getCookieSpec(Ljava/lang/String;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+		<method name="getSpecNames()Ljava/util/List;" />
+		<method name="register(Ljava/lang/String;Lorg/apache/http/cookie/CookieSpecFactory;)V" />
+		<method name="setItems(Ljava/util/Map;)V" />
+		<method name="unregister(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/cookie/MalformedCookieException" since="1">
+		<extends name="org/apache/http/ProtocolException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/cookie/SM" since="1">
+		<field name="COOKIE" />
+		<field name="COOKIE2" />
+		<field name="SET_COOKIE" />
+		<field name="SET_COOKIE2" />
+	</class>
+	<class name="org/apache/http/cookie/SetCookie" since="1">
+		<implements name="org/apache/http/cookie/Cookie" />
+		<method name="setComment(Ljava/lang/String;)V" />
+		<method name="setDomain(Ljava/lang/String;)V" />
+		<method name="setExpiryDate(Ljava/util/Date;)V" />
+		<method name="setPath(Ljava/lang/String;)V" />
+		<method name="setSecure(Z)V" />
+		<method name="setValue(Ljava/lang/String;)V" />
+		<method name="setVersion(I)V" />
+	</class>
+	<class name="org/apache/http/cookie/SetCookie2" since="1">
+		<implements name="org/apache/http/cookie/SetCookie" />
+		<method name="setCommentURL(Ljava/lang/String;)V" />
+		<method name="setDiscard(Z)V" />
+		<method name="setPorts([I)V" />
+	</class>
+	<class name="org/apache/http/cookie/params/CookieSpecPNames" since="1">
+		<field name="DATE_PATTERNS" />
+		<field name="SINGLE_COOKIE_HEADER" />
+	</class>
+	<class name="org/apache/http/cookie/params/CookieSpecParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setDatePatterns(Ljava/util/Collection;)V" />
+		<method name="setSingleHeader(Z)V" />
+	</class>
+	<class name="org/apache/http/entity/AbstractHttpEntity" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpEntity" />
+		<method name="&lt;init>()V" />
+		<method name="consumeContent()V" />
+		<method name="getContentEncoding()Lorg/apache/http/Header;" />
+		<method name="getContentType()Lorg/apache/http/Header;" />
+		<method name="isChunked()Z" />
+		<method name="setChunked(Z)V" />
+		<method name="setContentEncoding(Ljava/lang/String;)V" />
+		<method name="setContentEncoding(Lorg/apache/http/Header;)V" />
+		<method name="setContentType(Ljava/lang/String;)V" />
+		<method name="setContentType(Lorg/apache/http/Header;)V" />
+		<field name="chunked" />
+		<field name="contentEncoding" />
+		<field name="contentType" />
+	</class>
+	<class name="org/apache/http/entity/BasicHttpEntity" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<method name="&lt;init>()V" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="setContent(Ljava/io/InputStream;)V" />
+		<method name="setContentLength(J)V" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="org/apache/http/entity/BufferedHttpEntity" since="1">
+		<extends name="org/apache/http/entity/HttpEntityWrapper" />
+		<method name="&lt;init>(Lorg/apache/http/HttpEntity;)V" />
+	</class>
+	<class name="org/apache/http/entity/ByteArrayEntity" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>([B)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+		<field name="content" />
+	</class>
+	<class name="org/apache/http/entity/ContentLengthStrategy" since="1">
+		<method name="determineLength(Lorg/apache/http/HttpMessage;)J" />
+		<field name="CHUNKED" />
+		<field name="IDENTITY" />
+	</class>
+	<class name="org/apache/http/entity/ContentProducer" since="1">
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="org/apache/http/entity/EntityTemplate" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<method name="&lt;init>(Lorg/apache/http/entity/ContentProducer;)V" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="org/apache/http/entity/FileEntity" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>(Ljava/io/File;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+		<field name="file" />
+	</class>
+	<class name="org/apache/http/entity/HttpEntityWrapper" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpEntity" />
+		<method name="&lt;init>(Lorg/apache/http/HttpEntity;)V" />
+		<method name="consumeContent()V" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentEncoding()Lorg/apache/http/Header;" />
+		<method name="getContentLength()J" />
+		<method name="getContentType()Lorg/apache/http/Header;" />
+		<method name="isChunked()Z" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+		<field name="wrappedEntity" />
+	</class>
+	<class name="org/apache/http/entity/InputStreamEntity" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<method name="&lt;init>(Ljava/io/InputStream;J)V" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="org/apache/http/entity/SerializableEntity" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<method name="&lt;init>(Ljava/io/Serializable;Z)V" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+	</class>
+	<class name="org/apache/http/entity/StringEntity" since="1">
+		<extends name="org/apache/http/entity/AbstractHttpEntity" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getContent()Ljava/io/InputStream;" />
+		<method name="getContentLength()J" />
+		<method name="isRepeatable()Z" />
+		<method name="isStreaming()Z" />
+		<method name="writeTo(Ljava/io/OutputStream;)V" />
+		<field name="content" />
+	</class>
+	<class name="org/apache/http/impl/AbstractHttpClientConnection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpClientConnection" />
+		<method name="&lt;init>()V" />
+		<method name="assertOpen()V" />
+		<method name="createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer;" />
+		<method name="createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer;" />
+		<method name="createHttpResponseFactory()Lorg/apache/http/HttpResponseFactory;" />
+		<method name="createRequestWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter;" />
+		<method name="createResponseParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser;" />
+		<method name="doFlush()V" />
+		<method name="flush()V" />
+		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
+		<method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="isResponseAvailable(I)Z" />
+		<method name="isStale()Z" />
+		<method name="receiveResponseEntity(Lorg/apache/http/HttpResponse;)V" />
+		<method name="receiveResponseHeader()Lorg/apache/http/HttpResponse;" />
+		<method name="sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
+		<method name="sendRequestHeader(Lorg/apache/http/HttpRequest;)V" />
+	</class>
+	<class name="org/apache/http/impl/AbstractHttpServerConnection" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpServerConnection" />
+		<method name="&lt;init>()V" />
+		<method name="assertOpen()V" />
+		<method name="createEntityDeserializer()Lorg/apache/http/impl/entity/EntityDeserializer;" />
+		<method name="createEntitySerializer()Lorg/apache/http/impl/entity/EntitySerializer;" />
+		<method name="createHttpRequestFactory()Lorg/apache/http/HttpRequestFactory;" />
+		<method name="createRequestParser(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpRequestFactory;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageParser;" />
+		<method name="createResponseWriter(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/io/HttpMessageWriter;" />
+		<method name="doFlush()V" />
+		<method name="flush()V" />
+		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
+		<method name="init(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="isStale()Z" />
+		<method name="receiveRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
+		<method name="receiveRequestHeader()Lorg/apache/http/HttpRequest;" />
+		<method name="sendResponseEntity(Lorg/apache/http/HttpResponse;)V" />
+		<method name="sendResponseHeader(Lorg/apache/http/HttpResponse;)V" />
+	</class>
+	<class name="org/apache/http/impl/DefaultConnectionReuseStrategy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/ConnectionReuseStrategy" />
+		<method name="&lt;init>()V" />
+		<method name="createTokenIterator(Lorg/apache/http/HeaderIterator;)Lorg/apache/http/TokenIterator;" />
+		<method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/impl/DefaultHttpClientConnection" since="1">
+		<extends name="org/apache/http/impl/SocketHttpClientConnection" />
+		<method name="&lt;init>()V" />
+		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/impl/DefaultHttpRequestFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newHttpRequest(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/HttpRequest;" />
+		<method name="newHttpRequest(Lorg/apache/http/RequestLine;)Lorg/apache/http/HttpRequest;" />
+	</class>
+	<class name="org/apache/http/impl/DefaultHttpResponseFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpResponseFactory" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/apache/http/ReasonPhraseCatalog;)V" />
+		<method name="determineLocale(Lorg/apache/http/protocol/HttpContext;)Ljava/util/Locale;" />
+		<method name="newHttpResponse(Lorg/apache/http/ProtocolVersion;ILorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="newHttpResponse(Lorg/apache/http/StatusLine;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<field name="reasonCatalog" />
+	</class>
+	<class name="org/apache/http/impl/DefaultHttpServerConnection" since="1">
+		<extends name="org/apache/http/impl/SocketHttpServerConnection" />
+		<method name="&lt;init>()V" />
+		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/impl/EnglishReasonPhraseCatalog" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/ReasonPhraseCatalog" />
+		<method name="&lt;init>()V" />
+		<method name="getReason(ILjava/util/Locale;)Ljava/lang/String;" />
+		<field name="INSTANCE" />
+	</class>
+	<class name="org/apache/http/impl/HttpConnectionMetricsImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpConnectionMetrics" />
+		<method name="&lt;init>(Lorg/apache/http/io/HttpTransportMetrics;Lorg/apache/http/io/HttpTransportMetrics;)V" />
+		<method name="getMetric(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getReceivedBytesCount()J" />
+		<method name="getRequestCount()J" />
+		<method name="getResponseCount()J" />
+		<method name="getSentBytesCount()J" />
+		<method name="incrementRequestCount()V" />
+		<method name="incrementResponseCount()V" />
+		<method name="reset()V" />
+		<method name="setMetric(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<field name="RECEIVED_BYTES_COUNT" />
+		<field name="REQUEST_COUNT" />
+		<field name="RESPONSE_COUNT" />
+		<field name="SENT_BYTES_COUNT" />
+	</class>
+	<class name="org/apache/http/impl/NoConnectionReuseStrategy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/ConnectionReuseStrategy" />
+		<method name="&lt;init>()V" />
+		<method name="keepAlive(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/impl/SocketHttpClientConnection" since="1">
+		<extends name="org/apache/http/impl/AbstractHttpClientConnection" />
+		<implements name="org/apache/http/HttpInetConnection" />
+		<method name="&lt;init>()V" />
+		<method name="assertNotOpen()V" />
+		<method name="assertOpen()V" />
+		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="close()V" />
+		<method name="createSessionInputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer;" />
+		<method name="createSessionOutputBuffer(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer;" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
+		<method name="getRemotePort()I" />
+		<method name="getSocket()Ljava/net/Socket;" />
+		<method name="getSocketTimeout()I" />
+		<method name="isOpen()Z" />
+		<method name="setSocketTimeout(I)V" />
+		<method name="shutdown()V" />
+	</class>
+	<class name="org/apache/http/impl/SocketHttpServerConnection" since="1">
+		<extends name="org/apache/http/impl/AbstractHttpServerConnection" />
+		<implements name="org/apache/http/HttpInetConnection" />
+		<method name="&lt;init>()V" />
+		<method name="assertNotOpen()V" />
+		<method name="assertOpen()V" />
+		<method name="bind(Ljava/net/Socket;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="close()V" />
+		<method name="createHttpDataReceiver(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionInputBuffer;" />
+		<method name="createHttpDataTransmitter(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)Lorg/apache/http/io/SessionOutputBuffer;" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
+		<method name="getRemotePort()I" />
+		<method name="getSocket()Ljava/net/Socket;" />
+		<method name="getSocketTimeout()I" />
+		<method name="isOpen()Z" />
+		<method name="setSocketTimeout(I)V" />
+		<method name="shutdown()V" />
+	</class>
+	<class name="org/apache/http/impl/auth/AuthSchemeBase" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/auth/AuthScheme" />
+		<method name="&lt;init>()V" />
+		<method name="isProxy()Z" />
+		<method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V" />
+		<method name="processChallenge(Lorg/apache/http/Header;)V" />
+	</class>
+	<class name="org/apache/http/impl/auth/BasicScheme" since="1">
+		<extends name="org/apache/http/impl/auth/RFC2617Scheme" />
+		<method name="&lt;init>()V" />
+		<method name="authenticate(Lorg/apache/http/auth/Credentials;Ljava/lang/String;Z)Lorg/apache/http/Header;" />
+		<method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
+		<method name="getSchemeName()Ljava/lang/String;" />
+		<method name="isComplete()Z" />
+		<method name="isConnectionBased()Z" />
+	</class>
+	<class name="org/apache/http/impl/auth/BasicSchemeFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/auth/AuthSchemeFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
+	</class>
+	<class name="org/apache/http/impl/auth/DigestScheme" since="1">
+		<extends name="org/apache/http/impl/auth/RFC2617Scheme" />
+		<method name="&lt;init>()V" />
+		<method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
+		<method name="createCnonce()Ljava/lang/String;" />
+		<method name="getSchemeName()Ljava/lang/String;" />
+		<method name="isComplete()Z" />
+		<method name="isConnectionBased()Z" />
+		<method name="overrideParamter(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/auth/DigestSchemeFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/auth/AuthSchemeFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/auth/AuthScheme;" />
+	</class>
+	<class name="org/apache/http/impl/auth/NTLMEngine" since="1">
+		<method name="generateType1Msg(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="generateType3Msg(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/impl/auth/NTLMEngineException" since="1">
+		<extends name="org/apache/http/auth/AuthenticationException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/impl/auth/NTLMScheme" since="1">
+		<extends name="org/apache/http/impl/auth/AuthSchemeBase" />
+		<method name="&lt;init>(Lorg/apache/http/impl/auth/NTLMEngine;)V" />
+		<method name="authenticate(Lorg/apache/http/auth/Credentials;Lorg/apache/http/HttpRequest;)Lorg/apache/http/Header;" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getRealm()Ljava/lang/String;" />
+		<method name="getSchemeName()Ljava/lang/String;" />
+		<method name="isComplete()Z" />
+		<method name="isConnectionBased()Z" />
+		<method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V" />
+	</class>
+	<class name="org/apache/http/impl/auth/RFC2617Scheme" since="1">
+		<extends name="org/apache/http/impl/auth/AuthSchemeBase" />
+		<method name="&lt;init>()V" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getParameters()Ljava/util/Map;" />
+		<method name="getRealm()Ljava/lang/String;" />
+		<method name="parseChallenge(Lorg/apache/http/util/CharArrayBuffer;II)V" />
+	</class>
+	<class name="org/apache/http/impl/auth/UnsupportedDigestAlgorithmException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/impl/client/AbstractAuthenticationHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/AuthenticationHandler" />
+		<method name="&lt;init>()V" />
+		<method name="getAuthPreferences()Ljava/util/List;" />
+		<method name="parseChallenges([Lorg/apache/http/Header;)Ljava/util/Map;" />
+		<method name="selectScheme(Ljava/util/Map;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/auth/AuthScheme;" />
+	</class>
+	<class name="org/apache/http/impl/client/AbstractHttpClient" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/HttpClient" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
+		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
+		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
+		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
+		<method name="clearRequestInterceptors()V" />
+		<method name="clearResponseInterceptors()V" />
+		<method name="createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry;" />
+		<method name="createClientConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
+		<method name="createClientRequestDirector(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)Lorg/apache/http/client/RequestDirector;" />
+		<method name="createConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;" />
+		<method name="createConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;" />
+		<method name="createCookieSpecRegistry()Lorg/apache/http/cookie/CookieSpecRegistry;" />
+		<method name="createCookieStore()Lorg/apache/http/client/CookieStore;" />
+		<method name="createCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;" />
+		<method name="createHttpContext()Lorg/apache/http/protocol/HttpContext;" />
+		<method name="createHttpParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="createHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;" />
+		<method name="createHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;" />
+		<method name="createHttpRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;" />
+		<method name="createProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
+		<method name="createRedirectHandler()Lorg/apache/http/client/RedirectHandler;" />
+		<method name="createRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;" />
+		<method name="createTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
+		<method name="createUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;" />
+		<method name="determineParams(Lorg/apache/http/HttpRequest;)Lorg/apache/http/params/HttpParams;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;)LT;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;)LT;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/client/ResponseHandler;Lorg/apache/http/protocol/HttpContext;)LT;" />
+		<method name="execute(Lorg/apache/http/client/methods/HttpUriRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="getAuthSchemes()Lorg/apache/http/auth/AuthSchemeRegistry;" />
+		<method name="getConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;" />
+		<method name="getConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
+		<method name="getConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;" />
+		<method name="getCookieSpecs()Lorg/apache/http/cookie/CookieSpecRegistry;" />
+		<method name="getCookieStore()Lorg/apache/http/client/CookieStore;" />
+		<method name="getCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;" />
+		<method name="getHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;" />
+		<method name="getHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;" />
+		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="getProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
+		<method name="getRedirectHandler()Lorg/apache/http/client/RedirectHandler;" />
+		<method name="getRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;" />
+		<method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;" />
+		<method name="getRequestInterceptorCount()I" />
+		<method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;" />
+		<method name="getResponseInterceptorCount()I" />
+		<method name="getRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;" />
+		<method name="getTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
+		<method name="getUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;" />
+		<method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V" />
+		<method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V" />
+		<method name="setAuthSchemes(Lorg/apache/http/auth/AuthSchemeRegistry;)V" />
+		<method name="setCookieSpecs(Lorg/apache/http/cookie/CookieSpecRegistry;)V" />
+		<method name="setCookieStore(Lorg/apache/http/client/CookieStore;)V" />
+		<method name="setCredentialsProvider(Lorg/apache/http/client/CredentialsProvider;)V" />
+		<method name="setHttpRequestRetryHandler(Lorg/apache/http/client/HttpRequestRetryHandler;)V" />
+		<method name="setKeepAliveStrategy(Lorg/apache/http/conn/ConnectionKeepAliveStrategy;)V" />
+		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setProxyAuthenticationHandler(Lorg/apache/http/client/AuthenticationHandler;)V" />
+		<method name="setRedirectHandler(Lorg/apache/http/client/RedirectHandler;)V" />
+		<method name="setReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V" />
+		<method name="setRoutePlanner(Lorg/apache/http/conn/routing/HttpRoutePlanner;)V" />
+		<method name="setTargetAuthenticationHandler(Lorg/apache/http/client/AuthenticationHandler;)V" />
+		<method name="setUserTokenHandler(Lorg/apache/http/client/UserTokenHandler;)V" />
+	</class>
+	<class name="org/apache/http/impl/client/BasicCookieStore" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/CookieStore" />
+		<method name="&lt;init>()V" />
+		<method name="addCookie(Lorg/apache/http/cookie/Cookie;)V" />
+		<method name="addCookies([Lorg/apache/http/cookie/Cookie;)V" />
+		<method name="clear()V" />
+		<method name="clearExpired(Ljava/util/Date;)Z" />
+		<method name="getCookies()Ljava/util/List;" />
+	</class>
+	<class name="org/apache/http/impl/client/BasicCredentialsProvider" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/CredentialsProvider" />
+		<method name="&lt;init>()V" />
+		<method name="clear()V" />
+		<method name="getCredentials(Lorg/apache/http/auth/AuthScope;)Lorg/apache/http/auth/Credentials;" />
+		<method name="setCredentials(Lorg/apache/http/auth/AuthScope;Lorg/apache/http/auth/Credentials;)V" />
+	</class>
+	<class name="org/apache/http/impl/client/BasicResponseHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/ResponseHandler" />
+		<method name="&lt;init>()V" />
+		<method name="handleResponse(Lorg/apache/http/HttpResponse;)Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/impl/client/ClientParamsStack" since="1">
+		<extends name="org/apache/http/params/AbstractHttpParams" />
+		<method name="&lt;init>(Lorg/apache/http/impl/client/ClientParamsStack;)V" />
+		<method name="&lt;init>(Lorg/apache/http/impl/client/ClientParamsStack;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="copy()Lorg/apache/http/params/HttpParams;" />
+		<method name="getApplicationParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="getClientParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="getOverrideParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getRequestParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="removeParameter(Ljava/lang/String;)Z" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
+		<field name="applicationParams" />
+		<field name="clientParams" />
+		<field name="overrideParams" />
+		<field name="requestParams" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultConnectionKeepAliveStrategy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/ConnectionKeepAliveStrategy" />
+		<method name="&lt;init>()V" />
+		<method name="getKeepAliveDuration(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)J" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultHttpClient" since="1">
+		<extends name="org/apache/http/impl/client/AbstractHttpClient" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="createAuthSchemeRegistry()Lorg/apache/http/auth/AuthSchemeRegistry;" />
+		<method name="createClientConnectionManager()Lorg/apache/http/conn/ClientConnectionManager;" />
+		<method name="createConnectionKeepAliveStrategy()Lorg/apache/http/conn/ConnectionKeepAliveStrategy;" />
+		<method name="createConnectionReuseStrategy()Lorg/apache/http/ConnectionReuseStrategy;" />
+		<method name="createCookieSpecRegistry()Lorg/apache/http/cookie/CookieSpecRegistry;" />
+		<method name="createCookieStore()Lorg/apache/http/client/CookieStore;" />
+		<method name="createCredentialsProvider()Lorg/apache/http/client/CredentialsProvider;" />
+		<method name="createHttpContext()Lorg/apache/http/protocol/HttpContext;" />
+		<method name="createHttpParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="createHttpProcessor()Lorg/apache/http/protocol/BasicHttpProcessor;" />
+		<method name="createHttpRequestRetryHandler()Lorg/apache/http/client/HttpRequestRetryHandler;" />
+		<method name="createHttpRoutePlanner()Lorg/apache/http/conn/routing/HttpRoutePlanner;" />
+		<method name="createProxyAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
+		<method name="createRedirectHandler()Lorg/apache/http/client/RedirectHandler;" />
+		<method name="createRequestExecutor()Lorg/apache/http/protocol/HttpRequestExecutor;" />
+		<method name="createTargetAuthenticationHandler()Lorg/apache/http/client/AuthenticationHandler;" />
+		<method name="createUserTokenHandler()Lorg/apache/http/client/UserTokenHandler;" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultHttpRequestRetryHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/HttpRequestRetryHandler" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(IZ)V" />
+		<method name="getRetryCount()I" />
+		<method name="isRequestSentRetryEnabled()Z" />
+		<method name="retryRequest(Ljava/io/IOException;ILorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultProxyAuthenticationHandler" since="1">
+		<extends name="org/apache/http/impl/client/AbstractAuthenticationHandler" />
+		<method name="&lt;init>()V" />
+		<method name="getChallenges(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map;" />
+		<method name="isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultRedirectHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/RedirectHandler" />
+		<method name="&lt;init>()V" />
+		<method name="getLocationURI(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/net/URI;" />
+		<method name="isRedirectRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultRequestDirector" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/RequestDirector" />
+		<method name="&lt;init>(Lorg/apache/http/protocol/HttpRequestExecutor;Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/conn/ConnectionKeepAliveStrategy;Lorg/apache/http/conn/routing/HttpRoutePlanner;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/client/HttpRequestRetryHandler;Lorg/apache/http/client/RedirectHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/AuthenticationHandler;Lorg/apache/http/client/UserTokenHandler;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="createConnectRequest(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpRequest;" />
+		<method name="createTunnelToProxy(Lorg/apache/http/conn/routing/HttpRoute;ILorg/apache/http/protocol/HttpContext;)Z" />
+		<method name="createTunnelToTarget(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)Z" />
+		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="establishRoute(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="execute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="handleResponse(Lorg/apache/http/impl/client/RoutedRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/impl/client/RoutedRequest;" />
+		<method name="releaseConnection()V" />
+		<method name="rewriteRequestURI(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<field name="connManager" />
+		<field name="httpProcessor" />
+		<field name="keepAliveStrategy" />
+		<field name="managedConn" />
+		<field name="params" />
+		<field name="redirectHandler" />
+		<field name="requestExec" />
+		<field name="retryHandler" />
+		<field name="reuseStrategy" />
+		<field name="routePlanner" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultTargetAuthenticationHandler" since="1">
+		<extends name="org/apache/http/impl/client/AbstractAuthenticationHandler" />
+		<method name="&lt;init>()V" />
+		<method name="getChallenges(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Ljava/util/Map;" />
+		<method name="isAuthenticationRequested(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)Z" />
+	</class>
+	<class name="org/apache/http/impl/client/DefaultUserTokenHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/client/UserTokenHandler" />
+		<method name="&lt;init>()V" />
+		<method name="getUserToken(Lorg/apache/http/protocol/HttpContext;)Ljava/lang/Object;" />
+	</class>
+	<class name="org/apache/http/impl/client/EntityEnclosingRequestWrapper" since="1">
+		<extends name="org/apache/http/impl/client/RequestWrapper" />
+		<implements name="org/apache/http/HttpEntityEnclosingRequest" />
+		<method name="&lt;init>(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
+		<method name="expectContinue()Z" />
+		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
+		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
+	</class>
+	<class name="org/apache/http/impl/client/RedirectLocations" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="add(Ljava/net/URI;)V" />
+		<method name="contains(Ljava/net/URI;)Z" />
+		<method name="remove(Ljava/net/URI;)Z" />
+	</class>
+	<class name="org/apache/http/impl/client/RequestWrapper" since="1">
+		<extends name="org/apache/http/message/AbstractHttpMessage" />
+		<implements name="org/apache/http/client/methods/HttpUriRequest" />
+		<method name="&lt;init>(Lorg/apache/http/HttpRequest;)V" />
+		<method name="abort()V" />
+		<method name="getExecCount()I" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<method name="getOriginal()Lorg/apache/http/HttpRequest;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
+		<method name="getURI()Ljava/net/URI;" />
+		<method name="incrementExecCount()V" />
+		<method name="isAborted()Z" />
+		<method name="isRepeatable()Z" />
+		<method name="resetHeaders()V" />
+		<method name="setMethod(Ljava/lang/String;)V" />
+		<method name="setProtocolVersion(Lorg/apache/http/ProtocolVersion;)V" />
+		<method name="setURI(Ljava/net/URI;)V" />
+	</class>
+	<class name="org/apache/http/impl/client/RoutedRequest" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/impl/client/RequestWrapper;Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="getRequest()Lorg/apache/http/impl/client/RequestWrapper;" />
+		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+		<field name="request" />
+		<field name="route" />
+	</class>
+	<class name="org/apache/http/impl/client/TunnelRefusedException" since="1">
+		<extends name="org/apache/http/HttpException" />
+		<method name="&lt;init>(Ljava/lang/String;Lorg/apache/http/HttpResponse;)V" />
+		<method name="getResponse()Lorg/apache/http/HttpResponse;" />
+	</class>
+	<class name="org/apache/http/impl/conn/AbstractClientConnAdapter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/ManagedClientConnection" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/conn/OperatedClientConnection;)V" />
+		<method name="abortConnection()V" />
+		<method name="assertNotAborted()V" />
+		<method name="assertValid(Lorg/apache/http/conn/OperatedClientConnection;)V" />
+		<method name="detach()V" />
+		<method name="flush()V" />
+		<method name="getLocalAddress()Ljava/net/InetAddress;" />
+		<method name="getLocalPort()I" />
+		<method name="getManager()Lorg/apache/http/conn/ClientConnectionManager;" />
+		<method name="getMetrics()Lorg/apache/http/HttpConnectionMetrics;" />
+		<method name="getRemoteAddress()Ljava/net/InetAddress;" />
+		<method name="getRemotePort()I" />
+		<method name="getSSLSession()Ljavax/net/ssl/SSLSession;" />
+		<method name="getSocketTimeout()I" />
+		<method name="getWrappedConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
+		<method name="isMarkedReusable()Z" />
+		<method name="isOpen()Z" />
+		<method name="isResponseAvailable(I)Z" />
+		<method name="isSecure()Z" />
+		<method name="isStale()Z" />
+		<method name="markReusable()V" />
+		<method name="receiveResponseEntity(Lorg/apache/http/HttpResponse;)V" />
+		<method name="receiveResponseHeader()Lorg/apache/http/HttpResponse;" />
+		<method name="releaseConnection()V" />
+		<method name="sendRequestEntity(Lorg/apache/http/HttpEntityEnclosingRequest;)V" />
+		<method name="sendRequestHeader(Lorg/apache/http/HttpRequest;)V" />
+		<method name="setIdleDuration(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="setSocketTimeout(I)V" />
+		<method name="unmarkReusable()V" />
+	</class>
+	<class name="org/apache/http/impl/conn/AbstractPoolEntry" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="getState()Ljava/lang/Object;" />
+		<method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setState(Ljava/lang/Object;)V" />
+		<method name="shutdownEntry()V" />
+		<method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
+		<method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V" />
+		<field name="connOperator" />
+		<field name="connection" />
+		<field name="route" />
+		<field name="state" />
+		<field name="tracker" />
+	</class>
+	<class name="org/apache/http/impl/conn/AbstractPooledConnAdapter" since="1">
+		<extends name="org/apache/http/impl/conn/AbstractClientConnAdapter" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V" />
+		<method name="assertAttached()V" />
+		<method name="close()V" />
+		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="getState()Ljava/lang/Object;" />
+		<method name="layerProtocol(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="open(Lorg/apache/http/conn/routing/HttpRoute;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setState(Ljava/lang/Object;)V" />
+		<method name="shutdown()V" />
+		<method name="tunnelProxy(Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
+		<method name="tunnelTarget(ZLorg/apache/http/params/HttpParams;)V" />
+		<field name="poolEntry" />
+	</class>
+	<class name="org/apache/http/impl/conn/DefaultClientConnection" since="1">
+		<extends name="org/apache/http/impl/SocketHttpClientConnection" />
+		<implements name="org/apache/http/conn/OperatedClientConnection" />
+		<method name="&lt;init>()V" />
+		<method name="getSocket()Ljava/net/Socket;" />
+		<method name="getTargetHost()Lorg/apache/http/HttpHost;" />
+		<method name="isSecure()Z" />
+		<method name="openCompleted(ZLorg/apache/http/params/HttpParams;)V" />
+		<method name="opening(Ljava/net/Socket;Lorg/apache/http/HttpHost;)V" />
+		<method name="update(Ljava/net/Socket;Lorg/apache/http/HttpHost;ZLorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/impl/conn/DefaultClientConnectionOperator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/ClientConnectionOperator" />
+		<method name="&lt;init>(Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
+		<method name="createConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
+		<method name="openConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Ljava/net/InetAddress;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="prepareSocket(Ljava/net/Socket;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="updateSecureConnection(Lorg/apache/http/conn/OperatedClientConnection;Lorg/apache/http/HttpHost;Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/params/HttpParams;)V" />
+		<field name="schemeRegistry" />
+	</class>
+	<class name="org/apache/http/impl/conn/DefaultHttpRoutePlanner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/routing/HttpRoutePlanner" />
+		<method name="&lt;init>(Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
+		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
+		<field name="schemeRegistry" />
+	</class>
+	<class name="org/apache/http/impl/conn/DefaultResponseParser" since="1">
+		<extends name="org/apache/http/impl/io/AbstractMessageParser" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
+	</class>
+	<class name="org/apache/http/impl/conn/IdleConnectionHandler" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="add(Lorg/apache/http/HttpConnection;JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="closeExpiredConnections()V" />
+		<method name="closeIdleConnections(J)V" />
+		<method name="remove(Lorg/apache/http/HttpConnection;)Z" />
+		<method name="removeAll()V" />
+	</class>
+	<class name="org/apache/http/impl/conn/LoggingSessionInputBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/SessionInputBuffer" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/impl/conn/Wire;)V" />
+		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
+		<method name="isDataAvailable(I)Z" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLine(Lorg/apache/http/util/CharArrayBuffer;)I" />
+	</class>
+	<class name="org/apache/http/impl/conn/LoggingSessionOutputBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/SessionOutputBuffer" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/impl/conn/Wire;)V" />
+		<method name="flush()V" />
+		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+		<method name="writeLine(Ljava/lang/String;)V" />
+		<method name="writeLine(Lorg/apache/http/util/CharArrayBuffer;)V" />
+	</class>
+	<class name="org/apache/http/impl/conn/ProxySelectorRoutePlanner" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/routing/HttpRoutePlanner" />
+		<method name="&lt;init>(Lorg/apache/http/conn/scheme/SchemeRegistry;Ljava/net/ProxySelector;)V" />
+		<method name="chooseProxy(Ljava/util/List;Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Ljava/net/Proxy;" />
+		<method name="determineProxy(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpHost;" />
+		<method name="determineRoute(Lorg/apache/http/HttpHost;Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="getHost(Ljava/net/InetSocketAddress;)Ljava/lang/String;" />
+		<method name="getProxySelector()Ljava/net/ProxySelector;" />
+		<method name="setProxySelector(Ljava/net/ProxySelector;)V" />
+		<field name="proxySelector" />
+		<field name="schemeRegistry" />
+	</class>
+	<class name="org/apache/http/impl/conn/SingleClientConnManager" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/ClientConnectionManager" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
+		<method name="assertStillUp()V" />
+		<method name="closeExpiredConnections()V" />
+		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator;" />
+		<method name="getConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ManagedClientConnection;" />
+		<method name="getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry;" />
+		<method name="releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest;" />
+		<method name="revokeConnection()V" />
+		<method name="shutdown()V" />
+		<field name="MISUSE_MESSAGE" />
+		<field name="alwaysShutDown" />
+		<field name="connOperator" />
+		<field name="connectionExpiresTime" />
+		<field name="isShutDown" />
+		<field name="lastReleaseTime" />
+		<field name="managedConn" />
+		<field name="schemeRegistry" />
+		<field name="uniquePoolEntry" />
+	</class>
+	<class name="org/apache/http/impl/conn/SingleClientConnManager$ConnAdapter" since="1">
+		<extends name="org/apache/http/impl/conn/AbstractPooledConnAdapter" />
+		<method name="&lt;init>(Lorg/apache/http/impl/conn/SingleClientConnManager$PoolEntry;Lorg/apache/http/conn/routing/HttpRoute;)V" />
+	</class>
+	<class name="org/apache/http/impl/conn/SingleClientConnManager$PoolEntry" since="1">
+		<extends name="org/apache/http/impl/conn/AbstractPoolEntry" />
+		<method name="&lt;init>()V" />
+		<method name="close()V" />
+		<method name="shutdown()V" />
+	</class>
+	<class name="org/apache/http/impl/conn/Wire" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/commons/logging/Log;)V" />
+		<method name="enabled()Z" />
+		<method name="input(I)V" />
+		<method name="input(Ljava/io/InputStream;)V" />
+		<method name="input(Ljava/lang/String;)V" />
+		<method name="input([B)V" />
+		<method name="input([BII)V" />
+		<method name="output(I)V" />
+		<method name="output(Ljava/io/InputStream;)V" />
+		<method name="output(Ljava/lang/String;)V" />
+		<method name="output([B)V" />
+		<method name="output([BII)V" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/AbstractConnPool" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/impl/conn/tsccm/RefQueueHandler" />
+		<method name="&lt;init>()V" />
+		<method name="closeConnection(Lorg/apache/http/conn/OperatedClientConnection;)V" />
+		<method name="closeExpiredConnections()V" />
+		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="deleteClosedConnections()V" />
+		<method name="enableConnectionGC()V" />
+		<method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)V" />
+		<method name="getEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
+		<method name="handleLostEntry(Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="handleReference(Ljava/lang/ref/Reference;)V" />
+		<method name="requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest;" />
+		<method name="shutdown()V" />
+		<field name="idleConnHandler" />
+		<field name="isShutDown" />
+		<field name="issuedConnections" />
+		<field name="numConnections" />
+		<field name="poolLock" />
+		<field name="refQueue" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/BasicPoolEntry" since="1">
+		<extends name="org/apache/http/impl/conn/AbstractPoolEntry" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/ref/ReferenceQueue;)V" />
+		<method name="getConnection()Lorg/apache/http/conn/OperatedClientConnection;" />
+		<method name="getPlannedRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="getWeakRef()Lorg/apache/http/impl/conn/tsccm/BasicPoolEntryRef;" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/BasicPoolEntryRef" since="1">
+		<extends name="java/lang/ref/WeakReference" />
+		<method name="&lt;init>(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;Ljava/lang/ref/ReferenceQueue;)V" />
+		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/BasicPooledConnAdapter" since="1">
+		<extends name="org/apache/http/impl/conn/AbstractPooledConnAdapter" />
+		<method name="&lt;init>(Lorg/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager;Lorg/apache/http/impl/conn/AbstractPoolEntry;)V" />
+		<method name="getPoolEntry()Lorg/apache/http/impl/conn/AbstractPoolEntry;" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/ConnPoolByRoute" since="1">
+		<extends name="org/apache/http/impl/conn/tsccm/AbstractConnPool" />
+		<method name="&lt;init>(Lorg/apache/http/conn/ClientConnectionOperator;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="createEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Lorg/apache/http/conn/ClientConnectionOperator;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
+		<method name="createFreeConnQueue()Ljava/util/Queue;" />
+		<method name="createRouteToPoolMap()Ljava/util/Map;" />
+		<method name="createWaitingThreadQueue()Ljava/util/Queue;" />
+		<method name="deleteClosedConnections()V" />
+		<method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
+		<method name="deleteLeastUsedEntry()V" />
+		<method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;ZJLjava/util/concurrent/TimeUnit;)V" />
+		<method name="getConnectionsInPool(Lorg/apache/http/conn/routing/HttpRoute;)I" />
+		<method name="getEntryBlocking(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;Lorg/apache/http/impl/conn/tsccm/WaitingThreadAborter;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
+		<method name="getFreeEntry(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
+		<method name="getRoutePool(Lorg/apache/http/conn/routing/HttpRoute;Z)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;" />
+		<method name="handleLostEntry(Lorg/apache/http/conn/routing/HttpRoute;)V" />
+		<method name="newRouteSpecificPool(Lorg/apache/http/conn/routing/HttpRoute;)Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;" />
+		<method name="newWaitingThread(Ljava/util/concurrent/locks/Condition;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)Lorg/apache/http/impl/conn/tsccm/WaitingThread;" />
+		<method name="notifyWaitingThread(Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V" />
+		<method name="requestPoolEntry(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/PoolEntryRequest;" />
+		<field name="freeConnections" />
+		<field name="maxTotalConnections" />
+		<field name="operator" />
+		<field name="routeToPool" />
+		<field name="waitingThreads" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/PoolEntryRequest" since="1">
+		<method name="abortRequest()V" />
+		<method name="getPoolEntry(JLjava/util/concurrent/TimeUnit;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/RefQueueHandler" since="1">
+		<method name="handleReference(Ljava/lang/ref/Reference;)V" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/RefQueueWorker" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Runnable" />
+		<method name="&lt;init>(Ljava/lang/ref/ReferenceQueue;Lorg/apache/http/impl/conn/tsccm/RefQueueHandler;)V" />
+		<method name="run()V" />
+		<method name="shutdown()V" />
+		<field name="refHandler" />
+		<field name="refQueue" />
+		<field name="workerThread" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/RouteSpecificPool" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/conn/routing/HttpRoute;I)V" />
+		<method name="allocEntry(Ljava/lang/Object;)Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;" />
+		<method name="createdEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
+		<method name="deleteEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)Z" />
+		<method name="dropEntry()V" />
+		<method name="freeEntry(Lorg/apache/http/impl/conn/tsccm/BasicPoolEntry;)V" />
+		<method name="getCapacity()I" />
+		<method name="getEntryCount()I" />
+		<method name="getMaxEntries()I" />
+		<method name="getRoute()Lorg/apache/http/conn/routing/HttpRoute;" />
+		<method name="hasThread()Z" />
+		<method name="isUnused()Z" />
+		<method name="nextThread()Lorg/apache/http/impl/conn/tsccm/WaitingThread;" />
+		<method name="queueThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V" />
+		<method name="removeThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V" />
+		<field name="freeEntries" />
+		<field name="maxEntries" />
+		<field name="numEntries" />
+		<field name="route" />
+		<field name="waitingThreads" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/ThreadSafeClientConnManager" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/conn/ClientConnectionManager" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/conn/scheme/SchemeRegistry;)V" />
+		<method name="closeExpiredConnections()V" />
+		<method name="closeIdleConnections(JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="createConnectionOperator(Lorg/apache/http/conn/scheme/SchemeRegistry;)Lorg/apache/http/conn/ClientConnectionOperator;" />
+		<method name="createConnectionPool(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/impl/conn/tsccm/AbstractConnPool;" />
+		<method name="getConnectionsInPool()I" />
+		<method name="getConnectionsInPool(Lorg/apache/http/conn/routing/HttpRoute;)I" />
+		<method name="getSchemeRegistry()Lorg/apache/http/conn/scheme/SchemeRegistry;" />
+		<method name="releaseConnection(Lorg/apache/http/conn/ManagedClientConnection;JLjava/util/concurrent/TimeUnit;)V" />
+		<method name="requestConnection(Lorg/apache/http/conn/routing/HttpRoute;Ljava/lang/Object;)Lorg/apache/http/conn/ClientConnectionRequest;" />
+		<method name="shutdown()V" />
+		<field name="connOperator" />
+		<field name="connectionPool" />
+		<field name="schemeRegistry" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/WaitingThread" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/util/concurrent/locks/Condition;Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;)V" />
+		<method name="await(Ljava/util/Date;)Z" />
+		<method name="getCondition()Ljava/util/concurrent/locks/Condition;" />
+		<method name="getPool()Lorg/apache/http/impl/conn/tsccm/RouteSpecificPool;" />
+		<method name="getThread()Ljava/lang/Thread;" />
+		<method name="interrupt()V" />
+		<method name="wakeup()V" />
+	</class>
+	<class name="org/apache/http/impl/conn/tsccm/WaitingThreadAborter" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="abort()V" />
+		<method name="setWaitingThread(Lorg/apache/http/impl/conn/tsccm/WaitingThread;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/AbstractCookieSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpec" />
+		<method name="&lt;init>()V" />
+		<method name="findAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler;" />
+		<method name="getAttribHandler(Ljava/lang/String;)Lorg/apache/http/cookie/CookieAttributeHandler;" />
+		<method name="getAttribHandlers()Ljava/util/Collection;" />
+		<method name="registerAttribHandler(Ljava/lang/String;Lorg/apache/http/cookie/CookieAttributeHandler;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicClientCookie" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/ClientCookie" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/cookie/SetCookie" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="containsAttribute(Ljava/lang/String;)Z" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getComment()Ljava/lang/String;" />
+		<method name="getCommentURL()Ljava/lang/String;" />
+		<method name="getDomain()Ljava/lang/String;" />
+		<method name="getExpiryDate()Ljava/util/Date;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getPath()Ljava/lang/String;" />
+		<method name="getPorts()[I" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="getVersion()I" />
+		<method name="isExpired(Ljava/util/Date;)Z" />
+		<method name="isPersistent()Z" />
+		<method name="isSecure()Z" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setComment(Ljava/lang/String;)V" />
+		<method name="setDomain(Ljava/lang/String;)V" />
+		<method name="setExpiryDate(Ljava/util/Date;)V" />
+		<method name="setPath(Ljava/lang/String;)V" />
+		<method name="setSecure(Z)V" />
+		<method name="setValue(Ljava/lang/String;)V" />
+		<method name="setVersion(I)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicClientCookie2" since="1">
+		<extends name="org/apache/http/impl/cookie/BasicClientCookie" />
+		<implements name="org/apache/http/cookie/SetCookie2" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setCommentURL(Ljava/lang/String;)V" />
+		<method name="setDiscard(Z)V" />
+		<method name="setPorts([I)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicCommentHandler" since="1">
+		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicDomainHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicExpiresHandler" since="1">
+		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
+		<method name="&lt;init>([Ljava/lang/String;)V" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicMaxAgeHandler" since="1">
+		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicPathHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BasicSecureHandler" since="1">
+		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BestMatchSpec" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpec" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([Ljava/lang/String;Z)V" />
+		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
+		<method name="getVersion()I" />
+		<method name="getVersionHeader()Lorg/apache/http/Header;" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BestMatchSpecFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpecFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BrowserCompatSpec" since="1">
+		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([Ljava/lang/String;)V" />
+		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
+		<method name="getVersion()I" />
+		<method name="getVersionHeader()Lorg/apache/http/Header;" />
+		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
+		<field name="DATE_PATTERNS" />
+	</class>
+	<class name="org/apache/http/impl/cookie/BrowserCompatSpecFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpecFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+	</class>
+	<class name="org/apache/http/impl/cookie/CookieSpecBase" since="1">
+		<extends name="org/apache/http/impl/cookie/AbstractCookieSpec" />
+		<method name="&lt;init>()V" />
+		<method name="getDefaultDomain(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String;" />
+		<method name="getDefaultPath(Lorg/apache/http/cookie/CookieOrigin;)Ljava/lang/String;" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse([Lorg/apache/http/HeaderElement;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/DateParseException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/DateUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="formatDate(Ljava/util/Date;)Ljava/lang/String;" />
+		<method name="formatDate(Ljava/util/Date;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="parseDate(Ljava/lang/String;)Ljava/util/Date;" />
+		<method name="parseDate(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/Date;" />
+		<method name="parseDate(Ljava/lang/String;[Ljava/lang/String;Ljava/util/Date;)Ljava/util/Date;" />
+		<field name="GMT" />
+		<field name="PATTERN_ASCTIME" />
+		<field name="PATTERN_RFC1036" />
+		<field name="PATTERN_RFC1123" />
+	</class>
+	<class name="org/apache/http/impl/cookie/NetscapeDomainHandler" since="1">
+		<extends name="org/apache/http/impl/cookie/BasicDomainHandler" />
+		<method name="&lt;init>()V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/NetscapeDraftHeaderParser" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="org/apache/http/impl/cookie/NetscapeDraftSpec" since="1">
+		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([Ljava/lang/String;)V" />
+		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
+		<method name="getVersion()I" />
+		<method name="getVersionHeader()Lorg/apache/http/Header;" />
+		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
+		<field name="EXPIRES_PATTERN" />
+	</class>
+	<class name="org/apache/http/impl/cookie/NetscapeDraftSpecFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpecFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2109DomainHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2109Spec" since="1">
+		<extends name="org/apache/http/impl/cookie/CookieSpecBase" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([Ljava/lang/String;Z)V" />
+		<method name="formatCookieAsVer(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/cookie/Cookie;I)V" />
+		<method name="formatCookies(Ljava/util/List;)Ljava/util/List;" />
+		<method name="formatParamAsVer(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Ljava/lang/String;I)V" />
+		<method name="getVersion()I" />
+		<method name="getVersionHeader()Lorg/apache/http/Header;" />
+		<method name="parse(Lorg/apache/http/Header;Lorg/apache/http/cookie/CookieOrigin;)Ljava/util/List;" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2109SpecFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpecFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2109VersionHandler" since="1">
+		<extends name="org/apache/http/impl/cookie/AbstractCookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965DomainAttributeHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="domainMatch(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965PortAttributeHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965Spec" since="1">
+		<extends name="org/apache/http/impl/cookie/RFC2109Spec" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>([Ljava/lang/String;Z)V" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965SpecFactory" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieSpecFactory" />
+		<method name="&lt;init>()V" />
+		<method name="newInstance(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/cookie/CookieSpec;" />
+	</class>
+	<class name="org/apache/http/impl/cookie/RFC2965VersionAttributeHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/cookie/CookieAttributeHandler" />
+		<method name="&lt;init>()V" />
+		<method name="match(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)Z" />
+		<method name="parse(Lorg/apache/http/cookie/SetCookie;Ljava/lang/String;)V" />
+		<method name="validate(Lorg/apache/http/cookie/Cookie;Lorg/apache/http/cookie/CookieOrigin;)V" />
+	</class>
+	<class name="org/apache/http/impl/entity/EntityDeserializer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/entity/ContentLengthStrategy;)V" />
+		<method name="deserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/HttpEntity;" />
+		<method name="doDeserialize(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/HttpMessage;)Lorg/apache/http/entity/BasicHttpEntity;" />
+	</class>
+	<class name="org/apache/http/impl/entity/EntitySerializer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/entity/ContentLengthStrategy;)V" />
+		<method name="doSerialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;)Ljava/io/OutputStream;" />
+		<method name="serialize(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/HttpMessage;Lorg/apache/http/HttpEntity;)V" />
+	</class>
+	<class name="org/apache/http/impl/entity/LaxContentLengthStrategy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/entity/ContentLengthStrategy" />
+		<method name="&lt;init>()V" />
+		<method name="determineLength(Lorg/apache/http/HttpMessage;)J" />
+	</class>
+	<class name="org/apache/http/impl/entity/StrictContentLengthStrategy" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/entity/ContentLengthStrategy" />
+		<method name="&lt;init>()V" />
+		<method name="determineLength(Lorg/apache/http/HttpMessage;)J" />
+	</class>
+	<class name="org/apache/http/impl/io/AbstractMessageParser" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/HttpMessageParser" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="parse()Lorg/apache/http/HttpMessage;" />
+		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
+		<method name="parseHeaders(Lorg/apache/http/io/SessionInputBuffer;IILorg/apache/http/message/LineParser;)[Lorg/apache/http/Header;" />
+		<field name="lineParser" />
+	</class>
+	<class name="org/apache/http/impl/io/AbstractMessageWriter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/HttpMessageWriter" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="write(Lorg/apache/http/HttpMessage;)V" />
+		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)V" />
+		<field name="lineBuf" />
+		<field name="lineFormatter" />
+		<field name="sessionBuffer" />
+	</class>
+	<class name="org/apache/http/impl/io/AbstractSessionInputBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/SessionInputBuffer" />
+		<method name="&lt;init>()V" />
+		<method name="fillBuffer()I" />
+		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
+		<method name="hasBufferedData()Z" />
+		<method name="init(Ljava/io/InputStream;ILorg/apache/http/params/HttpParams;)V" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLine(Lorg/apache/http/util/CharArrayBuffer;)I" />
+	</class>
+	<class name="org/apache/http/impl/io/AbstractSessionOutputBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/SessionOutputBuffer" />
+		<method name="&lt;init>()V" />
+		<method name="flush()V" />
+		<method name="flushBuffer()V" />
+		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
+		<method name="init(Ljava/io/OutputStream;ILorg/apache/http/params/HttpParams;)V" />
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+		<method name="writeLine(Ljava/lang/String;)V" />
+		<method name="writeLine(Lorg/apache/http/util/CharArrayBuffer;)V" />
+	</class>
+	<class name="org/apache/http/impl/io/ChunkedInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;)V" />
+		<method name="getFooters()[Lorg/apache/http/Header;" />
+		<method name="read()I" />
+	</class>
+	<class name="org/apache/http/impl/io/ChunkedOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;)V" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;I)V" />
+		<method name="finish()V" />
+		<method name="flushCache()V" />
+		<method name="flushCacheWithAppend([BII)V" />
+		<method name="write(I)V" />
+		<method name="writeClosingChunk()V" />
+	</class>
+	<class name="org/apache/http/impl/io/ContentLengthInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;J)V" />
+		<method name="read()I" />
+	</class>
+	<class name="org/apache/http/impl/io/ContentLengthOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;J)V" />
+		<method name="write(I)V" />
+	</class>
+	<class name="org/apache/http/impl/io/HttpRequestParser" since="1">
+		<extends name="org/apache/http/impl/io/AbstractMessageParser" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpRequestFactory;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
+	</class>
+	<class name="org/apache/http/impl/io/HttpRequestWriter" since="1">
+		<extends name="org/apache/http/impl/io/AbstractMessageWriter" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)V" />
+	</class>
+	<class name="org/apache/http/impl/io/HttpResponseParser" since="1">
+		<extends name="org/apache/http/impl/io/AbstractMessageParser" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;Lorg/apache/http/message/LineParser;Lorg/apache/http/HttpResponseFactory;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="parseHead(Lorg/apache/http/io/SessionInputBuffer;)Lorg/apache/http/HttpMessage;" />
+	</class>
+	<class name="org/apache/http/impl/io/HttpResponseWriter" since="1">
+		<extends name="org/apache/http/impl/io/AbstractMessageWriter" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;Lorg/apache/http/message/LineFormatter;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="writeHeadLine(Lorg/apache/http/HttpMessage;)V" />
+	</class>
+	<class name="org/apache/http/impl/io/HttpTransportMetricsImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/io/HttpTransportMetrics" />
+		<method name="&lt;init>()V" />
+		<method name="getBytesTransferred()J" />
+		<method name="incrementBytesTransferred(J)V" />
+		<method name="reset()V" />
+		<method name="setBytesTransferred(J)V" />
+	</class>
+	<class name="org/apache/http/impl/io/IdentityInputStream" since="1">
+		<extends name="java/io/InputStream" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionInputBuffer;)V" />
+		<method name="read()I" />
+	</class>
+	<class name="org/apache/http/impl/io/IdentityOutputStream" since="1">
+		<extends name="java/io/OutputStream" />
+		<method name="&lt;init>(Lorg/apache/http/io/SessionOutputBuffer;)V" />
+		<method name="write(I)V" />
+	</class>
+	<class name="org/apache/http/impl/io/SocketInputBuffer" since="1">
+		<extends name="org/apache/http/impl/io/AbstractSessionInputBuffer" />
+		<method name="&lt;init>(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V" />
+		<method name="isDataAvailable(I)Z" />
+	</class>
+	<class name="org/apache/http/impl/io/SocketOutputBuffer" since="1">
+		<extends name="org/apache/http/impl/io/AbstractSessionOutputBuffer" />
+		<method name="&lt;init>(Ljava/net/Socket;ILorg/apache/http/params/HttpParams;)V" />
+	</class>
+	<class name="org/apache/http/io/HttpMessageParser" since="1">
+		<method name="parse()Lorg/apache/http/HttpMessage;" />
+	</class>
+	<class name="org/apache/http/io/HttpMessageWriter" since="1">
+		<method name="write(Lorg/apache/http/HttpMessage;)V" />
+	</class>
+	<class name="org/apache/http/io/HttpTransportMetrics" since="1">
+		<method name="getBytesTransferred()J" />
+		<method name="reset()V" />
+	</class>
+	<class name="org/apache/http/io/SessionInputBuffer" since="1">
+		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
+		<method name="isDataAvailable(I)Z" />
+		<method name="read()I" />
+		<method name="read([B)I" />
+		<method name="read([BII)I" />
+		<method name="readLine()Ljava/lang/String;" />
+		<method name="readLine(Lorg/apache/http/util/CharArrayBuffer;)I" />
+	</class>
+	<class name="org/apache/http/io/SessionOutputBuffer" since="1">
+		<method name="flush()V" />
+		<method name="getMetrics()Lorg/apache/http/io/HttpTransportMetrics;" />
+		<method name="write(I)V" />
+		<method name="write([B)V" />
+		<method name="write([BII)V" />
+		<method name="writeLine(Ljava/lang/String;)V" />
+		<method name="writeLine(Lorg/apache/http/util/CharArrayBuffer;)V" />
+	</class>
+	<class name="org/apache/http/message/AbstractHttpMessage" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpMessage" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="addHeader(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="addHeader(Lorg/apache/http/Header;)V" />
+		<method name="containsHeader(Ljava/lang/String;)Z" />
+		<method name="getAllHeaders()[Lorg/apache/http/Header;" />
+		<method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;" />
+		<method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="headerIterator()Lorg/apache/http/HeaderIterator;" />
+		<method name="headerIterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;" />
+		<method name="removeHeader(Lorg/apache/http/Header;)V" />
+		<method name="removeHeaders(Ljava/lang/String;)V" />
+		<method name="setHeader(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setHeader(Lorg/apache/http/Header;)V" />
+		<method name="setHeaders([Lorg/apache/http/Header;)V" />
+		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
+		<field name="headergroup" />
+		<field name="params" />
+	</class>
+	<class name="org/apache/http/message/BasicHeader" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/Header" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getElements()[Lorg/apache/http/HeaderElement;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getValue()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/message/BasicHeaderElement" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/HeaderElement" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getParameter(I)Lorg/apache/http/NameValuePair;" />
+		<method name="getParameterByName(Ljava/lang/String;)Lorg/apache/http/NameValuePair;" />
+		<method name="getParameterCount()I" />
+		<method name="getParameters()[Lorg/apache/http/NameValuePair;" />
+		<method name="getValue()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/message/BasicHeaderElementIterator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HeaderElementIterator" />
+		<method name="&lt;init>(Lorg/apache/http/HeaderIterator;)V" />
+		<method name="&lt;init>(Lorg/apache/http/HeaderIterator;Lorg/apache/http/message/HeaderValueParser;)V" />
+		<method name="hasNext()Z" />
+		<method name="next()Ljava/lang/Object;" />
+		<method name="nextElement()Lorg/apache/http/HeaderElement;" />
+		<method name="remove()V" />
+	</class>
+	<class name="org/apache/http/message/BasicHeaderIterator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HeaderIterator" />
+		<method name="&lt;init>([Lorg/apache/http/Header;Ljava/lang/String;)V" />
+		<method name="filterHeader(I)Z" />
+		<method name="findNext(I)I" />
+		<method name="hasNext()Z" />
+		<method name="next()Ljava/lang/Object;" />
+		<method name="nextHeader()Lorg/apache/http/Header;" />
+		<method name="remove()V" />
+		<field name="allHeaders" />
+		<field name="currentIndex" />
+		<field name="headerName" />
+	</class>
+	<class name="org/apache/http/message/BasicHeaderValueFormatter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/message/HeaderValueFormatter" />
+		<method name="&lt;init>()V" />
+		<method name="doFormatValue(Lorg/apache/http/util/CharArrayBuffer;Ljava/lang/String;Z)V" />
+		<method name="estimateElementsLen([Lorg/apache/http/HeaderElement;)I" />
+		<method name="estimateHeaderElementLen(Lorg/apache/http/HeaderElement;)I" />
+		<method name="estimateNameValuePairLen(Lorg/apache/http/NameValuePair;)I" />
+		<method name="estimateParametersLen([Lorg/apache/http/NameValuePair;)I" />
+		<method name="formatElements(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatElements([Lorg/apache/http/HeaderElement;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
+		<method name="formatHeaderElement(Lorg/apache/http/HeaderElement;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
+		<method name="formatHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatNameValuePair(Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
+		<method name="formatNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatParameters(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatParameters([Lorg/apache/http/NameValuePair;ZLorg/apache/http/message/HeaderValueFormatter;)Ljava/lang/String;" />
+		<method name="isSeparator(C)Z" />
+		<method name="isUnsafe(C)Z" />
+		<field name="DEFAULT" />
+		<field name="SEPARATORS" />
+		<field name="UNSAFE_CHARS" />
+	</class>
+	<class name="org/apache/http/message/BasicHeaderValueParser" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/message/HeaderValueParser" />
+		<method name="&lt;init>()V" />
+		<method name="createHeaderElement(Ljava/lang/String;Ljava/lang/String;[Lorg/apache/http/NameValuePair;)Lorg/apache/http/HeaderElement;" />
+		<method name="createNameValuePair(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/http/NameValuePair;" />
+		<method name="parseElements(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/HeaderElement;" />
+		<method name="parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement;" />
+		<method name="parseHeaderElement(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/HeaderElement;" />
+		<method name="parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;" />
+		<method name="parseNameValuePair(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)Lorg/apache/http/NameValuePair;" />
+		<method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/NameValuePair;" />
+		<method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;[C)Lorg/apache/http/NameValuePair;" />
+		<method name="parseParameters(Ljava/lang/String;Lorg/apache/http/message/HeaderValueParser;)[Lorg/apache/http/NameValuePair;" />
+		<method name="parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair;" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="org/apache/http/message/BasicHttpEntityEnclosingRequest" since="1">
+		<extends name="org/apache/http/message/BasicHttpRequest" />
+		<implements name="org/apache/http/HttpEntityEnclosingRequest" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V" />
+		<method name="&lt;init>(Lorg/apache/http/RequestLine;)V" />
+		<method name="expectContinue()Z" />
+		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
+		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
+	</class>
+	<class name="org/apache/http/message/BasicHttpRequest" since="1">
+		<extends name="org/apache/http/message/AbstractHttpMessage" />
+		<implements name="org/apache/http/HttpRequest" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V" />
+		<method name="&lt;init>(Lorg/apache/http/RequestLine;)V" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getRequestLine()Lorg/apache/http/RequestLine;" />
+	</class>
+	<class name="org/apache/http/message/BasicHttpResponse" since="1">
+		<extends name="org/apache/http/message/AbstractHttpMessage" />
+		<implements name="org/apache/http/HttpResponse" />
+		<method name="&lt;init>(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
+		<method name="&lt;init>(Lorg/apache/http/StatusLine;)V" />
+		<method name="&lt;init>(Lorg/apache/http/StatusLine;Lorg/apache/http/ReasonPhraseCatalog;Ljava/util/Locale;)V" />
+		<method name="getEntity()Lorg/apache/http/HttpEntity;" />
+		<method name="getLocale()Ljava/util/Locale;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getReason(I)Ljava/lang/String;" />
+		<method name="getStatusLine()Lorg/apache/http/StatusLine;" />
+		<method name="setEntity(Lorg/apache/http/HttpEntity;)V" />
+		<method name="setLocale(Ljava/util/Locale;)V" />
+		<method name="setReasonPhrase(Ljava/lang/String;)V" />
+		<method name="setStatusCode(I)V" />
+		<method name="setStatusLine(Lorg/apache/http/ProtocolVersion;I)V" />
+		<method name="setStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
+		<method name="setStatusLine(Lorg/apache/http/StatusLine;)V" />
+	</class>
+	<class name="org/apache/http/message/BasicLineFormatter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/message/LineFormatter" />
+		<method name="&lt;init>()V" />
+		<method name="appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="doFormatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)V" />
+		<method name="doFormatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)V" />
+		<method name="doFormatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)V" />
+		<method name="estimateProtocolVersionLen(Lorg/apache/http/ProtocolVersion;)I" />
+		<method name="formatHeader(Lorg/apache/http/Header;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
+		<method name="formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatProtocolVersion(Lorg/apache/http/ProtocolVersion;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
+		<method name="formatRequestLine(Lorg/apache/http/RequestLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
+		<method name="formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatStatusLine(Lorg/apache/http/StatusLine;Lorg/apache/http/message/LineFormatter;)Ljava/lang/String;" />
+		<method name="formatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="initBuffer(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<field name="DEFAULT" />
+	</class>
+	<class name="org/apache/http/message/BasicLineParser" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/message/LineParser" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/apache/http/ProtocolVersion;)V" />
+		<method name="createProtocolVersion(II)Lorg/apache/http/ProtocolVersion;" />
+		<method name="createRequestLine(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/RequestLine;" />
+		<method name="createStatusLine(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)Lorg/apache/http/StatusLine;" />
+		<method name="hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z" />
+		<method name="parseHeader(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/Header;" />
+		<method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header;" />
+		<method name="parseProtocolVersion(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/ProtocolVersion;" />
+		<method name="parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion;" />
+		<method name="parseRequestLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/RequestLine;" />
+		<method name="parseRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/RequestLine;" />
+		<method name="parseStatusLine(Ljava/lang/String;Lorg/apache/http/message/LineParser;)Lorg/apache/http/StatusLine;" />
+		<method name="parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine;" />
+		<method name="skipWhitespace(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)V" />
+		<field name="DEFAULT" />
+		<field name="protocol" />
+	</class>
+	<class name="org/apache/http/message/BasicListHeaderIterator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HeaderIterator" />
+		<method name="&lt;init>(Ljava/util/List;Ljava/lang/String;)V" />
+		<method name="filterHeader(I)Z" />
+		<method name="findNext(I)I" />
+		<method name="hasNext()Z" />
+		<method name="next()Ljava/lang/Object;" />
+		<method name="nextHeader()Lorg/apache/http/Header;" />
+		<method name="remove()V" />
+		<field name="allHeaders" />
+		<field name="currentIndex" />
+		<field name="headerName" />
+		<field name="lastIndex" />
+	</class>
+	<class name="org/apache/http/message/BasicNameValuePair" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/NameValuePair" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getValue()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/message/BasicRequestLine" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/RequestLine" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Lorg/apache/http/ProtocolVersion;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getMethod()Ljava/lang/String;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getUri()Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/message/BasicStatusLine" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/StatusLine" />
+		<method name="&lt;init>(Lorg/apache/http/ProtocolVersion;ILjava/lang/String;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getProtocolVersion()Lorg/apache/http/ProtocolVersion;" />
+		<method name="getReasonPhrase()Ljava/lang/String;" />
+		<method name="getStatusCode()I" />
+	</class>
+	<class name="org/apache/http/message/BasicTokenIterator" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/TokenIterator" />
+		<method name="&lt;init>(Lorg/apache/http/HeaderIterator;)V" />
+		<method name="createToken(Ljava/lang/String;II)Ljava/lang/String;" />
+		<method name="findNext(I)I" />
+		<method name="findTokenEnd(I)I" />
+		<method name="findTokenSeparator(I)I" />
+		<method name="findTokenStart(I)I" />
+		<method name="hasNext()Z" />
+		<method name="isHttpSeparator(C)Z" />
+		<method name="isTokenChar(C)Z" />
+		<method name="isTokenSeparator(C)Z" />
+		<method name="isWhitespace(C)Z" />
+		<method name="next()Ljava/lang/Object;" />
+		<method name="nextToken()Ljava/lang/String;" />
+		<method name="remove()V" />
+		<field name="HTTP_SEPARATORS" />
+		<field name="currentHeader" />
+		<field name="currentToken" />
+		<field name="headerIt" />
+		<field name="searchPos" />
+	</class>
+	<class name="org/apache/http/message/BufferedHeader" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/FormattedHeader" />
+		<method name="&lt;init>(Lorg/apache/http/util/CharArrayBuffer;)V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="getBuffer()Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="getElements()[Lorg/apache/http/HeaderElement;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="getValuePos()I" />
+	</class>
+	<class name="org/apache/http/message/HeaderGroup" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<method name="&lt;init>()V" />
+		<method name="addHeader(Lorg/apache/http/Header;)V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="containsHeader(Ljava/lang/String;)Z" />
+		<method name="copy()Lorg/apache/http/message/HeaderGroup;" />
+		<method name="getAllHeaders()[Lorg/apache/http/Header;" />
+		<method name="getCondensedHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="getFirstHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="getHeaders(Ljava/lang/String;)[Lorg/apache/http/Header;" />
+		<method name="getLastHeader(Ljava/lang/String;)Lorg/apache/http/Header;" />
+		<method name="iterator()Lorg/apache/http/HeaderIterator;" />
+		<method name="iterator(Ljava/lang/String;)Lorg/apache/http/HeaderIterator;" />
+		<method name="removeHeader(Lorg/apache/http/Header;)V" />
+		<method name="setHeaders([Lorg/apache/http/Header;)V" />
+		<method name="updateHeader(Lorg/apache/http/Header;)V" />
+	</class>
+	<class name="org/apache/http/message/HeaderValueFormatter" since="1">
+		<method name="formatElements(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/HeaderElement;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatParameters(Lorg/apache/http/util/CharArrayBuffer;[Lorg/apache/http/NameValuePair;Z)Lorg/apache/http/util/CharArrayBuffer;" />
+	</class>
+	<class name="org/apache/http/message/HeaderValueParser" since="1">
+		<method name="parseElements(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/HeaderElement;" />
+		<method name="parseHeaderElement(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/HeaderElement;" />
+		<method name="parseNameValuePair(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/NameValuePair;" />
+		<method name="parseParameters(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)[Lorg/apache/http/NameValuePair;" />
+	</class>
+	<class name="org/apache/http/message/LineFormatter" since="1">
+		<method name="appendProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/ProtocolVersion;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatHeader(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/Header;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/RequestLine;)Lorg/apache/http/util/CharArrayBuffer;" />
+		<method name="formatStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/StatusLine;)Lorg/apache/http/util/CharArrayBuffer;" />
+	</class>
+	<class name="org/apache/http/message/LineParser" since="1">
+		<method name="hasProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Z" />
+		<method name="parseHeader(Lorg/apache/http/util/CharArrayBuffer;)Lorg/apache/http/Header;" />
+		<method name="parseProtocolVersion(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/ProtocolVersion;" />
+		<method name="parseRequestLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/RequestLine;" />
+		<method name="parseStatusLine(Lorg/apache/http/util/CharArrayBuffer;Lorg/apache/http/message/ParserCursor;)Lorg/apache/http/StatusLine;" />
+	</class>
+	<class name="org/apache/http/message/ParserCursor" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(II)V" />
+		<method name="atEnd()Z" />
+		<method name="getLowerBound()I" />
+		<method name="getPos()I" />
+		<method name="getUpperBound()I" />
+		<method name="updatePos(I)V" />
+	</class>
+	<class name="org/apache/http/params/AbstractHttpParams" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/params/HttpParams" />
+		<method name="&lt;init>()V" />
+		<method name="getBooleanParameter(Ljava/lang/String;Z)Z" />
+		<method name="getDoubleParameter(Ljava/lang/String;D)D" />
+		<method name="getIntParameter(Ljava/lang/String;I)I" />
+		<method name="getLongParameter(Ljava/lang/String;J)J" />
+		<method name="isParameterFalse(Ljava/lang/String;)Z" />
+		<method name="isParameterTrue(Ljava/lang/String;)Z" />
+		<method name="setBooleanParameter(Ljava/lang/String;Z)Lorg/apache/http/params/HttpParams;" />
+		<method name="setDoubleParameter(Ljava/lang/String;D)Lorg/apache/http/params/HttpParams;" />
+		<method name="setIntParameter(Ljava/lang/String;I)Lorg/apache/http/params/HttpParams;" />
+		<method name="setLongParameter(Ljava/lang/String;J)Lorg/apache/http/params/HttpParams;" />
+	</class>
+	<class name="org/apache/http/params/BasicHttpParams" since="1">
+		<extends name="org/apache/http/params/AbstractHttpParams" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="java/io/Serializable" />
+		<method name="&lt;init>()V" />
+		<method name="clear()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="copy()Lorg/apache/http/params/HttpParams;" />
+		<method name="copyParams(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="isParameterSet(Ljava/lang/String;)Z" />
+		<method name="isParameterSetLocally(Ljava/lang/String;)Z" />
+		<method name="removeParameter(Ljava/lang/String;)Z" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
+		<method name="setParameters([Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="org/apache/http/params/CoreConnectionPNames" since="1">
+		<field name="CONNECTION_TIMEOUT" />
+		<field name="MAX_HEADER_COUNT" />
+		<field name="MAX_LINE_LENGTH" />
+		<field name="SOCKET_BUFFER_SIZE" />
+		<field name="SO_LINGER" />
+		<field name="SO_TIMEOUT" />
+		<field name="STALE_CONNECTION_CHECK" />
+		<field name="TCP_NODELAY" />
+	</class>
+	<class name="org/apache/http/params/CoreProtocolPNames" since="1">
+		<field name="HTTP_CONTENT_CHARSET" />
+		<field name="HTTP_ELEMENT_CHARSET" />
+		<field name="ORIGIN_SERVER" />
+		<field name="PROTOCOL_VERSION" />
+		<field name="STRICT_TRANSFER_ENCODING" />
+		<field name="USER_AGENT" />
+		<field name="USE_EXPECT_CONTINUE" />
+		<field name="WAIT_FOR_CONTINUE" />
+	</class>
+	<class name="org/apache/http/params/DefaultedHttpParams" since="1">
+		<extends name="org/apache/http/params/AbstractHttpParams" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;Lorg/apache/http/params/HttpParams;)V" />
+		<method name="copy()Lorg/apache/http/params/HttpParams;" />
+		<method name="getDefaults()Lorg/apache/http/params/HttpParams;" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="removeParameter(Ljava/lang/String;)Z" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
+	</class>
+	<class name="org/apache/http/params/HttpAbstractParamBean" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<field name="params" />
+	</class>
+	<class name="org/apache/http/params/HttpConnectionParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setConnectionTimeout(I)V" />
+		<method name="setLinger(I)V" />
+		<method name="setSoTimeout(I)V" />
+		<method name="setSocketBufferSize(I)V" />
+		<method name="setStaleCheckingEnabled(Z)V" />
+		<method name="setTcpNoDelay(Z)V" />
+	</class>
+	<class name="org/apache/http/params/HttpConnectionParams" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/params/CoreConnectionPNames" />
+		<method name="getConnectionTimeout(Lorg/apache/http/params/HttpParams;)I" />
+		<method name="getLinger(Lorg/apache/http/params/HttpParams;)I" />
+		<method name="getSoTimeout(Lorg/apache/http/params/HttpParams;)I" />
+		<method name="getSocketBufferSize(Lorg/apache/http/params/HttpParams;)I" />
+		<method name="getTcpNoDelay(Lorg/apache/http/params/HttpParams;)Z" />
+		<method name="isStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;)Z" />
+		<method name="setConnectionTimeout(Lorg/apache/http/params/HttpParams;I)V" />
+		<method name="setLinger(Lorg/apache/http/params/HttpParams;I)V" />
+		<method name="setSoTimeout(Lorg/apache/http/params/HttpParams;I)V" />
+		<method name="setSocketBufferSize(Lorg/apache/http/params/HttpParams;I)V" />
+		<method name="setStaleCheckingEnabled(Lorg/apache/http/params/HttpParams;Z)V" />
+		<method name="setTcpNoDelay(Lorg/apache/http/params/HttpParams;Z)V" />
+	</class>
+	<class name="org/apache/http/params/HttpParams" since="1">
+		<method name="copy()Lorg/apache/http/params/HttpParams;" />
+		<method name="getBooleanParameter(Ljava/lang/String;Z)Z" />
+		<method name="getDoubleParameter(Ljava/lang/String;D)D" />
+		<method name="getIntParameter(Ljava/lang/String;I)I" />
+		<method name="getLongParameter(Ljava/lang/String;J)J" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="isParameterFalse(Ljava/lang/String;)Z" />
+		<method name="isParameterTrue(Ljava/lang/String;)Z" />
+		<method name="removeParameter(Ljava/lang/String;)Z" />
+		<method name="setBooleanParameter(Ljava/lang/String;Z)Lorg/apache/http/params/HttpParams;" />
+		<method name="setDoubleParameter(Ljava/lang/String;D)Lorg/apache/http/params/HttpParams;" />
+		<method name="setIntParameter(Ljava/lang/String;I)Lorg/apache/http/params/HttpParams;" />
+		<method name="setLongParameter(Ljava/lang/String;J)Lorg/apache/http/params/HttpParams;" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)Lorg/apache/http/params/HttpParams;" />
+	</class>
+	<class name="org/apache/http/params/HttpProtocolParamBean" since="1">
+		<extends name="org/apache/http/params/HttpAbstractParamBean" />
+		<method name="&lt;init>(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setContentCharset(Ljava/lang/String;)V" />
+		<method name="setHttpElementCharset(Ljava/lang/String;)V" />
+		<method name="setUseExpectContinue(Z)V" />
+		<method name="setUserAgent(Ljava/lang/String;)V" />
+		<method name="setVersion(Lorg/apache/http/HttpVersion;)V" />
+	</class>
+	<class name="org/apache/http/params/HttpProtocolParams" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/params/CoreProtocolPNames" />
+		<method name="getContentCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
+		<method name="getHttpElementCharset(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
+		<method name="getUserAgent(Lorg/apache/http/params/HttpParams;)Ljava/lang/String;" />
+		<method name="getVersion(Lorg/apache/http/params/HttpParams;)Lorg/apache/http/ProtocolVersion;" />
+		<method name="setContentCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
+		<method name="setHttpElementCharset(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
+		<method name="setUseExpectContinue(Lorg/apache/http/params/HttpParams;Z)V" />
+		<method name="setUserAgent(Lorg/apache/http/params/HttpParams;Ljava/lang/String;)V" />
+		<method name="setVersion(Lorg/apache/http/params/HttpParams;Lorg/apache/http/ProtocolVersion;)V" />
+		<method name="useExpectContinue(Lorg/apache/http/params/HttpParams;)Z" />
+	</class>
+	<class name="org/apache/http/protocol/BasicHttpContext" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/protocol/HttpContext" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="removeAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="org/apache/http/protocol/BasicHttpProcessor" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="java/lang/Cloneable" />
+		<implements name="org/apache/http/protocol/HttpProcessor" />
+		<implements name="org/apache/http/protocol/HttpRequestInterceptorList" />
+		<implements name="org/apache/http/protocol/HttpResponseInterceptorList" />
+		<method name="&lt;init>()V" />
+		<method name="addInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
+		<method name="addInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
+		<method name="addInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
+		<method name="addInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
+		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
+		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
+		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
+		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
+		<method name="clearInterceptors()V" />
+		<method name="clearRequestInterceptors()V" />
+		<method name="clearResponseInterceptors()V" />
+		<method name="clone()Ljava/lang/Object;" />
+		<method name="copy()Lorg/apache/http/protocol/BasicHttpProcessor;" />
+		<method name="copyInterceptors(Lorg/apache/http/protocol/BasicHttpProcessor;)V" />
+		<method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;" />
+		<method name="getRequestInterceptorCount()I" />
+		<method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;" />
+		<method name="getResponseInterceptorCount()I" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V" />
+		<method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V" />
+		<method name="setInterceptors(Ljava/util/List;)V" />
+		<field name="requestInterceptors" />
+		<field name="responseInterceptors" />
+	</class>
+	<class name="org/apache/http/protocol/DefaultedHttpContext" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/protocol/HttpContext" />
+		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getDefaults()Lorg/apache/http/protocol/HttpContext;" />
+		<method name="removeAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="org/apache/http/protocol/ExecutionContext" since="1">
+		<field name="HTTP_CONNECTION" />
+		<field name="HTTP_PROXY_HOST" />
+		<field name="HTTP_REQUEST" />
+		<field name="HTTP_REQ_SENT" />
+		<field name="HTTP_RESPONSE" />
+		<field name="HTTP_TARGET_HOST" />
+	</class>
+	<class name="org/apache/http/protocol/HTTP" since="1">
+		<extends name="java/lang/Object" />
+		<method name="isWhitespace(C)Z" />
+		<field name="ASCII" />
+		<field name="CHARSET_PARAM" />
+		<field name="CHUNK_CODING" />
+		<field name="CONN_CLOSE" />
+		<field name="CONN_DIRECTIVE" />
+		<field name="CONN_KEEP_ALIVE" />
+		<field name="CONTENT_ENCODING" />
+		<field name="CONTENT_LEN" />
+		<field name="CONTENT_TYPE" />
+		<field name="CR" />
+		<field name="DATE_HEADER" />
+		<field name="DEFAULT_CONTENT_CHARSET" />
+		<field name="DEFAULT_CONTENT_TYPE" />
+		<field name="DEFAULT_PROTOCOL_CHARSET" />
+		<field name="EXPECT_CONTINUE" />
+		<field name="EXPECT_DIRECTIVE" />
+		<field name="HT" />
+		<field name="IDENTITY_CODING" />
+		<field name="ISO_8859_1" />
+		<field name="LF" />
+		<field name="OCTET_STREAM_TYPE" />
+		<field name="PLAIN_TEXT_TYPE" />
+		<field name="SERVER_HEADER" />
+		<field name="SP" />
+		<field name="TARGET_HOST" />
+		<field name="TRANSFER_ENCODING" />
+		<field name="USER_AGENT" />
+		<field name="US_ASCII" />
+		<field name="UTF_16" />
+		<field name="UTF_8" />
+	</class>
+	<class name="org/apache/http/protocol/HttpContext" since="1">
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="removeAttribute(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<field name="RESERVED_PREFIX" />
+	</class>
+	<class name="org/apache/http/protocol/HttpDateGenerator" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getCurrentDate()Ljava/lang/String;" />
+		<field name="GMT" />
+		<field name="PATTERN_RFC1123" />
+	</class>
+	<class name="org/apache/http/protocol/HttpExpectationVerifier" since="1">
+		<method name="verify(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/HttpProcessor" since="1">
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<implements name="org/apache/http/HttpResponseInterceptor" />
+	</class>
+	<class name="org/apache/http/protocol/HttpRequestExecutor" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="canResponseHaveBody(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;)Z" />
+		<method name="doReceiveResponse(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="doSendRequest(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="execute(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpClientConnection;Lorg/apache/http/protocol/HttpContext;)Lorg/apache/http/HttpResponse;" />
+		<method name="postProcess(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="preProcess(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/HttpRequestHandler" since="1">
+		<method name="handle(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/HttpRequestHandlerRegistry" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/protocol/HttpRequestHandlerResolver" />
+		<method name="&lt;init>()V" />
+		<method name="lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler;" />
+		<method name="matchUriRequestPattern(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="register(Ljava/lang/String;Lorg/apache/http/protocol/HttpRequestHandler;)V" />
+		<method name="setHandlers(Ljava/util/Map;)V" />
+		<method name="unregister(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/protocol/HttpRequestHandlerResolver" since="1">
+		<method name="lookup(Ljava/lang/String;)Lorg/apache/http/protocol/HttpRequestHandler;" />
+	</class>
+	<class name="org/apache/http/protocol/HttpRequestInterceptorList" since="1">
+		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;)V" />
+		<method name="addRequestInterceptor(Lorg/apache/http/HttpRequestInterceptor;I)V" />
+		<method name="clearRequestInterceptors()V" />
+		<method name="getRequestInterceptor(I)Lorg/apache/http/HttpRequestInterceptor;" />
+		<method name="getRequestInterceptorCount()I" />
+		<method name="removeRequestInterceptorByClass(Ljava/lang/Class;)V" />
+		<method name="setInterceptors(Ljava/util/List;)V" />
+	</class>
+	<class name="org/apache/http/protocol/HttpResponseInterceptorList" since="1">
+		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;)V" />
+		<method name="addResponseInterceptor(Lorg/apache/http/HttpResponseInterceptor;I)V" />
+		<method name="clearResponseInterceptors()V" />
+		<method name="getResponseInterceptor(I)Lorg/apache/http/HttpResponseInterceptor;" />
+		<method name="getResponseInterceptorCount()I" />
+		<method name="removeResponseInterceptorByClass(Ljava/lang/Class;)V" />
+		<method name="setInterceptors(Ljava/util/List;)V" />
+	</class>
+	<class name="org/apache/http/protocol/HttpService" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Lorg/apache/http/protocol/HttpProcessor;Lorg/apache/http/ConnectionReuseStrategy;Lorg/apache/http/HttpResponseFactory;)V" />
+		<method name="doService(Lorg/apache/http/HttpRequest;Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="getParams()Lorg/apache/http/params/HttpParams;" />
+		<method name="handleException(Lorg/apache/http/HttpException;Lorg/apache/http/HttpResponse;)V" />
+		<method name="handleRequest(Lorg/apache/http/HttpServerConnection;Lorg/apache/http/protocol/HttpContext;)V" />
+		<method name="setConnReuseStrategy(Lorg/apache/http/ConnectionReuseStrategy;)V" />
+		<method name="setExpectationVerifier(Lorg/apache/http/protocol/HttpExpectationVerifier;)V" />
+		<method name="setHandlerResolver(Lorg/apache/http/protocol/HttpRequestHandlerResolver;)V" />
+		<method name="setHttpProcessor(Lorg/apache/http/protocol/HttpProcessor;)V" />
+		<method name="setParams(Lorg/apache/http/params/HttpParams;)V" />
+		<method name="setResponseFactory(Lorg/apache/http/HttpResponseFactory;)V" />
+	</class>
+	<class name="org/apache/http/protocol/RequestConnControl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/RequestContent" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/RequestDate" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/RequestExpectContinue" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/RequestTargetHost" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/RequestUserAgent" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpRequestInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/ResponseConnControl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpResponseInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/ResponseContent" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpResponseInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/ResponseDate" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpResponseInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/ResponseServer" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/apache/http/HttpResponseInterceptor" />
+		<method name="&lt;init>()V" />
+		<method name="process(Lorg/apache/http/HttpResponse;Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/SyncBasicHttpContext" since="1">
+		<extends name="org/apache/http/protocol/BasicHttpContext" />
+		<method name="&lt;init>(Lorg/apache/http/protocol/HttpContext;)V" />
+	</class>
+	<class name="org/apache/http/protocol/UriPatternMatcher" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="lookup(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="matchUriRequestPattern(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="register(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="setHandlers(Ljava/util/Map;)V" />
+		<method name="unregister(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/apache/http/util/ByteArrayBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="append(I)V" />
+		<method name="append(Lorg/apache/http/util/CharArrayBuffer;II)V" />
+		<method name="append([BII)V" />
+		<method name="append([CII)V" />
+		<method name="buffer()[B" />
+		<method name="byteAt(I)I" />
+		<method name="capacity()I" />
+		<method name="clear()V" />
+		<method name="isEmpty()Z" />
+		<method name="isFull()Z" />
+		<method name="length()I" />
+		<method name="setLength(I)V" />
+		<method name="toByteArray()[B" />
+	</class>
+	<class name="org/apache/http/util/CharArrayBuffer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(I)V" />
+		<method name="append(C)V" />
+		<method name="append(Ljava/lang/Object;)V" />
+		<method name="append(Ljava/lang/String;)V" />
+		<method name="append(Lorg/apache/http/util/ByteArrayBuffer;II)V" />
+		<method name="append(Lorg/apache/http/util/CharArrayBuffer;)V" />
+		<method name="append(Lorg/apache/http/util/CharArrayBuffer;II)V" />
+		<method name="append([BII)V" />
+		<method name="append([CII)V" />
+		<method name="buffer()[C" />
+		<method name="capacity()I" />
+		<method name="charAt(I)C" />
+		<method name="clear()V" />
+		<method name="ensureCapacity(I)V" />
+		<method name="indexOf(I)I" />
+		<method name="indexOf(III)I" />
+		<method name="isEmpty()Z" />
+		<method name="isFull()Z" />
+		<method name="length()I" />
+		<method name="setLength(I)V" />
+		<method name="substring(II)Ljava/lang/String;" />
+		<method name="substringTrimmed(II)Ljava/lang/String;" />
+		<method name="toCharArray()[C" />
+	</class>
+	<class name="org/apache/http/util/EncodingUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getAsciiBytes(Ljava/lang/String;)[B" />
+		<method name="getAsciiString([B)Ljava/lang/String;" />
+		<method name="getAsciiString([BII)Ljava/lang/String;" />
+		<method name="getBytes(Ljava/lang/String;Ljava/lang/String;)[B" />
+		<method name="getString([BIILjava/lang/String;)Ljava/lang/String;" />
+		<method name="getString([BLjava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/util/EntityUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="getContentCharSet(Lorg/apache/http/HttpEntity;)Ljava/lang/String;" />
+		<method name="toByteArray(Lorg/apache/http/HttpEntity;)[B" />
+		<method name="toString(Lorg/apache/http/HttpEntity;)Ljava/lang/String;" />
+		<method name="toString(Lorg/apache/http/HttpEntity;Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="org/apache/http/util/ExceptionUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="initCause(Ljava/lang/Throwable;Ljava/lang/Throwable;)V" />
+	</class>
+	<class name="org/apache/http/util/LangUtils" since="1">
+		<extends name="java/lang/Object" />
+		<method name="equals(Ljava/lang/Object;Ljava/lang/Object;)Z" />
+		<method name="equals([Ljava/lang/Object;[Ljava/lang/Object;)Z" />
+		<method name="hashCode(II)I" />
+		<method name="hashCode(ILjava/lang/Object;)I" />
+		<method name="hashCode(IZ)I" />
+		<field name="HASH_OFFSET" />
+		<field name="HASH_SEED" />
+	</class>
+	<class name="org/apache/http/util/VersionInfo" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="fromMap(Ljava/lang/String;Ljava/util/Map;Ljava/lang/ClassLoader;)Lorg/apache/http/util/VersionInfo;" />
+		<method name="getClassloader()Ljava/lang/String;" />
+		<method name="getModule()Ljava/lang/String;" />
+		<method name="getPackage()Ljava/lang/String;" />
+		<method name="getRelease()Ljava/lang/String;" />
+		<method name="getTimestamp()Ljava/lang/String;" />
+		<method name="loadVersionInfo(Ljava/lang/String;Ljava/lang/ClassLoader;)Lorg/apache/http/util/VersionInfo;" />
+		<method name="loadVersionInfo([Ljava/lang/String;Ljava/lang/ClassLoader;)[Lorg/apache/http/util/VersionInfo;" />
+		<field name="PROPERTY_MODULE" />
+		<field name="PROPERTY_RELEASE" />
+		<field name="PROPERTY_TIMESTAMP" />
+		<field name="UNAVAILABLE" />
+		<field name="VERSION_PROPERTY_FILE" />
+	</class>
+	<class name="org/json/JSONArray" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/util/Collection;)V" />
+		<method name="&lt;init>(Lorg/json/JSONTokener;)V" />
+		<method name="get(I)Ljava/lang/Object;" />
+		<method name="getBoolean(I)Z" />
+		<method name="getDouble(I)D" />
+		<method name="getInt(I)I" />
+		<method name="getJSONArray(I)Lorg/json/JSONArray;" />
+		<method name="getJSONObject(I)Lorg/json/JSONObject;" />
+		<method name="getLong(I)J" />
+		<method name="getString(I)Ljava/lang/String;" />
+		<method name="isNull(I)Z" />
+		<method name="join(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="length()I" />
+		<method name="opt(I)Ljava/lang/Object;" />
+		<method name="optBoolean(I)Z" />
+		<method name="optBoolean(IZ)Z" />
+		<method name="optDouble(I)D" />
+		<method name="optDouble(ID)D" />
+		<method name="optInt(I)I" />
+		<method name="optInt(II)I" />
+		<method name="optJSONArray(I)Lorg/json/JSONArray;" />
+		<method name="optJSONObject(I)Lorg/json/JSONObject;" />
+		<method name="optLong(I)J" />
+		<method name="optLong(IJ)J" />
+		<method name="optString(I)Ljava/lang/String;" />
+		<method name="optString(ILjava/lang/String;)Ljava/lang/String;" />
+		<method name="put(D)Lorg/json/JSONArray;" />
+		<method name="put(I)Lorg/json/JSONArray;" />
+		<method name="put(ID)Lorg/json/JSONArray;" />
+		<method name="put(II)Lorg/json/JSONArray;" />
+		<method name="put(IJ)Lorg/json/JSONArray;" />
+		<method name="put(ILjava/lang/Object;)Lorg/json/JSONArray;" />
+		<method name="put(IZ)Lorg/json/JSONArray;" />
+		<method name="put(J)Lorg/json/JSONArray;" />
+		<method name="put(Ljava/lang/Object;)Lorg/json/JSONArray;" />
+		<method name="put(Z)Lorg/json/JSONArray;" />
+		<method name="toJSONObject(Lorg/json/JSONArray;)Lorg/json/JSONObject;" />
+		<method name="toString(I)Ljava/lang/String;" />
+	</class>
+	<class name="org/json/JSONException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/json/JSONObject" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/util/Map;)V" />
+		<method name="&lt;init>(Lorg/json/JSONObject;[Ljava/lang/String;)V" />
+		<method name="&lt;init>(Lorg/json/JSONTokener;)V" />
+		<method name="accumulate(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;" />
+		<method name="get(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getBoolean(Ljava/lang/String;)Z" />
+		<method name="getDouble(Ljava/lang/String;)D" />
+		<method name="getInt(Ljava/lang/String;)I" />
+		<method name="getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;" />
+		<method name="getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;" />
+		<method name="getLong(Ljava/lang/String;)J" />
+		<method name="getString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="has(Ljava/lang/String;)Z" />
+		<method name="isNull(Ljava/lang/String;)Z" />
+		<method name="keys()Ljava/util/Iterator;" />
+		<method name="length()I" />
+		<method name="names()Lorg/json/JSONArray;" />
+		<method name="numberToString(Ljava/lang/Number;)Ljava/lang/String;" />
+		<method name="opt(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="optBoolean(Ljava/lang/String;)Z" />
+		<method name="optBoolean(Ljava/lang/String;Z)Z" />
+		<method name="optDouble(Ljava/lang/String;)D" />
+		<method name="optDouble(Ljava/lang/String;D)D" />
+		<method name="optInt(Ljava/lang/String;)I" />
+		<method name="optInt(Ljava/lang/String;I)I" />
+		<method name="optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;" />
+		<method name="optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;" />
+		<method name="optLong(Ljava/lang/String;)J" />
+		<method name="optLong(Ljava/lang/String;J)J" />
+		<method name="optString(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="put(Ljava/lang/String;D)Lorg/json/JSONObject;" />
+		<method name="put(Ljava/lang/String;I)Lorg/json/JSONObject;" />
+		<method name="put(Ljava/lang/String;J)Lorg/json/JSONObject;" />
+		<method name="put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;" />
+		<method name="put(Ljava/lang/String;Z)Lorg/json/JSONObject;" />
+		<method name="putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;" />
+		<method name="quote(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="remove(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="toJSONArray(Lorg/json/JSONArray;)Lorg/json/JSONArray;" />
+		<method name="toString(I)Ljava/lang/String;" />
+		<field name="NULL" />
+	</class>
+	<class name="org/json/JSONStringer" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="array()Lorg/json/JSONStringer;" />
+		<method name="endArray()Lorg/json/JSONStringer;" />
+		<method name="endObject()Lorg/json/JSONStringer;" />
+		<method name="key(Ljava/lang/String;)Lorg/json/JSONStringer;" />
+		<method name="object()Lorg/json/JSONStringer;" />
+		<method name="value(D)Lorg/json/JSONStringer;" />
+		<method name="value(J)Lorg/json/JSONStringer;" />
+		<method name="value(Ljava/lang/Object;)Lorg/json/JSONStringer;" />
+		<method name="value(Z)Lorg/json/JSONStringer;" />
+	</class>
+	<class name="org/json/JSONTokener" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="back()V" />
+		<method name="dehexchar(C)I" />
+		<method name="more()Z" />
+		<method name="next()C" />
+		<method name="next(C)C" />
+		<method name="next(I)Ljava/lang/String;" />
+		<method name="nextClean()C" />
+		<method name="nextString(C)Ljava/lang/String;" />
+		<method name="nextTo(C)Ljava/lang/String;" />
+		<method name="nextTo(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="nextValue()Ljava/lang/Object;" />
+		<method name="skipPast(Ljava/lang/String;)V" />
+		<method name="skipTo(C)C" />
+		<method name="syntaxError(Ljava/lang/String;)Lorg/json/JSONException;" />
+	</class>
+	<class name="org/w3c/dom/Attr" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getOwnerElement()Lorg/w3c/dom/Element;" />
+		<method name="getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" since="8" />
+		<method name="getSpecified()Z" />
+		<method name="getValue()Ljava/lang/String;" />
+		<method name="isId()Z" since="8" />
+		<method name="setValue(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/w3c/dom/CDATASection" since="1">
+		<implements name="org/w3c/dom/Text" />
+	</class>
+	<class name="org/w3c/dom/CharacterData" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="appendData(Ljava/lang/String;)V" />
+		<method name="deleteData(II)V" />
+		<method name="getData()Ljava/lang/String;" />
+		<method name="getLength()I" />
+		<method name="insertData(ILjava/lang/String;)V" />
+		<method name="replaceData(IILjava/lang/String;)V" />
+		<method name="setData(Ljava/lang/String;)V" />
+		<method name="substringData(II)Ljava/lang/String;" />
+	</class>
+	<class name="org/w3c/dom/Comment" since="1">
+		<implements name="org/w3c/dom/CharacterData" />
+	</class>
+	<class name="org/w3c/dom/DOMConfiguration" since="8">
+		<method name="canSetParameter(Ljava/lang/String;Ljava/lang/Object;)Z" />
+		<method name="getParameter(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getParameterNames()Lorg/w3c/dom/DOMStringList;" />
+		<method name="setParameter(Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="org/w3c/dom/DOMError" since="8">
+		<method name="getLocation()Lorg/w3c/dom/DOMLocator;" />
+		<method name="getMessage()Ljava/lang/String;" />
+		<method name="getRelatedData()Ljava/lang/Object;" />
+		<method name="getRelatedException()Ljava/lang/Object;" />
+		<method name="getSeverity()S" />
+		<method name="getType()Ljava/lang/String;" />
+		<field name="SEVERITY_ERROR" />
+		<field name="SEVERITY_FATAL_ERROR" />
+		<field name="SEVERITY_WARNING" />
+	</class>
+	<class name="org/w3c/dom/DOMErrorHandler" since="8">
+		<method name="handleError(Lorg/w3c/dom/DOMError;)Z" />
+	</class>
+	<class name="org/w3c/dom/DOMException" since="1">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(SLjava/lang/String;)V" />
+		<field name="DOMSTRING_SIZE_ERR" />
+		<field name="HIERARCHY_REQUEST_ERR" />
+		<field name="INDEX_SIZE_ERR" />
+		<field name="INUSE_ATTRIBUTE_ERR" />
+		<field name="INVALID_ACCESS_ERR" />
+		<field name="INVALID_CHARACTER_ERR" />
+		<field name="INVALID_MODIFICATION_ERR" />
+		<field name="INVALID_STATE_ERR" />
+		<field name="NAMESPACE_ERR" />
+		<field name="NOT_FOUND_ERR" />
+		<field name="NOT_SUPPORTED_ERR" />
+		<field name="NO_DATA_ALLOWED_ERR" />
+		<field name="NO_MODIFICATION_ALLOWED_ERR" />
+		<field name="SYNTAX_ERR" />
+		<field name="TYPE_MISMATCH_ERR" since="8" />
+		<field name="VALIDATION_ERR" since="8" />
+		<field name="WRONG_DOCUMENT_ERR" />
+		<field name="code" />
+	</class>
+	<class name="org/w3c/dom/DOMImplementation" since="1">
+		<method name="createDocument(Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/DocumentType;)Lorg/w3c/dom/Document;" />
+		<method name="createDocumentType(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/DocumentType;" />
+		<method name="getFeature(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" since="8" />
+		<method name="hasFeature(Ljava/lang/String;Ljava/lang/String;)Z" />
+	</class>
+	<class name="org/w3c/dom/DOMImplementationList" since="8">
+		<method name="getLength()I" />
+		<method name="item(I)Lorg/w3c/dom/DOMImplementation;" />
+	</class>
+	<class name="org/w3c/dom/DOMImplementationSource" since="8">
+		<method name="getDOMImplementation(Ljava/lang/String;)Lorg/w3c/dom/DOMImplementation;" />
+		<method name="getDOMImplementationList(Ljava/lang/String;)Lorg/w3c/dom/DOMImplementationList;" />
+	</class>
+	<class name="org/w3c/dom/DOMLocator" since="8">
+		<method name="getByteOffset()I" />
+		<method name="getColumnNumber()I" />
+		<method name="getLineNumber()I" />
+		<method name="getRelatedNode()Lorg/w3c/dom/Node;" />
+		<method name="getUri()Ljava/lang/String;" />
+		<method name="getUtf16Offset()I" />
+	</class>
+	<class name="org/w3c/dom/DOMStringList" since="8">
+		<method name="contains(Ljava/lang/String;)Z" />
+		<method name="getLength()I" />
+		<method name="item(I)Ljava/lang/String;" />
+	</class>
+	<class name="org/w3c/dom/Document" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="adoptNode(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" since="8" />
+		<method name="createAttribute(Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
+		<method name="createAttributeNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
+		<method name="createCDATASection(Ljava/lang/String;)Lorg/w3c/dom/CDATASection;" />
+		<method name="createComment(Ljava/lang/String;)Lorg/w3c/dom/Comment;" />
+		<method name="createDocumentFragment()Lorg/w3c/dom/DocumentFragment;" />
+		<method name="createElement(Ljava/lang/String;)Lorg/w3c/dom/Element;" />
+		<method name="createElementNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Element;" />
+		<method name="createEntityReference(Ljava/lang/String;)Lorg/w3c/dom/EntityReference;" />
+		<method name="createProcessingInstruction(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;" />
+		<method name="createTextNode(Ljava/lang/String;)Lorg/w3c/dom/Text;" />
+		<method name="getDoctype()Lorg/w3c/dom/DocumentType;" />
+		<method name="getDocumentElement()Lorg/w3c/dom/Element;" />
+		<method name="getDocumentURI()Ljava/lang/String;" since="8" />
+		<method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" since="8" />
+		<method name="getElementById(Ljava/lang/String;)Lorg/w3c/dom/Element;" />
+		<method name="getElementsByTagName(Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
+		<method name="getElementsByTagNameNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
+		<method name="getImplementation()Lorg/w3c/dom/DOMImplementation;" />
+		<method name="getInputEncoding()Ljava/lang/String;" since="8" />
+		<method name="getStrictErrorChecking()Z" since="8" />
+		<method name="getXmlEncoding()Ljava/lang/String;" since="8" />
+		<method name="getXmlStandalone()Z" since="8" />
+		<method name="getXmlVersion()Ljava/lang/String;" since="8" />
+		<method name="importNode(Lorg/w3c/dom/Node;Z)Lorg/w3c/dom/Node;" />
+		<method name="normalizeDocument()V" since="8" />
+		<method name="renameNode(Lorg/w3c/dom/Node;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" since="8" />
+		<method name="setDocumentURI(Ljava/lang/String;)V" since="8" />
+		<method name="setStrictErrorChecking(Z)V" since="8" />
+		<method name="setXmlStandalone(Z)V" since="8" />
+		<method name="setXmlVersion(Ljava/lang/String;)V" since="8" />
+	</class>
+	<class name="org/w3c/dom/DocumentFragment" since="1">
+		<implements name="org/w3c/dom/Node" />
+	</class>
+	<class name="org/w3c/dom/DocumentType" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="getEntities()Lorg/w3c/dom/NamedNodeMap;" />
+		<method name="getInternalSubset()Ljava/lang/String;" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getNotations()Lorg/w3c/dom/NamedNodeMap;" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+	</class>
+	<class name="org/w3c/dom/Element" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="getAttribute(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getAttributeNS(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getAttributeNode(Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
+		<method name="getAttributeNodeNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Attr;" />
+		<method name="getElementsByTagName(Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
+		<method name="getElementsByTagNameNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/NodeList;" />
+		<method name="getSchemaTypeInfo()Lorg/w3c/dom/TypeInfo;" since="8" />
+		<method name="getTagName()Ljava/lang/String;" />
+		<method name="hasAttribute(Ljava/lang/String;)Z" />
+		<method name="hasAttributeNS(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="removeAttribute(Ljava/lang/String;)V" />
+		<method name="removeAttributeNS(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="removeAttributeNode(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;" />
+		<method name="setAttribute(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setAttributeNS(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setAttributeNode(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;" />
+		<method name="setAttributeNodeNS(Lorg/w3c/dom/Attr;)Lorg/w3c/dom/Attr;" />
+		<method name="setIdAttribute(Ljava/lang/String;Z)V" since="8" />
+		<method name="setIdAttributeNS(Ljava/lang/String;Ljava/lang/String;Z)V" since="8" />
+		<method name="setIdAttributeNode(Lorg/w3c/dom/Attr;Z)V" since="8" />
+	</class>
+	<class name="org/w3c/dom/Entity" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="getInputEncoding()Ljava/lang/String;" since="8" />
+		<method name="getNotationName()Ljava/lang/String;" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="getXmlEncoding()Ljava/lang/String;" since="8" />
+		<method name="getXmlVersion()Ljava/lang/String;" since="8" />
+	</class>
+	<class name="org/w3c/dom/EntityReference" since="1">
+		<implements name="org/w3c/dom/Node" />
+	</class>
+	<class name="org/w3c/dom/NameList" since="8">
+		<method name="contains(Ljava/lang/String;)Z" />
+		<method name="containsNS(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="getLength()I" />
+		<method name="getName(I)Ljava/lang/String;" />
+		<method name="getNamespaceURI(I)Ljava/lang/String;" />
+	</class>
+	<class name="org/w3c/dom/NamedNodeMap" since="1">
+		<method name="getLength()I" />
+		<method name="getNamedItem(Ljava/lang/String;)Lorg/w3c/dom/Node;" />
+		<method name="getNamedItemNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" />
+		<method name="item(I)Lorg/w3c/dom/Node;" />
+		<method name="removeNamedItem(Ljava/lang/String;)Lorg/w3c/dom/Node;" />
+		<method name="removeNamedItemNS(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/Node;" />
+		<method name="setNamedItem(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
+		<method name="setNamedItemNS(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
+	</class>
+	<class name="org/w3c/dom/Node" since="1">
+		<method name="appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
+		<method name="cloneNode(Z)Lorg/w3c/dom/Node;" />
+		<method name="compareDocumentPosition(Lorg/w3c/dom/Node;)S" since="8" />
+		<method name="getAttributes()Lorg/w3c/dom/NamedNodeMap;" />
+		<method name="getBaseURI()Ljava/lang/String;" since="8" />
+		<method name="getChildNodes()Lorg/w3c/dom/NodeList;" />
+		<method name="getFeature(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;" since="8" />
+		<method name="getFirstChild()Lorg/w3c/dom/Node;" />
+		<method name="getLastChild()Lorg/w3c/dom/Node;" />
+		<method name="getLocalName()Ljava/lang/String;" />
+		<method name="getNamespaceURI()Ljava/lang/String;" />
+		<method name="getNextSibling()Lorg/w3c/dom/Node;" />
+		<method name="getNodeName()Ljava/lang/String;" />
+		<method name="getNodeType()S" />
+		<method name="getNodeValue()Ljava/lang/String;" />
+		<method name="getOwnerDocument()Lorg/w3c/dom/Document;" />
+		<method name="getParentNode()Lorg/w3c/dom/Node;" />
+		<method name="getPrefix()Ljava/lang/String;" />
+		<method name="getPreviousSibling()Lorg/w3c/dom/Node;" />
+		<method name="getTextContent()Ljava/lang/String;" since="8" />
+		<method name="getUserData(Ljava/lang/String;)Ljava/lang/Object;" since="8" />
+		<method name="hasAttributes()Z" />
+		<method name="hasChildNodes()Z" />
+		<method name="insertBefore(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
+		<method name="isDefaultNamespace(Ljava/lang/String;)Z" since="8" />
+		<method name="isEqualNode(Lorg/w3c/dom/Node;)Z" since="8" />
+		<method name="isSameNode(Lorg/w3c/dom/Node;)Z" since="8" />
+		<method name="isSupported(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="lookupNamespaceURI(Ljava/lang/String;)Ljava/lang/String;" since="8" />
+		<method name="lookupPrefix(Ljava/lang/String;)Ljava/lang/String;" since="8" />
+		<method name="normalize()V" />
+		<method name="removeChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
+		<method name="replaceChild(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;" />
+		<method name="setNodeValue(Ljava/lang/String;)V" />
+		<method name="setPrefix(Ljava/lang/String;)V" />
+		<method name="setTextContent(Ljava/lang/String;)V" since="8" />
+		<method name="setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object;" since="8" />
+		<field name="ATTRIBUTE_NODE" />
+		<field name="CDATA_SECTION_NODE" />
+		<field name="COMMENT_NODE" />
+		<field name="DOCUMENT_FRAGMENT_NODE" />
+		<field name="DOCUMENT_NODE" />
+		<field name="DOCUMENT_POSITION_CONTAINED_BY" since="8" />
+		<field name="DOCUMENT_POSITION_CONTAINS" since="8" />
+		<field name="DOCUMENT_POSITION_DISCONNECTED" since="8" />
+		<field name="DOCUMENT_POSITION_FOLLOWING" since="8" />
+		<field name="DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC" since="8" />
+		<field name="DOCUMENT_POSITION_PRECEDING" since="8" />
+		<field name="DOCUMENT_TYPE_NODE" />
+		<field name="ELEMENT_NODE" />
+		<field name="ENTITY_NODE" />
+		<field name="ENTITY_REFERENCE_NODE" />
+		<field name="NOTATION_NODE" />
+		<field name="PROCESSING_INSTRUCTION_NODE" />
+		<field name="TEXT_NODE" />
+	</class>
+	<class name="org/w3c/dom/NodeList" since="1">
+		<method name="getLength()I" />
+		<method name="item(I)Lorg/w3c/dom/Node;" />
+	</class>
+	<class name="org/w3c/dom/Notation" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+	</class>
+	<class name="org/w3c/dom/ProcessingInstruction" since="1">
+		<implements name="org/w3c/dom/Node" />
+		<method name="getData()Ljava/lang/String;" />
+		<method name="getTarget()Ljava/lang/String;" />
+		<method name="setData(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/w3c/dom/Text" since="1">
+		<implements name="org/w3c/dom/CharacterData" />
+		<method name="getWholeText()Ljava/lang/String;" since="8" />
+		<method name="isElementContentWhitespace()Z" since="8" />
+		<method name="replaceWholeText(Ljava/lang/String;)Lorg/w3c/dom/Text;" since="8" />
+		<method name="splitText(I)Lorg/w3c/dom/Text;" />
+	</class>
+	<class name="org/w3c/dom/TypeInfo" since="8">
+		<method name="getTypeName()Ljava/lang/String;" />
+		<method name="getTypeNamespace()Ljava/lang/String;" />
+		<method name="isDerivedFrom(Ljava/lang/String;Ljava/lang/String;I)Z" />
+		<field name="DERIVATION_EXTENSION" />
+		<field name="DERIVATION_LIST" />
+		<field name="DERIVATION_RESTRICTION" />
+		<field name="DERIVATION_UNION" />
+	</class>
+	<class name="org/w3c/dom/UserDataHandler" since="8">
+		<method name="handle(SLjava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)V" />
+		<field name="NODE_ADOPTED" />
+		<field name="NODE_CLONED" />
+		<field name="NODE_DELETED" />
+		<field name="NODE_IMPORTED" />
+		<field name="NODE_RENAMED" />
+	</class>
+	<class name="org/w3c/dom/ls/DOMImplementationLS" since="8">
+		<method name="createLSInput()Lorg/w3c/dom/ls/LSInput;" />
+		<method name="createLSOutput()Lorg/w3c/dom/ls/LSOutput;" />
+		<method name="createLSParser(SLjava/lang/String;)Lorg/w3c/dom/ls/LSParser;" />
+		<method name="createLSSerializer()Lorg/w3c/dom/ls/LSSerializer;" />
+		<field name="MODE_ASYNCHRONOUS" />
+		<field name="MODE_SYNCHRONOUS" />
+	</class>
+	<class name="org/w3c/dom/ls/LSException" since="8">
+		<extends name="java/lang/RuntimeException" />
+		<method name="&lt;init>(SLjava/lang/String;)V" />
+		<field name="PARSE_ERR" />
+		<field name="SERIALIZE_ERR" />
+		<field name="code" />
+	</class>
+	<class name="org/w3c/dom/ls/LSInput" since="8">
+		<method name="getBaseURI()Ljava/lang/String;" />
+		<method name="getByteStream()Ljava/io/InputStream;" />
+		<method name="getCertifiedText()Z" />
+		<method name="getCharacterStream()Ljava/io/Reader;" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getStringData()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setBaseURI(Ljava/lang/String;)V" />
+		<method name="setByteStream(Ljava/io/InputStream;)V" />
+		<method name="setCertifiedText(Z)V" />
+		<method name="setCharacterStream(Ljava/io/Reader;)V" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setPublicId(Ljava/lang/String;)V" />
+		<method name="setStringData(Ljava/lang/String;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/w3c/dom/ls/LSOutput" since="8">
+		<method name="getByteStream()Ljava/io/OutputStream;" />
+		<method name="getCharacterStream()Ljava/io/Writer;" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setByteStream(Ljava/io/OutputStream;)V" />
+		<method name="setCharacterStream(Ljava/io/Writer;)V" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/w3c/dom/ls/LSParser" since="8">
+		<method name="abort()V" />
+		<method name="getAsync()Z" />
+		<method name="getBusy()Z" />
+		<method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" />
+		<method name="getFilter()Lorg/w3c/dom/ls/LSParserFilter;" />
+		<method name="parse(Lorg/w3c/dom/ls/LSInput;)Lorg/w3c/dom/Document;" />
+		<method name="parseURI(Ljava/lang/String;)Lorg/w3c/dom/Document;" />
+		<method name="parseWithContext(Lorg/w3c/dom/ls/LSInput;Lorg/w3c/dom/Node;S)Lorg/w3c/dom/Node;" />
+		<method name="setFilter(Lorg/w3c/dom/ls/LSParserFilter;)V" />
+		<field name="ACTION_APPEND_AS_CHILDREN" />
+		<field name="ACTION_INSERT_AFTER" />
+		<field name="ACTION_INSERT_BEFORE" />
+		<field name="ACTION_REPLACE" />
+		<field name="ACTION_REPLACE_CHILDREN" />
+	</class>
+	<class name="org/w3c/dom/ls/LSParserFilter" since="8">
+		<method name="acceptNode(Lorg/w3c/dom/Node;)S" />
+		<method name="getWhatToShow()I" />
+		<method name="startElement(Lorg/w3c/dom/Element;)S" />
+		<field name="FILTER_ACCEPT" />
+		<field name="FILTER_INTERRUPT" />
+		<field name="FILTER_REJECT" />
+		<field name="FILTER_SKIP" />
+	</class>
+	<class name="org/w3c/dom/ls/LSResourceResolver" since="8">
+		<method name="resolveResource(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ls/LSInput;" />
+	</class>
+	<class name="org/w3c/dom/ls/LSSerializer" since="8">
+		<method name="getDomConfig()Lorg/w3c/dom/DOMConfiguration;" />
+		<method name="getNewLine()Ljava/lang/String;" />
+		<method name="setNewLine(Ljava/lang/String;)V" />
+		<method name="write(Lorg/w3c/dom/Node;Lorg/w3c/dom/ls/LSOutput;)Z" />
+		<method name="writeToString(Lorg/w3c/dom/Node;)Ljava/lang/String;" />
+		<method name="writeToURI(Lorg/w3c/dom/Node;Ljava/lang/String;)Z" />
+	</class>
+	<class name="org/xml/sax/AttributeList" since="1">
+		<method name="getLength()I" />
+		<method name="getName(I)Ljava/lang/String;" />
+		<method name="getType(I)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValue(I)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="org/xml/sax/Attributes" since="1">
+		<method name="getIndex(Ljava/lang/String;)I" />
+		<method name="getIndex(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getLength()I" />
+		<method name="getLocalName(I)Ljava/lang/String;" />
+		<method name="getQName(I)Ljava/lang/String;" />
+		<method name="getType(I)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getURI(I)Ljava/lang/String;" />
+		<method name="getValue(I)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+	</class>
+	<class name="org/xml/sax/ContentHandler" since="1">
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="endPrefixMapping(Ljava/lang/String;)V" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="skippedEntity(Ljava/lang/String;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V" />
+		<method name="startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/DTDHandler" since="1">
+		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/DocumentHandler" since="1">
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;)V" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)V" />
+	</class>
+	<class name="org/xml/sax/EntityResolver" since="1">
+		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+	</class>
+	<class name="org/xml/sax/ErrorHandler" since="1">
+		<method name="error(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
+	</class>
+	<class name="org/xml/sax/HandlerBase" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/DTDHandler" />
+		<implements name="org/xml/sax/DocumentHandler" />
+		<implements name="org/xml/sax/EntityResolver" />
+		<implements name="org/xml/sax/ErrorHandler" />
+		<method name="&lt;init>()V" />
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;)V" />
+		<method name="error(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)V" />
+		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
+	</class>
+	<class name="org/xml/sax/InputSource" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/io/InputStream;)V" />
+		<method name="&lt;init>(Ljava/io/Reader;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="getByteStream()Ljava/io/InputStream;" />
+		<method name="getCharacterStream()Ljava/io/Reader;" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setByteStream(Ljava/io/InputStream;)V" />
+		<method name="setCharacterStream(Ljava/io/Reader;)V" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setPublicId(Ljava/lang/String;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/Locator" since="1">
+		<method name="getColumnNumber()I" />
+		<method name="getLineNumber()I" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+	</class>
+	<class name="org/xml/sax/Parser" since="1">
+		<method name="parse(Ljava/lang/String;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;)V" />
+		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
+		<method name="setDocumentHandler(Lorg/xml/sax/DocumentHandler;)V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setLocale(Ljava/util/Locale;)V" />
+	</class>
+	<class name="org/xml/sax/SAXException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/Exception;)V" />
+		<method name="getException()Ljava/lang/Exception;" />
+	</class>
+	<class name="org/xml/sax/SAXNotRecognizedException" since="1">
+		<extends name="org/xml/sax/SAXException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/SAXNotSupportedException" since="1">
+		<extends name="org/xml/sax/SAXException" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/SAXParseException" since="1">
+		<extends name="org/xml/sax/SAXException" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V" />
+		<method name="&lt;init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/Exception;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Lorg/xml/sax/Locator;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Lorg/xml/sax/Locator;Ljava/lang/Exception;)V" />
+		<method name="getColumnNumber()I" />
+		<method name="getLineNumber()I" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+	</class>
+	<class name="org/xml/sax/XMLFilter" since="1">
+		<implements name="org/xml/sax/XMLReader" />
+		<method name="getParent()Lorg/xml/sax/XMLReader;" />
+		<method name="setParent(Lorg/xml/sax/XMLReader;)V" />
+	</class>
+	<class name="org/xml/sax/XMLReader" since="1">
+		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
+		<method name="getDTDHandler()Lorg/xml/sax/DTDHandler;" />
+		<method name="getEntityResolver()Lorg/xml/sax/EntityResolver;" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="parse(Ljava/lang/String;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;)V" />
+		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+	</class>
+	<class name="org/xml/sax/ext/Attributes2" since="1">
+		<implements name="org/xml/sax/Attributes" />
+		<method name="isDeclared(I)Z" />
+		<method name="isDeclared(Ljava/lang/String;)Z" />
+		<method name="isDeclared(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="isSpecified(I)Z" />
+		<method name="isSpecified(Ljava/lang/String;)Z" />
+		<method name="isSpecified(Ljava/lang/String;Ljava/lang/String;)Z" />
+	</class>
+	<class name="org/xml/sax/ext/Attributes2Impl" since="1">
+		<extends name="org/xml/sax/helpers/AttributesImpl" />
+		<implements name="org/xml/sax/ext/Attributes2" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/Attributes;)V" />
+		<method name="isDeclared(I)Z" />
+		<method name="isDeclared(Ljava/lang/String;)Z" />
+		<method name="isDeclared(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="isSpecified(I)Z" />
+		<method name="isSpecified(Ljava/lang/String;)Z" />
+		<method name="isSpecified(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="setDeclared(IZ)V" />
+		<method name="setSpecified(IZ)V" />
+	</class>
+	<class name="org/xml/sax/ext/DeclHandler" since="1">
+		<method name="attributeDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="elementDecl(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="externalEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="internalEntityDecl(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/ext/DefaultHandler2" since="1">
+		<extends name="org/xml/sax/helpers/DefaultHandler" />
+		<implements name="org/xml/sax/ext/DeclHandler" />
+		<implements name="org/xml/sax/ext/EntityResolver2" />
+		<implements name="org/xml/sax/ext/LexicalHandler" />
+		<method name="&lt;init>()V" />
+		<method name="attributeDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="comment([CII)V" />
+		<method name="elementDecl(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="endCDATA()V" />
+		<method name="endDTD()V" />
+		<method name="endEntity(Ljava/lang/String;)V" />
+		<method name="externalEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getExternalSubset(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+		<method name="internalEntityDecl(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+		<method name="startCDATA()V" />
+		<method name="startDTD(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="startEntity(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/ext/EntityResolver2" since="1">
+		<implements name="org/xml/sax/EntityResolver" />
+		<method name="getExternalSubset(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+	</class>
+	<class name="org/xml/sax/ext/LexicalHandler" since="1">
+		<method name="comment([CII)V" />
+		<method name="endCDATA()V" />
+		<method name="endDTD()V" />
+		<method name="endEntity(Ljava/lang/String;)V" />
+		<method name="startCDATA()V" />
+		<method name="startDTD(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="startEntity(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/ext/Locator2" since="1">
+		<implements name="org/xml/sax/Locator" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getXMLVersion()Ljava/lang/String;" />
+	</class>
+	<class name="org/xml/sax/ext/Locator2Impl" since="1">
+		<extends name="org/xml/sax/helpers/LocatorImpl" />
+		<implements name="org/xml/sax/ext/Locator2" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/Locator;)V" />
+		<method name="getEncoding()Ljava/lang/String;" />
+		<method name="getXMLVersion()Ljava/lang/String;" />
+		<method name="setEncoding(Ljava/lang/String;)V" />
+		<method name="setXMLVersion(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/AttributeListImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/AttributeList" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/AttributeList;)V" />
+		<method name="addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clear()V" />
+		<method name="getLength()I" />
+		<method name="getName(I)Ljava/lang/String;" />
+		<method name="getType(I)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValue(I)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="removeAttribute(Ljava/lang/String;)V" />
+		<method name="setAttributeList(Lorg/xml/sax/AttributeList;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/AttributesImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/Attributes" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/Attributes;)V" />
+		<method name="addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="clear()V" />
+		<method name="getIndex(Ljava/lang/String;)I" />
+		<method name="getIndex(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getLength()I" />
+		<method name="getLocalName(I)Ljava/lang/String;" />
+		<method name="getQName(I)Ljava/lang/String;" />
+		<method name="getType(I)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getURI(I)Ljava/lang/String;" />
+		<method name="getValue(I)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="removeAttribute(I)V" />
+		<method name="setAttribute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setAttributes(Lorg/xml/sax/Attributes;)V" />
+		<method name="setLocalName(ILjava/lang/String;)V" />
+		<method name="setQName(ILjava/lang/String;)V" />
+		<method name="setType(ILjava/lang/String;)V" />
+		<method name="setURI(ILjava/lang/String;)V" />
+		<method name="setValue(ILjava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/DefaultHandler" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/ContentHandler" />
+		<implements name="org/xml/sax/DTDHandler" />
+		<implements name="org/xml/sax/EntityResolver" />
+		<implements name="org/xml/sax/ErrorHandler" />
+		<method name="&lt;init>()V" />
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="endPrefixMapping(Ljava/lang/String;)V" />
+		<method name="error(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="skippedEntity(Ljava/lang/String;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V" />
+		<method name="startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/LocatorImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/Locator" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/Locator;)V" />
+		<method name="getColumnNumber()I" />
+		<method name="getLineNumber()I" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="setColumnNumber(I)V" />
+		<method name="setLineNumber(I)V" />
+		<method name="setPublicId(Ljava/lang/String;)V" />
+		<method name="setSystemId(Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/NamespaceSupport" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="declarePrefix(Ljava/lang/String;Ljava/lang/String;)Z" />
+		<method name="getDeclaredPrefixes()Ljava/util/Enumeration;" />
+		<method name="getPrefix(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getPrefixes()Ljava/util/Enumeration;" />
+		<method name="getPrefixes(Ljava/lang/String;)Ljava/util/Enumeration;" />
+		<method name="getURI(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="isNamespaceDeclUris()Z" />
+		<method name="popContext()V" />
+		<method name="processName(Ljava/lang/String;[Ljava/lang/String;Z)[Ljava/lang/String;" />
+		<method name="pushContext()V" />
+		<method name="reset()V" />
+		<method name="setNamespaceDeclUris(Z)V" />
+		<field name="NSDECL" />
+		<field name="XMLNS" />
+	</class>
+	<class name="org/xml/sax/helpers/ParserAdapter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/DocumentHandler" />
+		<implements name="org/xml/sax/XMLReader" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/Parser;)V" />
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;)V" />
+		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
+		<method name="getDTDHandler()Lorg/xml/sax/DTDHandler;" />
+		<method name="getEntityResolver()Lorg/xml/sax/EntityResolver;" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="parse(Ljava/lang/String;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Lorg/xml/sax/AttributeList;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/ParserFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="makeParser()Lorg/xml/sax/Parser;" />
+		<method name="makeParser(Ljava/lang/String;)Lorg/xml/sax/Parser;" />
+	</class>
+	<class name="org/xml/sax/helpers/XMLFilterImpl" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/ContentHandler" />
+		<implements name="org/xml/sax/DTDHandler" />
+		<implements name="org/xml/sax/EntityResolver" />
+		<implements name="org/xml/sax/ErrorHandler" />
+		<implements name="org/xml/sax/XMLFilter" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/XMLReader;)V" />
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="endPrefixMapping(Ljava/lang/String;)V" />
+		<method name="error(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="fatalError(Lorg/xml/sax/SAXParseException;)V" />
+		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
+		<method name="getDTDHandler()Lorg/xml/sax/DTDHandler;" />
+		<method name="getEntityResolver()Lorg/xml/sax/EntityResolver;" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getParent()Lorg/xml/sax/XMLReader;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="notationDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="parse(Ljava/lang/String;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="resolveEntity(Ljava/lang/String;Ljava/lang/String;)Lorg/xml/sax/InputSource;" />
+		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setParent(Lorg/xml/sax/XMLReader;)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="skippedEntity(Ljava/lang/String;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V" />
+		<method name="startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="unparsedEntityDecl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="warning(Lorg/xml/sax/SAXParseException;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/XMLReaderAdapter" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/ContentHandler" />
+		<implements name="org/xml/sax/Parser" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xml/sax/XMLReader;)V" />
+		<method name="characters([CII)V" />
+		<method name="endDocument()V" />
+		<method name="endElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="endPrefixMapping(Ljava/lang/String;)V" />
+		<method name="ignorableWhitespace([CII)V" />
+		<method name="parse(Ljava/lang/String;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;)V" />
+		<method name="processingInstruction(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
+		<method name="setDocumentHandler(Lorg/xml/sax/DocumentHandler;)V" />
+		<method name="setDocumentLocator(Lorg/xml/sax/Locator;)V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setLocale(Ljava/util/Locale;)V" />
+		<method name="skippedEntity(Ljava/lang/String;)V" />
+		<method name="startDocument()V" />
+		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V" />
+		<method name="startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V" />
+	</class>
+	<class name="org/xml/sax/helpers/XMLReaderFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="createXMLReader()Lorg/xml/sax/XMLReader;" />
+		<method name="createXMLReader(Ljava/lang/String;)Lorg/xml/sax/XMLReader;" />
+	</class>
+	<class name="org/xmlpull/v1/XmlPullParser" since="1">
+		<method name="defineEntityReplacementText(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="getAttributeCount()I" />
+		<method name="getAttributeName(I)Ljava/lang/String;" />
+		<method name="getAttributeNamespace(I)Ljava/lang/String;" />
+		<method name="getAttributePrefix(I)Ljava/lang/String;" />
+		<method name="getAttributeType(I)Ljava/lang/String;" />
+		<method name="getAttributeValue(I)Ljava/lang/String;" />
+		<method name="getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getColumnNumber()I" />
+		<method name="getDepth()I" />
+		<method name="getEventType()I" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getInputEncoding()Ljava/lang/String;" />
+		<method name="getLineNumber()I" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getNamespace()Ljava/lang/String;" />
+		<method name="getNamespace(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getNamespaceCount(I)I" />
+		<method name="getNamespacePrefix(I)Ljava/lang/String;" />
+		<method name="getNamespaceUri(I)Ljava/lang/String;" />
+		<method name="getPositionDescription()Ljava/lang/String;" />
+		<method name="getPrefix()Ljava/lang/String;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getText()Ljava/lang/String;" />
+		<method name="getTextCharacters([I)[C" />
+		<method name="isAttributeDefault(I)Z" />
+		<method name="isEmptyElementTag()Z" />
+		<method name="isWhitespace()Z" />
+		<method name="next()I" />
+		<method name="nextTag()I" />
+		<method name="nextText()Ljava/lang/String;" />
+		<method name="nextToken()I" />
+		<method name="require(ILjava/lang/String;Ljava/lang/String;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setInput(Ljava/io/InputStream;Ljava/lang/String;)V" />
+		<method name="setInput(Ljava/io/Reader;)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<field name="CDSECT" />
+		<field name="COMMENT" />
+		<field name="DOCDECL" />
+		<field name="END_DOCUMENT" />
+		<field name="END_TAG" />
+		<field name="ENTITY_REF" />
+		<field name="FEATURE_PROCESS_DOCDECL" />
+		<field name="FEATURE_PROCESS_NAMESPACES" />
+		<field name="FEATURE_REPORT_NAMESPACE_ATTRIBUTES" />
+		<field name="FEATURE_VALIDATION" />
+		<field name="IGNORABLE_WHITESPACE" />
+		<field name="NO_NAMESPACE" />
+		<field name="PROCESSING_INSTRUCTION" />
+		<field name="START_DOCUMENT" />
+		<field name="START_TAG" />
+		<field name="TEXT" />
+		<field name="TYPES" />
+	</class>
+	<class name="org/xmlpull/v1/XmlPullParserException" since="1">
+		<extends name="java/lang/Exception" />
+		<method name="&lt;init>(Ljava/lang/String;)V" />
+		<method name="&lt;init>(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/Throwable;)V" />
+		<method name="getColumnNumber()I" />
+		<method name="getDetail()Ljava/lang/Throwable;" />
+		<method name="getLineNumber()I" />
+		<field name="column" />
+		<field name="detail" />
+		<field name="row" />
+	</class>
+	<class name="org/xmlpull/v1/XmlPullParserFactory" since="1">
+		<extends name="java/lang/Object" />
+		<method name="&lt;init>()V" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="isNamespaceAware()Z" />
+		<method name="isValidating()Z" />
+		<method name="newInstance()Lorg/xmlpull/v1/XmlPullParserFactory;" />
+		<method name="newInstance(Ljava/lang/String;Ljava/lang/Class;)Lorg/xmlpull/v1/XmlPullParserFactory;" />
+		<method name="newPullParser()Lorg/xmlpull/v1/XmlPullParser;" />
+		<method name="newSerializer()Lorg/xmlpull/v1/XmlSerializer;" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setNamespaceAware(Z)V" />
+		<method name="setValidating(Z)V" />
+		<field name="PROPERTY_NAME" />
+		<field name="classNamesLocation" />
+		<field name="features" />
+		<field name="parserClasses" />
+		<field name="serializerClasses" />
+	</class>
+	<class name="org/xmlpull/v1/XmlSerializer" since="1">
+		<method name="attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
+		<method name="cdsect(Ljava/lang/String;)V" />
+		<method name="comment(Ljava/lang/String;)V" />
+		<method name="docdecl(Ljava/lang/String;)V" />
+		<method name="endDocument()V" />
+		<method name="endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
+		<method name="entityRef(Ljava/lang/String;)V" />
+		<method name="flush()V" />
+		<method name="getDepth()I" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getName()Ljava/lang/String;" />
+		<method name="getNamespace()Ljava/lang/String;" />
+		<method name="getPrefix(Ljava/lang/String;Z)Ljava/lang/String;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="ignorableWhitespace(Ljava/lang/String;)V" />
+		<method name="processingInstruction(Ljava/lang/String;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V" />
+		<method name="setOutput(Ljava/io/Writer;)V" />
+		<method name="setPrefix(Ljava/lang/String;Ljava/lang/String;)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V" />
+		<method name="startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
+		<method name="text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;" />
+		<method name="text([CII)Lorg/xmlpull/v1/XmlSerializer;" />
+	</class>
+	<class name="org/xmlpull/v1/sax2/Driver" since="1">
+		<extends name="java/lang/Object" />
+		<implements name="org/xml/sax/Attributes" />
+		<implements name="org/xml/sax/Locator" />
+		<implements name="org/xml/sax/XMLReader" />
+		<method name="&lt;init>()V" />
+		<method name="&lt;init>(Lorg/xmlpull/v1/XmlPullParser;)V" />
+		<method name="getColumnNumber()I" />
+		<method name="getContentHandler()Lorg/xml/sax/ContentHandler;" />
+		<method name="getDTDHandler()Lorg/xml/sax/DTDHandler;" />
+		<method name="getEntityResolver()Lorg/xml/sax/EntityResolver;" />
+		<method name="getErrorHandler()Lorg/xml/sax/ErrorHandler;" />
+		<method name="getFeature(Ljava/lang/String;)Z" />
+		<method name="getIndex(Ljava/lang/String;)I" />
+		<method name="getIndex(Ljava/lang/String;Ljava/lang/String;)I" />
+		<method name="getLength()I" />
+		<method name="getLineNumber()I" />
+		<method name="getLocalName(I)Ljava/lang/String;" />
+		<method name="getProperty(Ljava/lang/String;)Ljava/lang/Object;" />
+		<method name="getPublicId()Ljava/lang/String;" />
+		<method name="getQName(I)Ljava/lang/String;" />
+		<method name="getSystemId()Ljava/lang/String;" />
+		<method name="getType(I)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getURI(I)Ljava/lang/String;" />
+		<method name="getValue(I)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="getValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;" />
+		<method name="parse(Ljava/lang/String;)V" />
+		<method name="parse(Lorg/xml/sax/InputSource;)V" />
+		<method name="parseSubTree(Lorg/xmlpull/v1/XmlPullParser;)V" />
+		<method name="setContentHandler(Lorg/xml/sax/ContentHandler;)V" />
+		<method name="setDTDHandler(Lorg/xml/sax/DTDHandler;)V" />
+		<method name="setEntityResolver(Lorg/xml/sax/EntityResolver;)V" />
+		<method name="setErrorHandler(Lorg/xml/sax/ErrorHandler;)V" />
+		<method name="setFeature(Ljava/lang/String;Z)V" />
+		<method name="setProperty(Ljava/lang/String;Ljava/lang/Object;)V" />
+		<method name="startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V" />
+		<field name="APACHE_DYNAMIC_VALIDATION_FEATURE" />
+		<field name="APACHE_SCHEMA_VALIDATION_FEATURE" />
+		<field name="DECLARATION_HANDLER_PROPERTY" />
+		<field name="LEXICAL_HANDLER_PROPERTY" />
+		<field name="NAMESPACES_FEATURE" />
+		<field name="NAMESPACE_PREFIXES_FEATURE" />
+		<field name="VALIDATION_FEATURE" />
+		<field name="contentHandler" />
+		<field name="errorHandler" />
+		<field name="pp" />
+		<field name="systemId" />
+	</class>
+</api>
diff --git a/sdk/doc_source.prop_template b/sdk/doc_source.prop_template
new file mode 100644
index 0000000..d3cdfd5
--- /dev/null
+++ b/sdk/doc_source.prop_template
@@ -0,0 +1,4 @@
+Pkg.UserSrc=false
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
diff --git a/sdk/doc_source.properties b/sdk/doc_source.properties
deleted file mode 100644
index 5b3dce6..0000000
--- a/sdk/doc_source.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-Pkg.UserSrc=false
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
-
diff --git a/sdk/images_armeabi-v7a_source.prop_template b/sdk/images_armeabi-v7a_source.prop_template
new file mode 100644
index 0000000..ae67647
--- /dev/null
+++ b/sdk/images_armeabi-v7a_source.prop_template
@@ -0,0 +1,6 @@
+Pkg.Desc=Android SDK Platform ${PLATFORM_VERSION}
+Pkg.UserSrc=false
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
+SystemImage.Abi=armeabi-v7a
diff --git a/sdk/images_armeabi-v7a_source.properties b/sdk/images_armeabi-v7a_source.properties
deleted file mode 100644
index 2392a00..0000000
--- a/sdk/images_armeabi-v7a_source.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-Pkg.Desc=Android SDK Platform 4.0.3
-Pkg.UserSrc=false
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
-SystemImage.Abi=armeabi-v7a
diff --git a/sdk/images_armeabi_source.prop_template b/sdk/images_armeabi_source.prop_template
new file mode 100644
index 0000000..b100e53
--- /dev/null
+++ b/sdk/images_armeabi_source.prop_template
@@ -0,0 +1,6 @@
+Pkg.Desc=Android SDK Platform ${PLATFORM_VERSION}
+Pkg.UserSrc=false
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
+SystemImage.Abi=armeabi
diff --git a/sdk/images_armeabi_source.properties b/sdk/images_armeabi_source.properties
deleted file mode 100644
index 4af4b5d..0000000
--- a/sdk/images_armeabi_source.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-Pkg.Desc=Android SDK Platform 4.0.3
-Pkg.UserSrc=false
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
-SystemImage.Abi=armeabi
diff --git a/sdk/images_x86_source.prop_template b/sdk/images_x86_source.prop_template
new file mode 100644
index 0000000..62e2e0d
--- /dev/null
+++ b/sdk/images_x86_source.prop_template
@@ -0,0 +1,6 @@
+Pkg.Desc=Android SDK Platform ${PLATFORM_VERSION}
+Pkg.UserSrc=false
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
+SystemImage.Abi=x86
diff --git a/sdk/images_x86_source.properties b/sdk/images_x86_source.properties
deleted file mode 100644
index 7a17964..0000000
--- a/sdk/images_x86_source.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-Pkg.Desc=Android SDK Platform 4.0.3
-Pkg.UserSrc=false
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
-SystemImage.Abi=x86
diff --git a/sdk/plat_tools_source.properties b/sdk/plat_tools_source.properties
index 3da9448..488c0d5 100644
--- a/sdk/plat_tools_source.properties
+++ b/sdk/plat_tools_source.properties
@@ -1,2 +1,2 @@
 Pkg.UserSrc=false
-Pkg.Revision=10
\ No newline at end of file
+Pkg.Revision=11
\ No newline at end of file
diff --git a/sdk/platform_source.prop_template b/sdk/platform_source.prop_template
new file mode 100644
index 0000000..17a5e4e
--- /dev/null
+++ b/sdk/platform_source.prop_template
@@ -0,0 +1,9 @@
+Pkg.Desc=Android SDK Platform ${PLATFORM_VERSION}
+Pkg.UserSrc=false
+Platform.Version=${PLATFORM_VERSION}
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
+Layoutlib.Api=7
+Layoutlib.Revision=1
+Platform.MinToolsRev=15
diff --git a/sdk/platform_source.properties b/sdk/platform_source.properties
deleted file mode 100644
index a0a26b8..0000000
--- a/sdk/platform_source.properties
+++ /dev/null
@@ -1,9 +0,0 @@
-Pkg.Desc=Android SDK Platform 4.0.3
-Pkg.UserSrc=false
-Platform.Version=4.0.3
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
-Layoutlib.Api=7
-Layoutlib.Revision=1
-Platform.MinToolsRev=15
diff --git a/sdk/prebuilt/v7/gridlayout/.classpath b/sdk/prebuilt/v7/gridlayout/.classpath
new file mode 100644
index 0000000..a4f1e40
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff --git a/sdk/prebuilt/v7/gridlayout/.project b/sdk/prebuilt/v7/gridlayout/.project
new file mode 100644
index 0000000..ed51f1d
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>gridlayout_v7</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/sdk/prebuilt/v7/gridlayout/AndroidManifest.xml b/sdk/prebuilt/v7/gridlayout/AndroidManifest.xml
new file mode 100644
index 0000000..c3f7168
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/AndroidManifest.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.support.v7.gridlayout"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk android:minSdkVersion="7" />
+
+</manifest>
diff --git a/sdk/prebuilt/v7/gridlayout/README.txt b/sdk/prebuilt/v7/gridlayout/README.txt
new file mode 100644
index 0000000..86853b0
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/README.txt
@@ -0,0 +1,8 @@
+Library Project including GridLayout.
+
+This can be used by an Android project to provide
+access to GridLayout on applications running on API 7+
+
+There is technically no source, but the src folder is necessary
+to ensure that the build system works. The content is actually
+located in libs/android-support-v7-gridlayout.jar
diff --git a/sdk/prebuilt/v7/gridlayout/libs/android-support-v7-gridlayout.jar b/sdk/prebuilt/v7/gridlayout/libs/android-support-v7-gridlayout.jar
new file mode 100644
index 0000000..ecef47d
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/libs/android-support-v7-gridlayout.jar
Binary files differ
diff --git a/sdk/prebuilt/v7/gridlayout/project.properties b/sdk/prebuilt/v7/gridlayout/project.properties
new file mode 100644
index 0000000..5ca3505
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/project.properties
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-7
+android.library=true
diff --git a/sdk/prebuilt/v7/gridlayout/res/values/attrs.xml b/sdk/prebuilt/v7/gridlayout/res/values/attrs.xml
new file mode 100644
index 0000000..ad2ef4e
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/res/values/attrs.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <declare-styleable name="GridLayout">
+
+        <!--
+              support versions. All attributes not present in ViewGroup/View are
+              redefined in the support library namespace.
+        -->
+
+
+        <!--
+        The orientation property is not used during layout. It is only used to
+        allocate row and column parameters when they are not specified by its children's
+        layout parameters. GridLayout works like LinearLayout in this case;
+        putting all the components either in a single row or in a single column -
+        depending on the value of this flag. In the horizontal case, a columnCount
+        property may be additionally supplied to force new rows to be created when a
+        row is full. The rowCount attribute may be used similarly in the vertical case.
+        The default is horizontal.
+        -->
+        <attr name="orientation">
+
+            <!-- Defines an horizontal widget. -->
+            <enum name="horizontal" value="0" />
+            <!-- Defines a vertical widget. -->
+            <enum name="vertical" value="1" />
+        </attr>
+        <!-- The maximum number of rows to create when automatically positioning children. -->
+        <attr name="rowCount" format="integer" />
+        <!-- The maximum number of columns to create when automatically positioning children. -->
+        <attr name="columnCount" format="integer" />
+        <!--
+        When set to true, tells GridLayout to use default margins when none are specified
+        in a view's layout parameters.
+        The default value is false.
+        See {@link android.widget.GridLayout#setUseDefaultMargins(boolean)}.
+        -->
+        <attr name="useDefaultMargins" format="boolean" />
+        <!--
+        When set to alignMargins, causes alignment to take place between the outer
+        boundary of a view, as defined by its margins. When set to alignBounds,
+        causes alignment to take place between the edges of the view.
+        The default is alignMargins.
+        See {@link android.widget.GridLayout#setAlignmentMode(int)}.
+        -->
+        <attr name="alignmentMode">
+
+            <!--
+            Align the bounds of the children.
+            See {@link android.widget.GridLayout#ALIGN_BOUNDS}.
+            -->
+            <enum name="alignBounds" value="0" />
+            <!--
+            Align the margins of the children.
+            See {@link android.widget.GridLayout#ALIGN_MARGINS}.
+            -->
+            <enum name="alignMargins" value="1" />
+        </attr>
+        <!--
+        When set to true, forces row boundaries to appear in the same order
+        as row indices.
+        The default is true.
+        See {@link android.widget.GridLayout#setRowOrderPreserved(boolean)}.
+        -->
+        <attr name="rowOrderPreserved" format="boolean" />
+        <!--
+        When set to true, forces column boundaries to appear in the same order
+        as column indices.
+        The default is true.
+        See {@link android.widget.GridLayout#setColumnOrderPreserved(boolean)}.
+        -->
+        <attr name="columnOrderPreserved" format="boolean" />
+    </declare-styleable>
+    <declare-styleable name="GridLayout_Layout">
+
+        <!--
+              support versions. All attributes not present in MarginLayout are
+              redefined in the support library name space.
+        -->
+
+
+        <!-- START MarginLayout layoutparams -->
+
+        <attr name="android:layout_width" />
+        <attr name="android:layout_height" />
+        <!--
+              Specifies extra space on the left, top, right and bottom
+              sides of this view. This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_margin" />
+        <!--
+              Specifies extra space on the left side of this view.
+              This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_marginLeft" />
+        <!--
+              Specifies extra space on the top side of this view.
+              This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_marginTop" />
+        <!--
+              Specifies extra space on the right side of this view.
+              This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_marginRight" />
+        <!--
+              Specifies extra space on the bottom side of this view.
+              This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_marginBottom" />
+        <!--
+              Specifies extra space on the start side of this view.
+              This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_marginStart" />
+        <!--
+              Specifies extra space on the end side of this view.
+              This space is outside this view's bounds.
+        -->
+        <attr name="android:layout_marginEnd" />
+
+        <!-- END MarginLayout layoutparams -->
+
+
+        <!--
+        The row boundary delimiting the top of the group of cells
+        occupied by this view.
+        -->
+        <attr name="layout_row" format="integer" />
+        <!--
+        The row span: the difference between the bottom and top
+        boundaries delimiting the group of cells occupied by this view.
+        The default is one.
+        See {@link android.widget.GridLayout.Spec}.
+        -->
+        <attr name="layout_rowSpan" format="integer" min="1" />
+        <!--
+        The column boundary delimiting the left of the group of cells
+        occupied by this view.
+        -->
+        <attr name="layout_column" format="integer" />
+        <!--
+        The column span: the difference between the right and left
+        boundaries delimiting the group of cells occupied by this view.
+        The default is one.
+        See {@link android.widget.GridLayout.Spec}.
+        -->
+        <attr name="layout_columnSpan" format="integer" min="1" />
+        <!--
+        Gravity specifies how a component should be placed in its group of cells.
+        The default is LEFT | BASELINE.
+        See {@link android.widget.GridLayout.LayoutParams#setGravity(int)}.
+        -->
+        <attr name="layout_gravity">
+
+            <!-- Push object to the top of its container, not changing its size. -->
+            <flag name="top" value="0x30" />
+            <!-- Push object to the bottom of its container, not changing its size. -->
+            <flag name="bottom" value="0x50" />
+            <!-- Push object to the left of its container, not changing its size. -->
+            <flag name="left" value="0x03" />
+            <!-- Push object to the right of its container, not changing its size. -->
+            <flag name="right" value="0x05" />
+            <!-- Place object in the vertical center of its container, not changing its size. -->
+            <flag name="center_vertical" value="0x10" />
+            <!-- Grow the vertical size of the object if needed so it completely fills its container. -->
+            <flag name="fill_vertical" value="0x70" />
+            <!-- Place object in the horizontal center of its container, not changing its size. -->
+            <flag name="center_horizontal" value="0x01" />
+            <!-- Grow the horizontal size of the object if needed so it completely fills its container. -->
+            <flag name="fill_horizontal" value="0x07" />
+            <!-- Place the object in the center of its container in both the vertical and horizontal axis, not changing its size. -->
+            <flag name="center" value="0x11" />
+            <!-- Grow the horizontal and vertical size of the object if needed so it completely fills its container. -->
+            <flag name="fill" value="0x77" />
+            <!--
+             Additional option that can be set to have the top and/or bottom edges of
+             the child clipped to its container's bounds.
+             The clip will be based on the vertical gravity: a top gravity will clip the bottom
+             edge, a bottom gravity will clip the top edge, and neither will clip both edges.
+            -->
+            <flag name="clip_vertical" value="0x80" />
+            <!--
+             Additional option that can be set to have the left and/or right edges of
+             the child clipped to its container's bounds.
+             The clip will be based on the horizontal gravity: a left gravity will clip the right
+             edge, a right gravity will clip the left edge, and neither will clip both edges.
+            -->
+            <flag name="clip_horizontal" value="0x08" />
+            <!-- Push object to the beginning of its container, not changing its size. -->
+            <flag name="start" value="0x00800003" />
+            <!-- Push object to the end of its container, not changing its size. -->
+            <flag name="end" value="0x00800005" />
+        </attr>
+    </declare-styleable>
+
+</resources>
diff --git a/sdk/prebuilt/v7/gridlayout/res/values/dimens.xml b/sdk/prebuilt/v7/gridlayout/res/values/dimens.xml
new file mode 100644
index 0000000..fda3feb
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/res/values/dimens.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <!-- The default gap between components in a layout. -->
+    <dimen name="default_gap">16dip</dimen>
+
+</resources>
diff --git a/sdk/prebuilt/v7/gridlayout/src/.readme b/sdk/prebuilt/v7/gridlayout/src/.readme
new file mode 100644
index 0000000..4bcebad
--- /dev/null
+++ b/sdk/prebuilt/v7/gridlayout/src/.readme
@@ -0,0 +1,2 @@
+This hidden file is there to ensure there is an src folder.
+Once we support binary library this will go away.
\ No newline at end of file
diff --git a/sdk/source_source.prop_template b/sdk/source_source.prop_template
new file mode 100644
index 0000000..d3cdfd5
--- /dev/null
+++ b/sdk/source_source.prop_template
@@ -0,0 +1,4 @@
+Pkg.UserSrc=false
+Pkg.Revision=1
+AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION}
+AndroidVersion.CodeName=${PLATFORM_VERSION_CODENAME}
diff --git a/sdk/source_source.properties b/sdk/source_source.properties
deleted file mode 100644
index d0b390b..0000000
--- a/sdk/source_source.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-Pkg.UserSrc=false
-Pkg.Revision=1
-AndroidVersion.ApiLevel=15
-#AndroidVersion.CodeName=
diff --git a/sdk/support_source.properties b/sdk/support_source.properties
index 32bdbe3..7ea8c5d 100644
--- a/sdk/support_source.properties
+++ b/sdk/support_source.properties
@@ -1,6 +1,9 @@
 Pkg.UserSrc=false
-Pkg.Revision=6
+Pkg.Revision=7
 Extra.Vendor=android
+Extra.VendorId=android
+Extra.VendorDisplay=Android
+Extra.NameDisplay=Android Support Library
 Extra.Path=support
 Extra.OldPaths=compatibility
 
diff --git a/tools/emulator/opengl/Android.mk b/tools/emulator/opengl/Android.mk
index 2c1cb64..3a23395 100644
--- a/tools/emulator/opengl/Android.mk
+++ b/tools/emulator/opengl/Android.mk
@@ -47,12 +47,6 @@
 # module that hasn't been declared yet anyway.
 #
 
-# First, build the emugen host source-generation tool
-#
-# It will be used by other modules to generate wire protocol encode/decoder
-# source files (see all emugl-gen-decoder/encoder in common.mk)
-#
-include $(EMUGL_PATH)/host/tools/emugen/Android.mk
 include $(EMUGL_PATH)/shared/OpenglOsUtils/Android.mk
 include $(EMUGL_PATH)/shared/OpenglCodecCommon/Android.mk
 
@@ -69,26 +63,4 @@
 include $(EMUGL_PATH)/system/gralloc/Android.mk
 include $(EMUGL_PATH)/system/egl/Android.mk
 
-# Host static libraries
-include $(EMUGL_PATH)/host/libs/GLESv1_dec/Android.mk
-include $(EMUGL_PATH)/host/libs/GLESv2_dec/Android.mk
-include $(EMUGL_PATH)/host/libs/renderControl_dec/Android.mk
-include $(EMUGL_PATH)/tests/ut_rendercontrol_dec/Android.mk
-include $(EMUGL_PATH)/host/libs/Translator/GLcommon/Android.mk
-include $(EMUGL_PATH)/host/libs/Translator/GLES_CM/Android.mk
-include $(EMUGL_PATH)/host/libs/Translator/GLES_V2/Android.mk
-include $(EMUGL_PATH)/host/libs/Translator/EGL/Android.mk
-
-# Host shared libraries
-include $(EMUGL_PATH)/host/libs/libOpenglRender/Android.mk
-
-# Host executables
-include $(EMUGL_PATH)/host/renderer/Android.mk
-
-# Host unit-test for the renderer.
-
-include $(EMUGL_PATH)/tests/translator_tests/MacCommon/Android.mk
-include $(EMUGL_PATH)/tests/translator_tests/GLES_CM/Android.mk
-include $(EMUGL_PATH)/tests/translator_tests/GLES_V2/Android.mk
-
 endif # BUILD_EMULATOR_OPENGL == true
diff --git a/tools/emulator/opengl/DESIGN b/tools/emulator/opengl/DESIGN
deleted file mode 100644
index 1da44b7..0000000
--- a/tools/emulator/opengl/DESIGN
+++ /dev/null
@@ -1,593 +0,0 @@
-Android Hardware OpenGLES emulation design overview
-===================================================
-
-Introduction:
--------------
-
-Hardware GLES emulation in the Android platform is implemented with a mix
-of components, which are:
-
-  - Several host "translator" libraries. They implement the EGL, GLES 1.1 and
-    GLES 2.0 ABIs defined by Khronos, and translate the corresponding function
-    calls into calls to the appropriate desktop APIs, i.e.:
-
-      - Xgl (Linux), AGL (OS X) or WGL (Windows) for EGL
-      - desktop GL 2.0 for GLES 1.1 and GLES 2.0
-
-         _________            __________          __________
-        |         |          |          |        |          |     HOST
-        |TRANSLATOR          |TRANSLATOR|        |TRANSLATOR|     HOST
-        |   EGL   |          | GLES 1.1 |        | GLES 2.0 |     TRANSLATOR
-        |_________|          |__________|        |__________|     LIBRARIES
-             |                    |                    |
-       - - - | - - - - - - - - -  | - - - - - - - - -  | - - - - -
-             |                    |                    |
-         ____v____            ____v_____          _____v____      HOST
-        |         |          |          |        |          |     SYSTEM
-        |   Xgl   |          |  GL 2.0  |        |  GL 2.0  |     LIBRARIES
-        |_________|          |__________|        |__________|
-
-
-
-  - Several system libraries inside the emulated guest system that implement
-    the same EGL / GLES 1.1 and GLES 2.0 ABIs.
-
-    They collect the sequence of EGL/GLES function calls and translate then
-    into a custom wire protocol stream that is sent to the emulator program
-    through a high-speed communication channel called a "QEMU Pipe".
-
-    For now, all you need to know is that the pipe is implemented with a
-    custom kernel driver, and provides for _very_ fast bandwidth. All read()
-    and writes() from/to the pipes are essentially instantaneous from the
-    guest's point of view.
-
-
-         _________            __________          __________
-        |         |          |          |        |          |
-        |EMULATION|          |EMULATION |        |EMULATION |     GUEST
-        |   EGL   |          | GLES 1.1 |        | GLES 2.0 |     SYSTEM
-        |_________|          |__________|        |__________|     LIBRARIES
-             |                    |                    |
-       - - - | - - - - - - - - -  | - - - - - - - - -  | - - - - -
-             |                    |                    |
-         ____v____________________v____________________v____      GUEST
-        |                                                   |     KERNEL
-        |                       QEMU PIPE                   |
-        |___________________________________________________|
-                                  |
-       - - - - - - - - - - - - - -|- - - - - - - - - - - - - - - -
-                                  |
-                                  v
-                               EMULATOR
-
-  - Specific code inside the emulator program that is capable of transmitting
-    the wire protocol stream to a special rendering library or process (called
-    the "renderer" here), which understands the format.
-
-                                 |
-                                 |    PROTOCOL BYTE STREAM
-                            _____v_____
-                           |           |
-                           |  EMULATOR |
-                           |___________|
-                                 |
-                                 |   UNMODIFIED PROTOCOL BYTE STREAM
-                            _____v_____
-                           |           |
-                           |  RENDERER |
-                           |___________|
-
-
-  - The renderer decodes the EGL/GLES commands from the wire
-    protocol stream, and dispatches them to the translator libraries
-    appropriately.
-
-                                 |
-                                 |   PROTOCOL BYTE STREAM
-                            _____v_____
-                           |           |
-                           |  RENDERER |
-                           |___________|
-                               | |  |
-             +-----------------+ |  +-----------------+
-             |                   |                    |
-         ____v____            ___v______          ____v_____
-        |         |          |          |        |          |     HOST
-        |TRANSLATOR          |TRANSLATOR|        |TRANSLATOR|     HOST
-        |   EGL   |          | GLES 1.1 |        | GLES 2.0 |     TRANSLATOR
-        |_________|          |__________|        |__________|     LIBRARIES
-
-
-
-  - In reality, the protocol stream flows in both directions, even though most
-    of the commands result in data going from the guest to the host. A complete
-    picture of the emulation would thus be:
-
-
-
-
-
-         _________            __________          __________
-        |         |          |          |        |          |
-        |EMULATION|          |EMULATION |        |EMULATION |     GUEST
-        |   EGL   |          | GLES 1.1 |        | GLES 2.0 |     SYSTEM
-        |_________|          |__________|        |__________|     LIBRARIES
-             ^                    ^                    ^
-             |                    |                    |
-       - - - | - - - - - - - - -  | - - - - - - - - -  | - - - - -
-             |                    |                    |
-         ____v____________________v____________________v____      GUEST
-        |                                                   |     KERNEL
-        |                       QEMU PIPE                   |
-        |___________________________________________________|
-                                 ^
-                                 |
-      - - - - - - - - - - - - - -|- - - - - - - - - - - - - - - -
-                                 |
-                                 |    PROTOCOL BYTE STREAM
-                            _____v_____
-                           |           |
-                           |  EMULATOR |
-                           |___________|
-                                 ^
-                                 |   UNMODIFIED PROTOCOL BYTE STREAM
-                            _____v_____
-                           |           |
-                           |  RENDERER |
-                           |___________|
-                               ^ ^  ^
-                               | |  |
-             +-----------------+ |  +-----------------+
-             |                   |                    |
-         ____v____            ___v______          ____v_____
-        |         |          |          |        |          |
-        |TRANSLATOR          |TRANSLATOR|        |TRANSLATOR|     HOST
-        |   EGL   |          | GLES 1.1 |        | GLES 2.0 |     TRANSLATOR
-        |_________|          |__________|        |__________|     LIBRARIES
-             ^                    ^                    ^
-             |                    |                    |
-       - - - | - - - - - - - - -  | - - - - - - - - -  | - - - - -
-             |                    |                    |
-         ____v____            ____v_____          _____v____      HOST 
-        |         |          |          |        |          |     SYSTEM
-        |   Xgl   |          |  GL 2.0  |        |  GL 2.0  |     LIBRARIES
-        |_________|          |__________|        |__________|
-
-    (NOTE: 'Xgl' is for Linux only, replace 'AGL' on OS X, and 'WGL' on Windows).
-
-
-Note that, in the above graphics, only the host system libraries at the bottom
-are _not_ provided by Android.
-
-
-Design Requirements:
---------------------
-
-The above design comes from several important requirements that were decided
-early in the project:
-
-1 - The ability to run the renderer in a separate process from the emulator
-    itself is important.
-
-    For various practical reasons, we plan to completely separate the core QEMU
-    emulation from the UI window by using two distinct processes. As such, the
-    renderer will be implemented as a library inside the UI program, but will
-    need to receive protocol bytes from the QEMU process.
-
-    The communication channel will be either a fast Unix socket or a Win32
-    named pipe between these two. A shared memory segment with appropriate
-    synchronization primitives might also be used if performance becomes
-    an issue.
-
-    This explains why the emulator doesn't alter or even try to parse the
-    protocol byte stream. It only acts as a dumb proxy between the guest
-    system and the renderer. This also avoids adding lots of GLES-specific
-    code inside the QEMU code base which is terribly complex.
-
-2 - The ability to use vendor-specific desktop EGL/GLES libraries is
-    important.
-
-    GPU vendors like NVidia, AMD or ARM all provide host versions of the
-    EGL/GLES libraries that emulate their respectivie embedded graphics
-    chipset.
-
-    The renderer library can be configured to use these instead of the
-    translator libraries provided with this project. This can be useful to
-    more accurately emulate the behaviour of specific devices.
-
-    Moreover, these vendor libraries typically expose vendor-specific
-    extensions that are not provided by the translator libraries. We cannot
-    expose them without modifying our code, but it's important to be able
-    to do so without too much pain.
-
-
-Code organization:
-------------------
-
-All source code for the components above is spread over multiple directories
-in the Android source trees:
-
-  - The emulator sources are under $ANDROID/external/qemu, which we'll
-    call $QEMU in the rest of this document.
-
-  - The guest and system libraries are under
-    $ANDROID/development/tools/emulator/opengl, which we'll call $EMUGL
-
-  - The QEMU Pipe kernel driver is under $KERNEL/drivers/misc/qemupipe
-
-Where $ANDROID is the top of the open-source Android source tree, and
-$KERNEL is the top of the qemu-specific kernel source tree (using one
-of the android-goldfish-xxxx branches here).
-
-The emulator sources related to this projects are:
-
-   $QEMU/hw/goldfish_pipe.c  -> implement QEMU pipe virtual hardware
-   $QEMU/hw/opengles.c       -> implement GLES initialization
-   $QEMU/hw/hw-pipe-net.c    -> implements the communication channel
-                                between the QEMU Pipe and the renderer library
-
-The other sources are:
-
-   $EMUGL/system   -> system libraries
-   $EMUGL/host     -> host libraries (translator + renderer)
-   $EMUGL/shared   -> shared libraries, used both in the guest and the host
-   $EMUGL/tests    -> various test programs
-
-
-Translator libraries:
----------------------
-
-There are three translator host libraries provided by this project:
-
-   libEGL_translator       -> EGL 1.2 translation
-   libGLES_CM_translator   -> GLES 1.1 translation
-   libGLES_V2_translator   -> GLES 2.0 translation
-
-The full name of the library will depend on the host system.
-For simplicity, only the library name suffix will change (i.e. the
-'lib' prefix is not dropped on Windows), i.e.:
-
-   libEGL_translator.so    -> for Linux
-   libEGL_translator.dylib -> for OS X
-   libEGL_translator.dll   -> for Windows
-
-The source code for these libraries is located under the following
-path in the Android source tree:
-
-   $EMUGL/host/libs/Translator/EGL
-   $EMUGL/host/libs/Translator/GLES_CM
-   $EMUGL/host/libs/Translator/GLES_V2
-
-The translator libraries also use a common routines defined under:
-
-   $EMUGL/host/libs/Translator/GLcommon
-
-
-Wire Protocol Overiew:
-----------------------
-
-The "wire protocol" is implemented as follows:
-
-  - EGL/GLES function calls are described through several "specification"
-    files, which describes the types, function signatures and various
-    attributes for each one of them.
-
-  - These files are read by a tool called "emugen" which generates C
-    source files and headers based on the specification. These correspond
-    to both encoding, decoding and "wrappers" (more on this later).
-
-  - System "encoder" static libraries are built using some of these generated
-    files. They contain code that can serialize EGL/GLES calls into simple
-    byte messages and send it through a generic "IOStream" object.
-
-  - Host "decoder" static libraries are also built using some of these
-    generated files. Their code retrieves byte messages from an "IOStream"
-    object, and translates them into function callbacks.
-
-IOStream abstraction:
-- - - - - - - - - - -
-
-The "IOStream" is a very simple abstract class used to send byte messages
-both in the guest and host. It is defined through a shared header under
-$EMUGL/host/include/libOpenglRender/IOStream.h
-
-Note that despite the path, this header is included by *both* host and guest
-source code. The main idea around IOStream's design is that to send a message,
-one does the following:
-
-  1/ call stream->allocBuffer(size), which returns the address of a
-     memory buffer of at least 'size' bytes.
-
-  2/ write the content of the serialized command (usually a header + some
-     payload) directly into the buffer
-
-  3/ call stream->commitBuffer() to send it.
-
-Alternatively, one can also pack several commands into a single buffer with
-stream->alloc() and stream->flush(), as in:
-
-  1/ buf1 =  stream->alloc(size1)
-  2/ write first command bytes into buf1
-  3/ buf2 = stream->alloc(size2)
-  4/ write second command bytes into buf2
-  5/ stream->flush()
-
-Finally, there are also explict read/write methods like stream->readFully()
-or stream->writeFully() which can be used when you don't want an intermediate
-buffer. This is used in certain cases by the implementation, e.g. to avoid
-an intermediate memory copy when sending texture data from the guest to the
-host.
-
-The host IOStream implementations are under $EMUGL/shared/OpenglCodecCommon/,
-see in particular:
-
-   $EMUGL/shared/OpenglCodecCommon/TcpStream.cpp  -> using local TCP sockets
-   $EMUGL/shared/OpenglCodecCommon/UnixStream.cpp -> using Unix sockets
-   $EMUGL/shared/OpenglCodecCommon/Win32PipeStream.cpp -> using Win32 named pipes
-
-The guest IOStream implementation uses the TcpStream.cpp above, as well as
-an alternative QEMU-specific source:
-
-   $EMUGL/system/OpenglSystemCommon/QemuPipeStream.cpp -> uses QEMU pipe from the guest
-
-The QEMU Pipe implementation is _significantly_ faster (about 20x) due to
-several reasons:
-
-  - all succesful read() and write() operations through it are instantaneous
-    from the guest's point of view.
-
-  - all buffer/memory copies are performed directly by the emulator, and thus
-    much faster than performing the same thing inside the kernel with emulated
-    ARM instructions.
-
-  - it doesn't need to go through a kernel TCP/IP stack that will wrap the
-    data into TCP/IP/MAC packets, send them to an emulated ethernet device,
-    which is itself connected to an internal firewall implementation that
-    will unwrap the packets, re-assemble them, then send them through BSD
-    sockets to the host kernel.
-
-However, would it be necessary, you could write a guest IOStream implementation
-that uses a different transport. If you do, please look at
-$EMUGL/system/OpenglCodecCommon/HostConnection.cpp which contains the code
-used to connect the guest to the host, on a per-thread basis.
-
-
-Source code auto-generation:
-- - - - - - - - - - - - - -
-
-The 'emugen' tool is located under $EMUGL/host/tools/emugen. There is a README
-file that explains how it works.
-
-You can also look at the following specifications files:
-
-For GLES 1.1:
-    $EMUGL/system/GLESv1_enc/gl.types
-    $EMUGL/system/GLESv1_enc/gl.in
-    $EMUGL/system/GLESv1_enc/gl.attrib
-    $EMUGL/system/GLESv1_enc/gl.addon
-
-For GLES 2.0:
-    $EMUGL/system/GLESv2_enc/gl2.types
-    $EMUGL/system/GLESv2_enc/gl2.in
-    $EMUGL/system/GLESv2_enc/gl2.attrib
-    $EMUGL/system/GLESv2_enc/gl2.addon
-
-For EGL:
-    $EMUGL/system/renderControl_enc/renderControl.types
-    $EMUGL/system/renderControl_enc/renderControl.in
-    $EMUGL/system/renderControl_enc/renderControl.attrib
-    $EMUGL/system/renderControl_enc/renderControl.addon
-
-Note that the EGL specification files are under a directory named
-"renderControl_enc" and have filenames that begin with "renderControl"
-
-This is mainly for historic reasons now, but is also related to the fact that
-this part of the wire protocol contains support functions/calls/specifications
-that are not part of the EGL specification itself, but add a few features
-required to make everything works. For example, they have calls related to
-the "gralloc" system library module used to manage graphics surfaces at a
-lower level than EGL.
-
-Generally speaking, guest encoder sources are located under directories
-named $EMUGL/system/<name>_enc/, while the corresponding host decoder
-sources will be under $EMUGL/host/libs/<name>_dec/
-
-However, all these sources use the same spec files located under the
-encoding directories. The decoders may even need to include a few
-non-auto-generated header files from the encoder directories.
-
-
-
-System libraries:
------------------
-
-Meta EGL/GLES system libraries, and egl.cfg:
-- - - - - - - - - - - - - - - - - - - - - -
-
-It is important to understand that the emulation-specific EGL/GLES libraries
-are not directly linked by applications at runtime. Instead, the system
-provides a set of "meta" EGL/GLES libraries that will load the appropriate
-hardware-specific libraries on first use.
-
-More specifically, the system libEGL.so contains a "loader" which will try
-to load:
-
-  - hardware-specific EGL/GLES libraries
-  - the software-based rendering libraries (called "libagl")
-
-The system libEGL.so is also capable of merging the EGL configs of both the
-hardware and software libraries transparently to the application. The system
-libGLESv1_CM.so and libGLESv2.so, work with it to ensure that the thread's
-current context will be linked to either the hardware or software libraries
-depending on the config selected.
-
-For the record, the loader's source code in under
-frameworks/base/opengl/libs/EGL/Loader.cpp. It depends on a file named
-/system/lib/egl/egl.cfg which must contain two lines that look like:
-
-    0 1 <name>
-    0 0 android
-
-The first number in each line is a display number, and must be 0 since the
-system's EGL/GLES libraries don't support anything else.
-
-The second number must be 1 to indicate hardware libraries, and 0 to indicate
-a software one. The line corresponding to the hardware library, if any, must
-always appear before the one for the software library.
-
-The third field is a name corresponding to a shared library suffix. It really
-means that the corresponding libraries will be named libEGL_<name>.so,
-libGLESv1_CM_<name>.so and libGLESv2_<name>.so. Moreover these libraries must
-be placed under /system/lib/egl/
-
-The name "android" is reserved for the system software renderer.
-
-The egl.cfg that comes with this project uses the name "emulation" for the
-hardware libraries. This means that it provides an egl.cfg file that contains
-the following lines:
-
-   0 1 emulation
-   0 0 android
-
-See $EMUGL/system/egl/egl.cfg and more generally the following build files:
-
-   $EMUGL/system/egl/Android.mk
-   $EMUGL/system/GLESv1/Android.mk
-   $EMUGL/system/GLESv2/Android.mk
-
-to see how the libraries are named and placed under /system/lib/egl/ by the
-build system.
-
-
-Emulation libraries:
-- - - - - - - - - - -
-
-The emulator-specific libraries are under the following:
-
-  $EMUGL/system/egl/
-  $EMUGL/system/GLESv1/
-  $EMUGL/system/GLESv2/
-
-The code for GLESv1 and GLESv2 is pretty small, since it mostly link against
-the static encoding libraries.
-
-The code for EGL is a bit more complex, because it needs to deal with
-extensions dynamically. I.e. if an extension is not available on the host
-it shouldn't be exposed by the library at runtime. So the EGL code queries
-the host for the list of available extensions in order to return them to
-clients. Similarly, it must query the list of valid EGLConfigs for the
-current host system.
-
-
-"gralloc" module implementation:
-- - - - - - - - - - - - - - - - -
-
-In addition to EGL/GLES libraries, the Android system requires a
-hardware-specific library to manage graphics surfaces at a level lower than
-EGL. This library must be what is called in Android land as a "HAL module".
-
-A "HAL module" must provide interfaces defined by Android's HAL
-(Hardware Abstraction Library). These interface definitions can be found
-under $ANDROID/hardware/libhardware/include/
-
-Of all possible HAL modules, the "gralloc" one is used by the system's
-SurfaceFlinger to allocate framebuffers and other graphics memory regions,
-as well as eventually lock/unlock/swap them when needed.
-
-The code under $EMUGL/system/gralloc/ implements the module required by the
-GLES emulation project. It's not very long, but there are a few things to
-notice here:
-
-- first, it will probe the guest system to determine if the emulator that
-  is running the virtual device really supports GPU emulation. In certain
-  circumstances this may not be possible.
-
-  If this is the case, then the module will redirect all calls to the
-  "default" gralloc module that is normally used by the system when
-  software-only rendering is enabled.
-
-  The probing happens in the function "fallback_init" which gets called
-  when the module is first opened. This initializes the 'sFallback' variable
-  to a pointer to the default gralloc module when required.
-
-- second, this module is used by SurfaceFlinger to display "software surfaces",
-  i.e. those that are backed by system memory pixel buffers, and written to
-  directly through the Skia graphics library (i.e. the non-accelerated ones).
-
-  the default module simply copies the pixel data from the surface to the
-  virtual framebuffer i/o memory, but this project's gralloc module sends it
-  to the renderer through the QEMU Pipe instead.
-
-  It turns out that this results in _faster_ rendering/frame-rates overall,
-  because memory copies inside the guest are slow, while QEMU pipe transfers
-  are done directly in the emulator.
-
-
-Host Renderer:
---------------
-
-The host renderer library is located under $EMUGL/host/libs/libOpenglRender,
-and it provides an interface described by the headers under
-$EMUGL/host/include/libOpenglRender/render_api.h (e.g. for use by the emulator).
-
-In a nutshell, the rendering library is responsible for the following:
-
-  - Providing a virtual off-screen video surface where everything will get
-    rendered at runtime. Its dimensions are fixed by the call to
-    initOpenglRender() that must happen just after the library is
-    initialized.
-
-  - Provide a way to display the virtual video surface on a host application's
-    UI. This is done by calling createOpenGLSubWindow() which takes as argument
-    the window ID or handle of a parent window, some display dimensions and
-    a rotation angle. This allows the surface to be scaled/rotated when it is
-    displayed, even if the dimensions of the video surface do not change.
-
-  - Provide a way to listen to incoming EGL/GLES commands from the guest.
-    This is done by providing a so-called "port number" to initOpenglRender().
-
-    By default, the port number corresponds to a local TCP port number that the
-    renderer will bind to and listen. Every new connection to this port will
-    correspond to the creation of a new guest host connection, each such
-    connection corresponding to a distinct thread in the guest system.
-
-    For performance reasons, it is possible to listen to either Unix sockets
-    (on Linux and OS X), or to a Win32 named pipe (on Windows). To do so, one
-    had to call setStreamType() between library initialization
-    (i.e. initLibrary()) and construction (i.e. initOpenglRender()).
-
-    Note that in these modes, the port number is still used to differentiate
-    between several emulator instances. These details are normally handled by
-    the emulator code so you shouldn't care too much.
-
-Note that an earlier version of the interface allowed a client of the renderer
-library to provide its own IOStream implementation. However, this wasn't very
-convenient for a number of reasons. This maybe something that could be done
-again if it makes sense, but for now the performance numbers are pretty good.
-
-
-Host emulator:
---------------
-
-The code under $QEMU/android/opengles.c is in charge of dynamically loading
-the rendering library and initializing / constructing it properly.
-
-QEMU pipe connections to the 'opengles' service are piped through the code
-in $QEMU/android/hw-pipe-net.c. Look for the openglesPipe_init() function,
-which is in charge of creating a connection to the renderer library
-(either through a TCP socket, or a Unix pipe depending on configuration.
-support for Win32 named pipes hasn't been implemented yet in the emulator)
-whenever a guest process opens the "opengles" service through /dev/qemu_pipe.
-
-There is also some support code for the display of the GLES framebuffer
-(through the renderer library's subwindow) under $QEMU/skin/window.
-
-Note that at the moment, scaling and rotation are supported. However,
-brightness emulation (which used to modify the pixel values from the
-hardware framebuffer before displaying them) doesn't work.
-
-Another issue is that it is not possible to display anything on top of the
-GL subwindow at the moment. E.g. this will obscure the emulated trackball
-image (that is normally toggled with Ctrl-T during emulation, or enabled
-by pressing the Delete key).
-
diff --git a/tools/emulator/opengl/README b/tools/emulator/opengl/README
index bec20c5..91050ed 100644
--- a/tools/emulator/opengl/README
+++ b/tools/emulator/opengl/README
@@ -1,106 +1,3 @@
-This directory contains the modules related to hardware OpenGL ES emulation.
-
-For now, this feature is experimental, and *nothing* will be built unless
-you define BUILD_EMULATOR_OPENGL in your environment, for example with:
-
-  export BUILD_EMULATOR_OPENGL=true
-
-You can also define the following to enable the "gralloc" module, which
-corresponds to system-wide GLES emulation (by default, only a specific set
-of applications are enabled, see below):
-
-  export BUILD_EMULATOR_OPENGL_DRIVER=true
-
-
-I. Overview of components:
-==========================
-
-The 'emugen' tool is used to generate several source files related to the
-EGL/GLES command stream used between the guest and the host during emulation.
-
-  host/tools/emugen   -> emugen program
-
-Note that emugen is capable of generating, from a single set of specification
-files, three types of auto-generated sources:
-
-  - sources to encode commands into a byte stream.
-  - sources to decode the byte stream into commands.
-  - sources to wrap normal procedural EGL/GLES calls into context-aware ones.
-
-Modules under the system/ directory corresponds to code that runs on the
-guest, and implement the marshalling of EGL/GLES commands into a stream of
-bytes sent to the host through a fast pipe mechanism.
-
-   system/GLESv1_enc        -> encoder for GLES 1.1 commands
-   system/GLESv2_enc        -> encoder for GLES 2.0 commands
-   system/renderControl_enc -> encoder for rendering control commands
-   system/egl               -> emulator-specific guest EGL library
-   system/GLESv1            -> emulator-specific guest GLES 1.1 library
-   system/gralloc           -> emulator-specific gralloc module
-   system/OpenglSystemCommon -> library of common routines
-
-Modules under the host/ directory corresponds to code that runs on the
-host, and implement the decoding of the command stream, translation of
-EGL/GLES commands into desktop GL 2.0 ones, and rendering to an off-screen
-buffer.
-
-  host/libs/GLESv1_dec        -> decoder for GLES 1.1 commands
-  host/libs/GLESv2_dec        -> decoder for GLES 2.0 commands
-  host/libs/renderControl_dec -> decoder for rendering control commands
-
-  host/libs/Translator/EGL    -> translator for EGL commands
-  host/libs/Translator/GLES_CM -> translator for GLES 1.1 commands
-  host/libs/Translator/GLES_V2 -> translator for GLES 2.0 commands
-  host/libs/Translator/GLcommon -> library of common translation routines
-
-  host/libs/libOpenglRender -> rendering library (uses all host libs above)
-                               can be used by the 'renderer' program below,
-                               or directly linked into the emulator UI program.
-
-  host/renderer/ -> stand-alone renderer program executable.
-                    this can run in head-less mode and receive requests from
-                    several emulators at the same time. It is the receiving
-                    end of all command streams.
-
-Modules under the test/ directory correspond to test programs that are useful
-to debug the various modules described above:
-
-  tests/EGL_host_wrapper  -> a small library used to dynamically load the
-                             desktop libEGL.so or a replacement named by the
-                             ANDROID_EGL_LIB environment variable. This lib
-                             provides all EGL entry points.
-
-  tests/emulator_test_renderer -> a small program to run the rendering library
-                                  in a single SDL window on the host desktop.
-
-  tests/gles_android_wrapper -> guest EGL / GLES libraries that are run on
-                                the device to run some tests. Replace the
-                                system/egl and system/GLESv1 modules for now.
-
-  tests/translator_tests/GLES_CM -> desktop GLESv1 translation unit test
-  tests/translator_tests/GLES_V2 -> desktop GLESv2 translation unit test
-  tests/translator_tests/MacCommon -> used by translation tests on Mac only.
-
-  tests/ut_rendercontrol_enc -> guest library used by tests/ut_renderer
-  tests/ut_rendercontrol_dec -> host library used by tests/ut_renderer
-  tests/ut_renderer          -> unit-test for render control and rendering library.
-
-                                
-II. Build system considerations:
---------------------------------
-
-The dependencies on the more than 20 components described in the previous
-section are pretty sophisticated, involving lots of auto-generated code and
-non-trivial placement for guest/device libraries.
-
-To simplify the development and maintenance of these modules, a set of
-helper GNU Make function is defined in common.mk, and included from the
-Android.mk in this directory.
-
-These functions all begin with the "emugl-" prefix, and can be used to
-declare modules, what information they export to other modules, or import
-from them, and also what kind of auto-generated sources they depend on.
-
-Look at the comments inside common.mk and the Android.mk of the modules
-to better understand what's happening.
-
+This directory contains Android-side modules related to hardware OpenGL ES
+emulation. The host-side modules and documentation are in
+$ANDROID_BUILD_TOP/sdk/emulator/opengl.
diff --git a/tools/emulator/opengl/common.mk b/tools/emulator/opengl/common.mk
index 82f652d..8f31e17 100644
--- a/tools/emulator/opengl/common.mk
+++ b/tools/emulator/opengl/common.mk
@@ -22,9 +22,6 @@
 #
 emugl-begin-static-library = $(call emugl-begin-module,$1,STATIC_LIBRARY)
 emugl-begin-shared-library = $(call emugl-begin-module,$1,SHARED_LIBRARY)
-emugl-begin-host-static-library = $(call emugl-begin-module,$1,HOST_STATIC_LIBRARY,HOST)
-emugl-begin-host-shared-library = $(call emugl-begin-module,$1,HOST_SHARED_LIBRARY,HOST)
-emugl-begin-host-executable = $(call emugl-begin-module,$1,HOST_EXECUTABLE,HOST)
 
 # Internal list of all declared modules (used for sanity checking)
 _emugl_modules :=
@@ -185,32 +182,6 @@
     )\
     $(info .  LOCAL_SRC_FILES := $(LOCAL_SRC_FILES))\
 
-# This function can be called to generate the decoder source files.
-# LOCAL_MODULE and LOCAL_MODULE_CLASS must be defined or the build will abort.
-# Source files will be stored in the local intermediates directory that will
-# be automatically added to your LOCAL_C_INCLUDES.
-#
-# Usage:
-#    $(call emugl-gen-decoder,<input-dir>,<basename>)
-#
-emugl-gen-decoder = \
-    $(eval _emugl_out := $(call local-intermediates-dir))\
-    $(call emugl-gen-decoder-generic,$(_emugl_out),$1,$2)\
-    $(call emugl-export,C_INCLUDES,$(_emugl_out))
-
-# This function can be called to generate the encoder source files.
-# LOCAL_MODULE and LOCAL_MODULE_CLASS must be defined or the build will abort.
-# Source files will be stored in the local intermediates directory that will
-# be automatically added to your LOCAL_C_INCLUDES.
-# Usage:
-#    $(call emugl-gen-encoder,<input-dir>,<basename>)
-#
-emugl-gen-encoder = \
-    $(eval _emugl_out := $(call local-intermediates-dir)) \
-    $(call emugl-gen-encoder-generic,$(_emugl_out),$1,$2) \
-    $(call emugl-export,C_INCLUDES,$(_emugl_out))
-
-
 # This function can be called to generate the wrapper source files.
 # LOCAL_MODULE and LOCAL_MODULE_CLASS must be defined or the build will abort.
 # Source files will be stored in the local intermediates directory that will
@@ -223,76 +194,6 @@
     $(call emugl-gen-wrapper-generic,$(_emugl_out),$1,$2) \
     $(call emugl-export,C_INCLUDES,$(_emugl_out))
 
-# IMPORTANT: EMUGL_EMUGEN is defined under host/tools/emugen/Android.mk
-#
-
-# DO NOT CALL DIRECTLY, USE emugl-gen-decoder instead.
-#
-# The following function can be called to generate wire protocol decoder
-# source files, Usage is:
-#
-#  $(call emugl-gen-decoder-generic,<dst-dir>,<src-dir>,<basename>)
-#
-#  <dst-dir> is the destination directory where the generated sources are stored
-#  <src-dir> is the source directory where to find <basename>.attrib, etc..
-#  <basename> is the emugen basename (see host/tools/emugen/README)
-#
-emugl-gen-decoder-generic = $(eval $(emugl-gen-decoder-generic-ev))
-
-define emugl-gen-decoder-generic-ev
-_emugl_dec := $$1/$$3
-_emugl_src := $$2/$$3
-GEN := $$(_emugl_dec)_dec.cpp \
-       $$(_emugl_dec)_dec.h \
-       $$(_emugl_dec)_opcodes.h \
-       $$(_emugl_dec)_server_context.h \
-       $$(_emugl_dec)_server_context.cpp
-
-$$(GEN): PRIVATE_PATH := $$(LOCAL_PATH)
-$$(GEN): PRIVATE_CUSTOM_TOOL := $$(EMUGL_EMUGEN) -D $$1 -i $$2 $$3
-$$(GEN): $$(EMUGL_EMUGEN) $$(_emugl_src).attrib $$(_emugl_src).in $$(_emugl_src).types
-	$$(transform-generated-source)
-
-$$(call emugl-export,ADDITIONAL_DEPENDENCIES,$$(GEN))
-LOCAL_GENERATED_SOURCES += $$(GEN)
-LOCAL_C_INCLUDES += $$1
-endef
-
-# DO NOT CALL DIRECTLY, USE emugl-gen-encoder instead.
-#
-# The following function can be called to generate wire protocol encoder
-# source files, Usage is:
-#
-#  $(call emugl-gen-encoder-generic,<dst-dir>,<src-dir>,<basename>)
-#
-#  <dst-dir> is the destination directory where the generated sources are stored
-#  <src-dir> is the source directory where to find <basename>.attrib, etc..
-#  <basename> is the emugen basename (see host/tools/emugen/README)
-#
-emugl-gen-encoder-generic = $(eval $(emugl-gen-encoder-generic-ev))
-
-define emugl-gen-encoder-generic-ev
-_emugl_enc := $$1/$$3
-_emugl_src := $$2/$$3
-GEN := $$(_emugl_enc)_entry.cpp \
-       $$(_emugl_enc)_enc.cpp \
-       $$(_emugl_enc)_enc.h \
-       $$(_emugl_enc)_ftable.h \
-       $$(_emugl_enc)_opcodes.h \
-       $$(_emugl_enc)_client_context.h \
-       $$(_emugl_enc)_client_context.cpp
-
-$$(GEN): PRIVATE_PATH := $$(LOCAL_PATH)
-$$(GEN): PRIVATE_CUSTOM_TOOL := $$(EMUGL_EMUGEN) -E $$1 -i $$2 $$3
-$$(GEN): $$(EMUGL_EMUGEN) $$(_emugl_src).attrib $$(_emugl_src).in $$(_emugl_src).types
-	$$(transform-generated-source)
-
-$$(call emugl-export,ADDITIONAL_DEPENDENCIES,$$(GEN))
-LOCAL_GENERATED_SOURCES += $$(GEN)
-LOCAL_C_INCLUDES += $$1
-endef
-
-
 # DO NOT CALL DIRECTLY, USE emugl-gen-wrapper instead.
 #
 # The following function can be called to generate GL library wrapper
diff --git a/tools/emulator/opengl/host/include/libOpenglRender/render_api.h b/tools/emulator/opengl/host/include/libOpenglRender/render_api.h
deleted file mode 100644
index bb33192..0000000
--- a/tools/emulator/opengl/host/include/libOpenglRender/render_api.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _OPENGL_RENDERER_RENDER_API_H
-#define _OPENGL_RENDERER_RENDER_API_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "render_api_platform_types.h"
-
-// initLibrary - initialize the library and tries to load the corresponding
-//     GLES translator libraries. This function must be called before anything
-//     else to ensure that everything works. If it returns an error, then
-//     you cannot use the library at all (this can happen under certain
-//     environments where the desktop GL libraries are not available)
-//
-// returns true if the library could be initialized successfully;
-//
-bool initLibrary(void);
-
-// list of constants to be passed to setStreamMode, which determines
-// which
-#define STREAM_MODE_DEFAULT   0
-#define STREAM_MODE_TCP       1
-#define STREAM_MODE_UNIX      2
-#define STREAM_MODE_PIPE      3
-
-// Change the stream mode. This must be called before initOpenGLRenderer
-int setStreamMode(int mode);
-
-//
-// initOpenGLRenderer - initialize the OpenGL renderer process.
-//     portNum is the tcp port number the renderer is listening to.
-//     width and height are the framebuffer dimensions that will be
-//     reported to the guest display driver.
-//
-// returns true if renderer has been started successfully;
-//
-// This function is *NOT* thread safe and should be called first
-// to initialize the renderer after initLibrary().
-//
-bool initOpenGLRenderer(int width, int height, int portNum);
-
-
-//
-// createOpenGLSubwindow -
-//     Create a native subwindow which is a child of 'window'
-//     to be used for framebuffer display.
-//     Framebuffer will not get displayed if a subwindow is not
-//     created.
-//     x,y,width,height are the dimensions of the rendering subwindow.
-//     zRot is the rotation to apply on the framebuffer display image.
-//
-bool createOpenGLSubwindow(FBNativeWindowType window,
-                           int x, int y, int width, int height, float zRot);
-
-//
-// destroyOpenGLSubwindow -
-//   destroys the created native subwindow. Once destroyed,
-//   Framebuffer content will not be visible until a new
-//   subwindow will be created.
-//
-bool destroyOpenGLSubwindow();
-
-//
-// setOpenGLDisplatRotation -
-//    set the framebuffer display image rotation in units
-//    of degrees around the z axis
-//
-void setOpenGLDisplayRotation(float zRot);
-
-//
-// repaintOpenGLDisplay -
-//    causes the OpenGL subwindow to get repainted with the
-//    latest framebuffer content.
-//
-void repaintOpenGLDisplay();
-
-//
-// stopOpenGLRenderer - stops the OpenGL renderer process.
-//     This functions is *NOT* thread safe and should be called
-//     only if previous initOpenGLRenderer has returned true.
-//
-bool stopOpenGLRenderer();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/tools/emulator/opengl/host/include/libOpenglRender/render_api_platform_types.h b/tools/emulator/opengl/host/include/libOpenglRender/render_api_platform_types.h
deleted file mode 100644
index 6f2a8a5..0000000
--- a/tools/emulator/opengl/host/include/libOpenglRender/render_api_platform_types.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef _RENDER_API_PLATFORM_TYPES_H
-#define _RENDER_API_PLATFORM_TYPES_H
-
-#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#include <windows.h>
-
-typedef HDC     FBNativeDisplayType;
-typedef HWND    FBNativeWindowType;
-
-#elif defined(__linux__)
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef Window   FBNativeWindowType;
-
-#elif defined(__APPLE__)
-
-typedef void*   FBNativeWindowType;
-
-#else
-#warning "Unsupported platform"
-#endif
-
-#endif // of  _RENDER_API_PLATFORM_TYPES_H
diff --git a/tools/emulator/opengl/host/libs/GLESv1_dec/Android.mk b/tools/emulator/opengl/host/libs/GLESv1_dec/Android.mk
deleted file mode 100644
index 5f134fc..0000000
--- a/tools/emulator/opengl/host/libs/GLESv1_dec/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-host-static-library,libGLESv1_dec)
-
-$(call emugl-import, libOpenglCodecCommon libOpenglOsUtils)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-$(call emugl-gen-decoder,$(EMUGL_PATH)/system/GLESv1_enc,gl)
-
-LOCAL_SRC_FILES := GLDecoder.cpp
-
-# for gl_types.h !
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/system/GLESv1_enc)
-
-#For gl debbuging
-#$(call emugl-export,CFLAGS,-DCHECK_GL_ERROR)
-#$(call emugl-export,CFLAGS,-DDEBUG_PRINTOUT)
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/libs/GLESv1_dec/GLDecoder.cpp b/tools/emulator/opengl/host/libs/GLESv1_dec/GLDecoder.cpp
deleted file mode 100644
index 5399445..0000000
--- a/tools/emulator/opengl/host/libs/GLESv1_dec/GLDecoder.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLDecoder.h"
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-
-GLDecoder::GLDecoder()
-{
-    m_contextData = NULL;
-    m_glesDso = NULL;
-}
-
-GLDecoder::~GLDecoder()
-{
-    if (m_glesDso != NULL) {
-        delete m_glesDso;
-    }
-}
-
-
-int GLDecoder::initGL(get_proc_func_t getProcFunc, void *getProcFuncData)
-{
-    if (getProcFunc == NULL) {
-        const char *libname = GLES_LIBNAME;
-        if (getenv(GLES_LIBNAME_VAR) != NULL) {
-            libname = getenv(GLES_LIBNAME_VAR);
-        }
-
-        m_glesDso = osUtils::dynLibrary::open(libname);
-        if (m_glesDso == NULL) {
-            fprintf(stderr, "Couldn't find %s \n", GLES_LIBNAME);
-            return -1;
-        }
-
-        this->initDispatchByName(s_getProc, this);
-    } else {
-        this->initDispatchByName(getProcFunc, getProcFuncData);
-    }
-
-    set_glGetCompressedTextureFormats(s_glGetCompressedTextureFormats);
-    set_glVertexPointerOffset(s_glVertexPointerOffset);
-    set_glColorPointerOffset(s_glColorPointerOffset);
-    set_glNormalPointerOffset(s_glNormalPointerOffset);
-    set_glTexCoordPointerOffset(s_glTexCoordPointerOffset);
-    set_glPointSizePointerOffset(s_glPointSizePointerOffset);
-    set_glWeightPointerOffset(s_glWeightPointerOffset);
-    set_glMatrixIndexPointerOffset(s_glMatrixIndexPointerOffset);
-
-    set_glVertexPointerData(s_glVertexPointerData);
-    set_glColorPointerData(s_glColorPointerData);
-    set_glNormalPointerData(s_glNormalPointerData);
-    set_glTexCoordPointerData(s_glTexCoordPointerData);
-    set_glPointSizePointerData(s_glPointSizePointerData);
-    set_glWeightPointerData(s_glWeightPointerData);
-    set_glMatrixIndexPointerData(s_glMatrixIndexPointerData);
-
-    set_glDrawElementsOffset(s_glDrawElementsOffset);
-    set_glDrawElementsData(s_glDrawElementsData);
-    set_glFinishRoundTrip(s_glFinishRoundTrip);
-
-    return 0;
-}
-
-int GLDecoder::s_glFinishRoundTrip(void *self)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glFinish();
-    return 0;
-}
-
-void GLDecoder::s_glVertexPointerOffset(void *self, GLint size, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glVertexPointer(size, type, stride, (void *)offset);
-}
-
-void GLDecoder::s_glColorPointerOffset(void *self, GLint size, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glColorPointer(size, type, stride, (void *)offset);
-}
-
-void GLDecoder::s_glTexCoordPointerOffset(void *self, GLint size, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glTexCoordPointer(size, type, stride, (void *) offset);
-}
-
-void GLDecoder::s_glNormalPointerOffset(void *self, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glNormalPointer(type, stride, (void *)offset);
-}
-
-void GLDecoder::s_glPointSizePointerOffset(void *self, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glPointSizePointerOES(type, stride, (void *)offset);
-}
-
-void GLDecoder::s_glWeightPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glWeightPointerOES(size, type, stride, (void*)offset);
-}
-
-void GLDecoder::s_glMatrixIndexPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glMatrixIndexPointerOES(size, type, stride, (void*)offset);
-}
-
-
-
-#define STORE_POINTER_DATA_OR_ABORT(location)    \
-    if (ctx->m_contextData != NULL) {   \
-        ctx->m_contextData->storePointerData((location), data, datalen); \
-    } else { \
-        return; \
-    }
-
-void GLDecoder::s_glVertexPointerData(void *self, GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-
-    STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::VERTEX_LOCATION);
-
-    ctx->glVertexPointer(size, type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::VERTEX_LOCATION));
-}
-
-void GLDecoder::s_glColorPointerData(void *self, GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-
-    STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::COLOR_LOCATION);
-
-    ctx->glColorPointer(size, type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::COLOR_LOCATION));
-}
-
-void GLDecoder::s_glTexCoordPointerData(void *self, GLint unit, GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    STORE_POINTER_DATA_OR_ABORT((GLDecoderContextData::PointerDataLocation)
-                                (GLDecoderContextData::TEXCOORD0_LOCATION + unit));
-
-    ctx->glTexCoordPointer(size, type, 0,
-                           ctx->m_contextData->pointerData((GLDecoderContextData::PointerDataLocation)
-                                                           (GLDecoderContextData::TEXCOORD0_LOCATION + unit)));
-}
-
-void GLDecoder::s_glNormalPointerData(void *self, GLenum type, GLsizei stride, void *data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-
-    STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::NORMAL_LOCATION);
-
-    ctx->glNormalPointer(type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::NORMAL_LOCATION));
-}
-
-void GLDecoder::s_glPointSizePointerData(void *self, GLenum type, GLsizei stride, void *data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-
-    STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::POINTSIZE_LOCATION);
-
-    ctx->glPointSizePointerOES(type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::POINTSIZE_LOCATION));
-}
-
-void GLDecoder::s_glWeightPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-
-    STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::WEIGHT_LOCATION);
-
-    ctx->glWeightPointerOES(size, type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::WEIGHT_LOCATION));
-}
-
-void GLDecoder::s_glMatrixIndexPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-
-    STORE_POINTER_DATA_OR_ABORT(GLDecoderContextData::MATRIXINDEX_LOCATION);
-
-    ctx->glMatrixIndexPointerOES(size, type, 0, ctx->m_contextData->pointerData(GLDecoderContextData::MATRIXINDEX_LOCATION));
-}
-
-void GLDecoder::s_glDrawElementsOffset(void *self, GLenum mode, GLsizei count, GLenum type, GLuint offset)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glDrawElements(mode, count, type, (void *)offset);
-}
-
-void GLDecoder::s_glDrawElementsData(void *self, GLenum mode, GLsizei count, GLenum type, void * data, GLuint datalen)
-{
-    GLDecoder *ctx = (GLDecoder *)self;
-    ctx->glDrawElements(mode, count, type, data);
-}
-
-void GLDecoder::s_glGetCompressedTextureFormats(void *self, GLint count, GLint *data)
-{
-    GLDecoder *ctx = (GLDecoder *) self;
-    ctx->glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, data);
-}
-
-void *GLDecoder::s_getProc(const char *name, void *userData)
-{
-    GLDecoder *ctx = (GLDecoder *)userData;
-
-    if (ctx == NULL || ctx->m_glesDso == NULL) {
-        return NULL;
-    }
-
-    void *func = NULL;
-#ifdef USE_EGL_GETPROCADDRESS
-    func = (void *) eglGetProcAddress(name);
-#endif
-    if (func == NULL) {
-        func = (void *)(ctx->m_glesDso->findSymbol(name));
-    }
-    return func;
-}
diff --git a/tools/emulator/opengl/host/libs/GLESv1_dec/GLDecoder.h b/tools/emulator/opengl/host/libs/GLESv1_dec/GLDecoder.h
deleted file mode 100644
index 14ca222..0000000
--- a/tools/emulator/opengl/host/libs/GLESv1_dec/GLDecoder.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _GL_DECODER_H_
-#define _GL_DECODER_H_
-
-#include "gl_dec.h"
-#include "FixedBuffer.h"
-#include "GLDecoderContextData.h"
-#include <osDynLibrary.h>
-
-#define GLES_LIBNAME_VAR "ANDROID_GLESv1_LIB"
-#define GLES_LIBNAME "libGLES_CM.so"
-
-class GLDecoder : public gl_decoder_context_t
-{
-public:
-    typedef void *(*get_proc_func_t)(const char *name, void *userData);
-
-    GLDecoder();
-    ~GLDecoder();
-    int initGL(get_proc_func_t getProcFunc = NULL, void *getProcFuncData = NULL);
-    void setContextData(GLDecoderContextData *contextData) { m_contextData = contextData; }
-
-private:
-    static void gl_APIENTRY s_glGetCompressedTextureFormats(void * self, GLint cont, GLint *data);
-    static void gl_APIENTRY s_glVertexPointerData(void *self, GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen);
-    static void gl_APIENTRY s_glVertexPointerOffset(void *self, GLint size, GLenum type, GLsizei stride, GLuint offset);
-
-    static void gl_APIENTRY s_glColorPointerData(void *self, GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen);
-    static void gl_APIENTRY s_glColorPointerOffset(void *self, GLint size, GLenum type, GLsizei stride, GLuint offset);
-
-    static void gl_APIENTRY s_glTexCoordPointerData(void *self, GLint unit, GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen);
-    static void gl_APIENTRY s_glTexCoordPointerOffset(void *self, GLint size, GLenum type, GLsizei stride, GLuint offset);
-
-    static void gl_APIENTRY s_glNormalPointerData(void *self, GLenum type, GLsizei stride, void *data, GLuint datalen);
-    static void gl_APIENTRY s_glNormalPointerOffset(void *self, GLenum type, GLsizei stride, GLuint offset);
-
-    static void gl_APIENTRY s_glPointSizePointerData(void *self, GLenum type, GLsizei stride, void *data, GLuint datalen);
-    static void gl_APIENTRY s_glPointSizePointerOffset(void *self, GLenum type, GLsizei stride, GLuint offset);
-
-    static void gl_APIENTRY s_glDrawElementsOffset(void *self, GLenum mode, GLsizei count, GLenum type, GLuint offset);
-    static void gl_APIENTRY s_glDrawElementsData(void *self, GLenum mode, GLsizei count, GLenum type, void * data, GLuint datalen);
-
-    static void gl_APIENTRY s_glWeightPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen);
-    static void gl_APIENTRY s_glWeightPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset);
-
-    static void gl_APIENTRY s_glMatrixIndexPointerData(void * self, GLint size, GLenum type, GLsizei stride, void * data, GLuint datalen);
-    static void gl_APIENTRY s_glMatrixIndexPointerOffset(void * self, GLint size, GLenum type, GLsizei stride, GLuint offset);
-
-    static int gl_APIENTRY s_glFinishRoundTrip(void *self);
-
-    static void * s_getProc(const char *name, void *userData);
-
-    GLDecoderContextData *m_contextData;
-    osUtils::dynLibrary* m_glesDso;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/GLESv2_dec/Android.mk b/tools/emulator/opengl/host/libs/GLESv2_dec/Android.mk
deleted file mode 100644
index a66c6ce..0000000
--- a/tools/emulator/opengl/host/libs/GLESv2_dec/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-host-static-library,libGLESv2_dec)
-$(call emugl-import, libOpenglCodecCommon libOpenglOsUtils)
-$(call emugl-gen-decoder,$(EMUGL_PATH)/system/GLESv2_enc,gl2)
-
-# For gl2_types.h !
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/system/GLESv2_enc)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-#For gl debbuging
-#$(call emugl-export,CFLAGS,-DCHECK_GL_ERROR)
-#$(call emugl-export,CFLAGS,-DDEBUG_PRINTOUT)
-
-LOCAL_SRC_FILES := GL2Decoder.cpp
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/libs/GLESv2_dec/GL2Decoder.cpp b/tools/emulator/opengl/host/libs/GLESv2_dec/GL2Decoder.cpp
deleted file mode 100644
index e867cf8..0000000
--- a/tools/emulator/opengl/host/libs/GLESv2_dec/GL2Decoder.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-#include "GL2Decoder.h"
-#include <EGL/egl.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-
-
-GL2Decoder::GL2Decoder()
-{
-    m_contextData = NULL;
-    m_GL2library = NULL;
-}
-
-GL2Decoder::~GL2Decoder()
-{
-    delete m_GL2library;
-}
-
-void *GL2Decoder::s_getProc(const char *name, void *userData)
-{
-    GL2Decoder *ctx = (GL2Decoder *) userData;
-
-    if (ctx == NULL || ctx->m_GL2library == NULL) {
-        return NULL;
-    }
-
-    void *func = NULL;
-#ifdef USE_EGL_GETPROCADDRESS
-    func = (void *) eglGetProcAddress(name);
-#endif
-    if (func == NULL) {
-        func = (void *) ctx->m_GL2library->findSymbol(name);
-    }
-    return func;
-}
-
-int GL2Decoder::initGL(get_proc_func_t getProcFunc, void *getProcFuncData)
-{
-    if (getProcFunc == NULL) {
-        const char *libname = GLES2_LIBNAME;
-        if (getenv(GLES2_LIBNAME_VAR) != NULL) {
-            libname = getenv(GLES2_LIBNAME_VAR);
-        }
-
-        m_GL2library = osUtils::dynLibrary::open(libname);
-        if (m_GL2library == NULL) {
-            fprintf(stderr, "%s: Couldn't find %s \n", __FUNCTION__, libname);
-            return -1;
-        }
-        this->initDispatchByName(s_getProc, this);
-    } else {
-        this->initDispatchByName(getProcFunc, getProcFuncData);
-    }
-
-    set_glGetCompressedTextureFormats(s_glGetCompressedTextureFormats);
-    set_glVertexAttribPointerData(s_glVertexAttribPointerData);
-    set_glVertexAttribPointerOffset(s_glVertexAttribPointerOffset);
-
-    set_glDrawElementsOffset(s_glDrawElementsOffset);
-    set_glDrawElementsData(s_glDrawElementsData);
-    set_glShaderString(s_glShaderString);
-    set_glFinishRoundTrip(s_glFinishRoundTrip);
-    return 0;
-
-}
-
-int GL2Decoder::s_glFinishRoundTrip(void *self)
-{
-    GL2Decoder *ctx = (GL2Decoder *)self;
-    ctx->glFinish();
-    return 0;
-}
-
-void GL2Decoder::s_glGetCompressedTextureFormats(void *self, int count, GLint *formats)
-{
-    GL2Decoder *ctx = (GL2Decoder *) self;
-
-    int nFormats;
-    ctx->glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &nFormats);
-    if (nFormats > count) {
-        fprintf(stderr, "%s: GetCompressedTextureFormats: The requested number of formats does not match the number that is reported by OpenGL\n", __FUNCTION__);
-    } else {
-        ctx->glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, formats);
-    }
-}
-
-void GL2Decoder::s_glVertexAttribPointerData(void *self, GLuint indx, GLint size, GLenum type,
-                                             GLboolean normalized, GLsizei stride,  void * data, GLuint datalen)
-{
-    GL2Decoder *ctx = (GL2Decoder *) self;
-    if (ctx->m_contextData != NULL) {
-        ctx->m_contextData->storePointerData(indx, data, datalen);
-        // note - the stride of the data is always zero when it comes out of the codec.
-        // See gl2.attrib for the packing function call.
-        ctx->glVertexAttribPointer(indx, size, type, normalized, 0, ctx->m_contextData->pointerData(indx));
-    }
-}
-
-void GL2Decoder::s_glVertexAttribPointerOffset(void *self, GLuint indx, GLint size, GLenum type,
-                                               GLboolean normalized, GLsizei stride,  GLuint data)
-{
-    GL2Decoder *ctx = (GL2Decoder *) self;
-    ctx->glVertexAttribPointer(indx, size, type, normalized, stride, (GLvoid *)data);
-}
-
-
-void GL2Decoder::s_glDrawElementsData(void *self, GLenum mode, GLsizei count, GLenum type, void * data, GLuint datalen)
-{
-    GL2Decoder *ctx = (GL2Decoder *)self;
-    ctx->glDrawElements(mode, count, type, data);
-}
-
-
-void GL2Decoder::s_glDrawElementsOffset(void *self, GLenum mode, GLsizei count, GLenum type, GLuint offset)
-{
-    GL2Decoder *ctx = (GL2Decoder *)self;
-    ctx->glDrawElements(mode, count, type, (void *)offset);
-}
-
-void GL2Decoder::s_glShaderString(void *self, GLuint shader, const GLchar* string, GLsizei len)
-{
-    GL2Decoder *ctx = (GL2Decoder *)self;
-    ctx->glShaderSource(shader, 1, &string, NULL);
-}
diff --git a/tools/emulator/opengl/host/libs/GLESv2_dec/GL2Decoder.h b/tools/emulator/opengl/host/libs/GLESv2_dec/GL2Decoder.h
deleted file mode 100644
index 24d01da..0000000
--- a/tools/emulator/opengl/host/libs/GLESv2_dec/GL2Decoder.h
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef _GL2_DECODER_H_
-#define _GL2_DECODER_H_
-
-#define GLES2_LIBNAME_VAR "ANDROID_GLESv2_LIB"
-#define GLES2_LIBNAME     "libGLESv2.so"
-
-#include "gl2_dec.h"
-#include "osDynLibrary.h"
-#include "GLDecoderContextData.h"
-
-
-class GL2Decoder : public gl2_decoder_context_t
-{
-public:
-    typedef void *(*get_proc_func_t)(const char *name, void *userData);
-    GL2Decoder();
-    ~GL2Decoder();
-    int initGL(get_proc_func_t getProcFunc = NULL, void *getProcFuncData = NULL);
-    void setContextData(GLDecoderContextData *contextData) { m_contextData = contextData; }
-private:
-    GLDecoderContextData *m_contextData;
-    osUtils::dynLibrary * m_GL2library;
-
-    static void *s_getProc(const char *name, void *userData);
-    static void gl2_APIENTRY s_glGetCompressedTextureFormats(void *self, int count, GLint *formats);
-    static void gl2_APIENTRY s_glVertexAttribPointerData(void *self, GLuint indx, GLint size, GLenum type,
-                                      GLboolean normalized, GLsizei stride,  void * data, GLuint datalen);
-    static void gl2_APIENTRY s_glVertexAttribPointerOffset(void *self, GLuint indx, GLint size, GLenum type,
-                                        GLboolean normalized, GLsizei stride,  GLuint offset);
-
-    static void gl2_APIENTRY s_glDrawElementsOffset(void *self, GLenum mode, GLsizei count, GLenum type, GLuint offset);
-    static void gl2_APIENTRY s_glDrawElementsData(void *self, GLenum mode, GLsizei count, GLenum type, void * data, GLuint datalen);
-    static void gl2_APIENTRY s_glShaderString(void *self, GLuint shader, const GLchar* string, GLsizei len);
-    static int  gl2_APIENTRY s_glFinishRoundTrip(void *self);
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/Android.mk b/tools/emulator/opengl/host/libs/Translator/EGL/Android.mk
deleted file mode 100644
index 96e87de..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-### EGL host implementation ########################
-$(call emugl-begin-host-shared-library,libEGL_translator)
-$(call emugl-import,libGLcommon)
-
-OS_SRCS:=
-
-ifeq ($(HOST_OS),linux)
-    OS_SRCS = EglX11Api.cpp
-    LOCAL_LDLIBS += -lX11 -lGL -ldl -lpthread
-endif
-
-ifeq ($(HOST_OS),darwin)
-    OS_SRCS = EglMacApi.cpp \
-              MacNative.m   \
-              MacPixelFormatsAttribs.m
-
-    LOCAL_LDLIBS += -Wl,-framework,AppKit
-endif
-
-ifeq ($(HOST_OS),windows)
-    OS_SRCS = EglWindowsApi.cpp
-    LOCAL_LDLIBS += -lopengl32 -lgdi32
-endif
-
-LOCAL_SRC_FILES :=            \
-     $(OS_SRCS)               \
-     ThreadInfo.cpp           \
-     EglImp.cpp               \
-     EglConfig.cpp            \
-     EglContext.cpp           \
-     EglGlobalInfo.cpp        \
-     EglValidate.cpp          \
-     EglSurface.cpp           \
-     EglWindowSurface.cpp     \
-     EglPbufferSurface.cpp    \
-     EglPixmapSurface.cpp     \
-     EglThreadInfo.cpp        \
-     EglDisplay.cpp           \
-     ClientAPIExts.cpp
-
-$(call emugl-end-module)
-
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.cpp
deleted file mode 100644
index 42d5764..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "ClientAPIExts.h"
-#include "EglGlobalInfo.h"
-#include "GLcommon/GLutils.h"
-#include "GLcommon/TranslatorIfaces.h"
-#include "ThreadInfo.h"
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-
-namespace ClientAPIExts
-{
-
-//
-// define function pointer type for each extention function
-// typename has the form __egl_{funcname}_t
-//
-#define FUNC_TYPE(fname) __egl_ ## fname ## _t
-#define API_ENTRY(fname,params,args) \
-    typedef void (GL_APIENTRY *FUNC_TYPE(fname)) params;
-
-#define API_ENTRY_RET(rtype,fname,params,args) \
-    typedef rtype (GL_APIENTRY *FUNC_TYPE(fname)) params;
-
-#include "ClientAPIExts.in"
-#undef API_ENTRY
-#undef API_ENTRY_RET
-
-/////
-// Define static table to store the function value for each
-// client API. functions pointers will get initialized through
-// ClientAPIExts::initClientFuncs function after each client API has been
-// loaded.
-/////
-#define API_ENTRY(fname,params,args) \
-    FUNC_TYPE(fname) fname;
-
-#define API_ENTRY_RET(rtype,fname,params,args) \
-    API_ENTRY(fname,params,args)
-
-static struct _ext_table
-{
-#include "ClientAPIExts.in"
-} s_client_extensions[MAX_GLES_VERSION-1];
-
-#undef API_ENTRY
-#undef API_ENTRY_RET
-
-//
-// This function initialized each entry in the s_client_extensions
-// struct at the givven index using the givven client interface
-//
-void initClientFuncs(GLESiface *iface, int idx)
-{
-#define API_ENTRY(fname,params,args) \
-    s_client_extensions[idx].fname = \
-          (FUNC_TYPE(fname))iface->getProcAddress(#fname);
-
-#define API_ENTRY_RET(rtype,fname,params,args) \
-    API_ENTRY(fname,params,args)
-
-    //
-    // reset all func pointers to NULL
-    //
-    memset(&s_client_extensions[idx], 0, sizeof(struct _ext_table));
-
-    //
-    // And now query the GLES library for each proc address
-    //
-#include "ClientAPIExts.in"
-#undef API_ENTRY
-#undef API_ENTRY_RET
-}
-
-//
-// Define implementation for each extension function which checks
-// the current context version and calls to the correct client API
-// function.
-//
-#define API_ENTRY(fname,params,args) \
-    static void _egl_ ## fname params \
-    { \
-        ThreadInfo* thread  = getThreadInfo(); \
-        if (!thread->eglContext.Ptr()) { \
-            return; \
-        } \
-        int idx = (int)thread->eglContext->version() - 1; \
-        if (!s_client_extensions[idx].fname) { \
-            return; \
-        } \
-        (*s_client_extensions[idx].fname) args; \
-    }
-
-#define API_ENTRY_RET(rtype,fname,params,args) \
-    static rtype _egl_ ## fname params \
-    { \
-        ThreadInfo* thread  = getThreadInfo(); \
-        if (!thread->eglContext.Ptr()) { \
-            return (rtype)0; \
-        } \
-        int idx = (int)thread->eglContext->version() - 1; \
-        if (!s_client_extensions[idx].fname) { \
-            return (rtype)0; \
-        } \
-        return (*s_client_extensions[idx].fname) args; \
-    }
-
-#include "ClientAPIExts.in"
-#undef API_ENTRY
-#undef API_ENTRY_RET
-
-//
-// Define a table to map function names to the local _egl_ version of
-// the extension function, to be used in eglGetProcAddress.
-//
-#define API_ENTRY(fname,params,args) \
-    { #fname, (__translatorMustCastToProperFunctionPointerType)_egl_ ## fname},
-#define API_ENTRY_RET(rtype,fname,params,args) \
-    API_ENTRY(fname,params,args)
-
-static struct _client_ext_funcs {
-    const char *fname;
-    __translatorMustCastToProperFunctionPointerType proc;
-} s_client_ext_funcs[] = {
-#include "ClientAPIExts.in"
-};
-static const int numExtFuncs = sizeof(s_client_ext_funcs) / 
-                               sizeof(s_client_ext_funcs[0]);
-
-#undef API_ENTRY
-#undef API_ENTRY_RET
-
-//
-// returns the __egl_ version of the givven extension function name.
-//
-__translatorMustCastToProperFunctionPointerType getProcAddress(const char *fname)
-{
-    for (int i=0; i<numExtFuncs; i++) {
-        if (!strcmp(fname, s_client_ext_funcs[i].fname)) {
-            return s_client_ext_funcs[i].proc;
-        }
-    }
-    return NULL;
-}
-
-} // of namespace ClientAPIExts
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.h b/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.h
deleted file mode 100644
index 130b44a..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _CLIENT_APIS_EXTS_H
-#define _CLIENT_APIS_EXTS_H
-
-#include "GLcommon/TranslatorIfaces.h"
-
-namespace ClientAPIExts
-{
-
-void initClientFuncs(GLESiface *iface, int idx);
-__translatorMustCastToProperFunctionPointerType getProcAddress(const char *fname);
-
-} // of namespace ClientAPIExts
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.in b/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.in
deleted file mode 100644
index c3162eb..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/ClientAPIExts.in
+++ /dev/null
@@ -1,201 +0,0 @@
-//
-// Each extension function should have one of the following
-// macro definitions:
-//    API_ENTRY(funcname, paramlist, arglist)
-//  -or- (in case funciton has return value)
-//    API_ENTRY_RET(return_type,funcname, paramlist, arglist)
-//
-API_ENTRY(glEGLImageTargetTexture2DOES,
-          (GLenum target, GLeglImageOES image),
-          (target, image))
-
-API_ENTRY(glEGLImageTargetRenderbufferStorageOES,
-          (GLenum target, GLeglImageOES image),
-          (target, image))
-
-API_ENTRY(glBlendEquationSeparateOES,
-          (GLenum modeRGB, GLenum modeAlpha),
-          (modeRGB, modeAlpha))
-
-API_ENTRY(glBlendFuncSeparateOES,
-          (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha),
-          (srcRGB, dstRGB, srcAlpha, dstAlpha))
-
-API_ENTRY(glBlendEquationOES,
-          (GLenum mode),
-          (mode))
-
-API_ENTRY(glCurrentPaletteMatrixOES,
-          (GLuint matrixpaletteindex),
-          (matrixpaletteindex))
-
-API_ENTRY(glLoadPaletteFromModelViewMatrixOES,
-          (void),
-          ())
-
-API_ENTRY(glMatrixIndexPointerOES,
-          (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer),
-          (size, type, stride, pointer))
-
-API_ENTRY(glWeightPointerOES,
-          (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer),
-          (size, type, stride, pointer))
-
-API_ENTRY(glDepthRangefOES,
-          (GLclampf zNear, GLclampf zFar),
-          (zNear, zFar))
-
-API_ENTRY(glFrustumfOES,
-          (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar),
-          (left, right, bottom, top, zNear, zFar))
-
-API_ENTRY(glOrthofOES,
-          (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar),
-          (left, right, bottom, top, zNear, zFar))
-
-API_ENTRY(glClipPlanefOES,
-          (GLenum plane, const GLfloat *equation),
-          (plane, equation))
-
-API_ENTRY(glGetClipPlanefOES,
-          (GLenum pname, GLfloat * eqn),
-          (pname, eqn))
-
-API_ENTRY(glClearDepthfOES,
-          (GLclampf depth),
-          (depth))
-
-API_ENTRY(glPointSizePointerOES,
-          (GLenum type, GLsizei stride, const GLvoid *pointer),
-          (type, stride, pointer))
-
-API_ENTRY(glTexGenfOES,
-          (GLenum coord, GLenum pname, GLfloat param),
-          (coord, pname, param))
-
-API_ENTRY(glTexGenfvOES,
-          (GLenum coord, GLenum pname, const GLfloat *params),
-          (coord, pname, params))
-
-API_ENTRY(glTexGeniOES,
-          (GLenum coord, GLenum pname, GLint param),
-          (coord, pname, param))
-
-API_ENTRY(glTexGenivOES,
-          (GLenum coord, GLenum pname, const GLint *params),
-          (coord, pname, params))
-
-API_ENTRY(glTexGenxOES,
-          (GLenum coord, GLenum pname, GLfixed param),
-          (coord, pname, param))
-
-API_ENTRY(glTexGenxvOES,
-          (GLenum coord, GLenum pname, const GLfixed *params),
-          (coord, pname, params))
-
-API_ENTRY(glGetTexGenfvOES,
-          (GLenum coord, GLenum pname, GLfloat *params),
-          (coord, pname, params))
-
-API_ENTRY(glGetTexGenivOES,
-          (GLenum coord, GLenum pname, GLint *params),
-          (coord, pname, params))
-
-API_ENTRY(glGetTexGenxvOES,
-          (GLenum coord, GLenum pname, GLfixed *params),
-          (coord, pname, params))
-
-API_ENTRY_RET(GLboolean,
-              glIsRenderbufferOES,
-              (GLuint renderbuffer),
-              (renderbuffer))
-
-API_ENTRY(glBindRenderbufferOES,
-          (GLenum target, GLuint renderbuffer),
-          (target, renderbuffer))
-
-API_ENTRY(glDeleteRenderbuffersOES,
-          (GLsizei n, const GLuint* renderbuffers),
-          (n, renderbuffers))
-
-API_ENTRY(glGenRenderbuffersOES,
-          (GLsizei n, GLuint* renderbuffers),
-          (n, renderbuffers))
-
-API_ENTRY(glRenderbufferStorageOES,
-          (GLenum target, GLenum internalformat, GLsizei width, GLsizei height),
-          (target, internalformat, width, height))
-
-API_ENTRY(glGetRenderbufferParameterivOES,
-          (GLenum target, GLenum pname, GLint* params),
-          (target, pname, params))
-
-API_ENTRY_RET(GLboolean,
-              glIsFramebufferOES,
-              (GLuint framebuffer),
-              (framebuffer))
-
-API_ENTRY(glBindFramebufferOES,
-          (GLenum target, GLuint framebuffer),
-          (target, framebuffer))
-
-API_ENTRY(glDeleteFramebuffersOES,
-          (GLsizei n, const GLuint* framebuffers),
-          (n, framebuffers))
-
-API_ENTRY(glGenFramebuffersOES,
-          (GLsizei n, GLuint* framebuffers),
-          (n, framebuffers))
-
-API_ENTRY_RET(GLenum,
-              glCheckFramebufferStatusOES,
-              (GLenum target),
-              (target))
-
-API_ENTRY(glFramebufferTexture2DOES,
-          (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level),
-          (target, attachment, textarget, texture, level))
-
-API_ENTRY(glFramebufferRenderbufferOES,
-          (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer),
-          (target, attachment, renderbuffertarget, renderbuffer))
-
-API_ENTRY(glGetFramebufferAttachmentParameterivOES,
-          (GLenum target, GLenum attachment, GLenum pname, GLint* params),
-          (target, attachment, pname, params))
-
-API_ENTRY(glGenerateMipmapOES,
-          (GLenum target),
-          (target))
-
-API_ENTRY(glDrawTexsOES,
-          (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height),
-          (x, y, z, width, height))
-
-API_ENTRY(glDrawTexiOES,
-          (GLint x, GLint y, GLint z, GLint width, GLint height),
-          (x, y, z, width, height))
-
-API_ENTRY(glDrawTexfOES,
-          (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height),
-          (x, y, z, width, height))
-
-API_ENTRY(glDrawTexxOES,
-          (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height),
-          (x, y, z, width, height))
-
-API_ENTRY(glDrawTexsvOES,
-          (const GLshort *coords),
-          (coords))
-
-API_ENTRY(glDrawTexivOES,
-          (const GLint *coords),
-          (coords))
-
-API_ENTRY(glDrawTexfvOES,
-          (const GLfloat *coords),
-          (coords))
-
-API_ENTRY(glDrawTexxvOES,
-          (const GLfixed *coords),
-          (coords))
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglConfig.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglConfig.cpp
deleted file mode 100644
index 66a691c..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglConfig.cpp
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglConfig.h"
-
-EglConfig::EglConfig(EGLint     red_size,
-                     EGLint     green_size,
-                     EGLint     blue_size,
-                     EGLint     alpha_size,
-                     EGLenum    caveat,
-                     EGLint     config_id,
-                     EGLint     depth_size,
-                     EGLint     frame_buffer_level,
-                     EGLint     max_pbuffer_width,
-                     EGLint     max_pbuffer_height,
-                     EGLint     max_pbuffer_size,
-                     EGLBoolean native_renderable,
-                     EGLint     renderable_type,
-                     EGLint     native_visual_id,
-                     EGLint     native_visual_type,
-                     EGLint     samples_per_pixel,
-                     EGLint     stencil_size,
-                     EGLint     surface_type,
-                     EGLenum    transparent_type,
-                     EGLint     trans_red_val,
-                     EGLint     trans_green_val,
-                     EGLint     trans_blue_val,
-                     EGLNativePixelFormatType frmt):
-
-                     m_buffer_size(red_size + green_size + blue_size + alpha_size),
-                     m_red_size(red_size),
-                     m_green_size(green_size),
-                     m_blue_size(blue_size),
-                     m_alpha_size(alpha_size),
-                     m_bind_to_tex_rgb(EGL_FALSE), //not supported for now
-                     m_bind_to_tex_rgba(EGL_FALSE), //not supported for now
-                     m_caveat(caveat),
-                     m_config_id(config_id),
-                     m_native_config_id(config_id),
-                     m_frame_buffer_level(frame_buffer_level),
-                     m_depth_size(depth_size),
-                     m_max_pbuffer_width(max_pbuffer_width),
-                     m_max_pbuffer_height(max_pbuffer_height),
-                     m_max_pbuffer_size(max_pbuffer_size),
-                     m_max_swap_interval(MAX_SWAP_INTERVAL),
-                     m_min_swap_interval(MIN_SWAP_INTERVAL),
-                     m_native_renderable(native_renderable),
-                     m_renderable_type(renderable_type),
-                     m_native_visual_id(native_visual_id),
-                     m_native_visual_type(native_visual_type),
-                     m_sample_buffers_num(samples_per_pixel > 0 ?1:0),
-                     m_samples_per_pixel(samples_per_pixel),
-                     m_stencil_size(stencil_size),
-                     m_surface_type(surface_type),
-                     m_transparent_type(transparent_type),
-                     m_trans_red_val(trans_red_val),
-                     m_trans_green_val(trans_green_val),
-                     m_trans_blue_val(trans_blue_val),
-                     m_conformant(((red_size + green_size + blue_size + alpha_size > 0)  &&
-                                  (caveat!=EGL_NON_CONFORMANT_CONFIG)) ?
-                                    m_renderable_type : 0),
-                     m_nativeFormat(frmt) {};
-
-
-    EglConfig::EglConfig(const EglConfig& conf):m_buffer_size(conf.m_buffer_size),
-                                                m_red_size(conf.m_red_size),
-                                                m_green_size(conf.m_green_size),
-                                                m_blue_size(conf.m_blue_size),
-                                                m_alpha_size(conf.m_alpha_size),
-                                                m_bind_to_tex_rgb(conf.m_bind_to_tex_rgb),
-                                                m_bind_to_tex_rgba(conf.m_bind_to_tex_rgba),
-                                                m_caveat(conf.m_caveat),
-                                                m_config_id(conf.m_config_id),
-                                                m_native_config_id(conf.m_native_config_id),
-                                                m_frame_buffer_level(conf.m_frame_buffer_level),
-                                                m_depth_size(conf.m_depth_size),
-                                                m_max_pbuffer_width(conf.m_max_pbuffer_width),
-                                                m_max_pbuffer_height(conf.m_max_pbuffer_height),
-                                                m_max_pbuffer_size(conf.m_max_pbuffer_size),
-                                                m_max_swap_interval(conf.m_max_swap_interval),
-                                                m_min_swap_interval(conf.m_min_swap_interval),
-                                                m_native_renderable(conf.m_native_renderable),
-                                                m_renderable_type(conf.m_renderable_type),
-                                                m_native_visual_id(conf.m_native_visual_id),
-                                                m_native_visual_type(conf.m_native_visual_type),
-                                                m_sample_buffers_num(conf.m_sample_buffers_num),
-                                                m_samples_per_pixel(conf.m_samples_per_pixel),
-                                                m_stencil_size(conf.m_stencil_size),
-                                                m_surface_type(conf.m_surface_type),
-                                                m_transparent_type(conf.m_transparent_type),
-                                                m_trans_red_val(conf.m_trans_red_val),
-                                                m_trans_green_val(conf.m_trans_green_val),
-                                                m_trans_blue_val(conf.m_trans_blue_val),
-                                                m_conformant(conf.m_conformant),
-                                                m_nativeFormat(conf.m_nativeFormat) {};
-
-
-EglConfig::EglConfig(const EglConfig& conf,
-                     EGLint config_id,
-                     EGLint red_size,
-                     EGLint green_size,
-                     EGLint blue_size,
-                     EGLint alpha_size):
-
-                     m_buffer_size(red_size + green_size + blue_size + alpha_size),
-                     m_red_size(red_size),
-                     m_green_size(green_size),
-                     m_blue_size(blue_size),
-                     m_alpha_size(alpha_size),
-                     m_bind_to_tex_rgb(conf.m_bind_to_tex_rgb),
-                     m_bind_to_tex_rgba(conf.m_bind_to_tex_rgba),
-                     m_caveat(conf.m_caveat),
-                     m_config_id(config_id),
-                     m_native_config_id(conf.m_native_config_id),
-                     m_frame_buffer_level(conf.m_frame_buffer_level),
-                     m_depth_size(conf.m_depth_size),
-                     m_max_pbuffer_width(conf.m_max_pbuffer_width),
-                     m_max_pbuffer_height(conf.m_max_pbuffer_height),
-                     m_max_pbuffer_size(conf.m_max_pbuffer_size),
-                     m_max_swap_interval(conf.m_max_swap_interval),
-                     m_min_swap_interval(conf.m_min_swap_interval),
-                     m_native_renderable(conf.m_native_renderable),
-                     m_renderable_type(conf.m_renderable_type),
-                     m_native_visual_id(conf.m_native_visual_id),
-                     m_native_visual_type(conf.m_native_visual_type),
-                     m_sample_buffers_num(conf.m_sample_buffers_num),
-                     m_samples_per_pixel(conf.m_samples_per_pixel),
-                     m_stencil_size(conf.m_stencil_size),
-                     m_surface_type(conf.m_surface_type),
-                     m_transparent_type(conf.m_transparent_type),
-                     m_trans_red_val(conf.m_trans_red_val),
-                     m_trans_green_val(conf.m_trans_green_val),
-                     m_trans_blue_val(conf.m_trans_blue_val),
-                     m_conformant(conf.m_conformant),
-                     m_nativeFormat(conf.m_nativeFormat) {};
-
-
-bool EglConfig::getConfAttrib(EGLint attrib,EGLint* val) const {
-    switch(attrib) {
-    case EGL_BUFFER_SIZE:
-        *val = m_buffer_size;
-        break;
-    case EGL_RED_SIZE:
-        *val = m_red_size;
-        break;
-    case EGL_GREEN_SIZE:
-        *val = m_green_size;
-        break;
-    case EGL_BLUE_SIZE:
-        *val = m_blue_size;
-        break;
-    case EGL_ALPHA_SIZE:
-        *val = m_alpha_size;
-        break;
-    case EGL_BIND_TO_TEXTURE_RGB:
-        *val = m_bind_to_tex_rgb;
-        break;
-    case EGL_BIND_TO_TEXTURE_RGBA:
-        *val = m_bind_to_tex_rgba;
-        break;
-    case EGL_CONFIG_CAVEAT:
-        *val = m_caveat;
-        break;
-    case EGL_CONFIG_ID:
-        *val = m_config_id;
-        break;
-    case EGL_DEPTH_SIZE:
-        *val = m_depth_size;
-        break;
-    case EGL_LEVEL:
-        *val = m_frame_buffer_level;
-        break;
-    case EGL_MAX_PBUFFER_WIDTH:
-        *val = m_max_pbuffer_width;
-        break;
-    case EGL_MAX_PBUFFER_HEIGHT:
-        *val = m_max_pbuffer_height;
-        break;
-    case EGL_MAX_PBUFFER_PIXELS:
-        *val = m_max_pbuffer_size;
-        break;
-    case EGL_MAX_SWAP_INTERVAL:
-        *val = m_max_swap_interval;
-        break;
-    case EGL_MIN_SWAP_INTERVAL:
-        *val = m_min_swap_interval;
-        break;
-    case EGL_NATIVE_RENDERABLE:
-        *val = m_native_renderable;
-        break;
-    case EGL_NATIVE_VISUAL_ID:
-        *val = m_native_visual_id;
-        break;
-    case EGL_NATIVE_VISUAL_TYPE:
-        *val = m_native_visual_type;
-        break;
-    case EGL_RENDERABLE_TYPE:
-        *val = m_renderable_type;
-        break;
-    case EGL_SAMPLE_BUFFERS:
-        *val = m_sample_buffers_num;
-        break;
-    case EGL_SAMPLES:
-        *val = m_samples_per_pixel;
-        break;
-    case EGL_STENCIL_SIZE:
-        *val = m_stencil_size;
-        break;
-    case EGL_SURFACE_TYPE:
-        *val = m_surface_type;
-        break;
-    case EGL_TRANSPARENT_TYPE:
-        *val =m_transparent_type;
-        break;
-    case EGL_TRANSPARENT_RED_VALUE:
-        *val = m_trans_red_val;
-        break;
-    case EGL_TRANSPARENT_GREEN_VALUE:
-        *val = m_trans_green_val;
-        break;
-    case EGL_TRANSPARENT_BLUE_VALUE:
-        *val = m_trans_blue_val;
-        break;
-    case EGL_CONFORMANT:
-        *val = m_conformant;
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
-
-// checking compitabilty between *this configuration and another configuration
-// the compitability is checked againsed red,green,blue,buffer stencil and depth sizes
-bool EglConfig::compitableWith(const EglConfig& conf) const {
-
-    if(m_buffer_size != conf.m_buffer_size) return false;
-    if(m_red_size != conf.m_red_size) return false;
-    if(m_green_size != conf.m_green_size) return false;
-    if(m_blue_size != conf.m_blue_size) return false;
-    if(m_depth_size != conf.m_depth_size) return false;
-    if(m_stencil_size != conf.m_stencil_size) return false;
-
-    return true;
-}
-
-//following the sorting EGLconfig as in spec
-bool EglConfig::operator<(const EglConfig& conf) const {
-    //0
-    if(m_conformant != conf.m_conformant) {
-       return m_conformant != 0; //We want the conformant ones first
-    }
-    //1
-    if(m_caveat != conf.m_caveat) {
-       return m_caveat < conf.m_caveat; // EGL_NONE < EGL_SLOW_CONFIG < EGL_NON_CONFORMANT_CONFIG
-    }
-    //2 TODO:
-
-    //3
-    if(m_buffer_size != conf.m_buffer_size) {
-       return m_buffer_size < conf.m_buffer_size;
-    }
-    //4
-    if(m_sample_buffers_num != conf.m_sample_buffers_num) {
-       return m_sample_buffers_num < conf.m_sample_buffers_num;
-    }
-    //5
-    if(m_samples_per_pixel != conf.m_samples_per_pixel) {
-       return m_samples_per_pixel < conf.m_samples_per_pixel;
-    }
-    //6
-    if(m_depth_size != conf.m_depth_size) {
-       return m_depth_size < conf.m_depth_size;
-    }
-    //7
-    if(m_stencil_size != conf.m_stencil_size) {
-       return m_stencil_size < conf.m_stencil_size;
-    }
-    //8 implementation defined
-    if(m_native_visual_type != conf.m_native_visual_type) {
-       return m_native_visual_type < conf.m_native_visual_type;
-    }
-    //9
-    return m_config_id < conf.m_config_id;
-}
-
-bool EglConfig::operator>=(const EglConfig& conf) const {
-    return  !((*this) < conf);
-}
-#define CHECK_PROP(dummy,prop_name,op) \
-                  if((dummy.prop_name != EGL_DONT_CARE) && (dummy.prop_name op prop_name)) return false;
-#define CHECK_PROP_CAST(dummy,prop_name,op) \
-                  if((((EGLint)dummy.prop_name) != EGL_DONT_CARE) && (dummy.prop_name op prop_name)) return false;
-//checking if config stands for all the selection crateria of dummy as defined by EGL spec
-bool EglConfig::choosen(const EglConfig& dummy) {
-
-   //atleast
-   CHECK_PROP(dummy,m_buffer_size,>);
-   CHECK_PROP(dummy,m_red_size,>);
-   CHECK_PROP(dummy,m_green_size,>);
-   CHECK_PROP(dummy,m_blue_size,>);
-   CHECK_PROP(dummy,m_alpha_size,>);
-   CHECK_PROP(dummy,m_depth_size,>);
-   CHECK_PROP(dummy,m_stencil_size,>);
-   CHECK_PROP(dummy,m_sample_buffers_num,>);
-   CHECK_PROP(dummy,m_samples_per_pixel,>);
-
-   //exact
-   CHECK_PROP(dummy,m_frame_buffer_level,!=);
-   CHECK_PROP(dummy,m_config_id,!=);
-   CHECK_PROP(dummy,m_native_visual_type,!=);
-   CHECK_PROP(dummy,m_max_swap_interval ,!=);
-   CHECK_PROP(dummy,m_min_swap_interval ,!=);
-   CHECK_PROP(dummy,m_trans_red_val    ,!=);
-   CHECK_PROP(dummy,m_trans_green_val ,!=);
-   CHECK_PROP(dummy,m_trans_blue_val  ,!=);
-   //exact - when cast to EGLint is needed when comparing to EGL_DONT_CARE
-   CHECK_PROP_CAST(dummy,m_bind_to_tex_rgb ,!=);
-   CHECK_PROP_CAST(dummy,m_bind_to_tex_rgba,!=);
-   CHECK_PROP_CAST(dummy,m_caveat,!=);
-   CHECK_PROP_CAST(dummy,m_native_renderable ,!=);
-   CHECK_PROP_CAST(dummy,m_transparent_type   ,!=);
-
-   //mask
-   if(dummy.m_surface_type != EGL_DONT_CARE &&
-    ((dummy.m_surface_type & m_surface_type) != dummy.m_surface_type)) return false;
-
-   if(dummy.m_conformant != (EGLenum)EGL_DONT_CARE &&
-    ((dummy.m_conformant & m_conformant) != dummy.m_conformant)) return false;
-
-   if(dummy.m_renderable_type != EGL_DONT_CARE &&
-    ((dummy.m_renderable_type & m_renderable_type) != dummy.m_renderable_type)) return false;
-
-   //passed all checks
-   return true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglConfig.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglConfig.h
deleted file mode 100644
index 3d733f9..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglConfig.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_CONFIG_H
-#define EGL_CONFIG_H
-
-#include<EGL/egl.h>
-#include<EGL/eglinternalplatform.h>
-
-#define MIN_SWAP_INTERVAL 1
-#define MAX_SWAP_INTERVAL 10
-
-
-class EglConfig {
-public:
-    bool getConfAttrib(EGLint attrib,EGLint* val) const;
-    bool operator<(const EglConfig& conf)   const;
-    bool operator>=(const EglConfig& conf)  const;
-    bool compitableWith(const EglConfig& conf)  const; //compitability
-    bool choosen(const EglConfig& dummy);
-    EGLint surfaceType(){ return m_surface_type;};
-    EGLint id(){return m_config_id;};
-    EGLint nativeId(){return m_native_config_id;};
-    EGLNativePixelFormatType nativeConfig(){ return m_nativeFormat;}
-
-    EglConfig(EGLint red_size,
-              EGLint green_size,
-              EGLint blue_size,
-              EGLint alpha_size,
-              EGLenum  caveat,
-              EGLint config_id,
-              EGLint depth_size,
-              EGLint frame_buffer_level,
-              EGLint max_pbuffer_width,
-              EGLint max_pbuffer_height,
-              EGLint max_pbuffer_size,
-              EGLBoolean native_renderable,
-              EGLint renderable_type,
-              EGLint native_visual_id,
-              EGLint native_visual_type,
-              EGLint samples_per_pixel,
-              EGLint stencil_size,
-              EGLint surface_type,
-              EGLenum transparent_type,
-              EGLint trans_red_val,
-              EGLint trans_green_val,
-              EGLint trans_blue_val,
-              EGLNativePixelFormatType frmt);
-
-    EglConfig(const EglConfig& conf);
-
-    EglConfig(const EglConfig& conf,
-              EGLint config_id,
-              EGLint red_size,
-              EGLint green_size,
-              EGLint blue_size,
-              EGLint alpha_size);
-
-private:
-
-    const EGLint                    m_buffer_size;
-    const EGLint                    m_red_size;
-    const EGLint                    m_green_size;
-    const EGLint                    m_blue_size;
-    const EGLint                    m_alpha_size;
-    const EGLBoolean                m_bind_to_tex_rgb;
-    const EGLBoolean                m_bind_to_tex_rgba;
-    const EGLenum                   m_caveat;
-    const EGLint                    m_config_id;
-    const EGLint                    m_native_config_id;
-    const EGLint                    m_frame_buffer_level;
-    const EGLint                    m_depth_size;
-    const EGLint                    m_max_pbuffer_width;
-    const EGLint                    m_max_pbuffer_height;
-    const EGLint                    m_max_pbuffer_size;
-    const EGLint                    m_max_swap_interval;
-    const EGLint                    m_min_swap_interval;
-    const EGLBoolean                m_native_renderable;
-    const EGLint                    m_renderable_type;
-    const EGLint                    m_native_visual_id;
-    const EGLint                    m_native_visual_type;
-    const EGLint                    m_sample_buffers_num;
-    const EGLint                    m_samples_per_pixel;
-    const EGLint                    m_stencil_size;
-    const EGLint                    m_surface_type;
-    const EGLenum                   m_transparent_type;
-    const EGLint                    m_trans_red_val;
-    const EGLint                    m_trans_green_val;
-    const EGLint                    m_trans_blue_val;
-    const EGLenum                   m_conformant;
-
-    const EGLNativePixelFormatType  m_nativeFormat;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglContext.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglContext.cpp
deleted file mode 100644
index bc33f1f..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglContext.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglContext.h"
-#include "EglDisplay.h"
-#include "EglGlobalInfo.h"
-#include "EglOsApi.h"
-
-unsigned int EglContext::s_nextContextHndl = 0;
-
-extern EglGlobalInfo* g_eglInfo; // defined in EglImp.cpp
-
-bool EglContext::usingSurface(SurfacePtr surface) {
-  return surface.Ptr() == m_read.Ptr() || surface.Ptr() == m_draw.Ptr();
-}
-
-EglContext::EglContext(EglDisplay *dpy, EGLNativeContextType context,ContextPtr shared_context,
-            EglConfig* config,GLEScontext* glesCtx,GLESVersion ver,ObjectNameManager* mngr):
-m_dpy(dpy),
-m_native(context),
-m_config(config),
-m_glesContext(glesCtx),
-m_read(NULL),
-m_draw(NULL),
-m_version(ver),
-m_mngr(mngr)
-{
-    m_shareGroup = shared_context.Ptr()?
-                   mngr->attachShareGroup(context,shared_context->nativeType()):
-                   mngr->createShareGroup(context);
-    m_hndl = ++s_nextContextHndl;
-}
-
-EglContext::~EglContext()
-{
-  
-    //
-    // remove the context in the underlying OS layer
-    // 
-    EglOS::destroyContext(m_dpy->nativeType(),m_native);
-
-    //
-    // call the client-api to remove the GLES context
-    // 
-    g_eglInfo->getIface(version())->deleteGLESContext(m_glesContext);
-
-    if (m_mngr)
-    {
-        m_mngr->deleteShareGroup(m_native);
-    }
-}
-
-void EglContext::setSurfaces(SurfacePtr read,SurfacePtr draw)
-{
-    m_read = read;
-    m_draw = draw;
-}
-
-bool EglContext::getAttrib(EGLint attrib,EGLint* value) {
-    switch(attrib) {
-    case EGL_CONFIG_ID:
-        *value = m_config->id();
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
-
-bool EglContext::attachImage(unsigned int imageId,ImagePtr img){
-   if(m_attachedImages.find(imageId) == m_attachedImages.end()){
-       m_attachedImages[imageId] = img;
-       return true;
-   }
-   return false;
-}
-
-void EglContext::detachImage(unsigned int imageId){
-    m_attachedImages.erase(imageId);
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglContext.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglContext.h
deleted file mode 100644
index e4917c6..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglContext.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_CONTEXT_H
-#define EGL_CONTEXT_H
-
-#include <map>
-#include <EGL/egl.h>
-#include <GLcommon/GLutils.h>
-#include <GLcommon/SmartPtr.h>
-#include <GLcommon/TranslatorIfaces.h>
-#include <GLcommon/objectNameManager.h>
-
-
-#include "EglConfig.h"
-#include "EglSurface.h"
-
-
-
-class EglContext;
-typedef  SmartPtr<EglContext> ContextPtr;
-
-class EglDisplay;
-
-class EglContext {
-
-public:
-
-    EglContext(EglDisplay *dpy, EGLNativeContextType context,ContextPtr shared_context,EglConfig* config,GLEScontext* glesCtx,GLESVersion ver,ObjectNameManager* mngr);
-    bool usingSurface(SurfacePtr surface);
-    EGLNativeContextType nativeType(){return m_native;};
-    bool getAttrib(EGLint attrib,EGLint* value);
-    SurfacePtr read(){ return m_read;};
-    SurfacePtr draw(){ return m_draw;};
-    ShareGroupPtr getShareGroup(){return m_shareGroup;}
-    EglConfig* getConfig(){ return m_config;};
-    GLESVersion version(){return m_version;};
-    GLEScontext* getGlesContext(){return m_glesContext;}
-    void setSurfaces(SurfacePtr read,SurfacePtr draw);
-    unsigned int getHndl(){return m_hndl;}
-    bool attachImage(unsigned int imageId,ImagePtr img);
-    void detachImage(unsigned int imageId);
-
-    ~EglContext();
-
-private:
-    static unsigned int  s_nextContextHndl;
-    EglDisplay          *m_dpy;
-    EGLNativeContextType m_native;
-    EglConfig*           m_config;
-    GLEScontext*         m_glesContext;
-    ShareGroupPtr        m_shareGroup;
-    SurfacePtr           m_read;
-    SurfacePtr           m_draw;
-    GLESVersion          m_version;
-    ObjectNameManager    *m_mngr;
-    unsigned int         m_hndl;
-    ImagesHndlMap        m_attachedImages;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglDisplay.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglDisplay.cpp
deleted file mode 100644
index 46285db..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglDisplay.cpp
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglDisplay.h"
-#include "EglOsApi.h"
-#include <GLcommon/GLutils.h>
-#include <utils/threads.h>
-
-EglDisplay::EglDisplay(EGLNativeInternalDisplayType dpy,bool isDefault) :
-    m_dpy(dpy),
-    m_initialized(false),
-    m_configInitialized(false),
-    m_isDefault(isDefault),
-    m_nextEglImageId(0),
-    m_globalSharedContext(NULL)
-{
-    m_manager[GLES_1_1] = new ObjectNameManager(&m_globalNameSpace);
-    m_manager[GLES_2_0] = new ObjectNameManager(&m_globalNameSpace);
-};
-
-EglDisplay::~EglDisplay() {
-    android::Mutex::Autolock mutex(m_lock);
-
-    //
-    // Destroy the global context if one was created.
-    // (should be true for windows platform only)
-    //
-    if (m_globalSharedContext != NULL) {
-        EglOS::destroyContext( m_dpy, m_globalSharedContext);
-    }
-
-    if(m_isDefault) {
-        EglOS::releaseDisplay(m_dpy);
-    }
-
-
-    for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end(); it++) {
-        EglConfig* pConfig = *it;
-        if(pConfig) delete pConfig;
-    }
-
-    delete m_manager[GLES_1_1];
-    delete m_manager[GLES_2_0];
-    EglOS::deleteDisplay(m_dpy);
-}
-
-EGLNativeInternalDisplayType EglDisplay::nativeType(){return m_dpy;}
-
-void EglDisplay::initialize(int renderableType) {
-    android::Mutex::Autolock mutex(m_lock);
-    m_initialized = true;
-    initConfigurations(renderableType);
-    m_configInitialized = true;
-}
-
-bool EglDisplay::isInitialize() { return m_initialized;}
-
-void EglDisplay::terminate(){
-    android::Mutex::Autolock mutex(m_lock);
-     m_contexts.clear();
-     m_surfaces.clear();
-     m_initialized = false;
-}
-
-static bool compareEglConfigsPtrs(EglConfig* first,EglConfig* second) {
-    return *first < *second ;
-}
-
-void EglDisplay::addMissingConfigs(void)
-{
-    m_configs.sort(compareEglConfigsPtrs);
-
-    EGLConfig match;
-    EGLNativePixelFormatType tmpfrmt = PIXEL_FORMAT_INITIALIZER;
-    EglConfig dummy(5, 6, 5, 0,  // RGB_565
-                    EGL_DONT_CARE,EGL_DONT_CARE,
-                    16, // Depth
-                    EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,
-                    EGL_DONT_CARE, EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,EGL_DONT_CARE,tmpfrmt);
-
-    if(!doChooseConfigs(dummy, &match, 1))
-    {
-        return;
-    }
-
-    const EglConfig* config = (EglConfig*)match;
-
-    int bSize;
-    config->getConfAttrib(EGL_BUFFER_SIZE,&bSize);
-
-    if(bSize == 16)
-    {
-        return;
-    }
-
-    int max_config_id = 0;
-
-    for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end() ;it++) {
-        EGLint id;
-        (*it)->getConfAttrib(EGL_CONFIG_ID, &id);
-        if(id > max_config_id)
-            max_config_id = id;
-    }
-
-    EglConfig* newConfig = new EglConfig(*config,max_config_id+1,5,6,5,0);
-
-    m_configs.push_back(newConfig);
-}
-
-void EglDisplay::initConfigurations(int renderableType) {
-    if(m_configInitialized) return;
-    EglOS::queryConfigs(m_dpy,renderableType,m_configs);
-
-    addMissingConfigs();
-    m_configs.sort(compareEglConfigsPtrs);
-}
-
-EglConfig* EglDisplay::getConfig(EGLConfig conf) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end() ;it++) {
-        if(static_cast<EGLConfig>(*it) == conf) {
-            return (*it);
-
-        }
-    }
-    return NULL;
-}
-
-SurfacePtr EglDisplay::getSurface(EGLSurface surface) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    SurfacesHndlMap::iterator it = m_surfaces.find(reinterpret_cast<unsigned int>(surface));
-    return it != m_surfaces.end() ?
-                                  (*it).second :
-                                   SurfacePtr(NULL);
-}
-
-ContextPtr EglDisplay::getContext(EGLContext ctx) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    ContextsHndlMap::iterator it = m_contexts.find(reinterpret_cast<unsigned int>(ctx));
-    return it != m_contexts.end() ?
-                                  (*it).second :
-                                   ContextPtr(NULL);
-}
-
-bool EglDisplay::removeSurface(EGLSurface s) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    SurfacesHndlMap::iterator it = m_surfaces.find(reinterpret_cast<unsigned int>(s));
-    if(it != m_surfaces.end()) {
-        m_surfaces.erase(it);
-        return true;
-    }
-    return false;
-}
-
-bool EglDisplay::removeSurface(SurfacePtr s) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    SurfacesHndlMap::iterator it;
-    for(it = m_surfaces.begin(); it!= m_surfaces.end();it++)
-    {
-        if((*it).second.Ptr() == s.Ptr()) {
-            break;
-        }
-    }
-    if(it != m_surfaces.end()) {
-        m_surfaces.erase(it);
-        return true;
-    }
-    return false;
-}
-
-bool EglDisplay::removeContext(EGLContext ctx) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    ContextsHndlMap::iterator it = m_contexts.find(reinterpret_cast<unsigned int>(ctx));
-    if(it != m_contexts.end()) {
-        m_contexts.erase(it);
-        return true;
-    }
-    return false;
-}
-
-bool EglDisplay::removeContext(ContextPtr ctx) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    ContextsHndlMap::iterator it;
-    for(it = m_contexts.begin(); it != m_contexts.end();it++) {
-        if((*it).second.Ptr() == ctx.Ptr()){
-            break;
-        }
-    }
-    if(it != m_contexts.end()) {
-        m_contexts.erase(it);
-        return true;
-    }
-    return false;
-}
-
-EglConfig* EglDisplay::getConfig(EGLint id) {
-    android::Mutex::Autolock mutex(m_lock);
-
-    for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end() ;it++) {
-        if((*it)->id() == id) {
-            return (*it);
-
-        }
-    }
-    return NULL;
-}
-
-int EglDisplay::getConfigs(EGLConfig* configs,int config_size) {
-    android::Mutex::Autolock mutex(m_lock);
-    int i = 0;
-    for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end() && i < config_size ;i++,it++) {
-        configs[i] = static_cast<EGLConfig>(*it);
-    }
-    return i;
-}
-
-int EglDisplay::chooseConfigs(const EglConfig& dummy,EGLConfig* configs,int config_size) {
-    android::Mutex::Autolock mutex(m_lock);
-    return doChooseConfigs(dummy, configs, config_size);
-}
-
-int EglDisplay::doChooseConfigs(const EglConfig& dummy,EGLConfig* configs,int config_size) {
-    int added = 0;
-    for(ConfigsList::iterator it = m_configs.begin(); it != m_configs.end() && (added < config_size || !configs);it++) {
-
-       if( (*it)->choosen(dummy)){
-            if(configs) {
-                configs[added] = static_cast<EGLConfig>(*it);
-            }
-            added++;
-       }
-    }
-    //no need to sort since the configurations are saved already in sorted maner
-    return added;
-}
-
-EGLSurface EglDisplay::addSurface(SurfacePtr s ) {
-    android::Mutex::Autolock mutex(m_lock);
-   unsigned int hndl = s.Ptr()->getHndl();
-   EGLSurface ret =reinterpret_cast<EGLSurface> (hndl);
-
-   if(m_surfaces.find(hndl) != m_surfaces.end()) {
-       return ret;
-   }
-
-   m_surfaces[hndl] = s;
-   return ret;
-}
-
-EGLContext EglDisplay::addContext(ContextPtr ctx ) {
-    android::Mutex::Autolock mutex(m_lock);
-
-   unsigned int hndl = ctx.Ptr()->getHndl();
-   EGLContext ret    = reinterpret_cast<EGLContext> (hndl);
-
-   if(m_contexts.find(hndl) != m_contexts.end()) {
-       return ret;
-   }
-   m_contexts[hndl] = ctx;
-   return ret;
-}
-
-
-EGLImageKHR EglDisplay::addImageKHR(ImagePtr img) {
-    android::Mutex::Autolock mutex(m_lock);
-    do { ++m_nextEglImageId; } while(m_nextEglImageId == 0);
-    img->imageId = m_nextEglImageId;
-    m_eglImages[m_nextEglImageId] = img;
-    return reinterpret_cast<EGLImageKHR>(m_nextEglImageId);
-}
-
-ImagePtr EglDisplay::getImage(EGLImageKHR img) {
-    android::Mutex::Autolock mutex(m_lock);
-    ImagesHndlMap::iterator i( m_eglImages.find((unsigned int)img) );
-    return (i != m_eglImages.end()) ? (*i).second :ImagePtr(NULL);
-}
-
-bool EglDisplay:: destroyImageKHR(EGLImageKHR img) {
-    android::Mutex::Autolock mutex(m_lock);
-    ImagesHndlMap::iterator i( m_eglImages.find((unsigned int)img) );
-    if (i != m_eglImages.end())
-    {
-        m_eglImages.erase(i);
-        return true;
-    }
-    return false;
-}
-
-EGLNativeContextType EglDisplay::getGlobalSharedContext(){
-    android::Mutex::Autolock mutex(m_lock);
-#ifndef _WIN32
-    // find an existing OpenGL context to share with, if exist
-    EGLNativeContextType ret = 
-        (EGLNativeContextType)m_manager[GLES_1_1]->getGlobalContext();
-    if (!ret)
-        ret = (EGLNativeContextType)m_manager[GLES_2_0]->getGlobalContext();
-    return ret;
-#else
-    if (!m_globalSharedContext) {
-        //
-        // On windows we create a dummy context to serve as the
-        // "global context" which all contexts share with.
-        // This is because on windows it is not possible to share
-        // with a context which is already current. This dummy context
-        // will never be current to any thread so it is safe to share with.
-        // Create that context using the first config
-        if (m_configs.size() < 1) {
-            // Should not happen! config list should be initialized at this point
-            return NULL;
-        }
-        EglConfig *cfg = (*m_configs.begin());
-        m_globalSharedContext = EglOS::createContext(m_dpy,cfg,NULL);
-    }
-
-    return m_globalSharedContext;
-#endif
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglDisplay.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglDisplay.h
deleted file mode 100644
index 587e92a..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglDisplay.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_DISPLAY_H
-#define EGL_DISPLAY_H
-
-#include <list>
-#include <map>
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include <utils/threads.h>
-#include <GLcommon/SmartPtr.h>
-
-#include "EglConfig.h"
-#include "EglContext.h"
-#include "EglSurface.h"
-#include "EglWindowSurface.h"
-
-
-
-typedef  std::list<EglConfig*>  ConfigsList;
-typedef  std::map< unsigned int, ContextPtr>     ContextsHndlMap;
-typedef  std::map< unsigned int, SurfacePtr>     SurfacesHndlMap;
-
-class EglDisplay {
-public:
-
-
-    EglDisplay(EGLNativeInternalDisplayType dpy,bool isDefault = true);
-    EGLNativeInternalDisplayType nativeType();
-    int nConfigs(){ return m_configs.size();}
-    int getConfigs(EGLConfig* configs,int config_size);
-    int chooseConfigs(const EglConfig& dummy,EGLConfig* configs,int config_size);
-    EglConfig* getConfig(EGLConfig conf);
-    EglConfig* getConfig(EGLint id );
-
-    EGLSurface addSurface(SurfacePtr s );
-    SurfacePtr getSurface(EGLSurface surface);
-    bool removeSurface(EGLSurface s);
-    bool removeSurface(SurfacePtr s);
-
-    EGLContext addContext(ContextPtr ctx );
-    ContextPtr getContext(EGLContext ctx);
-    bool removeContext(EGLContext ctx);
-    bool removeContext(ContextPtr ctx);
-    ObjectNameManager* getManager(GLESVersion ver){ return m_manager[ver];}
-
-    ~EglDisplay();
-    void initialize(int renderableType);
-    void terminate();
-    bool isInitialize();
-
-    ImagePtr getImage(EGLImageKHR img);
-    EGLImageKHR addImageKHR(ImagePtr);
-    bool destroyImageKHR(EGLImageKHR img);
-    EGLNativeContextType getGlobalSharedContext();
-
-private:
-   int doChooseConfigs(const EglConfig& dummy,EGLConfig* configs,int config_size);
-   void addMissingConfigs(void);
-   void initConfigurations(int renderableType);
-
-   EGLNativeInternalDisplayType   m_dpy;
-   bool                           m_initialized;
-   bool                           m_configInitialized;
-   bool                           m_isDefault;
-   ConfigsList                    m_configs;
-   ContextsHndlMap                m_contexts;
-   SurfacesHndlMap                m_surfaces;
-   GlobalNameSpace                m_globalNameSpace;
-   ObjectNameManager              *m_manager[MAX_GLES_VERSION];
-   android::Mutex                 m_lock;
-   ImagesHndlMap                  m_eglImages;
-   unsigned int                   m_nextEglImageId;
-   EGLNativeContextType           m_globalSharedContext;
-};
-
-#endif
-
-
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglGlobalInfo.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglGlobalInfo.cpp
deleted file mode 100644
index f39b36e..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglGlobalInfo.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglGlobalInfo.h"
-#include "EglOsApi.h"
-#include <string.h>
-#include "ClientAPIExts.h"
-
-int EglGlobalInfo::m_refCount = 0;
-EglGlobalInfo* EglGlobalInfo::m_singleton = NULL;
-
-
-EglGlobalInfo::EglGlobalInfo(){
-    m_default = EglOS::getDefaultDisplay();
-#ifdef _WIN32
-    EglOS::initPtrToWglFunctions();
-#endif
-    memset(m_gles_ifaces,0,sizeof(m_gles_ifaces));
-    memset(m_gles_extFuncs_inited,0,sizeof(m_gles_extFuncs_inited));
-}
-
-EglGlobalInfo* EglGlobalInfo::getInstance() {
-    if(!m_singleton) {
-        m_singleton = new EglGlobalInfo();
-        m_refCount = 0;
-    }
-    m_refCount++;
-    return m_singleton;
-}
-
-void EglGlobalInfo::delInstance() {
-    m_refCount--;
-    if(m_refCount <= 0 && m_singleton) {
-        delete m_singleton;
-        m_singleton = NULL;
-    }
-
-}
-
-EglDisplay* EglGlobalInfo::addDisplay(EGLNativeDisplayType dpy,EGLNativeInternalDisplayType idpy) {
-    //search if it is not already exists
-    android::Mutex::Autolock mutex(m_lock);
-    for(DisplaysMap::iterator it = m_displays.begin(); it != m_displays.end() ;it++) {
-        if((*it).second == dpy) return (*it).first;
-    }
-
-    EglDisplay* p_dpy = new EglDisplay(idpy);
-    if(p_dpy) {
-        m_displays[p_dpy] = dpy;
-        return p_dpy;
-    }
-    return NULL;
-}
-
-bool  EglGlobalInfo::removeDisplay(EGLDisplay dpy) {
-    android::Mutex::Autolock mutex(m_lock);
-    for(DisplaysMap::iterator it = m_displays.begin(); it != m_displays.end() ;it++) {
-        if(static_cast<EGLDisplay>((*it).first) == dpy) {
-            delete (*it).first;
-            m_displays.erase(it);
-            return true;
-        }
-    }
-    return false;
-}
-
-EglDisplay* EglGlobalInfo::getDisplay(EGLNativeDisplayType dpy) {
-    android::Mutex::Autolock mutex(m_lock);
-    for(DisplaysMap::iterator it = m_displays.begin(); it != m_displays.end() ;it++) {
-        if((*it).second == dpy) return (*it).first;
-    }
-    return NULL;
-}
-
-EglDisplay* EglGlobalInfo::getDisplay(EGLDisplay dpy) {
-    android::Mutex::Autolock mutex(m_lock);
-    DisplaysMap::iterator it = m_displays.find(static_cast<EglDisplay*>(dpy));
-    return (it != m_displays.end() ? (*it).first : NULL);
-}
-
-EGLNativeInternalDisplayType EglGlobalInfo::generateInternalDisplay(EGLNativeDisplayType dpy){
-    return EglOS::getInternalDisplay(dpy);
-}
-
-void EglGlobalInfo::initClientExtFuncTable(GLESVersion ver)
-{
-    android::Mutex::Autolock mutex(m_lock);
-    if (!m_gles_extFuncs_inited[ver]) {
-        ClientAPIExts::initClientFuncs(m_gles_ifaces[ver], (int)ver - 1);
-        m_gles_extFuncs_inited[ver] = true;
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglGlobalInfo.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglGlobalInfo.h
deleted file mode 100644
index ec07ffe..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglGlobalInfo.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_GLOBAL_INFO
-#define EGL_GLOBAL_INFO
-
-#include <list>
-#include <EGL/egl.h>
-#include <utils/threads.h>
-#include <GLcommon/TranslatorIfaces.h>
-#include "EglDisplay.h"
-#include "EglConfig.h"
-#include "EglContext.h"
-
-typedef std::map<EglDisplay*,EGLNativeDisplayType>DisplaysMap;
-
-
-class EglGlobalInfo {
-
-public:
-    EglDisplay* addDisplay(EGLNativeDisplayType dpy,EGLNativeInternalDisplayType idpy);
-    EglDisplay* getDisplay(EGLNativeDisplayType dpy);
-    EglDisplay* getDisplay(EGLDisplay dpy);
-    bool removeDisplay(EGLDisplay dpy);
-    EGLNativeInternalDisplayType getDefaultNativeDisplay(){ return m_default;};
-    EGLNativeInternalDisplayType generateInternalDisplay(EGLNativeDisplayType dpy);
-
-    void setIface(GLESiface* iface,GLESVersion ver) { m_gles_ifaces[ver] = iface;};
-    GLESiface* getIface(GLESVersion ver){ return m_gles_ifaces[ver];}
-
-    int  nDisplays() const { return m_displays.size();};
-
-    void initClientExtFuncTable(GLESVersion ver);
-
-    static EglGlobalInfo* getInstance();
-    static void delInstance();
-
-private:
-    EglGlobalInfo();
-    ~EglGlobalInfo(){};
-
-    static EglGlobalInfo*          m_singleton;
-    static int                     m_refCount;
-
-    DisplaysMap                    m_displays;
-    EGLNativeInternalDisplayType   m_default;
-    GLESiface*                     m_gles_ifaces[MAX_GLES_VERSION];
-    bool                           m_gles_extFuncs_inited[MAX_GLES_VERSION];
-    android::Mutex                 m_lock;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglImp.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglImp.cpp
deleted file mode 100644
index 92cf065..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglImp.cpp
+++ /dev/null
@@ -1,1074 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifdef _WIN32
-#undef EGLAPI
-#define EGLAPI __declspec(dllexport)
-#endif
-
-#include <EGL/egl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <stdio.h>
-#include "ThreadInfo.h"
-#include <GLcommon/TranslatorIfaces.h>
-#include <OpenglOsUtils/osDynLibrary.h>
-
-#include "EglWindowSurface.h"
-#include "EglPbufferSurface.h"
-#include "EglPixmapSurface.h"
-#include "EglGlobalInfo.h"
-#include "EglThreadInfo.h"
-#include "EglValidate.h"
-#include "EglDisplay.h"
-#include "EglContext.h"
-#include "EglConfig.h"
-#include "EglOsApi.h"
-#include "ClientAPIExts.h"
-
-#define MAJOR          1
-#define MINOR          4
-
-//declarations
-
-EglImage *attachEGLImage(unsigned int imageId);
-void detachEGLImage(unsigned int imageId);
-GLEScontext* getGLESContext();
-
-#define tls_thread  EglThreadInfo::get()
-
-EglGlobalInfo* g_eglInfo = NULL;
-android::Mutex  s_eglLock;
-
-void initGlobalInfo()
-{
-    android::Mutex::Autolock mutex(s_eglLock);
-    if (!g_eglInfo) {
-        g_eglInfo = EglGlobalInfo::getInstance();
-    } 
-}
-
-static EGLiface            s_eglIface = {
-    getGLESContext    : getGLESContext,
-    eglAttachEGLImage:attachEGLImage,
-    eglDetachEGLImage:detachEGLImage
-};
-
-/*****************************************  supported extentions  ***********************************************************************/
-
-//extentions
-#define EGL_EXTENTIONS 2
-
-//decleration
-EGLImageKHR eglCreateImageKHR(EGLDisplay display, EGLContext context, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLBoolean eglDestroyImageKHR(EGLDisplay display, EGLImageKHR image);
-
-// extentions descriptors
-static ExtentionDescriptor s_eglExtentions[] = {
-                                                   {"eglCreateImageKHR" ,(__eglMustCastToProperFunctionPointerType)eglCreateImageKHR},
-                                                   {"eglDestroyImageKHR",(__eglMustCastToProperFunctionPointerType)eglDestroyImageKHR}
-                                               };
-static int s_eglExtentionsSize = sizeof(s_eglExtentions) /
-                                 sizeof(ExtentionDescriptor);
-
-/****************************************************************************************************************************************/
-//macros for accessing global egl info & tls objects
-
-#define CURRENT_THREAD() do {} while (0);
-
-#define RETURN_ERROR(ret,err)                                \
-        CURRENT_THREAD()                                     \
-        if(tls_thread->getError() == EGL_SUCCESS) {          \
-          tls_thread->setError(err);                         \
-        }                                                    \
-        return ret;
-
-#define VALIDATE_DISPLAY_RETURN(EGLDisplay,ret)              \
-        EglDisplay* dpy = g_eglInfo->getDisplay(EGLDisplay); \
-        if(!dpy){                                            \
-            RETURN_ERROR(ret,EGL_BAD_DISPLAY);               \
-        }                                                    \
-        if(!dpy->isInitialize()) {                           \
-            RETURN_ERROR(ret,EGL_NOT_INITIALIZED);           \
-        }
-
-#define VALIDATE_CONFIG_RETURN(EGLConfig,ret)                \
-        EglConfig* cfg = dpy->getConfig(EGLConfig);          \
-        if(!cfg) {                                           \
-            RETURN_ERROR(ret,EGL_BAD_CONFIG);                \
-        }
-
-#define VALIDATE_SURFACE_RETURN(EGLSurface,ret,varName)      \
-        SurfacePtr varName = dpy->getSurface(EGLSurface);    \
-        if(!varName.Ptr()) {                                 \
-            RETURN_ERROR(ret,EGL_BAD_SURFACE);               \
-        }
-
-#define VALIDATE_CONTEXT_RETURN(EGLContext,ret)              \
-        ContextPtr ctx = dpy->getContext(EGLContext);        \
-        if(!ctx.Ptr()) {                                     \
-            RETURN_ERROR(ret,EGL_BAD_CONTEXT);               \
-        }
-
-
-#define VALIDATE_DISPLAY(EGLDisplay) \
-        VALIDATE_DISPLAY_RETURN(EGLDisplay,EGL_FALSE)
-
-#define VALIDATE_CONFIG(EGLConfig)   \
-        VALIDATE_CONFIG_RETURN(EGLConfig,EGL_FALSE)
-
-#define VALIDATE_SURFACE(EGLSurface,varName) \
-        VALIDATE_SURFACE_RETURN(EGLSurface,EGL_FALSE,varName)
-
-#define VALIDATE_CONTEXT(EGLContext) \
-        VALIDATE_CONTEXT_RETURN(EGLContext,EGL_FALSE)
-
-
-GLEScontext* getGLESContext()
-{
-    ThreadInfo* thread  = getThreadInfo();
-    return thread->glesContext;
-}
-
-EGLAPI EGLint EGLAPIENTRY eglGetError(void) {
-    CURRENT_THREAD();
-    EGLint err = tls_thread->getError();
-    tls_thread->setError(EGL_SUCCESS);
-    return err;
-}
-
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id) {
-    EglDisplay* dpy = NULL;
-    EGLNativeInternalDisplayType internalDisplay = NULL;
-
-    initGlobalInfo();
-
-    if ((dpy = g_eglInfo->getDisplay(display_id))) {
-        return dpy;
-    } else {
-
-        if( display_id == EGL_DEFAULT_DISPLAY) {
-            internalDisplay = g_eglInfo->getDefaultNativeDisplay();
-        } else {
-            internalDisplay = g_eglInfo->generateInternalDisplay(display_id);
-        }
-
-        dpy = g_eglInfo->addDisplay(display_id,internalDisplay);
-        if(dpy) return dpy;
-        return EGL_NO_DISPLAY;
-    }
-}
-
-
-#define TRANSLATOR_GETIFACE_NAME "__translator_getIfaces"
-
-static __translator_getGLESIfaceFunc loadIfaces(const char* libName){
-    osUtils::dynLibrary* libGLES = osUtils::dynLibrary::open(libName);
-
-    if(!libGLES) return NULL;
-    __translator_getGLESIfaceFunc func =  (__translator_getGLESIfaceFunc)libGLES->findSymbol(TRANSLATOR_GETIFACE_NAME);
-    if(!func) return NULL;
-    return func;
-}
-
-#ifdef _WIN32
-#define LIB_GLES_CM_NAME "libGLES_CM_translator"
-#define LIB_GLES_V2_NAME "libGLES_V2_translator"
-#elif __linux__
-#define LIB_GLES_CM_NAME "libGLES_CM_translator.so"
-#define LIB_GLES_V2_NAME "libGLES_V2_translator.so"
-#elif __APPLE__
-#define LIB_GLES_CM_NAME "libGLES_CM_translator.dylib"
-#define LIB_GLES_V2_NAME "libGLES_V2_translator.dylib"
-#endif
-
-EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay display, EGLint *major, EGLint *minor) {
-
-    initGlobalInfo();
-
-    EglDisplay* dpy = g_eglInfo->getDisplay(display);
-    if(!dpy) {
-         RETURN_ERROR(EGL_FALSE,EGL_BAD_DISPLAY);
-    }
-
-    if(major) *major = MAJOR;
-    if(minor) *minor = MINOR;
-
-    __translator_getGLESIfaceFunc func  = NULL;
-    int renderableType = EGL_OPENGL_ES_BIT;
-
-    if(!g_eglInfo->getIface(GLES_1_1)) {
-        func  = loadIfaces(LIB_GLES_CM_NAME);
-        if(func){
-            g_eglInfo->setIface(func(&s_eglIface),GLES_1_1);
-        } else {
-           fprintf(stderr,"could not find ifaces for GLES CM 1.1\n");
-           return EGL_FALSE;
-        }
-    }
-    if(!g_eglInfo->getIface(GLES_2_0)) {
-        func  = loadIfaces(LIB_GLES_V2_NAME);
-        if(func){
-            renderableType |= EGL_OPENGL_ES2_BIT;
-            g_eglInfo->setIface(func(&s_eglIface),GLES_2_0);
-        } else {
-           fprintf(stderr,"could not find ifaces for GLES 2.0\n");
-        }
-    }
-    dpy->initialize(renderableType);
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay display) {
-    VALIDATE_DISPLAY(display);
-    dpy->terminate();
-    return EGL_TRUE;
-}
-
-EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay display, EGLint name) {
-    VALIDATE_DISPLAY(display);
-    static const char* vendor     = "Google";
-    static const char* version    = "1.4";
-    static const char* extensions = "EGL_KHR_image_base EGL_KHR_gl_texture_2D_image";
-    if(!EglValidate::stringName(name)) {
-        RETURN_ERROR(NULL,EGL_BAD_PARAMETER);
-    }
-    switch(name) {
-    case EGL_VENDOR:
-        return vendor;
-    case EGL_VERSION:
-        return version;
-    case EGL_EXTENSIONS:
-        return extensions;
-    }
-    return NULL;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay display, EGLConfig *configs,
-             EGLint config_size, EGLint *num_config) {
-    VALIDATE_DISPLAY(display);
-    if(!num_config) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER);
-    }
-
-    if(configs == NULL) {
-        *num_config = dpy->nConfigs();
-    } else {
-        *num_config = dpy->getConfigs(configs,config_size);
-    }
-
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay display, const EGLint *attrib_list,
-               EGLConfig *configs, EGLint config_size,
-               EGLint *num_config) {
-    VALIDATE_DISPLAY(display);
-    if(!num_config) {
-         RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER);
-    }
-
-        //selection defaults
-        EGLint      surface_type       = EGL_WINDOW_BIT;
-        EGLint      renderable_type    = EGL_OPENGL_ES_BIT;
-        EGLBoolean  bind_to_tex_rgb    = EGL_DONT_CARE;
-        EGLBoolean  bind_to_tex_rgba   = EGL_DONT_CARE;
-        EGLenum     caveat             = EGL_DONT_CARE;
-        EGLint      config_id          = EGL_DONT_CARE;
-        EGLBoolean  native_renderable  = EGL_DONT_CARE;
-        EGLint      native_visual_type = EGL_DONT_CARE;
-        EGLint      max_swap_interval  = EGL_DONT_CARE;
-        EGLint      min_swap_interval  = EGL_DONT_CARE;
-        EGLint      trans_red_val      = EGL_DONT_CARE;
-        EGLint      trans_green_val    = EGL_DONT_CARE;
-        EGLint      trans_blue_val     = EGL_DONT_CARE;
-        EGLenum     transparent_type   = EGL_NONE;
-        EGLint      buffer_size        = 0;
-        EGLint      red_size           = 0;
-        EGLint      green_size         = 0;
-        EGLint      blue_size          = 0;
-        EGLint      alpha_size         = 0;
-        EGLint      depth_size         = 0;
-        EGLint      frame_buffer_level = 0;
-        EGLint      sample_buffers_num = 0;
-        EGLint      samples_per_pixel  = 0;
-        EGLint      stencil_size       = 0;
-
-    if(!EglValidate::noAttribs(attrib_list)) { //there are attribs
-        int i = 0 ;
-        bool hasConfigId = false;
-        while(attrib_list[i] != EGL_NONE && !hasConfigId) {
-            switch(attrib_list[i]) {
-            case EGL_MAX_PBUFFER_WIDTH:
-            case EGL_MAX_PBUFFER_HEIGHT:
-            case EGL_MAX_PBUFFER_PIXELS:
-            case EGL_NATIVE_VISUAL_ID:
-                break; //we dont care from those selection crateria
-            case EGL_LEVEL:
-                if(attrib_list[i+1] == EGL_DONT_CARE) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                frame_buffer_level = attrib_list[i+1];
-                break;
-            case EGL_BUFFER_SIZE:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                buffer_size = attrib_list[i+1];
-                break;
-            case EGL_RED_SIZE:
-                if(attrib_list[i+1] < 0) {
-                     RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                red_size = attrib_list[i+1];
-                break;
-            case EGL_GREEN_SIZE:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                green_size = attrib_list[i+1];
-                break;
-            case EGL_BLUE_SIZE:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                blue_size = attrib_list[i+1];
-                break;
-            case EGL_ALPHA_SIZE:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                alpha_size = attrib_list[i+1];
-                break;
-            case EGL_BIND_TO_TEXTURE_RGB:
-                bind_to_tex_rgb = attrib_list[i+1];
-                break;
-            case EGL_BIND_TO_TEXTURE_RGBA:
-                bind_to_tex_rgba = attrib_list[i+1];
-                break;
-            case EGL_CONFIG_CAVEAT:
-                if(attrib_list[i+1] != EGL_NONE && attrib_list[i+1] != EGL_SLOW_CONFIG && attrib_list[i+1] != EGL_NON_CONFORMANT_CONFIG) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                caveat = attrib_list[i+1];
-                break;
-            case EGL_CONFIG_ID:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                config_id = attrib_list[i+1];
-                hasConfigId = true;
-                break;
-            case EGL_DEPTH_SIZE:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                depth_size = attrib_list[i+1];
-                break;
-            case EGL_MAX_SWAP_INTERVAL:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                max_swap_interval = attrib_list[i+1];
-                break;
-            case EGL_MIN_SWAP_INTERVAL:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                min_swap_interval = attrib_list[i+1];
-                break;
-            case EGL_NATIVE_RENDERABLE:
-                native_renderable = attrib_list[i+1];
-                break;
-            case EGL_RENDERABLE_TYPE:
-                renderable_type = attrib_list[i+1];
-                break;
-            case EGL_NATIVE_VISUAL_TYPE:
-                native_visual_type = attrib_list[i+1];
-                break;
-                if(attrib_list[i+1] < 0 || attrib_list[i+1] > 1 ) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-            case EGL_SAMPLE_BUFFERS:
-                sample_buffers_num = attrib_list[i+1];
-                break;
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-            case EGL_SAMPLES:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                samples_per_pixel = attrib_list[i+1];
-                break;
-            case EGL_STENCIL_SIZE:
-                if(attrib_list[i+1] < 0) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                stencil_size = attrib_list[i+1];
-                break;
-            case EGL_SURFACE_TYPE:
-                surface_type = attrib_list[i+1];
-                break;
-            case EGL_TRANSPARENT_TYPE:
-                if(attrib_list[i+1] != EGL_NONE && attrib_list[i+1] != EGL_TRANSPARENT_RGB ) {
-                    RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-                }
-                transparent_type = attrib_list[i+1];
-                break;
-            case EGL_TRANSPARENT_RED_VALUE:
-                trans_red_val = attrib_list[i+1];
-                break;
-            case EGL_TRANSPARENT_GREEN_VALUE:
-                trans_green_val = attrib_list[i+1];
-                break;
-            case EGL_TRANSPARENT_BLUE_VALUE:
-                trans_blue_val = attrib_list[i+1];
-                break;
-            default:
-                RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-            }
-            i+=2;
-        }
-        if(hasConfigId) {
-            EglConfig* pConfig = dpy->getConfig(config_id);
-            if(pConfig) {
-                if(configs) {
-                    configs[0]  = static_cast<EGLConfig>(pConfig);
-                }
-                *num_config = 1;
-                return EGL_TRUE;
-            } else {
-                RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-            }
-        }
-    }
-    EGLNativePixelFormatType tmpfrmt = PIXEL_FORMAT_INITIALIZER;
-    EglConfig dummy(red_size,green_size,blue_size,alpha_size,caveat,config_id,depth_size,
-                    frame_buffer_level,0,0,0,native_renderable,renderable_type,0,native_visual_type,
-                    samples_per_pixel,stencil_size,surface_type,transparent_type,
-                    trans_red_val,trans_green_val,trans_blue_val,tmpfrmt);
-
-    *num_config = dpy->chooseConfigs(dummy,configs,config_size);
-
-
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay display, EGLConfig config,
-                  EGLint attribute, EGLint *value) {
-    VALIDATE_DISPLAY(display);
-    VALIDATE_CONFIG(config);
-    if(!EglValidate::confAttrib(attribute)){
-         RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-    }
-    return cfg->getConfAttrib(attribute,value)? EGL_TRUE:EGL_FALSE;
-}
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay display, EGLConfig config,
-                  EGLNativeWindowType win,
-                  const EGLint *attrib_list) {
-    VALIDATE_DISPLAY_RETURN(display,EGL_NO_SURFACE);
-    VALIDATE_CONFIG_RETURN(config,EGL_NO_SURFACE);
-
-    if(!(cfg->surfaceType() & EGL_WINDOW_BIT)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_MATCH);
-    }
-    if(!EglOS::validNativeWin(dpy->nativeType(),win)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_NATIVE_WINDOW);
-    }
-    if(!EglValidate::noAttribs(attrib_list)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE);
-    }
-    if(EglWindowSurface::alreadyAssociatedWithConfig(win)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-
-    unsigned int width,height;
-    if(!EglOS::checkWindowPixelFormatMatch(dpy->nativeType(),win,cfg,&width,&height)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-    SurfacePtr wSurface(new EglWindowSurface(dpy, win,cfg,width,height));
-    if(!wSurface.Ptr()) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-    return dpy->addSurface(wSurface);
-}
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay display, EGLConfig config,
-                   const EGLint *attrib_list) {
-    VALIDATE_DISPLAY_RETURN(display,EGL_NO_SURFACE);
-    VALIDATE_CONFIG_RETURN(config,EGL_NO_SURFACE);
-    if(!(cfg->surfaceType() & EGL_PBUFFER_BIT)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_MATCH);
-    }
-
-
-    SurfacePtr pbSurface(new EglPbufferSurface(dpy,cfg));
-    if(!pbSurface.Ptr()) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-
-    if(!EglValidate::noAttribs(attrib_list)) { //there are attribs
-        int i = 0 ;
-        while(attrib_list[i] != EGL_NONE) {
-            if(!pbSurface->setAttrib(attrib_list[i],attrib_list[i+1])) {
-                RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE);
-            }
-            i+=2;
-        }
-    }
-
-    EGLint width,height,largest,texTarget,texFormat;
-    EglPbufferSurface* tmpPbSurfacePtr = static_cast<EglPbufferSurface*>(pbSurface.Ptr());
-    tmpPbSurfacePtr->getDim(&width,&height,&largest);
-    tmpPbSurfacePtr->getTexInfo(&texTarget,&texFormat);
-
-    if(!EglValidate::pbufferAttribs(width,height,texFormat == EGL_NO_TEXTURE,texTarget == EGL_NO_TEXTURE)) {
-        //TODO: RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_VALUE); dont have bad_value
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE);
-    }
-
-    EGLNativeSurfaceType pb = EglOS::createPbufferSurface(dpy->nativeType(),cfg,tmpPbSurfacePtr);
-    if(!pb) {
-        //TODO: RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_VALUE); dont have bad value
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE);
-    }
-
-    tmpPbSurfacePtr->setNativePbuffer(pb);
-    return dpy->addSurface(pbSurface);
-}
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay display, EGLConfig config,
-                  EGLNativePixmapType pixmap,
-                  const EGLint *attrib_list) {
-    VALIDATE_DISPLAY_RETURN(display,EGL_NO_SURFACE);
-    VALIDATE_CONFIG_RETURN(config,EGL_NO_SURFACE);
-    if(!(cfg->surfaceType() & EGL_PIXMAP_BIT)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_MATCH);
-    }
-    if(!EglValidate::noAttribs(attrib_list)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ATTRIBUTE);
-    }
-    if(EglPixmapSurface::alreadyAssociatedWithConfig(pixmap)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-
-    unsigned int width,height;
-    if(!EglOS::checkPixmapPixelFormatMatch(dpy->nativeType(),pixmap,cfg,&width,&height)) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-    SurfacePtr pixSurface(new EglPixmapSurface(dpy, pixmap,cfg));
-    if(!pixSurface.Ptr()) {
-        RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_ALLOC);
-    }
-
-    return dpy->addSurface(pixSurface);
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay display, EGLSurface surface) {
-    VALIDATE_DISPLAY(display);
-    SurfacePtr srfc = dpy->getSurface(surface);
-    if(!srfc.Ptr()) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-    }
-
-    dpy->removeSurface(surface);
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay display, EGLSurface surface,
-               EGLint attribute, EGLint *value) {
-   VALIDATE_DISPLAY(display);
-   VALIDATE_SURFACE(surface,srfc);
-
-   if(!srfc->getAttrib(attribute,value)) {
-       RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-   }
-   return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay display, EGLSurface surface,
-                EGLint attribute, EGLint value) {
-   VALIDATE_DISPLAY(display);
-   VALIDATE_SURFACE(surface,srfc);
-   if(!srfc->setAttrib(attribute,value)) {
-       RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-   }
-   return EGL_TRUE;
-}
-
-EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay display, EGLConfig config,
-                EGLContext share_context,
-                const EGLint *attrib_list) {
-    VALIDATE_DISPLAY_RETURN(display,EGL_NO_CONTEXT);
-    VALIDATE_CONFIG_RETURN(config,EGL_NO_CONTEXT);
-
-    GLESVersion version = GLES_1_1;
-    if(!EglValidate::noAttribs(attrib_list)) {
-        int i = 0;
-        while(attrib_list[i] != EGL_NONE) {
-            switch(attrib_list[i]) {
-            case EGL_CONTEXT_CLIENT_VERSION:
-                if(attrib_list[i+1] == 2) {
-                    version = GLES_2_0;
-                } else {
-                    version = GLES_1_1;
-                }
-                break;
-            default:
-                RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_ATTRIBUTE);
-            }
-            i+=2;
-        }
-    }
-    GLESiface* iface = g_eglInfo->getIface(version);
-    GLEScontext* glesCtx = NULL;
-    if(iface) {
-        glesCtx = iface->createGLESContext();
-    } else { // there is no interface for this gles version
-                RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_ATTRIBUTE);
-    }
-
-    ContextPtr sharedCtxPtr;
-    EGLNativeContextType nativeShared = NULL;
-    if(share_context != EGL_NO_CONTEXT) {
-        sharedCtxPtr = dpy->getContext(share_context);
-        if(!sharedCtxPtr.Ptr()) {
-            RETURN_ERROR(EGL_NO_CONTEXT,EGL_BAD_CONTEXT);
-        }
-        nativeShared = sharedCtxPtr->nativeType();
-    }
-
-    EGLNativeContextType globalSharedContext = dpy->getGlobalSharedContext();
-    EGLNativeContextType nativeContext = EglOS::createContext(dpy->nativeType(),cfg,globalSharedContext);
-
-    if(nativeContext) {
-        ContextPtr ctx(new EglContext(dpy, nativeContext,sharedCtxPtr,cfg,glesCtx,version,dpy->getManager(version)));
-        return dpy->addContext(ctx);
-    } else {
-        iface->deleteGLESContext(glesCtx);
-    }
-
-return EGL_NO_CONTEXT;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay display, EGLContext context) {
-    VALIDATE_DISPLAY(display);
-    VALIDATE_CONTEXT(context);
-
-    dpy->removeContext(context);
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay display, EGLSurface draw,
-              EGLSurface read, EGLContext context) {
-    VALIDATE_DISPLAY(display);
-
-
-    bool releaseContext = EglValidate::releaseContext(context,read,draw);
-    if(!releaseContext && EglValidate::badContextMatch(context,read,draw)) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_MATCH);
-    }
-
-    ThreadInfo* thread     = getThreadInfo();
-    ContextPtr  prevCtx    = thread->eglContext;
-
-    if(releaseContext) { //releasing current context
-       if(prevCtx.Ptr()) {
-           g_eglInfo->getIface(prevCtx->version())->flush();
-           if(!EglOS::makeCurrent(dpy->nativeType(),NULL,NULL,NULL)) {
-               RETURN_ERROR(EGL_FALSE,EGL_BAD_ACCESS);
-           }
-           thread->updateInfo(ContextPtr(NULL),dpy,NULL,ShareGroupPtr(NULL),dpy->getManager(prevCtx->version()));
-       }
-    } else { //assining new context
-        VALIDATE_CONTEXT(context);
-        VALIDATE_SURFACE(draw,newDrawSrfc);
-        VALIDATE_SURFACE(read,newReadSrfc);
-
-        EglSurface* newDrawPtr = newDrawSrfc.Ptr();
-        EglSurface* newReadPtr = newReadSrfc.Ptr();
-        ContextPtr  newCtx     = ctx;
-
-        if (newCtx.Ptr() && prevCtx.Ptr()) {
-            if (newCtx.Ptr() == prevCtx.Ptr()) {
-                if (newDrawPtr == prevCtx->draw().Ptr() &&
-                    newReadPtr == prevCtx->read().Ptr()) {
-                    // nothing to do
-                    return EGL_TRUE;
-                }
-            }
-            else {
-                // Make sure previous context is detached from surfaces
-                releaseContext = true;
-            }
-        }
-
-        //surfaces compitability check
-        if(!((*ctx->getConfig()).compitableWith((*newDrawPtr->getConfig()))) ||
-           !((*ctx->getConfig()).compitableWith((*newReadPtr->getConfig())))) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_MATCH);
-        }
-
-         EGLNativeInternalDisplayType nativeDisplay = dpy->nativeType();
-         EGLNativeSurfaceType nativeRead = newReadPtr->native();
-         EGLNativeSurfaceType nativeDraw = newDrawPtr->native();
-        //checking native window validity
-        if(newReadPtr->type() == EglSurface::WINDOW && !EglOS::validNativeWin(nativeDisplay,nativeRead)) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_WINDOW);
-        }
-        if(newDrawPtr->type() == EglSurface::WINDOW && !EglOS::validNativeWin(nativeDisplay,nativeDraw)) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_WINDOW);
-        }
-
-        //checking native pixmap validity
-        if(newReadPtr->type() == EglSurface::PIXMAP && !EglOS::validNativePixmap(nativeDisplay,nativeRead)) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_PIXMAP);
-        }
-        if(newDrawPtr->type() == EglSurface::PIXMAP && !EglOS::validNativePixmap(nativeDisplay,nativeDraw)) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_PIXMAP);
-        }
-        if(prevCtx.Ptr()) {
-            g_eglInfo->getIface(prevCtx->version())->flush();
-        }
-        if(!EglOS::makeCurrent(dpy->nativeType(),newReadPtr,newDrawPtr,newCtx->nativeType())) {
-               RETURN_ERROR(EGL_FALSE,EGL_BAD_ACCESS);
-        }
-        //TODO: handle the following errors
-        // EGL_BAD_CURRENT_SURFACE , EGL_CONTEXT_LOST  , EGL_BAD_ACCESS
-
-        thread->updateInfo(newCtx,dpy,newCtx->getGlesContext(),newCtx->getShareGroup(),dpy->getManager(newCtx->version()));
-        newCtx->setSurfaces(newReadSrfc,newDrawSrfc);
-        g_eglInfo->getIface(newCtx->version())->initContext(newCtx->getGlesContext(),newCtx->getShareGroup());
-
-        // Initialize the GLES extension function table used in
-        // eglGetProcAddress for the context's GLES version if not
-        // yet initialized. We initialize it here to make sure we call the
-        // GLES getProcAddress after when a context is bound.
-        g_eglInfo->initClientExtFuncTable(newCtx->version());
-    }
-
-    // release previous context surface binding
-    if(prevCtx.Ptr() && releaseContext) {
-        prevCtx->setSurfaces(SurfacePtr(NULL),SurfacePtr(NULL));
-    }
-
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay display, EGLContext context,
-               EGLint attribute, EGLint *value) {
-    VALIDATE_DISPLAY(display);
-    VALIDATE_CONTEXT(context);
-
-    if(!ctx->getAttrib(attribute,value)){
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_ATTRIBUTE);
-    }
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay display, EGLSurface surface) {
-    VALIDATE_DISPLAY(display);
-    VALIDATE_SURFACE(surface,Srfc);
-    ThreadInfo* thread        = getThreadInfo();
-    ContextPtr currentCtx    = thread->eglContext;
-
-
-    //if surface not window return
-    if(Srfc->type() != EglSurface::WINDOW){
-        RETURN_ERROR(EGL_TRUE,EGL_SUCCESS);
-    }
-
-    if(!currentCtx.Ptr() || !currentCtx->usingSurface(Srfc) || !EglOS::validNativeWin(dpy->nativeType(),Srfc.Ptr()->native())) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-    }
-
-    EglOS::swapBuffers(dpy->nativeType(),Srfc->native());
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay display, EGLint interval) {
-    VALIDATE_DISPLAY(display);
-    ThreadInfo* thread  = getThreadInfo();
-    ContextPtr currCtx = thread->eglContext;
-    if(currCtx.Ptr()) {
-        if(!currCtx->read().Ptr() || !currCtx->draw().Ptr() || currCtx->draw()->type()!=EglSurface::WINDOW) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_CURRENT_SURFACE);
-        }
-        EglOS::swapInterval(dpy->nativeType(),currCtx->draw()->native(),interval);
-    } else {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-    }
-    return EGL_TRUE;
-}
-
-
-EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void) {
-    ThreadInfo* thread = getThreadInfo();
-    EglDisplay* dpy    = static_cast<EglDisplay*>(thread->eglDisplay);
-    ContextPtr  ctx    = thread->eglContext;
-    if(dpy && ctx.Ptr()){
-        // This double check is required because a context might still be current after it is destroyed - in which case
-        // its handle should be invalid, that is EGL_NO_CONTEXT should be returned even though the context is current
-        EGLContext c = (EGLContext)ctx->getHndl();
-        if(dpy->getContext(c).Ptr())
-        {
-            return c;
-        }
-    }
-    return EGL_NO_CONTEXT;
-}
-
-EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw) {
-    if(!EglValidate::surfaceTarget(readdraw)) return EGL_NO_SURFACE;
-
-    ThreadInfo* thread = getThreadInfo();
-    EglDisplay* dpy    = static_cast<EglDisplay*>(thread->eglDisplay);
-    ContextPtr  ctx    = thread->eglContext;
-
-    if(dpy && ctx.Ptr()) {
-        SurfacePtr surface = readdraw == EGL_READ ? ctx->read() : ctx->draw();
-        if(surface.Ptr())
-        {
-            // This double check is required because a surface might still be
-            // current after it is destroyed - in which case its handle should
-            // be invalid, that is EGL_NO_SURFACE should be returned even
-            // though the surface is current.
-            EGLSurface s = (EGLSurface)surface->getHndl();
-            surface = dpy->getSurface(s);
-            if(surface.Ptr())
-            {
-                return s;
-            }
-        }
-    }
-    return EGL_NO_SURFACE;
-}
-
-EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void) {
-    ThreadInfo* thread     = getThreadInfo();
-    return (thread->eglContext.Ptr()) ? thread->eglDisplay : EGL_NO_DISPLAY;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void) {
-    EGLenum api = eglQueryAPI();
-    eglBindAPI(EGL_OPENGL_ES_API);
-    return eglWaitClient();
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine) {
-    if(!EglValidate::engine(engine)) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER);
-    }
-    ThreadInfo* thread  = getThreadInfo();
-    ContextPtr  currCtx = thread->eglContext;
-    EglDisplay* dpy     = static_cast<EglDisplay*>(thread->eglDisplay);
-    if(currCtx.Ptr()) {
-        SurfacePtr read = currCtx->read();
-        SurfacePtr draw = currCtx->draw();
-
-        EGLNativeInternalDisplayType nativeDisplay = dpy->nativeType();
-        if(read.Ptr()) {
-            if(read->type() == EglSurface::WINDOW &&
-               !EglOS::validNativeWin(nativeDisplay,read->native())) {
-                RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-            }
-            if(read->type() == EglSurface::PIXMAP &&
-               !EglOS::validNativePixmap(nativeDisplay,read->native())) {
-                RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-            }
-        }
-        if(draw.Ptr()) {
-            if(draw->type() == EglSurface::WINDOW &&
-               !EglOS::validNativeWin(nativeDisplay,draw->native())) {
-                RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-            }
-            if(draw->type() == EglSurface::PIXMAP &&
-               !EglOS::validNativePixmap(nativeDisplay,draw->native())) {
-                RETURN_ERROR(EGL_FALSE,EGL_BAD_SURFACE);
-            }
-        }
-    }
-    EglOS::waitNative();
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api) {
-    if(!EglValidate::supportedApi(api)) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_PARAMETER);
-    }
-    CURRENT_THREAD();
-    tls_thread->setApi(api);
-    return EGL_TRUE;
-}
-
-EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void) {
-    CURRENT_THREAD();
-    return tls_thread->getApi();
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void) {
-    ThreadInfo* thread  = getThreadInfo();
-    ContextPtr currCtx = thread->eglContext;
-    if(currCtx.Ptr()) {
-        if(!currCtx->read().Ptr() || !currCtx->draw().Ptr()) {
-            RETURN_ERROR(EGL_FALSE,EGL_BAD_CURRENT_SURFACE);
-        }
-        g_eglInfo->getIface(currCtx->version())->finish();
-    }
-    return EGL_TRUE;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void) {
-    ThreadInfo* thread  = getThreadInfo();
-    EglDisplay* dpy     = static_cast<EglDisplay*>(thread->eglDisplay);
-    return eglMakeCurrent(dpy,EGL_NO_SURFACE,EGL_NO_SURFACE,EGL_NO_CONTEXT);
-}
-
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
-       eglGetProcAddress(const char *procname){
-    __eglMustCastToProperFunctionPointerType retVal = NULL;
-
-    initGlobalInfo();
-
-    if(!strncmp(procname,"egl",3)) { //EGL proc
-        for(int i=0;i < s_eglExtentionsSize;i++){
-            if(strcmp(procname,s_eglExtentions[i].name) == 0){
-                retVal = s_eglExtentions[i].address;
-                break;
-            }
-        }
-    }
-    else {
-        // Look at the clientAPI (GLES) supported extension
-        // function table.
-        retVal = ClientAPIExts::getProcAddress(procname);
-    }
-    return retVal;
-}
-
-//not supported for now
-/************************* NOT SUPPORTED FOR NOW ***********************/
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
-          EGLDisplay display, EGLenum buftype, EGLClientBuffer buffer,
-          EGLConfig config, const EGLint *attrib_list) {
-    VALIDATE_DISPLAY(display);
-    VALIDATE_CONFIG(config);
-    //we do not support for now openVG, and the only client API resources which may be bound in this fashion are OpenVG
-    RETURN_ERROR(EGL_NO_SURFACE,EGL_BAD_PARAMETER);
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay display, EGLSurface surface,
-              EGLNativePixmapType target) {
-    VALIDATE_DISPLAY(display);
-    VALIDATE_SURFACE(surface,srfc);
-    if(!EglOS::validNativePixmap(dpy->nativeType(),NULL)) {
-        RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_PIXMAP);
-    }
-
-    //we do not need to support this for android , since we are not gonna use pixmaps
-    RETURN_ERROR(EGL_FALSE,EGL_BAD_NATIVE_PIXMAP);
-}
-
-/***********************************************************************/
-
-
-
-//do last ( only if needed)
-/*********************************************************************************************************/
-EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) {
-//TODO:
-return 0;
-}
-
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer) {
-//TODO:
-return 0;
-}
-/*********************************************************************************************************/
-
-
-/************************** KHR IMAGE *************************************************************/
-EglImage *attachEGLImage(unsigned int imageId)
-{
-    ThreadInfo* thread  = getThreadInfo();
-    EglDisplay* dpy     = static_cast<EglDisplay*>(thread->eglDisplay);
-    ContextPtr  ctx     = thread->eglContext;
-    if (ctx.Ptr()) {
-        ImagePtr img = dpy->getImage(reinterpret_cast<EGLImageKHR>(imageId));
-        if(img.Ptr()) {
-             ctx->attachImage(imageId,img);
-             return img.Ptr();
-        }
-    }
-    return NULL;
-}
-
-void detachEGLImage(unsigned int imageId)
-{
-    ThreadInfo* thread  = getThreadInfo();
-    EglDisplay* dpy     = static_cast<EglDisplay*>(thread->eglDisplay);
-    ContextPtr  ctx     = thread->eglContext;
-    if (ctx.Ptr()) {
-        ctx->detachImage(imageId);
-    }
-}
-
-
-EGLImageKHR eglCreateImageKHR(EGLDisplay display, EGLContext context, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
-{
-    VALIDATE_DISPLAY(display);
-    VALIDATE_CONTEXT(context);
-
-    // We only support EGL_GL_TEXTURE_2D images
-    if (target != EGL_GL_TEXTURE_2D_KHR) {
-        RETURN_ERROR(EGL_NO_IMAGE_KHR,EGL_BAD_PARAMETER);
-    }
-
-    ThreadInfo* thread  = getThreadInfo();
-    ShareGroupPtr sg = thread->shareGroup;
-    if (sg.Ptr() != NULL) {
-        unsigned int globalTexName = sg->getGlobalName(TEXTURE, (unsigned int)buffer);
-        if (!globalTexName) return EGL_NO_IMAGE_KHR;
-
-        ImagePtr img( new EglImage() );
-        if (img.Ptr() != NULL) {
-
-            ObjectDataPtr objData = sg->getObjectData(TEXTURE, (unsigned int)buffer);
-            if (!objData.Ptr()) return EGL_NO_IMAGE_KHR;
-
-            TextureData *texData = (TextureData *)objData.Ptr();
-            if(!texData->width || !texData->height) return EGL_NO_IMAGE_KHR;
-            img->width = texData->width;
-            img->height = texData->height;
-            img->border = texData->border;
-            img->internalFormat = texData->internalFormat;
-            img->globalTexName = globalTexName;
-            return dpy->addImageKHR(img);
-        }
-    }
-
-    return EGL_NO_IMAGE_KHR;
-}
-
-
-EGLBoolean eglDestroyImageKHR(EGLDisplay display, EGLImageKHR image)
-{
-    VALIDATE_DISPLAY(display);
-    return dpy->destroyImageKHR(image) ? EGL_TRUE:EGL_FALSE;
-}
-
-/*********************************************************************************/
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglMacApi.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglMacApi.cpp
deleted file mode 100644
index b5e7d67..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglMacApi.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglOsApi.h"
-#include "MacNative.h"
-#define MAX_PBUFFER_MIPMAP_LEVEL 1
-
-namespace EglOS {
-
-static std::list<EGLNativePixelFormatType> s_nativeConfigs;
-
-EGLNativeDisplayType getDefaultDisplay() {return 0;}
-
-bool releaseDisplay(EGLNativeDisplayType dpy) {
-    return true;
-}
-
-static EglConfig* pixelFormatToConfig(int index,int renderableType,EGLNativePixelFormatType* frmt){
-    if(!frmt) return NULL;
-
-    EGLint  red,green,blue,alpha,depth,stencil;
-    EGLint  supportedSurfaces,visualType,visualId;
-    EGLint  transparentType,samples;
-    EGLint  tRed,tGreen,tBlue;
-    EGLint  pMaxWidth,pMaxHeight,pMaxPixels;
-    EGLint  configId,level;
-    EGLint  window,pbuffer;
-    EGLint  doubleBuffer,colorSize;
-
-    getPixelFormatAttrib(*frmt,MAC_HAS_DOUBLE_BUFFER,&doubleBuffer);
-    if(!doubleBuffer) return NULL; //pixel double buffer
-
-    supportedSurfaces = 0;
-
-    getPixelFormatAttrib(*frmt,MAC_DRAW_TO_WINDOW,&window);
-    getPixelFormatAttrib(*frmt,MAC_DRAW_TO_PBUFFER,&pbuffer);
-
-    if(window)  supportedSurfaces |= EGL_WINDOW_BIT;
-    if(pbuffer) supportedSurfaces |= EGL_PBUFFER_BIT;
-
-    if(!supportedSurfaces) return NULL;
-
-    //default values
-    visualId                  = 0;
-    visualType                = EGL_NONE;
-    EGLenum caveat            = EGL_NONE;
-    EGLBoolean renderable     = EGL_FALSE;
-    pMaxWidth                 = PBUFFER_MAX_WIDTH;
-    pMaxHeight                = PBUFFER_MAX_HEIGHT;
-    pMaxPixels                = PBUFFER_MAX_PIXELS;
-    samples                   = 0;
-    level                     = 0;
-    tRed = tGreen = tBlue     = 0;
-
-    transparentType = EGL_NONE;
-
-    getPixelFormatAttrib(*frmt,MAC_SAMPLES_PER_PIXEL,&samples);
-    getPixelFormatAttrib(*frmt,MAC_COLOR_SIZE,&colorSize);
-    getPixelFormatAttrib(*frmt,MAC_ALPHA_SIZE,&alpha);
-    getPixelFormatAttrib(*frmt,MAC_DEPTH_SIZE,&depth);
-    getPixelFormatAttrib(*frmt,MAC_STENCIL_SIZE,&stencil);
-
-    red = green = blue = (colorSize / 4); //TODO: ask guy if it is OK
-
-    return new EglConfig(red,green,blue,alpha,caveat,(EGLint)index,depth,level,pMaxWidth,pMaxHeight,pMaxPixels,renderable,renderableType,
-                         visualId,visualType,samples,stencil,supportedSurfaces,transparentType,tRed,tGreen,tBlue,*frmt);
-}
-
-
-static void initNativeConfigs(){
-    int nConfigs = getNumPixelFormats();
-    if(s_nativeConfigs.empty()){
-        for(int i=0; i < nConfigs ;i++){
-             EGLNativePixelFormatType frmt = getPixelFormat(i);
-             if(frmt){
-                 s_nativeConfigs.push_back(frmt);
-             }
-        }
-    }
-}
-
-void queryConfigs(EGLNativeDisplayType dpy,int renderableType,ConfigsList& listOut) {
-    int i = 0 ;
-    initNativeConfigs();
-    for(std::list<EGLNativePixelFormatType>::iterator it = s_nativeConfigs.begin(); it != s_nativeConfigs.end();it++){
-         EGLNativePixelFormatType frmt = *it;
-         EglConfig* conf = pixelFormatToConfig(i++,renderableType,&frmt);
-         if(conf){
-             listOut.push_front(conf);
-         };
-    }
-}
-
-bool validNativeWin(EGLNativeDisplayType dpy, EGLNativeWindowType win) {
-    unsigned int width,height;
-    return nsGetWinDims(win,&width,&height);
-}
-
-bool validNativeWin(EGLNativeDisplayType dpy, EGLNativeSurfaceType win) {
-    return validNativeWin(dpy,(EGLNativeWindowType)win);
-}
-
-//no support for pixmap in mac
-bool validNativePixmap(EGLNativeDisplayType dpy, EGLNativeSurfaceType pix) {
-
-   return true;
-}
-
-bool checkWindowPixelFormatMatch(EGLNativeDisplayType dpy,EGLNativeWindowType win,EglConfig* cfg,unsigned int* width,unsigned int* height) {
-    int r,g,b;
-    bool ret = nsGetWinDims(win,width,height);
-
-    cfg->getConfAttrib(EGL_RED_SIZE,&r);
-    cfg->getConfAttrib(EGL_GREEN_SIZE,&g);
-    cfg->getConfAttrib(EGL_BLUE_SIZE,&b);
-    bool match = nsCheckColor(win,r + g + b);
-
-    return ret && match;
-}
-
-//no support for pixmap in mac
-bool checkPixmapPixelFormatMatch(EGLNativeDisplayType dpy,EGLNativePixmapType pix,EglConfig* cfg,unsigned int* width,unsigned int* height) {
-    return false;
-}
-
-EGLNativeSurfaceType createPbufferSurface(EGLNativeDisplayType dpy,EglConfig* cfg,EglPbufferSurface* srfc){
-    EGLint width,height,hasMipmap,tmp;
-    EGLint target,format;
-    srfc->getDim(&width,&height,&tmp);
-    srfc->getTexInfo(&format,&target);
-    srfc->getAttrib(EGL_MIPMAP_TEXTURE,&hasMipmap);
-    EGLint maxMipmap = hasMipmap ? MAX_PBUFFER_MIPMAP_LEVEL:0;
-    return (EGLNativeSurfaceType)nsCreatePBuffer(target,format,maxMipmap,width,height);
-}
-
-bool releasePbuffer(EGLNativeDisplayType dis,EGLNativeSurfaceType pb) {
-    nsDestroyPBuffer(pb);
-    return true;
-}
-
-EGLNativeContextType createContext(EGLNativeDisplayType dpy,EglConfig* cfg,EGLNativeContextType sharedContext) {
- return nsCreateContext(cfg->nativeConfig(),sharedContext);
-}
-
-bool destroyContext(EGLNativeDisplayType dpy,EGLNativeContextType ctx) {
-    nsDestroyContext(ctx);
-    return true;
-}
-
-bool makeCurrent(EGLNativeDisplayType dpy,EglSurface* read,EglSurface* draw,EGLNativeContextType ctx){
-
-    // check for unbind
-    if (ctx == NULL && read == NULL && draw == NULL) {
-        nsWindowMakeCurrent(NULL, NULL);
-        return true;
-    }
-    else if (ctx == NULL || read == NULL || draw == NULL) {
-        // error !
-        return false;
-    }
-
-    //dont supporting diffrent read & draw surfaces on Mac
-    if(read->native() != draw->native()) return false;
-    switch(draw->type()){
-    case EglSurface::WINDOW:
-        nsWindowMakeCurrent(ctx,draw->native());
-        break;
-    case EglSurface::PBUFFER:
-    {
-        EGLint hasMipmap;
-        draw->getAttrib(EGL_MIPMAP_TEXTURE,&hasMipmap);
-        int mipmapLevel = hasMipmap ? MAX_PBUFFER_MIPMAP_LEVEL:0;
-        nsPBufferMakeCurrent(ctx,draw->native(),mipmapLevel);
-        break;
-    }
-    case EglSurface::PIXMAP: // not supported on Mac
-    default:
-        return false;
-    }
-    return true;
-}
-
-void swapBuffers(EGLNativeDisplayType dpy,EGLNativeSurfaceType srfc){
-    nsSwapBuffers();
-}
-
-void waitNative(){}
-
-void swapInterval(EGLNativeDisplayType dpy,EGLNativeSurfaceType win,int interval){
-    nsSwapInterval(&interval);
-}
-
-EGLNativeSurfaceType createWindowSurface(EGLNativeWindowType wnd){
-    return (EGLNativeSurfaceType)wnd;
-}
-
-EGLNativeSurfaceType createPixmapSurface(EGLNativePixmapType pix){
-    return (EGLNativeSurfaceType)pix;
-}
-
-void destroySurface(EGLNativeSurfaceType srfc){
-}
-
-EGLNativeInternalDisplayType getInternalDisplay(EGLNativeDisplayType dpy){
-    return (EGLNativeInternalDisplayType)dpy;
-}
-
-void deleteDisplay(EGLNativeInternalDisplayType idpy){
-}
-
-};
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglOsApi.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglOsApi.h
deleted file mode 100644
index c166220..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglOsApi.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_OS_API_H
-#define EGL_OS_API_H
-
-#include <EGL/egl.h>
-#include <EGL/eglinternalplatform.h>
-#ifdef __APPLE__
-#include <OpenGL/gl.h>
-#else
-#include <GL/gl.h>
-#endif
-#include "EglConfig.h"
-#include "EglDisplay.h"
-#include "EglPbufferSurface.h"
-
-#define PBUFFER_MAX_WIDTH  32767
-#define PBUFFER_MAX_HEIGHT 32767
-#define PBUFFER_MAX_PIXELS 32767*32767
-
-namespace EglOS{
-
-    void queryConfigs(EGLNativeInternalDisplayType dpy,int renderable_type,ConfigsList& listOut);
-    bool releasePbuffer(EGLNativeInternalDisplayType dis,EGLNativeSurfaceType pb);
-    bool destroyContext(EGLNativeInternalDisplayType dpy,EGLNativeContextType ctx);
-    bool releaseDisplay(EGLNativeInternalDisplayType dpy);
-    bool validNativeWin(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType win);
-    bool validNativeWin(EGLNativeInternalDisplayType dpy,EGLNativeWindowType win);
-    bool validNativePixmap(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType pix);
-    bool checkWindowPixelFormatMatch(EGLNativeInternalDisplayType dpy,EGLNativeWindowType win,EglConfig* cfg,unsigned int* width,unsigned int* height);
-    bool checkPixmapPixelFormatMatch(EGLNativeInternalDisplayType dpy,EGLNativePixmapType pix,EglConfig* cfg,unsigned int* width,unsigned int* height);
-    bool makeCurrent(EGLNativeInternalDisplayType dpy,EglSurface* read,EglSurface* draw,EGLNativeContextType);
-    void swapBuffers(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType srfc);
-    void swapInterval(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType win,int interval);
-    void waitNative();
-
-    EGLNativeInternalDisplayType getDefaultDisplay();
-    EGLNativeInternalDisplayType getInternalDisplay(EGLNativeDisplayType dpy);
-    void deleteDisplay(EGLNativeInternalDisplayType idpy);
-    EGLNativeSurfaceType createPbufferSurface(EGLNativeInternalDisplayType dpy,EglConfig* cfg,EglPbufferSurface* pb);
-    EGLNativeContextType createContext(EGLNativeInternalDisplayType dpy,EglConfig* cfg,EGLNativeContextType sharedContext);
-    EGLNativeSurfaceType createWindowSurface(EGLNativeWindowType wnd);
-    EGLNativeSurfaceType createPixmapSurface(EGLNativePixmapType pix);
-    void destroySurface(EGLNativeSurfaceType srfc);
-#ifdef _WIN32
-    void initPtrToWglFunctions();
-#endif
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglPbufferSurface.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglPbufferSurface.cpp
deleted file mode 100644
index 8bcb31a..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglPbufferSurface.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglPbufferSurface.h"
-
-bool EglPbufferSurface::setAttrib(EGLint attrib,EGLint val) {
-    switch(attrib) {
-    case EGL_WIDTH:
-        if(val < 0) return false;
-        m_width = val;
-        break;
-    case EGL_HEIGHT:
-        if(val < 0) return false;
-        m_height = val;
-        break;
-    case EGL_LARGEST_PBUFFER:
-        m_largest = val;
-        break;
-    case EGL_TEXTURE_FORMAT:
-        if(val != EGL_NO_TEXTURE && val != EGL_TEXTURE_RGB && val != EGL_TEXTURE_RGBA) return false;
-        m_texFormat = val;
-        break;
-    case EGL_TEXTURE_TARGET:
-        if(val != EGL_NO_TEXTURE && val != EGL_TEXTURE_2D) return false;
-        m_texTarget = val;
-        break;
-    case EGL_MIPMAP_TEXTURE:
-        m_texMipmap = val;
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
-
-bool EglPbufferSurface::getAttrib(EGLint attrib,EGLint* val) {
-    switch(attrib) {
-    case EGL_CONFIG_ID:
-        *val = m_config->id();
-        break;
-    case EGL_WIDTH:
-        *val = m_width;
-        break;
-    case EGL_HEIGHT:
-        *val = m_height;
-        break;
-    case EGL_LARGEST_PBUFFER:
-        *val = m_largest;
-        break;
-    case EGL_TEXTURE_FORMAT:
-        *val = m_texFormat;
-        break;
-    case EGL_TEXTURE_TARGET:
-        *val = m_texTarget;
-        break;
-    case EGL_MIPMAP_TEXTURE:
-        *val = m_texMipmap;
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglPbufferSurface.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglPbufferSurface.h
deleted file mode 100644
index 9740170..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglPbufferSurface.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_PBUFFER_SURFACE_H
-#define EGL_PBUFFER_SURFACE_H
-
-#include "EglSurface.h"
-
-class EglDisplay;
-
-class EglPbufferSurface:public EglSurface {
-public:
-    EglPbufferSurface(EglDisplay *dpy, EglConfig* config):
-                                         EglSurface(dpy,PBUFFER,config,0,0),
-                                         m_texFormat(EGL_NO_TEXTURE),
-                                         m_texTarget(EGL_NO_TEXTURE),
-                                         m_texMipmap(EGL_FALSE),
-                                         m_largest(EGL_FALSE){};
-
-    void  setNativePbuffer(EGLNativeSurfaceType srfc){ m_native = srfc;};
-    bool  setAttrib(EGLint attrib,EGLint val);
-    bool  getAttrib(EGLint attrib,EGLint* val);
-    void  getDim(EGLint* width,EGLint* height,EGLint* largest){
-                                                              *width = m_width;
-                                                              *height = m_height;
-                                                              *largest = m_largest;
-                                                             };
-
-    void getTexInfo(EGLint* format,EGLint* target){ *format = m_texFormat; *target = m_texTarget;}
-
-private:
-    EGLint               m_texFormat;
-    EGLint               m_texTarget;
-    EGLint               m_texMipmap;
-    EGLint               m_largest;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglPixmapSurface.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglPixmapSurface.cpp
deleted file mode 100644
index 2087594..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglPixmapSurface.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglPixmapSurface.h"
-#include "EglOsApi.h"
-
-std::set<EGLNativePixmapType> EglPixmapSurface::s_associatedPixmaps;
-
-bool EglPixmapSurface::alreadyAssociatedWithConfig(EGLNativePixmapType pix) {
-    return s_associatedPixmaps.find(pix) != s_associatedPixmaps.end();
-
-}
-
-EglPixmapSurface::EglPixmapSurface(EglDisplay *dpy,
-                                   EGLNativePixmapType pix,
-                                   EglConfig* config) :
-           EglSurface(dpy, PIXMAP,config,0,0),
-           m_pixmap(pix)
-{
-    s_associatedPixmaps.insert(pix);
-    m_native = EglOS::createPixmapSurface(pix);
-}
-
-EglPixmapSurface::~EglPixmapSurface() {
-    s_associatedPixmaps.erase(m_pixmap);
-}
-
-bool EglPixmapSurface::getAttrib(EGLint attrib,EGLint* val) {
-    switch(attrib) {
-    case EGL_CONFIG_ID:
-        *val = m_config->id();
-        break;
-    case EGL_WIDTH:
-        *val = m_width;
-        break;
-    case EGL_HEIGHT:
-        *val = m_height;
-        break;
-    case EGL_LARGEST_PBUFFER:
-    case EGL_TEXTURE_FORMAT:
-    case EGL_TEXTURE_TARGET:
-    case EGL_MIPMAP_TEXTURE:
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglPixmapSurface.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglPixmapSurface.h
deleted file mode 100644
index f027eab..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglPixmapSurface.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_PIXMAP_SURFACE_H
-#define EGL_PIXMAP_SURFACE_H
-
-#include <set>
-#include <EGL/egl.h>
-#include "EglSurface.h"
-
-class EglDisplay;
-
-class EglPixmapSurface: public EglSurface {
-public:
-    EglPixmapSurface(EglDisplay *dpy, EGLNativePixmapType pix,EglConfig* config);
-    ~EglPixmapSurface();
-
-    bool getAttrib(EGLint attrib,EGLint* val);
-
-    static bool alreadyAssociatedWithConfig(EGLNativePixmapType pix);
-private:
-   EGLNativePixmapType m_pixmap;
-   static std::set<EGLNativePixmapType> s_associatedPixmaps;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglSurface.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglSurface.cpp
deleted file mode 100644
index 7f658b6..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglSurface.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglSurface.h"
-#include "EglOsApi.h"
-
-unsigned int EglSurface::s_nextSurfaceHndl = 0;
-
-EglSurface::~EglSurface(){ 
-
-    if(m_type == EglSurface::PBUFFER) {
-        EglOS::releasePbuffer(m_dpy->nativeType(),m_native);
-    }
-
-    if(m_native) EglOS::destroySurface(m_native);
-}
-
-bool  EglSurface::setAttrib(EGLint attrib,EGLint val) {
-    switch(attrib) {
-    case EGL_WIDTH:
-    case EGL_HEIGHT:
-    case EGL_LARGEST_PBUFFER:
-    case EGL_TEXTURE_FORMAT:
-    case EGL_TEXTURE_TARGET:
-    case EGL_MIPMAP_TEXTURE:
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglSurface.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglSurface.h
deleted file mode 100644
index d65f480..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglSurface.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_SURFACE_H
-#define EGL_SURFACE_H
-
-#include <EGL/egl.h>
-#include <EGL/eglinternalplatform.h>
-#include <map>
-#include <GLcommon/SmartPtr.h>
-#include "EglConfig.h"
-
-class EglSurface;
-typedef  SmartPtr<EglSurface> SurfacePtr;
-
-class EglDisplay;
-
-class EglSurface {
-public:
-    typedef enum {
-                  WINDOW  = 0,
-                  PBUFFER = 1,
-                  PIXMAP  = 3
-                 } ESurfaceType;
-  ESurfaceType  type(){ return m_type;};
-  EGLNativeSurfaceType native(){return m_native;}
-  virtual bool  setAttrib(EGLint attrib,EGLint val);
-  virtual bool  getAttrib(EGLint attrib,EGLint* val) = 0;
-  void          setDim(int width,int height){ m_width = width; m_height = height;};
-  EglConfig*    getConfig(){return m_config;};
-  unsigned int  getHndl(){return m_hndl;};
-  virtual       ~EglSurface();
-
-private:
-    static unsigned int   s_nextSurfaceHndl;
-    ESurfaceType          m_type;
-    unsigned int          m_hndl;
-
-protected:
-    EglSurface(EglDisplay *dpy,
-               ESurfaceType type,
-               EglConfig* config,
-               EGLint width,
-               EGLint height) :
-       m_type(type),
-       m_config(config),
-       m_width(width),
-       m_height(height),
-       m_native(NULL),
-       m_dpy(dpy)
-    { 
-        m_hndl = ++s_nextSurfaceHndl;
-    }
-
-protected:
-    EglConfig*            m_config;
-    EGLint                m_width;
-    EGLint                m_height;
-    EGLNativeSurfaceType  m_native;
-    EglDisplay           *m_dpy;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglThreadInfo.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglThreadInfo.cpp
deleted file mode 100644
index 1b403f2..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglThreadInfo.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglThreadInfo.h"
-#include "EglOsApi.h"
-
-EglThreadInfo::EglThreadInfo():m_err(EGL_SUCCESS),m_api(EGL_OPENGL_ES_API) {}
-
-#include <cutils/threads.h>
-
-static thread_store_t s_tls = THREAD_STORE_INITIALIZER;
-
-static void tlsDestruct(void *ptr)
-{
-    if (ptr) {
-        EglThreadInfo *ti = (EglThreadInfo *)ptr;
-        delete ti;
-    }
-}
-
-EglThreadInfo* EglThreadInfo::get(void)
-{
-    EglThreadInfo *ti = (EglThreadInfo *)thread_store_get(&s_tls);
-    if (!ti) {
-        ti = new EglThreadInfo();
-        thread_store_set(&s_tls, ti, tlsDestruct);
-    }
-    return ti;
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglThreadInfo.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglThreadInfo.h
deleted file mode 100644
index 9d2df10..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglThreadInfo.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_THREAD_INFO_H
-#define EGL_THREAD_INFO_H
-
-#include <EGL/egl.h>
-#include "EglDisplay.h"
-#include "EglContext.h"
-#include "EglSurface.h"
-#include "EglPbufferSurface.h"
-
-class EglThreadInfo {
-public:
-
-    EglThreadInfo();
-    void       setError(EGLint err) { m_err = err;}
-    EGLint     getError(){ return m_err;}
-    void       destroyContextIfNotCurrent(ContextPtr context );
-    void       setApi(EGLenum api){m_api = api;}
-    EGLenum    getApi(){return m_api;}
-
-    static EglThreadInfo*  get(void) __attribute__((const));
-
-private:
-    EglDisplay*     m_currentDisplay;
-    EGLint          m_err;
-    EGLenum         m_api;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglValidate.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglValidate.cpp
deleted file mode 100644
index d87f9b9..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglValidate.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglValidate.h"
-#include <GLcommon/GLutils.h>
-
-bool EglValidate::confAttrib(EGLint attrib) {
-    switch(attrib) {
-    case EGL_BUFFER_SIZE:
-    case EGL_RED_SIZE:
-    case EGL_GREEN_SIZE:
-    case EGL_BLUE_SIZE:
-    case EGL_ALPHA_SIZE:
-    case EGL_BIND_TO_TEXTURE_RGB:
-    case EGL_BIND_TO_TEXTURE_RGBA:
-    case EGL_CONFIG_CAVEAT:
-    case EGL_CONFIG_ID:
-    case EGL_DEPTH_SIZE:
-    case EGL_LEVEL:
-    case EGL_MAX_PBUFFER_WIDTH:
-    case EGL_MAX_PBUFFER_HEIGHT:
-    case EGL_MAX_PBUFFER_PIXELS:
-    case EGL_MAX_SWAP_INTERVAL:
-    case EGL_MIN_SWAP_INTERVAL:
-    case EGL_RENDERABLE_TYPE:
-    case EGL_NATIVE_RENDERABLE:
-    case EGL_NATIVE_VISUAL_ID:
-    case EGL_NATIVE_VISUAL_TYPE:
-    case EGL_SAMPLE_BUFFERS:
-    case EGL_SAMPLES:
-    case EGL_STENCIL_SIZE:
-    case EGL_SURFACE_TYPE:
-    case EGL_TRANSPARENT_TYPE:
-    case EGL_TRANSPARENT_RED_VALUE:
-    case EGL_TRANSPARENT_GREEN_VALUE:
-    case EGL_TRANSPARENT_BLUE_VALUE:
-    case EGL_CONFORMANT:
-        return true;
-    }
-    return false;
-}
-
-bool EglValidate::noAttribs(const EGLint* attrib) {
-    return !attrib || attrib[0] == EGL_NONE ;
-}
-
-bool EglValidate::pbufferAttribs(EGLint width,EGLint height,bool isTexFormatNoTex,bool isTexTargetNoTex) {
-    if(!isTexFormatNoTex) {
-      if (!(isPowerOf2(width) && isPowerOf2(height))) return false;
-    }
-    return isTexFormatNoTex == isTexTargetNoTex ;
-}
-
-bool EglValidate::releaseContext(EGLContext ctx,EGLSurface s1,EGLSurface s2) {
-    return (ctx == EGL_NO_CONTEXT) &&
-           (s1 == EGL_NO_SURFACE)  &&
-           (s2 == EGL_NO_SURFACE);
-}
-
-bool EglValidate::badContextMatch(EGLContext ctx,EGLSurface s1,EGLSurface s2) {
-    return ctx != EGL_NO_CONTEXT ? (s1 == EGL_NO_SURFACE || s2 == EGL_NO_SURFACE):
-                                   (s1 != EGL_NO_SURFACE || s2 != EGL_NO_SURFACE);
-}
-
-bool EglValidate::surfaceTarget(EGLint target) {
-    return target == EGL_READ || target == EGL_DRAW;
-}
-
-bool EglValidate::engine(EGLint engine) {
-    return engine == EGL_CORE_NATIVE_ENGINE;
-}
-
-bool EglValidate::stringName(EGLint name) {
-    return name == EGL_VENDOR  ||
-           name == EGL_VERSION ||
-           name == EGL_EXTENSIONS;
-}
-
-bool EglValidate::supportedApi(EGLenum api) {
-    return api == EGL_OPENGL_ES_API;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglValidate.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglValidate.h
deleted file mode 100644
index 532584f..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglValidate.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_VALIDATE_H
-#define EGL_VALIDATE_H
-
-#include <EGL/egl.h>
-
-class EglValidate {
-public:
-    static bool confAttrib(EGLint attrib);
-    static bool noAttribs(const EGLint* attrib);
-    static bool pbufferAttribs(EGLint width,EGLint height,bool texFormatIsNoTex,bool texTargetIsNoTex);
-    static bool releaseContext(EGLContext ctx,EGLSurface s1,EGLSurface s2);
-    static bool badContextMatch(EGLContext ctx,EGLSurface s1,EGLSurface s2);
-    static bool surfaceTarget(EGLint target);
-    static bool engine(EGLint engine);
-    static bool stringName(EGLint name);
-    static bool supportedApi(EGLenum api);
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowSurface.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowSurface.cpp
deleted file mode 100644
index 7bff896..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowSurface.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglWindowSurface.h"
-#include "EglOsApi.h"
-
-std::set<EGLNativeWindowType> EglWindowSurface::s_associatedWins;
-
-bool EglWindowSurface::alreadyAssociatedWithConfig(EGLNativeWindowType win) {
-    return s_associatedWins.find(win) != s_associatedWins.end();
-
-}
-
-EglWindowSurface::EglWindowSurface(EglDisplay *dpy, 
-                                   EGLNativeWindowType win,
-                                   EglConfig* config,
-                                   unsigned int width,unsigned int height) :
-                  EglSurface(dpy, WINDOW,config,width,height),
-                  m_win(win)
-{
-    s_associatedWins.insert(win);
-    m_native = EglOS::createWindowSurface(win);
-}
-
-EglWindowSurface:: ~EglWindowSurface() {
-    s_associatedWins.erase(m_win);
-}
-
-bool  EglWindowSurface::getAttrib(EGLint attrib,EGLint* val) {
-    switch(attrib) {
-    case EGL_CONFIG_ID:
-        *val = m_config->id();
-        break;
-    case EGL_WIDTH:
-        *val = m_width;
-        break;
-    case EGL_HEIGHT:
-        *val = m_height;
-        break;
-    case EGL_LARGEST_PBUFFER:
-    case EGL_TEXTURE_FORMAT:
-    case EGL_TEXTURE_TARGET:
-    case EGL_MIPMAP_TEXTURE:
-        break;
-    default:
-        return false;
-    }
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowSurface.h b/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowSurface.h
deleted file mode 100644
index 460a293..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowSurface.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef EGL_WINDOW_SURFACE_H
-#define EGL_WINDOW_SURFACE_H
-
-#include <set>
-#include <EGL/egl.h>
-#include "EglSurface.h"
-#include "EglConfig.h"
-
-class EglDisplay;
-
-class EglWindowSurface: public EglSurface {
-public:
-    EglWindowSurface(EglDisplay *dpy, EGLNativeWindowType win,EglConfig* config,unsigned width,unsigned int height);
-    ~EglWindowSurface();
-    bool  getAttrib(EGLint attrib,EGLint* val);
-
-    static bool alreadyAssociatedWithConfig(EGLNativeWindowType win);
-private:
-    EGLNativeWindowType m_win;
-    static std::set<EGLNativeWindowType> s_associatedWins;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp
deleted file mode 100644
index c11c547..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglWindowsApi.cpp
+++ /dev/null
@@ -1,592 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglOsApi.h"
-#include <windows.h>
-#include <wingdi.h>
-#include <GL/wglext.h>
-#include <stdio.h>
-
-#define IS_TRUE(a) \
-        if(a != true) return false;
-
-
-struct DisplayInfo{
-    DisplayInfo():dc(NULL),hwnd(NULL),isPixelFormatSet(false){};
-    DisplayInfo(HDC hdc,HWND wnd):isPixelFormatSet(false){dc = hdc; hwnd = wnd;};
-    HDC  dc;
-    HWND hwnd;
-    bool isPixelFormatSet;
-};
-
-struct TlsData {
-    std::map<int,DisplayInfo> m_map;
-};
-
-static DWORD s_tlsIndex = 0;
-
-static TlsData *getTLS() {
-    TlsData *tls = (TlsData *)TlsGetValue(s_tlsIndex);
-    if (!tls) {
-        tls = new TlsData();
-        TlsSetValue(s_tlsIndex, tls);
-    }
-    return tls;
-}
-
-class WinDisplay{
-public:
-     typedef enum {
-                      DEFAULT_DISPLAY = 0
-                  };
-     WinDisplay(){};
-     DisplayInfo& getInfo(int configurationIndex){ return getTLS()->m_map[configurationIndex];}
-     HDC  getDC(int configId){return getTLS()->m_map[configId].dc;}
-     void setInfo(int configurationIndex,const DisplayInfo& info);
-     bool isPixelFormatSet(int cfgId){ return getTLS()->m_map[cfgId].isPixelFormatSet;}
-     void pixelFormatWasSet(int cfgId){getTLS()->m_map[cfgId].isPixelFormatSet = true;}
-     bool infoExists(int configurationIndex);
-     void releaseAll();
-};
-
-void WinDisplay::releaseAll(){
-    TlsData * tls = getTLS();
-    
-    for(std::map<int,DisplayInfo>::iterator it = tls->m_map.begin(); it != tls->m_map.end();it++){
-       if((*it).second.hwnd){
-           DestroyWindow((*it).second.hwnd);
-       }
-       DeleteDC((*it).second.dc);
-    }
-}
-
-bool WinDisplay::infoExists(int configurationIndex){
-    return getTLS()->m_map.find(configurationIndex) != getTLS()->m_map.end();
-}
-
-void WinDisplay::setInfo(int configurationIndex,const DisplayInfo& info){
-    getTLS()->m_map[configurationIndex] = info;
-}
-
-struct WglExtProcs{
-    PFNWGLGETPIXELFORMATATTRIBIVARBPROC wglGetPixelFormatAttribivARB;
-    PFNWGLCHOOSEPIXELFORMATARBPROC wglChoosePixelFormatARB;
-    PFNWGLCREATEPBUFFERARBPROC wglCreatePbufferARB;
-    PFNWGLRELEASEPBUFFERDCARBPROC wglReleasePbufferDCARB;
-    PFNWGLDESTROYPBUFFERARBPROC wglDestroyPbufferARB;
-    PFNWGLGETPBUFFERDCARBPROC wglGetPbufferDCARB;
-    PFNWGLMAKECONTEXTCURRENTARBPROC wglMakeContextCurrentARB;
-    PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT;
-};
-
-static WglExtProcs* s_wglExtProcs = NULL;
-
-class SrfcInfo{
-public:
-    typedef enum {
-                 WINDOW  = 0,
-                 PBUFFER = 1,
-                 PIXMAP  = 2
-                 }SurfaceType;
-    explicit SrfcInfo(HWND wnd);
-    explicit SrfcInfo(HPBUFFERARB pb);
-    explicit SrfcInfo(HBITMAP bmap);
-    HWND getHwnd(){ return m_hwnd;};
-    HDC  getDC(){ return m_hdc;};
-    HBITMAP  getBmap(){ return m_bmap;};
-    HPBUFFERARB  getPbuffer(){ return m_pb;};
-    ~SrfcInfo();
-private:
-    HWND        m_hwnd;
-    HPBUFFERARB m_pb; 
-    HBITMAP     m_bmap;
-    HDC         m_hdc;
-    SurfaceType m_type;
-};
-
-SrfcInfo::SrfcInfo(HBITMAP bmap):m_hwnd(NULL),
-                                 m_pb(NULL),
-                                 m_hdc(NULL),
-                                 m_type(PIXMAP){
-    m_bmap = bmap;
-}
-
-SrfcInfo::SrfcInfo(HWND wnd):m_pb(NULL),
-                             m_bmap(NULL),
-                             m_type(WINDOW){
-    m_hwnd = wnd;
-    m_hdc = GetDC(wnd); 
-}
-
-SrfcInfo::SrfcInfo(HPBUFFERARB pb):m_hwnd(NULL),
-                                   m_bmap(NULL),
-                                   m_type(PBUFFER){
-    m_pb = pb;
-    if(s_wglExtProcs->wglGetPbufferDCARB){
-        m_hdc =  s_wglExtProcs->wglGetPbufferDCARB(pb);
-    }
-}
-
-SrfcInfo::~SrfcInfo(){
-    if(m_type == WINDOW){
-        ReleaseDC(m_hwnd,m_hdc);
-    }
-}
-
-namespace EglOS{
-
-
-
-PROC wglGetExtentionsProcAddress(HDC hdc,const char *extension_name,const char* proc_name)
-{
-    // this is pointer to function which returns pointer to string with list of all wgl extensions
-    PFNWGLGETEXTENSIONSSTRINGARBPROC _wglGetExtensionsStringARB = NULL;
-
-    // determine pointer to wglGetExtensionsStringEXT function
-    _wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
-    if(!_wglGetExtensionsStringARB){
-        fprintf(stderr,"could not get wglGetExtensionsStringARB\n");
-        return NULL;
-    }
-
-    if (!_wglGetExtensionsStringARB || strstr(_wglGetExtensionsStringARB(hdc), extension_name) == NULL)
-    {
-        fprintf(stderr,"extension %s was not found\n",extension_name);
-        // string was not found
-        return NULL;
-    }
-
-    // extension is supported
-    return wglGetProcAddress(proc_name);
-}
-
-LRESULT CALLBACK dummyWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
-{
-    return DefWindowProc(hwnd, uMsg, wParam, lParam);
-}
-
-HWND createDummyWindow(){
-
-    WNDCLASSEX wcx;
-    wcx.cbSize = sizeof(wcx);                       // size of structure
-    wcx.style =  CS_OWNDC |CS_HREDRAW |CS_VREDRAW;  // redraw if size changes
-    wcx.lpfnWndProc = dummyWndProc;                 // points to window procedure
-    wcx.cbClsExtra = 0;                             // no extra class memory
-    wcx.cbWndExtra = sizeof(void*);                 // save extra window memory, to store VasWindow instance
-    wcx.hInstance = NULL;                           // handle to instance
-    wcx.hIcon = NULL;                               // predefined app. icon
-    wcx.hCursor = NULL;
-    wcx.hbrBackground = NULL;                       // no background brush
-    wcx.lpszMenuName =  NULL;                       // name of menu resource
-    wcx.lpszClassName = "DummyWin";                 // name of window class
-    wcx.hIconSm = (HICON) NULL;                     // small class icon
-
-    ATOM winClass = RegisterClassEx(&wcx);
-    HWND hwnd = CreateWindowEx(WS_EX_CLIENTEDGE,
-                               "DummyWin",
-                               "Dummy",
-                               WS_POPUP,
-                               0,
-                               0,
-                               1,
-                               1,
-                               NULL,
-                               NULL,
-                               0,0);
-    return hwnd;
-}
-
-EGLNativeInternalDisplayType getDefaultDisplay() {
-    if (!s_tlsIndex) s_tlsIndex = TlsAlloc();
-    WinDisplay* dpy = new WinDisplay();
-
-    HWND hwnd = createDummyWindow();
-    HDC  hdc  =  GetDC(hwnd);
-    dpy->setInfo(WinDisplay::DEFAULT_DISPLAY,DisplayInfo(hdc,hwnd));
-    return static_cast<EGLNativeInternalDisplayType>(dpy);
-}
-
-EGLNativeInternalDisplayType getInternalDisplay(EGLNativeDisplayType display){
-    if (!s_tlsIndex) s_tlsIndex = TlsAlloc();
-    WinDisplay* dpy = new WinDisplay();
-    dpy->setInfo(WinDisplay::DEFAULT_DISPLAY,DisplayInfo(display,NULL));
-    return dpy;
-}
-
-static HDC getDummyDC(EGLNativeInternalDisplayType display,int cfgId){
-
-    HDC dpy = NULL;
-    if(!display->infoExists(cfgId)){
-        HWND hwnd = createDummyWindow();
-        dpy  = GetDC(hwnd);
-        display->setInfo(cfgId,DisplayInfo(dpy,hwnd));
-    } else {
-        dpy = display->getDC(cfgId);
-    }
-    return dpy;
-}
-void initPtrToWglFunctions(){
-    HWND hwnd = createDummyWindow();
-    HDC dpy =  GetDC(hwnd);
-    if(!hwnd || !dpy){
-        fprintf(stderr,"error while getting DC\n");
-        return;
-    }
-    EGLNativeContextType ctx = NULL;
-    PIXELFORMATDESCRIPTOR pfd = {
-                                  sizeof(PIXELFORMATDESCRIPTOR),  //  size of this pfd
-                                  1,                     // version number
-                                  PFD_DRAW_TO_WINDOW |   // support window
-                                  PFD_SUPPORT_OPENGL |   // support OpenGL
-                                  PFD_DOUBLEBUFFER,      // double buffered
-                                  PFD_TYPE_RGBA,         // RGBA type
-                                  24,                    // 24-bit color depth
-                                  0, 0, 0, 0, 0, 0,      // color bits ignored
-                                  0,                     // no alpha buffer
-                                  0,                     // shift bit ignored
-                                  0,                     // no accumulation buffer
-                                  0, 0, 0, 0,            // accum bits ignored
-                                  32,                    // 32-bit z-buffer
-                                  0,                     // no stencil buffer
-                                  0,                     // no auxiliary buffer
-                                  PFD_MAIN_PLANE,        // main layer
-                                  0,                     // reserved
-                                  0, 0, 0                // layer masks ignored
-                                 };
-
-    int  iPixelFormat,err;
-    iPixelFormat = ChoosePixelFormat(dpy, &pfd);
-    if(iPixelFormat < 0){
-        fprintf(stderr,"error while choosing pixel format\n");
-        return;
-    }
-    if(!SetPixelFormat(dpy,iPixelFormat,&pfd)){
-
-        int err = GetLastError();
-        fprintf(stderr,"error while setting pixel format 0x%x\n",err);
-        return;
-    }
-
-
-    ctx = wglCreateContext(dpy);
-    if(!ctx){
-        err =  GetLastError();
-        fprintf(stderr,"error while creating dummy context %d\n",err);
-    }
-    if(!wglMakeCurrent(dpy,ctx)){
-        err =  GetLastError();
-        fprintf(stderr,"error while making dummy context current %d\n",err);
-    }
-
-    if(!s_wglExtProcs){
-        s_wglExtProcs = new WglExtProcs();
-        s_wglExtProcs->wglGetPixelFormatAttribivARB = (PFNWGLGETPIXELFORMATATTRIBIVARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pixel_format","wglGetPixelFormatAttribivARB");
-        s_wglExtProcs->wglChoosePixelFormatARB      = (PFNWGLCHOOSEPIXELFORMATARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pixel_format","wglChoosePixelFormatARB");
-        s_wglExtProcs->wglCreatePbufferARB          = (PFNWGLCREATEPBUFFERARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglCreatePbufferARB");
-        s_wglExtProcs->wglReleasePbufferDCARB       = (PFNWGLRELEASEPBUFFERDCARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglReleasePbufferDCARB");
-        s_wglExtProcs->wglDestroyPbufferARB         = (PFNWGLDESTROYPBUFFERARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglDestroyPbufferARB");
-        s_wglExtProcs->wglGetPbufferDCARB           = (PFNWGLGETPBUFFERDCARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_pbuffer","wglGetPbufferDCARB");
-        s_wglExtProcs->wglMakeContextCurrentARB     = (PFNWGLMAKECONTEXTCURRENTARBPROC)wglGetExtentionsProcAddress(dpy,"WGL_ARB_make_current_read","wglMakeContextCurrentARB");
-        s_wglExtProcs->wglSwapIntervalEXT           = (PFNWGLSWAPINTERVALEXTPROC)wglGetExtentionsProcAddress(dpy,"WGL_EXT_swap_control","wglSwapIntervalEXT");
-    }
-
-   wglMakeCurrent(dpy,NULL);
-   DestroyWindow(hwnd);
-   DeleteDC(dpy);
-}
-
-bool releaseDisplay(EGLNativeInternalDisplayType dpy) {
-    dpy->releaseAll();
-    return true;
-}
-
-void deleteDisplay(EGLNativeInternalDisplayType idpy){
-    if(idpy){
-        delete idpy;
-    }
-}
-
-
-static bool initPixelFormat(HDC dc){
-    PIXELFORMATDESCRIPTOR  pfd;
-    unsigned int numpf;
-    int iPixelFormat;
-
-    if(s_wglExtProcs->wglChoosePixelFormatARB) {
-        int i0 = 0;
-        float f0 = 0.0f;
-        return s_wglExtProcs->wglChoosePixelFormatARB(dc,&i0, &f0, 1, &iPixelFormat, &numpf);
-    } else {
-        return ChoosePixelFormat(dc,&pfd);
-    }
-}
-
-EglConfig* pixelFormatToConfig(EGLNativeInternalDisplayType display,int renderableType,EGLNativePixelFormatType* frmt,int index){
-
-    EGLint  red,green,blue,alpha,depth,stencil;
-    EGLint  supportedSurfaces,visualType,visualId;
-    EGLint  transparentType,samples;
-    EGLint  tRed,tGreen,tBlue;
-    EGLint  pMaxWidth,pMaxHeight,pMaxPixels;
-    EGLint  configId,level;
-    EGLint  window,bitmap,pbuffer,transparent;
-    HDC dpy = getDummyDC(display,WinDisplay::DEFAULT_DISPLAY);
-
-    if(frmt->iPixelType != PFD_TYPE_RGBA) return NULL; // other formats are not supported yet
-    if(!((frmt->dwFlags & PFD_SUPPORT_OPENGL) && (frmt->dwFlags & PFD_DOUBLEBUFFER))) return NULL; //pixel format does not supports opengl or double buffer
-    if( 0 != (frmt->dwFlags & (PFD_GENERIC_FORMAT | PFD_NEED_PALETTE )) ) return NULL; //discard generic pixel formats as well as pallete pixel formats
-
-    int attribs [] = {
-                          WGL_DRAW_TO_WINDOW_ARB,
-                          WGL_DRAW_TO_BITMAP_ARB,
-                          WGL_DRAW_TO_PBUFFER_ARB,
-                          WGL_TRANSPARENT_ARB,
-                          WGL_TRANSPARENT_RED_VALUE_ARB,
-                          WGL_TRANSPARENT_GREEN_VALUE_ARB,
-                          WGL_TRANSPARENT_BLUE_VALUE_ARB
-                     };
-
-    supportedSurfaces = 0;
-    if(!s_wglExtProcs->wglGetPixelFormatAttribivARB) return NULL;
-
-    IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[0],&window));
-    IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[1],&bitmap));
-    IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[2],&pbuffer));
-    if(window)  supportedSurfaces |= EGL_WINDOW_BIT;
-    if(bitmap)  supportedSurfaces |= EGL_PIXMAP_BIT;
-    if(pbuffer) supportedSurfaces |= EGL_PBUFFER_BIT;
-
-
-    if(!supportedSurfaces) return NULL;
-
-    //default values
-    visualId                  = 0;
-    visualType                = EGL_NONE;
-    EGLenum caveat            = EGL_NONE;
-    EGLBoolean renderable     = EGL_FALSE;
-    pMaxWidth                 = PBUFFER_MAX_WIDTH;
-    pMaxHeight                = PBUFFER_MAX_HEIGHT;
-    pMaxPixels                = PBUFFER_MAX_PIXELS;
-    samples                   = 0 ;
-    level                     = 0 ;
-
-    IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[3],&transparent));
-    if(transparent) {
-        transparentType = EGL_TRANSPARENT_RGB;
-        IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[4],&tRed));
-        IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[5],&tGreen));
-        IS_TRUE(s_wglExtProcs->wglGetPixelFormatAttribivARB(dpy,index,0,1,&attribs[6],&tBlue));
-    } else {
-        transparentType = EGL_NONE;
-    }
-
-    red     = frmt->cRedBits;
-    green   = frmt->cGreenBits;
-    blue    = frmt->cBlueBits;
-    alpha   = frmt->cAlphaBits;
-    depth   = frmt->cDepthBits;
-    stencil = frmt->cStencilBits;
-    return new EglConfig(red,green,blue,alpha,caveat,(EGLint)index,depth,level,pMaxWidth,pMaxHeight,pMaxPixels,renderable,renderableType,
-                         visualId,visualType,samples,stencil,supportedSurfaces,transparentType,tRed,tGreen,tBlue,*frmt);
-}
-
-
-void queryConfigs(EGLNativeInternalDisplayType display,int renderableType,ConfigsList& listOut) {
-    PIXELFORMATDESCRIPTOR  pfd;
-    int  iPixelFormat = 1;
-    HDC dpy = getDummyDC(display,WinDisplay::DEFAULT_DISPLAY);
-
-    //
-    // We need to call wglChoosePixelFormat at least once,
-    // seems that the driver needs to initialize itself.
-    // do it here during initialization.
-    //
-    initPixelFormat(dpy);
-
-    //quering num of formats
-    int nFormats = DescribePixelFormat(dpy, iPixelFormat,sizeof(PIXELFORMATDESCRIPTOR), &pfd);
-
-    //inserting rest of formats
-    for(iPixelFormat;iPixelFormat < nFormats; iPixelFormat++) {
-         DescribePixelFormat(dpy, iPixelFormat,sizeof(PIXELFORMATDESCRIPTOR), &pfd);
-         EglConfig* pConfig = pixelFormatToConfig(display,renderableType,&pfd,iPixelFormat);
-         if(pConfig) listOut.push_back(pConfig);
-    }
-}
-
-bool validNativeWin(EGLNativeInternalDisplayType dpy,EGLNativeWindowType win) {
-    return IsWindow(win);
-}
-
-bool validNativeWin(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType win) {
-    if (!win) return false;
-    return validNativeWin(dpy,win->getHwnd());
-}
-
-bool validNativePixmap(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType pix) {
-    BITMAP bm;
-    if (!pix) return false;
-    return GetObject(pix->getBmap(), sizeof(BITMAP), (LPSTR)&bm);
-}
-
-bool checkWindowPixelFormatMatch(EGLNativeInternalDisplayType dpy,EGLNativeWindowType win,EglConfig* cfg,unsigned int* width,unsigned int* height) {
-   RECT r;
-   if(!GetClientRect(win,&r)) return false;
-   *width  = r.right  - r.left;
-   *height = r.bottom - r.top;
-   HDC dc = GetDC(win);
-   EGLNativePixelFormatType nativeConfig = cfg->nativeConfig();
-   bool ret = SetPixelFormat(dc,cfg->nativeId(),&nativeConfig);
-   DeleteDC(dc);
-   return ret;
-}
-
-bool checkPixmapPixelFormatMatch(EGLNativeInternalDisplayType dpy,EGLNativePixmapType pix,EglConfig* cfg,unsigned int* width,unsigned int* height){
-
-    BITMAP bm;
-    if(!GetObject(pix, sizeof(BITMAP), (LPSTR)&bm)) return false;
-
-    *width  = bm.bmWidth;
-    *height = bm.bmHeight;
-
-    return true;
-}
-
-EGLNativeSurfaceType createPbufferSurface(EGLNativeInternalDisplayType display,EglConfig* cfg,EglPbufferSurface* pbSurface) {
-
-
-    HDC dpy = getDummyDC(display,cfg->nativeId());
-    EGLint width,height,largest,texTarget,texFormat;
-    pbSurface->getDim(&width,&height,&largest);
-    pbSurface->getTexInfo(&texTarget,&texFormat);
-
-    int wglTexFormat = WGL_NO_TEXTURE_ARB;
-    int wglTexTarget = (texTarget == EGL_TEXTURE_2D)? WGL_TEXTURE_2D_ARB:
-                                                      WGL_NO_TEXTURE_ARB;
-
-    switch(texFormat) {
-    case EGL_TEXTURE_RGB:
-        wglTexFormat = WGL_TEXTURE_RGB_ARB;
-        break;
-    case EGL_TEXTURE_RGBA:
-        wglTexFormat = WGL_TEXTURE_RGBA_ARB;
-        break;
-    }
-
-    int pbAttribs[] = {
-                       WGL_TEXTURE_TARGET_ARB   ,wglTexTarget,
-                       WGL_TEXTURE_FORMAT_ARB   ,wglTexFormat,
-                       0
-                      };
-    if(!s_wglExtProcs->wglCreatePbufferARB) return NULL;
-    EGLNativePbufferType pb = s_wglExtProcs->wglCreatePbufferARB(dpy,cfg->nativeId(),width,height,pbAttribs);
-    if(!pb) {
-        DWORD err = GetLastError();
-        return NULL;
-    }
-    return new SrfcInfo(pb);
-}
-
-bool releasePbuffer(EGLNativeInternalDisplayType display,EGLNativeSurfaceType pb) {
-    if (!pb) return false;
-    if(!s_wglExtProcs->wglReleasePbufferDCARB || !s_wglExtProcs->wglDestroyPbufferARB) return false;
-    if(!s_wglExtProcs->wglReleasePbufferDCARB(pb->getPbuffer(),pb->getDC()) || !s_wglExtProcs->wglDestroyPbufferARB(pb->getPbuffer())){
-        DWORD err = GetLastError();
-        return false;
-    }
-    return true;
-}
-
-EGLNativeContextType createContext(EGLNativeInternalDisplayType display,EglConfig* cfg,EGLNativeContextType sharedContext) {
-
-    EGLNativeContextType ctx = NULL;
-    HDC  dpy  = getDummyDC(display,cfg->nativeId());
-
-    if(!display->isPixelFormatSet(cfg->nativeId())){
-        EGLNativePixelFormatType nativeConfig = cfg->nativeConfig();
-        if(!SetPixelFormat(dpy,cfg->nativeId(),&nativeConfig)){
-            return NULL;
-        }
-        display->pixelFormatWasSet(cfg->nativeId());
-    }
-
-    ctx = wglCreateContext(dpy);
-
-    if(ctx && sharedContext) {
-        if(!wglShareLists(sharedContext,ctx)) {
-            wglDeleteContext(ctx);
-            return NULL;
-        }
-    }
-    return ctx;
-}
-
-bool destroyContext(EGLNativeInternalDisplayType dpy,EGLNativeContextType ctx) {
-    if(!wglDeleteContext(ctx)) {
-        DWORD err = GetLastError();
-        return false;
-    }
-    return true;
-}
-
-
-bool makeCurrent(EGLNativeInternalDisplayType display,EglSurface* read,EglSurface* draw,EGLNativeContextType ctx) {
-
-    HDC hdcRead = read ? read->native()->getDC(): NULL;
-    HDC hdcDraw = draw ? draw->native()->getDC(): NULL;
-    bool retVal = false;
-
-
-    if(hdcRead == hdcDraw){
-            bool ret =  wglMakeCurrent(hdcDraw,ctx);
-            return ret;
-    } else if (!s_wglExtProcs->wglMakeContextCurrentARB ) {
-        return false;
-    }
-    retVal = s_wglExtProcs->wglMakeContextCurrentARB(hdcDraw,hdcRead,ctx);
-
-    return retVal;
-}
-
-void swapBuffers(EGLNativeInternalDisplayType display,EGLNativeSurfaceType srfc){
-    if(srfc && !SwapBuffers(srfc->getDC())) {
-        DWORD err = GetLastError();
-    }
-}
-
-
-void waitNative(){}
-
-void swapInterval(EGLNativeInternalDisplayType dpy,EGLNativeSurfaceType win,int interval) {
-
-    if (s_wglExtProcs->wglSwapIntervalEXT){
-        s_wglExtProcs->wglSwapIntervalEXT(interval);
-    }
-}
-
-EGLNativeSurfaceType createWindowSurface(EGLNativeWindowType wnd){
-    return new SrfcInfo(wnd);
-}
-
-EGLNativeSurfaceType createPixmapSurface(EGLNativePixmapType pix){
-    return new SrfcInfo(pix);
-}
-
-void destroySurface(EGLNativeSurfaceType srfc){
-    delete srfc;
-}
-
-
-};
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/EglX11Api.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/EglX11Api.cpp
deleted file mode 100644
index a421db9..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/EglX11Api.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EglOsApi.h"
-#include <string.h>
-#include <X11/Xlib.h>
-#include <GL/glx.h>
-#include <utils/threads.h>
-
-
-class ErrorHandler{
-public:
-ErrorHandler(EGLNativeDisplayType dpy);
-~ErrorHandler();
-int getLastError(){ return s_lastErrorCode;};
-
-private:
-static int s_lastErrorCode;
-int (*m_oldErrorHandler) (Display *, XErrorEvent *);
-static android::Mutex s_lock;
-static int errorHandlerProc(EGLNativeDisplayType dpy,XErrorEvent* event);
-
-};
-
-class SrfcInfo{
-public:
-    typedef enum{
-                 WINDOW  = 0,
-                 PBUFFER = 1, 
-                 PIXMAP
-                }SurfaceType;
-    SrfcInfo(GLXDrawable drawable,SurfaceType type):m_type(type),
-                                                    m_srfc(drawable){};
-    GLXDrawable srfc(){return m_srfc;};
-private: 
-    SurfaceType m_type;
-    GLXDrawable  m_srfc; 
-};
-
-int ErrorHandler::s_lastErrorCode = 0;
-android::Mutex ErrorHandler::s_lock;
-
-ErrorHandler::ErrorHandler(EGLNativeDisplayType dpy){
-   android::Mutex::Autolock mutex(s_lock);
-   XSync(dpy,False);
-   s_lastErrorCode = 0;
-   m_oldErrorHandler = XSetErrorHandler(errorHandlerProc);
-}
-
-ErrorHandler::~ErrorHandler(){
-   android::Mutex::Autolock mutex(s_lock);
-   XSetErrorHandler(m_oldErrorHandler);
-   s_lastErrorCode = 0;
-}
-
-int ErrorHandler::errorHandlerProc(EGLNativeDisplayType dpy,XErrorEvent* event){
-    android::Mutex::Autolock mutex(s_lock);
-    s_lastErrorCode = event->error_code;
-    return 0;
-}
-
-#define IS_SUCCESS(a) \
-        if(a != Success) return false;
-
-namespace EglOS {
-
-EGLNativeDisplayType getDefaultDisplay() {return XOpenDisplay(0);}
-
-bool releaseDisplay(EGLNativeDisplayType dpy) {
-    return XCloseDisplay(dpy);
-}
-
-EglConfig* pixelFormatToConfig(EGLNativeDisplayType dpy,int renderableType,EGLNativePixelFormatType* frmt){
-
-    int  bSize,red,green,blue,alpha,depth,stencil;
-    int  supportedSurfaces,visualType,visualId;
-    int  caveat,transparentType,samples;
-    int  tRed=0,tGreen=0,tBlue=0;
-    int  pMaxWidth,pMaxHeight,pMaxPixels;
-    int  tmp;
-    int  configId,level,renderable;
-    int  doubleBuffer;
-
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_TRANSPARENT_TYPE,&tmp));
-    if(tmp == GLX_TRANSPARENT_INDEX) {
-        return NULL; // not supporting transparent index
-    } else if( tmp == GLX_NONE) {
-        transparentType = EGL_NONE;
-    } else {
-        transparentType = EGL_TRANSPARENT_RGB;
-
-        IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_TRANSPARENT_RED_VALUE,&tRed));
-        IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_TRANSPARENT_GREEN_VALUE,&tGreen));
-        IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_TRANSPARENT_BLUE_VALUE,&tBlue));
-    }
-
-
-    //
-    // filter out single buffer configurations
-    //
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_DOUBLEBUFFER,&doubleBuffer));
-    if (!doubleBuffer) return NULL;
-
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_BUFFER_SIZE,&bSize));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_RED_SIZE,&red));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_GREEN_SIZE,&green));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_BLUE_SIZE,&blue));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_ALPHA_SIZE,&alpha));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_DEPTH_SIZE,&depth));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_STENCIL_SIZE,&stencil));
-
-
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_X_RENDERABLE,&renderable));
-
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_X_VISUAL_TYPE,&visualType));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_VISUAL_ID,&visualId));
-
-    //supported surfaces types
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_DRAWABLE_TYPE,&tmp));
-    supportedSurfaces = 0;
-    if(tmp & GLX_WINDOW_BIT && visualId != 0) {
-        supportedSurfaces |= EGL_WINDOW_BIT;
-    } else {
-        visualId = 0;
-        visualType = EGL_NONE;
-    }
-    if(tmp & GLX_PBUFFER_BIT) supportedSurfaces |= EGL_PBUFFER_BIT;
-
-    caveat = 0;
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_CONFIG_CAVEAT,&tmp));
-    if     (tmp == GLX_NONE) caveat = EGL_NONE;
-    else if(tmp == GLX_SLOW_CONFIG) caveat = EGL_SLOW_CONFIG;
-    else if(tmp == GLX_NON_CONFORMANT_CONFIG) caveat = EGL_NON_CONFORMANT_CONFIG;
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_MAX_PBUFFER_WIDTH,&pMaxWidth));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_MAX_PBUFFER_HEIGHT,&pMaxHeight));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_MAX_PBUFFER_HEIGHT,&pMaxPixels));
-
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_LEVEL,&level));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_FBCONFIG_ID,&configId));
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_SAMPLES,&samples));
-    //Filter out configs that does not support RGBA
-    IS_SUCCESS(glXGetFBConfigAttrib(dpy,*frmt,GLX_RENDER_TYPE,&tmp));
-    if (!(tmp & GLX_RGBA_BIT)) {
-        return NULL;
-    }
-
-    return new EglConfig(red,green,blue,alpha,caveat,configId,depth,level,pMaxWidth,pMaxHeight,
-                              pMaxPixels,renderable,renderableType,visualId,visualType,samples,stencil,
-                              supportedSurfaces,transparentType,tRed,tGreen,tBlue,*frmt);
-}
-
-void queryConfigs(EGLNativeDisplayType dpy,int renderableType,ConfigsList& listOut) {
-    int n;
-    EGLNativePixelFormatType*  frmtList =  glXGetFBConfigs(dpy,0,&n);
-    for(int i =0 ;i < n ; i++) {
-        EglConfig* conf = pixelFormatToConfig(dpy,renderableType,&frmtList[i]);
-        if(conf) listOut.push_back(conf);
-    }
-    XFree(frmtList);
-}
-
-bool validNativeWin(EGLNativeDisplayType dpy,EGLNativeWindowType win) {
-   Window root;
-   int tmp;
-   unsigned int utmp;
-   ErrorHandler handler(dpy);
-   if(!XGetGeometry(dpy,win,&root,&tmp,&tmp,&utmp,&utmp,&utmp,&utmp)) return false;
-   return handler.getLastError() == 0;
-}
-
-bool validNativeWin(EGLNativeDisplayType dpy,EGLNativeSurfaceType win) {
-    if (!win) return false;
-    return validNativeWin(dpy,win->srfc());
-}
-
-bool validNativePixmap(EGLNativeDisplayType dpy,EGLNativeSurfaceType pix) {
-   Window root;
-   int tmp;
-   unsigned int utmp;
-   ErrorHandler handler(dpy);
-   if(!XGetGeometry(dpy,pix ? pix->srfc() : NULL,&root,&tmp,&tmp,&utmp,&utmp,&utmp,&utmp)) return false;
-   return handler.getLastError() == 0;
-}
-
-bool checkWindowPixelFormatMatch(EGLNativeDisplayType dpy,EGLNativeWindowType win,EglConfig* cfg,unsigned int* width,unsigned int* height) {
-//TODO: to check what does ATI & NVIDIA enforce on win pixelformat
-   unsigned int depth,configDepth,border;
-   int r,g,b,x,y;
-   IS_SUCCESS(glXGetFBConfigAttrib(dpy,cfg->nativeConfig(),GLX_RED_SIZE,&r));
-   IS_SUCCESS(glXGetFBConfigAttrib(dpy,cfg->nativeConfig(),GLX_GREEN_SIZE,&g));
-   IS_SUCCESS(glXGetFBConfigAttrib(dpy,cfg->nativeConfig(),GLX_BLUE_SIZE,&b));
-   configDepth = r + g + b;
-   Window root;
-   if(!XGetGeometry(dpy,win,&root,&x,&y,width,height,&border,&depth)) return false;
-   return depth >= configDepth;
-}
-
-bool checkPixmapPixelFormatMatch(EGLNativeDisplayType dpy,EGLNativePixmapType pix,EglConfig* cfg,unsigned int* width,unsigned int* height) {
-   unsigned int depth,configDepth,border;
-   int r,g,b,x,y;
-   IS_SUCCESS(glXGetFBConfigAttrib(dpy,cfg->nativeConfig(),GLX_RED_SIZE,&r));
-   IS_SUCCESS(glXGetFBConfigAttrib(dpy,cfg->nativeConfig(),GLX_GREEN_SIZE,&g));
-   IS_SUCCESS(glXGetFBConfigAttrib(dpy,cfg->nativeConfig(),GLX_BLUE_SIZE,&b));
-   configDepth = r + g + b;
-   Window root;
-   if(!XGetGeometry(dpy,pix,&root,&x,&y,width,height,&border,&depth)) return false;
-   return depth >= configDepth;
-}
-
-EGLNativeSurfaceType createPbufferSurface(EGLNativeDisplayType dpy,EglConfig* cfg,EglPbufferSurface* srfc){
-    EGLint width,height,largest;
-    srfc->getDim(&width,&height,&largest);
-
-    int attribs[] = {
-                     GLX_PBUFFER_WIDTH           ,width,
-                     GLX_PBUFFER_HEIGHT          ,height,
-                     GLX_LARGEST_PBUFFER         ,largest,
-                     None
-                    };
-    GLXPbuffer pb = glXCreatePbuffer(dpy,cfg->nativeConfig(),attribs);
-    return pb ? new SrfcInfo(pb,SrfcInfo::PBUFFER) : NULL;
-}
-
-bool releasePbuffer(EGLNativeDisplayType dis,EGLNativeSurfaceType pb) {
-    if (!pb) return false;
-    glXDestroyPbuffer(dis,pb->srfc());
-
-    return true;
-}
-
-EGLNativeContextType createContext(EGLNativeDisplayType dpy,EglConfig* cfg,EGLNativeContextType sharedContext) {
- ErrorHandler handler(dpy);
- EGLNativeContextType retVal = glXCreateNewContext(dpy,cfg->nativeConfig(),GLX_RGBA_TYPE,sharedContext,true);
- return handler.getLastError() == 0 ? retVal : NULL;
-}
-
-bool destroyContext(EGLNativeDisplayType dpy,EGLNativeContextType ctx) {
-    glXDestroyContext(dpy,ctx);
-    return true;
-}
-
-bool makeCurrent(EGLNativeDisplayType dpy,EglSurface* read,EglSurface* draw,EGLNativeContextType ctx){
-
-    ErrorHandler handler(dpy);
-    bool retval = false;
-    if (!ctx && !read && !draw) {
-        // unbind
-        retval = glXMakeContextCurrent(dpy, NULL, NULL, NULL);
-    }
-    else if (ctx && read && draw) {
-        retval = glXMakeContextCurrent(dpy,draw->native()->srfc(),read->native()->srfc(),ctx);
-    }
-    return (handler.getLastError() == 0) && retval;
-}
-
-void swapBuffers(EGLNativeDisplayType dpy,EGLNativeSurfaceType srfc){
-    if (srfc) {
-        glXSwapBuffers(dpy,srfc->srfc());
-    }
-}
-
-void waitNative() {
-    glXWaitX();
-}
-
-void swapInterval(EGLNativeDisplayType dpy,EGLNativeSurfaceType win,int interval){
-    const char* extensions = glXQueryExtensionsString(dpy,DefaultScreen(dpy));
-    typedef void (*GLXSWAPINTERVALEXT)(Display*,GLXDrawable,int);
-    GLXSWAPINTERVALEXT glXSwapIntervalEXT = NULL;
-
-    if(strstr(extensions,"EXT_swap_control")) {
-        glXSwapIntervalEXT = (GLXSWAPINTERVALEXT)glXGetProcAddress((const GLubyte*)"glXSwapIntervalEXT");
-    }
-    if(glXSwapIntervalEXT && win) {
-        glXSwapIntervalEXT(dpy,win->srfc(),interval);
-    }
-}
-
-EGLNativeSurfaceType createWindowSurface(EGLNativeWindowType wnd){
-    return new SrfcInfo(wnd,SrfcInfo::WINDOW);
-}
-
-EGLNativeSurfaceType createPixmapSurface(EGLNativePixmapType pix){
-    return new SrfcInfo(pix,SrfcInfo::PIXMAP);
-}
-
-void destroySurface(EGLNativeSurfaceType srfc){
-    delete srfc;
-};
-
-EGLNativeInternalDisplayType getInternalDisplay(EGLNativeDisplayType dpy){
-    return dpy;
-}
-
-void deleteDisplay(EGLNativeInternalDisplayType idpy){
-}
-
-};
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/MacNative.h b/tools/emulator/opengl/host/libs/Translator/EGL/MacNative.h
deleted file mode 100644
index 63145ec..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/MacNative.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef  MAC_NATIVE_H
-#define  MAC_NATIVE_H
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-typedef enum {                               // Mac equivalence
-                 MAC_HAS_DOUBLE_BUFFER = 5,  // NSOpenGLPFADoubleBuffer
-                 MAC_DRAW_TO_WINDOW    = 80, // NSOpenGLPFAWindow
-                 MAC_DRAW_TO_PBUFFER   = 90, // NSOpenGLPFAPixelBuffer
-                 MAC_SAMPLES_PER_PIXEL = 56, // NSOpenGLPFASamples
-                 MAC_COLOR_SIZE        = 8,  // NSOpenGLPFAColorSize
-                 MAC_ALPHA_SIZE        = 11, // NSOpenGLPFAAlphaSize
-                 MAC_DEPTH_SIZE        = 12, // NSOpenGLPFADepthSize
-                 MAC_STENCIL_SIZE      = 13  // NSOpenGLPFAStencilSize
-             } MacPixelFormatAttribs;
-
-
-extern "C"{
-
-int   getNumPixelFormats();
-void* getPixelFormat(int i);
-void  getPixelFormatAttrib(void* pixelFormat,int attrib,int* val);
-void* nsCreateContext(void* format,void* share);
-void  nsWindowMakeCurrent(void* context,void* nativeWin);
-void  nsPBufferMakeCurrent(void* context,void* nativePBuffer,int level);
-void  nsSwapBuffers();
-void  nsSwapInterval(int *interval);
-void  nsDestroyContext(void* context);
-void* nsCreatePBuffer(GLenum target,GLenum format,int maxMip,int width,int height);
-void  nsDestroyPBuffer(void* pbuffer);
-bool  nsGetWinDims(void* win,unsigned int* width,unsigned int* height);
-bool  nsCheckColor(void* win,int colorSize);
-
-}
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/MacNative.m b/tools/emulator/opengl/host/libs/Translator/EGL/MacNative.m
deleted file mode 100644
index 6828655..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/MacNative.m
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <stdio.h>
-#include <Cocoa/Cocoa.h>
-#include <OpenGL/OpenGL.h>
-#include "MacPixelFormatsAttribs.h"
-
-//
-// EmuGLContext inherit from NSOpenGLContext
-// and adds binding state for the context to know
-// if it was last bounded to a pbuffer or a window.
-// This is because after the context was bounded to
-// a Pbuffer, before we bind it to a window we must
-// release it form the pbuffer by calling the
-// clearDrawable method. We do not want to call clearDrawable
-// more than really needed since when it is called at a time
-// that a window is bounded to the context it will clear the
-// window content causing flickering effect.
-// Thererfore we call clearDrawable only when we bind the context
-// to a window and it was previously bound to a Pbuffer.
-//
-@interface EmuGLContext : NSOpenGLContext {
-    @private
-        int boundToPbuffer;
-        int boundToWin;
-}
-
-- (id) initWithFormat:(NSOpenGLPixelFormat *)pixelFormat shareContext:(NSOpenGLContext *)share;
-- (void) preBind:(int)forPbuffer;
-@end
-
-@implementation EmuGLContext
-- (id) initWithFormat:(NSOpenGLPixelFormat *)pixelFormat shareContext:(NSOpenGLContext *)share
-{
-    self = [super initWithFormat:pixelFormat shareContext:share];
-    if (self != nil) {
-        boundToPbuffer = 0;
-        boundToWin = 0;
-    }
-    return self;
-}
-
-- (void) preBind:(int)forPbuffer
-{
-    if ((!forPbuffer && boundToPbuffer)) {
-        [self clearDrawable]; 
-    }
-    boundToPbuffer = forPbuffer;
-    boundToWin = !boundToPbuffer;
-}
-@end
-
-int getNumPixelFormats(){
-    int size;
-    NSOpenGLPixelFormatAttribute** attrib_lists = getPixelFormatsAttributes(&size);
-    return size;
-}
-
-void* getPixelFormat(int i){
-    int size;
-    NSOpenGLPixelFormatAttribute** attrib_lists = getPixelFormatsAttributes(&size);
-    return [[NSOpenGLPixelFormat alloc] initWithAttributes:attrib_lists[i]];
-}
-
-void getPixelFormatAttrib(void* pixelFormat,int attrib,int* val){
-    NSOpenGLPixelFormat *frmt = (NSOpenGLPixelFormat *)pixelFormat;
-    [frmt getValues:val forAttribute:attrib forVirtualScreen:0];
-}
-
-void* nsCreateContext(void* format,void* share){
-    NSOpenGLPixelFormat* frmt = (NSOpenGLPixelFormat*)format;
-    return [[EmuGLContext alloc] initWithFormat:frmt shareContext:share];
-}
-
-void  nsPBufferMakeCurrent(void* context,void* nativePBuffer,int level){
-    EmuGLContext* ctx = (EmuGLContext *)context;
-    NSOpenGLPixelBuffer* pbuff = (NSOpenGLPixelBuffer *)nativePBuffer;
-    if(ctx == nil){
-        [NSOpenGLContext clearCurrentContext];
-    } else {
-        if(pbuff != nil){
-            [ctx preBind:1];
-            [ctx setPixelBuffer:pbuff cubeMapFace:0 mipMapLevel:level currentVirtualScreen:0];
-            [ctx makeCurrentContext];
-        }
-    }
-}
-
-void nsWindowMakeCurrent(void* context,void* nativeWin){
-    EmuGLContext* ctx = (EmuGLContext *)context;
-    NSView* win = (NSView *)nativeWin;
-    if(ctx == nil){
-        [NSOpenGLContext clearCurrentContext];
-    } else if (win != nil) {
-        [ctx preBind:0];
-        [ctx setView: win];
-        [ctx makeCurrentContext];
-    }
-}
-
-void nsSwapBuffers(){
-    NSOpenGLContext* ctx = [NSOpenGLContext currentContext];
-    if(ctx != nil){
-        [ctx flushBuffer];
-    }
-}
-
-void nsSwapInterval(int *interval){
-    NSOpenGLContext* ctx = [NSOpenGLContext currentContext];
-    if( ctx != nil){
-        [ctx setValues:interval forParameter:NSOpenGLCPSwapInterval];
-    }
-}
-
-
-void nsDestroyContext(void* context){
-    EmuGLContext *ctx = (EmuGLContext*)context;
-    if(ctx != nil){
-        [ctx release];
-    }
-}
-
-
-void* nsCreatePBuffer(GLenum target,GLenum format,int maxMip,int width,int height){
-    return [[NSOpenGLPixelBuffer alloc] initWithTextureTarget:target
-                                        textureInternalFormat:format
-                                        textureMaxMipMapLevel:maxMip
-                                        pixelsWide:width pixelsHigh:height];
-
-}
-
-void nsDestroyPBuffer(void* pbuffer){
-    NSOpenGLPixelBuffer *pbuf = (NSOpenGLPixelBuffer*)pbuffer;
-    if(pbuf != nil){
-        [pbuf release];
-    }
-}
-
-bool nsGetWinDims(void* win,unsigned int* width,unsigned int* height){
-    NSView* view = (NSView*)win;
-    if(view != nil){
-        NSRect rect = [view bounds];
-        *width  = rect.size.width;
-        *height = rect.size.height;
-        return true;
-    }
-    return false;
-}
-
-bool  nsCheckColor(void* win,int colorSize){
-    NSView* view = (NSView*)win;
-   if(view != nil){
-       NSWindow* wnd = [view window];
-       if(wnd != nil){
-           NSWindowDepth limit = [wnd depthLimit];
-           NSWindowDepth defaultLimit = [NSWindow defaultDepthLimit];
-
-           int depth = (limit != 0) ? NSBitsPerPixelFromDepth(limit):
-                                      NSBitsPerPixelFromDepth(defaultLimit);
-           return depth >= colorSize;
-
-       }
-   }
-   return false;
-
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/MacPixelFormatsAttribs.h b/tools/emulator/opengl/host/libs/Translator/EGL/MacPixelFormatsAttribs.h
deleted file mode 100644
index 112aeec..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/MacPixelFormatsAttribs.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef MAC_PIXELS_FORMATS_ATTRIBS_H	
-#define MAC_PIXELS_FORMATS_ATTRIBS_H	
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <Cocoa/Cocoa.h>
-NSOpenGLPixelFormatAttribute** getPixelFormatsAttributes(int* size);
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/MacPixelFormatsAttribs.m b/tools/emulator/opengl/host/libs/Translator/EGL/MacPixelFormatsAttribs.m
deleted file mode 100644
index abbaf08..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/MacPixelFormatsAttribs.m
+++ /dev/null
@@ -1,214 +0,0 @@
-#include "MacPixelFormatsAttribs.h"
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-static NSOpenGLPixelFormatAttribute attrs32_1[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFAStencilSize ,8,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs32_2[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    NSOpenGLPFAAlphaSize   ,8,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFAStencilSize ,8,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs32_3[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    NSOpenGLPFAAlphaSize   ,8,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs32_4[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs32_5[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFASamples     ,2,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs32_6[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFASamples     ,4,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs32_7[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,32,
-    NSOpenGLPFAAlphaSize   ,8,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFAStencilSize ,8,
-    NSOpenGLPFASamples     ,4,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs16_1[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,16,
-    NSOpenGLPFADepthSize   ,24,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs16_2[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,16,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFAStencilSize ,8,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs64_1[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,64,
-    NSOpenGLPFAAlphaSize   ,16,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs64_2[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,64,
-    NSOpenGLPFAAlphaSize   ,16,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFAStencilSize ,8,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs64_3[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,64,
-    NSOpenGLPFAAlphaSize   ,16,
-    NSOpenGLPFADepthSize   ,24,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs64_4[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,64,
-    NSOpenGLPFADepthSize   ,24,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs64_5[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,64,
-    NSOpenGLPFADepthSize   ,24,
-    NSOpenGLPFAStencilSize ,8,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs128_1[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,128,
-    NSOpenGLPFAAlphaSize   ,32,
-    0
-};
-
-static NSOpenGLPixelFormatAttribute attrs128_2[] =
-{
-    NSOpenGLPFADoubleBuffer,
-    NSOpenGLPFAWindow,
-    NSOpenGLPFAPixelBuffer,
-    NSOpenGLPFAColorSize   ,128,
-    NSOpenGLPFAAlphaSize   ,32,
-    NSOpenGLPFADepthSize   ,24,
-    0
-};
-
-NSOpenGLPixelFormatAttribute** getPixelFormatsAttributes(int* size){
-static NSOpenGLPixelFormatAttribute* arr[] =
-{
-    attrs16_1,
-    attrs16_2,
-    attrs32_1,
-    attrs32_2,
-    attrs32_3,
-    attrs32_4,
-    attrs32_5,
-    attrs32_6,
-    attrs32_7,
-    attrs64_1,
-    attrs64_2,
-    attrs64_3,
-    attrs64_4,
-    attrs64_5,
-    attrs128_1,
-    attrs128_2
-};
-    *size = sizeof(arr)/sizeof(arr[0]);
-    return arr;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/ThreadInfo.cpp b/tools/emulator/opengl/host/libs/Translator/EGL/ThreadInfo.cpp
deleted file mode 100644
index d1d018f..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/ThreadInfo.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include "ThreadInfo.h"
-
-
-void ThreadInfo::updateInfo(ContextPtr eglCtx,
-                            EglDisplay* dpy,
-                            GLEScontext* glesCtx,
-                            ShareGroupPtr share,
-                            ObjectNameManager* manager) {
-
-    eglContext  = eglCtx;
-    eglDisplay  = dpy;
-    glesContext = glesCtx;
-    shareGroup  = share;
-    objManager  = manager;
-}
-
-#ifdef __linux__
-
-__thread ThreadInfo* thread  = NULL;
-
-ThreadInfo* getThreadInfo(){
-    if(!thread) {
-        thread = new ThreadInfo();
-    }
-    return thread;
-}
-
-#else
-
-#include <cutils/threads.h>
-static thread_store_t s_tls = THREAD_STORE_INITIALIZER;
-
-static void tlsDestruct(void *ptr)
-{
-    if (ptr) {
-        ThreadInfo *ti = (ThreadInfo *)ptr;
-        delete ti;
-    }
-}
-
-ThreadInfo *getThreadInfo()
-{
-    ThreadInfo *ti = (ThreadInfo *)thread_store_get(&s_tls);
-    if (!ti) {
-        ti = new ThreadInfo();
-        thread_store_set(&s_tls, ti, tlsDestruct);
-    }
-    return ti;
-}
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/EGL/ThreadInfo.h b/tools/emulator/opengl/host/libs/Translator/EGL/ThreadInfo.h
deleted file mode 100644
index ffc6e5f..0000000
--- a/tools/emulator/opengl/host/libs/Translator/EGL/ThreadInfo.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef THREAD_INFO_H
-#define THREAD_INFO_H
-
-#include "EglContext.h"
-
-class EglDisplay;
-class GLEScontext;
-
-struct ThreadInfo {
-    ThreadInfo():eglDisplay(NULL),glesContext(NULL),objManager(NULL){}
-
-    void updateInfo(ContextPtr eglctx,
-                    EglDisplay* dpy,
-                    GLEScontext* glesCtx,
-                    ShareGroupPtr share,
-                    ObjectNameManager* manager);
-
-    ContextPtr           eglContext;
-    EglDisplay*          eglDisplay;
-    GLEScontext*         glesContext;
-    ShareGroupPtr        shareGroup;
-    ObjectNameManager*   objManager;
-};
-
-ThreadInfo* getThreadInfo();
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk b/tools/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk
deleted file mode 100644
index 21adeec..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/Android.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-### GLES_CM host implementation (On top of OpenGL) ########################
-$(call emugl-begin-host-shared-library,libGLES_CM_translator)
-
-$(call emugl-import,libGLcommon)
-
-LOCAL_SRC_FILES :=      \
-     GLEScmImp.cpp      \
-     GLEScmUtils.cpp    \
-     GLEScmContext.cpp  \
-     GLEScmValidate.cpp
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLDispatch.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLDispatch.cpp
deleted file mode 100644
index af5c0d8..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLDispatch.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLDispatch.h"
-#include <stdio.h>
-#include <OpenglOsUtils/osDynLibrary.h>
-
-#ifdef __linux__
-#include <GL/glx.h>
-#elif defined(WIN32)
-#include <windows.h>
-#endif
-
-typedef void (*GL_FUNC_PTR)();
-
-static GL_FUNC_PTR getGLFuncAddress(const char *funcName) {
-    GL_FUNC_PTR ret = NULL;
-#ifdef __linux__
-    static osUtils::dynLibrary* libGL = osUtils::dynLibrary::open("libGL.so");
-    ret = (GL_FUNC_PTR)glXGetProcAddress((const GLubyte*)funcName);
-#elif defined(WIN32)
-    static osUtils::dynLibrary* libGL = osUtils::dynLibrary::open("opengl32");
-    ret = (GL_FUNC_PTR)wglGetProcAddress(funcName);
-#endif
-    if(!ret && libGL){
-        ret = libGL->findSymbol(funcName);
-    }
-    return ret;
-}
-
-#define LOAD_GL_FUNC(name)  {   void * funcAddrs = NULL;              \
-                funcAddrs = (void *)getGLFuncAddress(#name);          \
-                if(funcAddrs)                                         \
-                    *(void**)(&name) = funcAddrs;                     \
-                else                          \
-                    fprintf(stderr,"could not load func %s\n",#name); }
-
-GLDispatch::GLDispatch():m_isLoaded(false){};
-
-
-void GLDispatch::dispatchFuncs() {
-    android::Mutex::Autolock mutex(m_lock);
-    if(m_isLoaded)
-        return;
-    LOAD_GL_FUNC(glActiveTexture);
-    LOAD_GL_FUNC(glAlphaFunc);
-    LOAD_GL_FUNC(glBegin);
-    LOAD_GL_FUNC(glBindBuffer);
-    LOAD_GL_FUNC(glBindTexture);
-    LOAD_GL_FUNC(glBlendFunc);
-    LOAD_GL_FUNC(glBufferData);
-    LOAD_GL_FUNC(glBufferSubData);
-    LOAD_GL_FUNC(glClear);
-    LOAD_GL_FUNC(glClearColor);
-    LOAD_GL_FUNC(glClearDepth);
-    LOAD_GL_FUNC(glClearStencil);
-    LOAD_GL_FUNC(glClientActiveTexture);
-    LOAD_GL_FUNC(glClipPlane);
-    LOAD_GL_FUNC(glColor4d);
-    LOAD_GL_FUNC(glColor4f);
-    LOAD_GL_FUNC(glColor4fv);
-    LOAD_GL_FUNC(glColor4ub);
-    LOAD_GL_FUNC(glColor4ubv);
-    LOAD_GL_FUNC(glColorMask);
-    LOAD_GL_FUNC(glColorPointer);
-    LOAD_GL_FUNC(glCompressedTexImage2D);
-    LOAD_GL_FUNC(glCompressedTexSubImage2D);
-    LOAD_GL_FUNC(glCopyTexImage2D);
-    LOAD_GL_FUNC(glCopyTexSubImage2D);
-    LOAD_GL_FUNC(glCullFace);
-    LOAD_GL_FUNC(glDeleteBuffers);
-    LOAD_GL_FUNC(glDeleteTextures);
-    LOAD_GL_FUNC(glDepthFunc);
-    LOAD_GL_FUNC(glDepthMask);
-    LOAD_GL_FUNC(glDepthRange);
-    LOAD_GL_FUNC(glDisable);
-    LOAD_GL_FUNC(glDisableClientState);
-    LOAD_GL_FUNC(glDrawArrays);
-    LOAD_GL_FUNC(glDrawElements);
-    LOAD_GL_FUNC(glEnable);
-    LOAD_GL_FUNC(glEnableClientState);
-    LOAD_GL_FUNC(glEnd);
-    LOAD_GL_FUNC(glFinish);
-    LOAD_GL_FUNC(glFlush);
-    LOAD_GL_FUNC(glFogf);
-    LOAD_GL_FUNC(glFogfv);
-    LOAD_GL_FUNC(glFrontFace);
-    LOAD_GL_FUNC(glFrustum);
-    LOAD_GL_FUNC(glGenBuffers);
-    LOAD_GL_FUNC(glGenTextures);
-    LOAD_GL_FUNC(glGetBooleanv);
-    LOAD_GL_FUNC(glGetBufferParameteriv);
-    LOAD_GL_FUNC(glGetClipPlane);
-    LOAD_GL_FUNC(glGetDoublev);
-    LOAD_GL_FUNC(glGetError);
-    LOAD_GL_FUNC(glGetFloatv);
-    LOAD_GL_FUNC(glGetIntegerv);
-    LOAD_GL_FUNC(glGetLightfv);
-    LOAD_GL_FUNC(glGetMaterialfv);
-    LOAD_GL_FUNC(glGetPointerv);
-    LOAD_GL_FUNC(glGetString);
-    LOAD_GL_FUNC(glGetTexEnvfv);
-    LOAD_GL_FUNC(glGetTexEnviv);
-    LOAD_GL_FUNC(glGetTexParameterfv);
-    LOAD_GL_FUNC(glGetTexParameteriv);
-    LOAD_GL_FUNC(glHint);
-    LOAD_GL_FUNC(glIsBuffer);
-    LOAD_GL_FUNC(glIsEnabled);
-    LOAD_GL_FUNC(glIsTexture);
-    LOAD_GL_FUNC(glLightf);
-    LOAD_GL_FUNC(glLightfv);
-    LOAD_GL_FUNC(glLightModelf);
-    LOAD_GL_FUNC(glLightModelfv);
-    LOAD_GL_FUNC(glLineWidth);
-    LOAD_GL_FUNC(glLoadIdentity);
-    LOAD_GL_FUNC(glLoadMatrixf);
-    LOAD_GL_FUNC(glLogicOp);
-    LOAD_GL_FUNC(glMaterialf);
-    LOAD_GL_FUNC(glMaterialfv);
-    LOAD_GL_FUNC(glMultiTexCoord2fv);
-    LOAD_GL_FUNC(glMultiTexCoord2sv);
-    LOAD_GL_FUNC(glMultiTexCoord3fv);
-    LOAD_GL_FUNC(glMultiTexCoord3sv);
-    LOAD_GL_FUNC(glMultiTexCoord4fv);
-    LOAD_GL_FUNC(glMultiTexCoord4sv);
-    LOAD_GL_FUNC(glMultiTexCoord4f);
-    LOAD_GL_FUNC(glMultMatrixf);
-    LOAD_GL_FUNC(glNormal3f);
-    LOAD_GL_FUNC(glNormal3fv);
-    LOAD_GL_FUNC(glNormal3sv);
-    LOAD_GL_FUNC(glOrtho);
-    LOAD_GL_FUNC(glPointParameterf);
-    LOAD_GL_FUNC(glPointParameterfv);
-    LOAD_GL_FUNC(glPointSize);
-    LOAD_GL_FUNC(glPolygonOffset);
-    LOAD_GL_FUNC(glRotatef);
-    LOAD_GL_FUNC(glScalef);
-    LOAD_GL_FUNC(glTexEnvf);
-    LOAD_GL_FUNC(glTexEnvfv);
-    LOAD_GL_FUNC(glTexParameterf);
-    LOAD_GL_FUNC(glTexParameterfv);
-    LOAD_GL_FUNC(glMatrixMode);
-    LOAD_GL_FUNC(glNormalPointer);
-    LOAD_GL_FUNC(glPixelStorei);
-    LOAD_GL_FUNC(glPopMatrix);
-    LOAD_GL_FUNC(glPushMatrix);
-    LOAD_GL_FUNC(glReadPixels);
-    LOAD_GL_FUNC(glSampleCoverage);
-    LOAD_GL_FUNC(glScissor);
-    LOAD_GL_FUNC(glShadeModel);
-    LOAD_GL_FUNC(glStencilFunc);
-    LOAD_GL_FUNC(glStencilMask);
-    LOAD_GL_FUNC(glStencilOp);
-    LOAD_GL_FUNC(glTexCoordPointer);
-    LOAD_GL_FUNC(glTexEnvi);
-    LOAD_GL_FUNC(glTexEnviv);
-    LOAD_GL_FUNC(glTexImage2D);
-    LOAD_GL_FUNC(glTexParameteri);
-    LOAD_GL_FUNC(glTexParameteriv);
-    LOAD_GL_FUNC(glTexSubImage2D);
-    LOAD_GL_FUNC(glTranslatef);
-    LOAD_GL_FUNC(glVertexPointer);
-    LOAD_GL_FUNC(glViewport);
-
-    m_isLoaded = true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLDispatch.h b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLDispatch.h
deleted file mode 100644
index 9dc320f..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLDispatch.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLDISPATCHH
-#define GLDISPATCHH
-
-#include <GLES/gl.h>
-#include <utils/threads.h>
-
-#define GLAPIENTRY GL_APIENTRY
-
-typedef double      GLclampd;   /* double precision float in [0,1] */
-typedef double      GLdouble;   /* double precision float */
-
-class GLDispatch
-{
-public:
-
-    GLDispatch();
-    void dispatchFuncs();
-
-    void (GLAPIENTRY *glActiveTexture) ( GLenum texture );
-    void (GLAPIENTRY *glAlphaFunc) (GLenum func, GLclampf ref);
-    void (GLAPIENTRY *glBegin)( GLenum mode );
-    void (GLAPIENTRY *glBindBuffer) (GLenum target, GLuint buffer);
-    void (GLAPIENTRY *glBindTexture) (GLenum target, GLuint texture);
-    void (GLAPIENTRY *glBlendFunc) (GLenum sfactor, GLenum dfactor);
-    void (GLAPIENTRY *glBufferData) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
-    void (GLAPIENTRY *glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
-    void (GLAPIENTRY *glClear) (GLbitfield mask);
-    void (GLAPIENTRY *glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-    void (GLAPIENTRY *glClearDepth) (GLclampd depth);
-    void (GLAPIENTRY *glClearStencil) (GLint s);
-    void (GLAPIENTRY *glClientActiveTexture) ( GLenum texture );
-    void (GLAPIENTRY *glClipPlane) (GLenum plane, const GLdouble *equation);
-    void (GLAPIENTRY *glColor4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
-    void (GLAPIENTRY *glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-    void (GLAPIENTRY *glColor4fv) ( const GLfloat *v );
-    void (GLAPIENTRY *glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-    void (GLAPIENTRY *glColor4ubv) ( const GLubyte *v );
-    void (GLAPIENTRY *glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-    void (GLAPIENTRY *glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    void (GLAPIENTRY *glCompressedTexImage2D) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-    void (GLAPIENTRY *glCompressedTexSubImage2D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-    void (GLAPIENTRY *glCopyTexImage2D) (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-    void (GLAPIENTRY *glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-    void (GLAPIENTRY *glCullFace) (GLenum mode);
-    void (GLAPIENTRY *glDeleteBuffers) (GLsizei n, const GLuint *buffers);
-    void (GLAPIENTRY *glDeleteTextures) (GLsizei n, const GLuint *textures);
-    void (GLAPIENTRY *glDepthFunc) (GLenum func);
-    void (GLAPIENTRY *glDepthMask) (GLboolean flag);
-    void (GLAPIENTRY *glDepthRange) (GLclampd zNear, GLclampd zFar);
-    void (GLAPIENTRY *glDisable) (GLenum cap);
-    void (GLAPIENTRY *glDisableClientState) (GLenum array);
-    void (GLAPIENTRY *glDrawArrays) (GLenum mode, GLint first, GLsizei count);
-    void (GLAPIENTRY *glDrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
-    void (GLAPIENTRY *glEnable) (GLenum cap);
-    void (GLAPIENTRY *glEnableClientState) (GLenum array);
-    void (GLAPIENTRY *glEnd) ( void );
-    void (GLAPIENTRY *glFinish) (void);
-    void (GLAPIENTRY *glFlush) (void);
-    void (GLAPIENTRY *glFogf) (GLenum pname, GLfloat param);
-    void (GLAPIENTRY *glFogfv) (GLenum pname, const GLfloat *params);
-    void (GLAPIENTRY *glFrontFace) (GLenum mode);
-    void (GLAPIENTRY *glFrustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-    void (GLAPIENTRY *glGenBuffers) (GLsizei n, GLuint *buffers);
-    void (GLAPIENTRY *glGenTextures) (GLsizei n, GLuint *textures);
-    void (GLAPIENTRY *glGetBooleanv) (GLenum pname, GLboolean *params);
-    void (GLAPIENTRY *glGetBufferParameteriv) (GLenum, GLenum, GLint *);
-    void (GLAPIENTRY *glGetClipPlane) (GLenum plane, GLdouble *equation);
-    void (GLAPIENTRY *glGetDoublev) ( GLenum pname, GLdouble *params );
-    GLenum (GLAPIENTRY *glGetError) (void);
-    void (GLAPIENTRY *glGetFloatv) (GLenum pname, GLfloat *params);
-    void (GLAPIENTRY *glGetIntegerv) (GLenum pname, GLint *params);
-    void (GLAPIENTRY *glGetLightfv) (GLenum light, GLenum pname, GLfloat *params);
-    void (GLAPIENTRY *glGetMaterialfv) (GLenum face, GLenum pname, GLfloat *params);
-    void (GLAPIENTRY *glGetPointerv) (GLenum pname, GLvoid* *params);
-    const GLubyte * (GLAPIENTRY *glGetString) (GLenum name);
-    void (GLAPIENTRY *glGetTexEnvfv) (GLenum target, GLenum pname, GLfloat *params);
-    void (GLAPIENTRY *glGetTexEnviv) (GLenum target, GLenum pname, GLint *params);
-    void (GLAPIENTRY *glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat *params);
-    void (GLAPIENTRY *glGetTexParameteriv) (GLenum target, GLenum pname, GLint *params);
-    void (GLAPIENTRY *glHint) (GLenum target, GLenum mode);
-    GLboolean (GLAPIENTRY *glIsBuffer) (GLuint);
-    GLboolean (GLAPIENTRY *glIsEnabled) (GLenum cap);
-    GLboolean (GLAPIENTRY *glIsTexture) (GLuint texture);
-    void (GLAPIENTRY *glLightf) (GLenum light, GLenum pname, GLfloat param);
-    void (GLAPIENTRY *glLightfv) (GLenum light, GLenum pname, const GLfloat *params);
-    void (GLAPIENTRY *glLightModelf) (GLenum pname, GLfloat param);
-    void (GLAPIENTRY *glLightModelfv) (GLenum pname, const GLfloat *params);
-    void (GLAPIENTRY *glLineWidth) (GLfloat width);
-    void (GLAPIENTRY *glLoadIdentity) (void);
-    void (GLAPIENTRY *glLoadMatrixf) (const GLfloat *m);
-    void (GLAPIENTRY *glLogicOp) (GLenum opcode);
-    void (GLAPIENTRY *glMaterialf) (GLenum face, GLenum pname, GLfloat param);
-    void (GLAPIENTRY *glMaterialfv) (GLenum face, GLenum pname, const GLfloat *params);
-    void (GLAPIENTRY *glMultiTexCoord2fv) ( GLenum target, const GLfloat *v );
-    void (GLAPIENTRY *glMultiTexCoord2sv) ( GLenum target, const GLshort *v );
-    void (GLAPIENTRY *glMultiTexCoord3fv) ( GLenum target, const GLfloat *v );
-    void (GLAPIENTRY *glMultiTexCoord3sv) ( GLenum target, const GLshort *v );
-    void (GLAPIENTRY *glMultiTexCoord4f) ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-    void (GLAPIENTRY *glMultiTexCoord4fv) ( GLenum target, const GLfloat *v );
-    void (GLAPIENTRY *glMultiTexCoord4sv) ( GLenum target, const GLshort *v );
-    void (GLAPIENTRY *glMultMatrixf) (const GLfloat *m);
-    void (GLAPIENTRY *glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz);
-    void (GLAPIENTRY *glNormal3fv) ( const GLfloat *v );
-    void (GLAPIENTRY *glNormal3sv) ( const GLshort *v );
-    void (GLAPIENTRY *glOrtho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-    void (GLAPIENTRY *glPointParameterf) (GLenum, GLfloat);
-    void (GLAPIENTRY *glPointParameterfv) (GLenum, const GLfloat *);
-    void (GLAPIENTRY *glPointSize) (GLfloat size);
-    void (GLAPIENTRY *glPolygonOffset) (GLfloat factor, GLfloat units);
-    void (GLAPIENTRY *glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-    void (GLAPIENTRY *glScalef) (GLfloat x, GLfloat y, GLfloat z);
-    void (GLAPIENTRY *glTexEnvf) (GLenum target, GLenum pname, GLfloat param);
-    void (GLAPIENTRY *glTexEnvfv) (GLenum target, GLenum pname, const GLfloat *params);
-    void (GLAPIENTRY *glTexParameterf) (GLenum target, GLenum pname, GLfloat param);
-    void (GLAPIENTRY *glTexParameterfv) (GLenum target, GLenum pname, const GLfloat *params);
-    void (GLAPIENTRY *glMatrixMode) (GLenum mode);
-    void (GLAPIENTRY *glNormalPointer) (GLenum type, GLsizei stride, const GLvoid *pointer);
-    void (GLAPIENTRY *glPixelStorei) (GLenum pname, GLint param);
-    void (GLAPIENTRY *glPopMatrix) (void);
-    void (GLAPIENTRY *glPushMatrix) (void);
-    void (GLAPIENTRY *glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
-    void (GLAPIENTRY *glSampleCoverage) ( GLclampf value, GLboolean invert );
-    void (GLAPIENTRY *glScissor) (GLint x, GLint y, GLsizei width, GLsizei height);
-    void (GLAPIENTRY *glShadeModel) (GLenum mode);
-    void (GLAPIENTRY *glStencilFunc) (GLenum func, GLint ref, GLuint mask);
-    void (GLAPIENTRY *glStencilMask) (GLuint mask);
-    void (GLAPIENTRY *glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass);
-    void (GLAPIENTRY *glTexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    void (GLAPIENTRY *glTexEnvi) (GLenum target, GLenum pname, GLint param);
-    void (GLAPIENTRY *glTexEnviv) (GLenum target, GLenum pname, const GLint *params);
-    void (GLAPIENTRY *glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-    void (GLAPIENTRY *glTexParameteri) (GLenum target, GLenum pname, GLint param);
-    void (GLAPIENTRY *glTexParameteriv) (GLenum target, GLenum pname, const GLint *params);
-    void (GLAPIENTRY *glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-    void (GLAPIENTRY *glTranslatef) (GLfloat x, GLfloat y, GLfloat z);
-    void (GLAPIENTRY *glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    void (GLAPIENTRY *glViewport) (GLint x, GLint y, GLsizei width, GLsizei height);
-private:
-    bool             m_isLoaded;
-    android::Mutex   m_lock;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp
deleted file mode 100644
index ef60cdc..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.cpp
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include "GLEScmContext.h"
-#include "GLEScmUtils.h"
-#include <GLcommon/GLutils.h>
-#include <GLcommon/GLconversion_macros.h>
-#include <string.h>
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-
-void GLEScmContext::init() {
-    android::Mutex::Autolock mutex(s_lock);
-    if(!m_initialized) {
-        s_glDispatch.dispatchFuncs(GLES_1_1);
-        GLEScontext::init();
-
-        m_texCoords = new GLESpointer[s_glSupport.maxTexUnits];
-        m_map[GL_TEXTURE_COORD_ARRAY]  = &m_texCoords[m_clientActiveTexture];
-
-    }
-    m_initialized = true;
-}
-
-GLEScmContext::GLEScmContext():GLEScontext(),m_texCoords(NULL),m_pointsIndex(-1), m_clientActiveTexture(0) {
-
-    m_map[GL_COLOR_ARRAY]          = new GLESpointer();
-    m_map[GL_NORMAL_ARRAY]         = new GLESpointer();
-    m_map[GL_VERTEX_ARRAY]         = new GLESpointer();
-    m_map[GL_POINT_SIZE_ARRAY_OES] = new GLESpointer();
-}
-
-
-void GLEScmContext::setActiveTexture(GLenum tex) {
-   m_activeTexture = tex - GL_TEXTURE0;
-}
-
-void GLEScmContext::setClientActiveTexture(GLenum tex) {
-   m_clientActiveTexture = tex - GL_TEXTURE0;
-   m_map[GL_TEXTURE_COORD_ARRAY] = &m_texCoords[m_clientActiveTexture];
-}
-
-GLEScmContext::~GLEScmContext(){
-    if(m_texCoords){
-        delete[] m_texCoords;
-        m_texCoords = NULL;
-    }
-    m_map[GL_TEXTURE_COORD_ARRAY] = NULL;
-}
-
-
-//setting client side arr
-void GLEScmContext::setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int index){
-    if( arr == NULL) return;
-    switch(arrayType) {
-        case GL_VERTEX_ARRAY:
-            s_glDispatch.glVertexPointer(size,dataType,stride,arr);
-            break;
-        case GL_NORMAL_ARRAY:
-            s_glDispatch.glNormalPointer(dataType,stride,arr);
-            break;
-        case GL_TEXTURE_COORD_ARRAY:
-            s_glDispatch.glTexCoordPointer(size,dataType,stride,arr);
-            break;
-        case GL_COLOR_ARRAY:
-            s_glDispatch.glColorPointer(size,dataType,stride,arr);
-            break;
-        case GL_POINT_SIZE_ARRAY_OES:
-            m_pointsIndex = index;
-            break;
-    }
-}
-
-
-void GLEScmContext::setupArrayPointerHelper(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLenum array_id,GLESpointer* p){
-        unsigned int size = p->getSize();
-        GLenum dataType = p->getType();
-
-        if(needConvert(cArrs,first,count,type,indices,direct,p,array_id)){
-            //conversion has occured
-            ArrayData currentArr = cArrs.getCurrentArray();
-            setupArr(currentArr.data,array_id,currentArr.type,size,currentArr.stride,GL_FALSE, cArrs.getCurrentIndex());
-            ++cArrs;
-        } else {
-            setupArr(p->getData(),array_id,dataType,size,p->getStride(), GL_FALSE);
-        }
-}
-
-void GLEScmContext::setupArraysPointers(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) {
-    ArraysMap::iterator it;
-    m_pointsIndex = -1;
-
-    //going over all clients arrays Pointers
-    for ( it=m_map.begin() ; it != m_map.end(); it++ ) {
-
-        GLenum array_id   = (*it).first;
-        GLESpointer* p = (*it).second;
-        if(!isArrEnabled(array_id)) continue;
-        if(array_id == GL_TEXTURE_COORD_ARRAY) continue; //handling textures later
-        setupArrayPointerHelper(cArrs,first,count,type,indices,direct,array_id,p);
-    }
-
-    unsigned int activeTexture = m_clientActiveTexture + GL_TEXTURE0;
-
-    s_lock.lock();
-    int maxTexUnits = s_glSupport.maxTexUnits;
-    s_lock.unlock();
-
-    //converting all texture coords arrays
-    for(int i=0; i< maxTexUnits;i++) {
-
-        unsigned int tex = GL_TEXTURE0+i;
-        setClientActiveTexture(tex);
-        s_glDispatch.glClientActiveTexture(tex);
-
-        GLenum array_id   = GL_TEXTURE_COORD_ARRAY;
-        GLESpointer* p = m_map[array_id];
-        if(!isArrEnabled(array_id)) continue;
-        setupArrayPointerHelper(cArrs,first,count,type,indices,direct,array_id,p);
-    }
-
-    setClientActiveTexture(activeTexture);
-    s_glDispatch.glClientActiveTexture(activeTexture);
-}
-
-void  GLEScmContext::drawPointsData(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices_in,bool isElemsDraw) {
-    const char  *pointsArr =  NULL;
-    int stride = 0;
-    GLESpointer* p = m_map[GL_POINT_SIZE_ARRAY_OES];
-
-    //choosing the right points sizes array source
-    if(m_pointsIndex >= 0) { //point size array was converted
-        pointsArr = (const char*)(cArrs[m_pointsIndex].data);
-        stride = cArrs[m_pointsIndex].stride;
-    } else {
-        pointsArr = static_cast<const char*>(p->getData());
-        stride = p->getStride();
-    }
-
-    if(stride == 0){
-        stride = sizeof(GLfloat);
-    }
-
-
-    if(isElemsDraw) {
-        int tSize = type == GL_UNSIGNED_SHORT ? 2 : 1;
-
-        int i = 0;
-        while(i<count)
-        {
-            int sStart = i;
-            int sCount = 1;
-
-#define INDEX \
-                (type == GL_UNSIGNED_SHORT ? \
-                static_cast<const GLushort*>(indices_in)[i]: \
-                static_cast<const GLubyte*>(indices_in)[i])
-
-            GLfloat pSize = *((GLfloat*)(pointsArr+(INDEX*stride)));
-            i++;
-
-            while(i < count && pSize == *((GLfloat*)(pointsArr+(INDEX*stride))))
-            {
-                sCount++;
-                i++;
-            }
-
-            s_glDispatch.glPointSize(pSize);
-            s_glDispatch.glDrawElements(GL_POINTS, sCount, type, (char*)indices_in+sStart*tSize);
-        }
-    } else {
-        int i = 0;
-        while(i<count)
-        {
-            int sStart = i;
-            int sCount = 1;
-            GLfloat pSize = *((GLfloat*)(pointsArr+((first+i)*stride)));
-            i++;
-
-            while(i < count && pSize == *((GLfloat*)(pointsArr+((first+i)*stride))))
-            {
-                sCount++;
-                i++;
-            }
-
-            s_glDispatch.glPointSize(pSize);
-            s_glDispatch.glDrawArrays(GL_POINTS, first+sStart, sCount);
-        }
-    }
-}
-
-void  GLEScmContext::drawPointsArrs(GLESConversionArrays& arrs,GLint first,GLsizei count) {
-    drawPointsData(arrs,first,count,0,NULL,false);
-}
-
-void GLEScmContext::drawPointsElems(GLESConversionArrays& arrs,GLsizei count,GLenum type,const GLvoid* indices_in) {
-    drawPointsData(arrs,0,count,type,indices_in,true);
-}
-
-bool GLEScmContext::needConvert(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) {
-
-    bool usingVBO = p->isVBO();
-    GLenum arrType = p->getType();
-    /*
-     conversion is not necessary in the following cases:
-      (*) array type is byte but it is not vertex or texture array
-      (*) array type is not fixed
-    */
-    if((arrType != GL_FIXED) && (arrType != GL_BYTE)) return false;
-    if((arrType == GL_BYTE   && (array_id != GL_VERTEX_ARRAY)) &&
-       (arrType == GL_BYTE   && (array_id != GL_TEXTURE_COORD_ARRAY)) ) return false;
-
-
-    bool byteVBO = (arrType == GL_BYTE) && usingVBO;
-    if(byteVBO){
-        p->redirectPointerData();
-    }
-
-    if(!usingVBO || byteVBO) {
-        if (direct) {
-            convertDirect(cArrs,first,count,array_id,p);
-        } else {
-            convertIndirect(cArrs,count,type,indices,array_id,p);
-        }
-    } else {
-        if (direct) {
-            convertDirectVBO(cArrs,first,count,array_id,p) ;
-        } else {
-            convertIndirectVBO(cArrs,count,type,indices,array_id,p);
-        }
-    }
-    return true;
-}
-
-const GLESpointer* GLEScmContext::getPointer(GLenum arrType) {
-    GLenum type =
-        arrType == GL_VERTEX_ARRAY_POINTER          ? GL_VERTEX_ARRAY :
-        arrType == GL_NORMAL_ARRAY_POINTER          ? GL_NORMAL_ARRAY :
-        arrType == GL_TEXTURE_COORD_ARRAY_POINTER   ? GL_TEXTURE_COORD_ARRAY :
-        arrType == GL_COLOR_ARRAY_POINTER           ? GL_COLOR_ARRAY :
-        arrType == GL_POINT_SIZE_ARRAY_POINTER_OES  ? GL_POINT_SIZE_ARRAY_OES :
-        0;
-    if(type != 0)
-    {
-        return GLEScontext::getPointer(type);
-    }
-    return NULL;
-}
-
-void GLEScmContext::initExtensionString() {
-    *s_glExtensions = "GL_OES_blend_func_separate GL_OES_blend_equation_separate GL_OES_blend_subtract "
-                      "GL_OES_byte_coordinates GL_OES_compressed_paletted_texture GL_OES_point_size_array "
-                      "GL_OES_point_sprite GL_OES_single_precision GL_OES_stencil_wrap GL_OES_texture_env_crossbar "
-                      "GL_OES_texture_mirored_repeat GL_OES_EGL_image GL_OES_element_index_uint GL_OES_draw_texture "
-                      "GL_OES_texture_cube_map GL_OES_draw_texture ";
-    if (s_glSupport.GL_OES_READ_FORMAT)
-        *s_glExtensions+="GL_OES_read_format ";
-    if (s_glSupport.GL_EXT_FRAMEBUFFER_OBJECT) {
-        *s_glExtensions+="GL_OES_framebuffer_object GL_OES_depth24 GL_OES_depth32 GL_OES_fbo_render_mipmap "
-                         "GL_OES_rgb8_rgba8 GL_OES_stencil1 GL_OES_stencil4 GL_OES_stencil8 ";
-    }
-    if (s_glSupport.GL_EXT_PACKED_DEPTH_STENCIL)
-        *s_glExtensions+="GL_OES_packed_depth_stencil ";
-    if (s_glSupport.GL_EXT_TEXTURE_FORMAT_BGRA8888)
-        *s_glExtensions+="GL_EXT_texture_format_BGRA8888 GL_APPLE_texture_format_BGRA8888 ";
-    if (s_glSupport.GL_ARB_MATRIX_PALETTE && s_glSupport.GL_ARB_VERTEX_BLEND) {
-        *s_glExtensions+="GL_OES_matrix_palette ";
-        GLint max_palette_matrices=0;
-        GLint max_vertex_units=0;
-        dispatcher().glGetIntegerv(GL_MAX_PALETTE_MATRICES_OES,&max_palette_matrices);
-        dispatcher().glGetIntegerv(GL_MAX_VERTEX_UNITS_OES,&max_vertex_units);
-        if (max_palette_matrices>=32 && max_vertex_units>=4)
-            *s_glExtensions+="GL_OES_extended_matrix_palette ";
-    }
-    *s_glExtensions+="GL_OES_compressed_ETC1_RGB8_texture ";
-}
-
-int GLEScmContext::getMaxTexUnits() {
-    return getCaps()->maxTexUnits;
-}
-
-bool GLEScmContext::glGetBooleanv(GLenum pname, GLboolean *params)
-{
-    GLint iParam;
-
-    if(glGetIntegerv(pname, &iParam))
-    {
-        *params = (iParam != 0);
-        return true;
-    }
-
-    return false;
-}
-
-bool GLEScmContext::glGetFixedv(GLenum pname, GLfixed *params)
-{
-    GLint iParam;
-
-    if(glGetIntegerv(pname, &iParam))
-    {
-        *params = I2X(iParam);
-        return true;
-    }
-
-    return false;
-}
-
-bool GLEScmContext::glGetFloatv(GLenum pname, GLfloat *params)
-{
-    GLint iParam;
-
-    if(glGetIntegerv(pname, &iParam))
-    {
-        *params = (GLfloat)iParam;
-        return true;
-    }
-
-    return false;
-}
-
-bool GLEScmContext::glGetIntegerv(GLenum pname, GLint *params)
-{
-    if(GLEScontext::glGetIntegerv(pname, params))
-        return true;
-
-    const GLESpointer* ptr = NULL;
-
-    switch(pname){
-        case GL_VERTEX_ARRAY_BUFFER_BINDING:
-        case GL_VERTEX_ARRAY_SIZE:
-        case GL_VERTEX_ARRAY_STRIDE:
-        case GL_VERTEX_ARRAY_TYPE:
-            ptr = getPointer(GL_VERTEX_ARRAY_POINTER);
-            break;
-
-        case GL_NORMAL_ARRAY_BUFFER_BINDING:
-        case GL_NORMAL_ARRAY_STRIDE:
-        case GL_NORMAL_ARRAY_TYPE:
-            ptr = getPointer(GL_NORMAL_ARRAY_POINTER);
-            break;
-
-        case GL_COLOR_ARRAY_BUFFER_BINDING:
-        case GL_COLOR_ARRAY_SIZE:
-        case GL_COLOR_ARRAY_STRIDE:
-        case GL_COLOR_ARRAY_TYPE:
-            ptr = getPointer(GL_COLOR_ARRAY_POINTER);
-            break;
-
-        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
-        case GL_TEXTURE_COORD_ARRAY_SIZE:
-        case GL_TEXTURE_COORD_ARRAY_STRIDE:
-        case GL_TEXTURE_COORD_ARRAY_TYPE:
-            ptr = getPointer(GL_TEXTURE_COORD_ARRAY_POINTER);
-            break;
-
-        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
-        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
-        case GL_POINT_SIZE_ARRAY_TYPE_OES:
-            ptr = getPointer(GL_POINT_SIZE_ARRAY_POINTER_OES);
-            break;
-
-        default:
-            return false;
-    }
-
-    switch(pname)
-    {
-        case GL_VERTEX_ARRAY_BUFFER_BINDING:
-        case GL_NORMAL_ARRAY_BUFFER_BINDING:
-        case GL_COLOR_ARRAY_BUFFER_BINDING:
-        case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING:
-        case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
-            *params = ptr ? ptr->getBufferName() : 0;
-            break;
-
-        case GL_VERTEX_ARRAY_STRIDE:
-        case GL_NORMAL_ARRAY_STRIDE:
-        case GL_COLOR_ARRAY_STRIDE:
-        case GL_TEXTURE_COORD_ARRAY_STRIDE:
-        case GL_POINT_SIZE_ARRAY_STRIDE_OES:
-            *params = ptr ? ptr->getStride() : 0;
-            break;
-
-        case GL_VERTEX_ARRAY_SIZE:
-        case GL_COLOR_ARRAY_SIZE:
-        case GL_TEXTURE_COORD_ARRAY_SIZE:
-            *params = ptr ? ptr->getSize() : 0;
-            break;
-
-        case GL_VERTEX_ARRAY_TYPE:
-        case GL_NORMAL_ARRAY_TYPE:
-        case GL_COLOR_ARRAY_TYPE:
-        case GL_TEXTURE_COORD_ARRAY_TYPE:
-        case GL_POINT_SIZE_ARRAY_TYPE_OES:
-            *params = ptr ? ptr->getType() : 0;
-            break;
-    }
-
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.h b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.h
deleted file mode 100644
index 1785877..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmContext.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLES_CM_CONTEX_H
-#define GLES_CM_CONTEX_H
-
-#include <GLcommon/GLDispatch.h>
-#include <GLcommon/GLESpointer.h>
-#include <GLcommon/GLESbuffer.h>
-#include <GLcommon/GLEScontext.h>
-#include <map>
-#include <vector>
-#include <string>
-#include <utils/threads.h>
-
-
-typedef std::map<GLfloat,std::vector<int> > PointSizeIndices;
-
-class GLEScmContext: public GLEScontext
-{
-public:
-    void init();
-    GLEScmContext();
-
-    void setActiveTexture(GLenum tex);
-    void  setClientActiveTexture(GLenum tex);
-    GLenum  getActiveTexture() { return GL_TEXTURE0 + m_activeTexture;};
-    GLenum  getClientActiveTexture() { return GL_TEXTURE0 + m_clientActiveTexture;};
-    void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct);
-    void drawPointsArrs(GLESConversionArrays& arrs,GLint first,GLsizei count);
-    void drawPointsElems(GLESConversionArrays& arrs,GLsizei count,GLenum type,const GLvoid* indices);
-    virtual const GLESpointer* getPointer(GLenum arrType);
-    int  getMaxTexUnits();
-
-    virtual bool glGetIntegerv(GLenum pname, GLint *params);
-    virtual bool glGetBooleanv(GLenum pname, GLboolean *params);
-    virtual bool glGetFloatv(GLenum pname, GLfloat *params);
-    virtual bool glGetFixedv(GLenum pname, GLfixed *params);
-  
-    ~GLEScmContext();
-protected:
-
-    bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id);
-private:
-    void setupArrayPointerHelper(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLenum array_id,GLESpointer* p);
-    void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int pointsIndex = -1);
-    void drawPoints(PointSizeIndices* points);
-    void drawPointsData(GLESConversionArrays& arrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices_in,bool isElemsDraw);
-    void initExtensionString();
-
-    GLESpointer*          m_texCoords;
-    int                   m_pointsIndex;
-    unsigned int          m_clientActiveTexture;
-};
-
-#endif
-
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp
deleted file mode 100644
index f1833d8..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmImp.cpp
+++ /dev/null
@@ -1,2358 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifdef _WIN32
-#undef GL_API
-#define GL_API __declspec(dllexport)
-#define GL_APICALL __declspec(dllexport)
-#endif
-#define GL_GLEXT_PROTOTYPES
-#include "GLEScmContext.h"
-#include "GLEScmValidate.h"
-#include "GLEScmUtils.h"
-#include <GLcommon/TextureUtils.h>
-
-#include <stdio.h>
-#include <GLcommon/gldefs.h>
-#include <GLcommon/GLDispatch.h>
-#include <GLcommon/GLconversion_macros.h>
-#include <GLcommon/TranslatorIfaces.h>
-#include <GLcommon/FramebufferData.h>
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#include <cmath>
-#include <map>
-
-extern "C" {
-
-//decleration
-static void initContext(GLEScontext* ctx,ShareGroupPtr grp);
-static void deleteGLESContext(GLEScontext* ctx);
-static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp);
-static GLEScontext* createGLESContext();
-static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName);
-
-}
-
-/************************************** GLES EXTENSIONS *********************************************************/
-//extentions descriptor
-typedef std::map<std::string, __translatorMustCastToProperFunctionPointerType> ProcTableMap;
-ProcTableMap *s_glesExtensions = NULL;
-/****************************************************************************************************************/
-
-static EGLiface*  s_eglIface = NULL;
-static GLESiface  s_glesIface = {
-    createGLESContext:createGLESContext,
-    initContext      :initContext,
-    deleteGLESContext:deleteGLESContext,
-    flush            :(FUNCPTR)glFlush,
-    finish           :(FUNCPTR)glFinish,
-    setShareGroup    :setShareGroup,
-    getProcAddress   :getProcAddress
-};
-
-#include <GLcommon/GLESmacros.h>
-
-extern "C" {
-
-static void initContext(GLEScontext* ctx,ShareGroupPtr grp) {
-    if (!ctx->isInitialized()) {
-        ctx->setShareGroup(grp);
-        ctx->init();
-        glBindTexture(GL_TEXTURE_2D,0);
-        glBindTexture(GL_TEXTURE_CUBE_MAP_OES,0);
-     }
-}
-
-static GLEScontext* createGLESContext() {
-    return new GLEScmContext();
-}
-
-static void deleteGLESContext(GLEScontext* ctx) {
-    if(ctx) delete ctx;
-}
-
-static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp) {
-    if(ctx) {
-        ctx->setShareGroup(grp);
-    }
-}
-static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName) {
-    GET_CTX_RET(NULL)
-    ctx->getGlobalLock();
-    static bool proc_table_initialized = false;
-    if (!proc_table_initialized) {
-        proc_table_initialized = true;
-        if (!s_glesExtensions)
-            s_glesExtensions = new ProcTableMap();
-        else
-            s_glesExtensions->clear();
-        (*s_glesExtensions)["glEGLImageTargetTexture2DOES"] = (__translatorMustCastToProperFunctionPointerType)glEGLImageTargetTexture2DOES;
-        (*s_glesExtensions)["glEGLImageTargetRenderbufferStorageOES"]=(__translatorMustCastToProperFunctionPointerType)glEGLImageTargetRenderbufferStorageOES;
-        (*s_glesExtensions)["glBlendEquationSeparateOES"] = (__translatorMustCastToProperFunctionPointerType)glBlendEquationSeparateOES;
-        (*s_glesExtensions)["glBlendFuncSeparateOES"] = (__translatorMustCastToProperFunctionPointerType)glBlendFuncSeparateOES;
-        (*s_glesExtensions)["glBlendEquationOES"] = (__translatorMustCastToProperFunctionPointerType)glBlendEquationOES;
-
-        if (ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND) {
-            (*s_glesExtensions)["glCurrentPaletteMatrixOES"] = (__translatorMustCastToProperFunctionPointerType)glCurrentPaletteMatrixOES;
-            (*s_glesExtensions)["glLoadPaletteFromModelViewMatrixOES"]=(__translatorMustCastToProperFunctionPointerType)glLoadPaletteFromModelViewMatrixOES;
-            (*s_glesExtensions)["glMatrixIndexPointerOES"] = (__translatorMustCastToProperFunctionPointerType)glMatrixIndexPointerOES;
-            (*s_glesExtensions)["glWeightPointerOES"] = (__translatorMustCastToProperFunctionPointerType)glWeightPointerOES;
-        }
-        (*s_glesExtensions)["glDepthRangefOES"] = (__translatorMustCastToProperFunctionPointerType)glDepthRangef;
-        (*s_glesExtensions)["glFrustumfOES"] = (__translatorMustCastToProperFunctionPointerType)glFrustumf;
-        (*s_glesExtensions)["glOrthofOES"] = (__translatorMustCastToProperFunctionPointerType)glOrthof;
-        (*s_glesExtensions)["glClipPlanefOES"] = (__translatorMustCastToProperFunctionPointerType)glClipPlanef;
-        (*s_glesExtensions)["glGetClipPlanefOES"] = (__translatorMustCastToProperFunctionPointerType)glGetClipPlanef;
-        (*s_glesExtensions)["glClearDepthfOES"] = (__translatorMustCastToProperFunctionPointerType)glClearDepthf;
-        (*s_glesExtensions)["glPointSizePointerOES"] = (__translatorMustCastToProperFunctionPointerType)glPointSizePointerOES;
-        (*s_glesExtensions)["glTexGenfOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenfOES;
-        (*s_glesExtensions)["glTexGenfvOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenfvOES;
-        (*s_glesExtensions)["glTexGeniOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGeniOES;
-        (*s_glesExtensions)["glTexGenivOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenivOES;
-        (*s_glesExtensions)["glTexGenxOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenxOES;
-        (*s_glesExtensions)["glTexGenxvOES"] = (__translatorMustCastToProperFunctionPointerType)glTexGenxvOES;
-        (*s_glesExtensions)["glGetTexGenfvOES"] = (__translatorMustCastToProperFunctionPointerType)glGetTexGenfvOES;
-        (*s_glesExtensions)["glGetTexGenivOES"] = (__translatorMustCastToProperFunctionPointerType)glGetTexGenivOES;
-        (*s_glesExtensions)["glGetTexGenxvOES"] = (__translatorMustCastToProperFunctionPointerType)glGetTexGenxvOES;
-        if (ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT) {
-            (*s_glesExtensions)["glIsRenderbufferOES"] = (__translatorMustCastToProperFunctionPointerType)glIsRenderbufferOES;
-            (*s_glesExtensions)["glBindRenderbufferOES"] = (__translatorMustCastToProperFunctionPointerType)glBindRenderbufferOES;
-            (*s_glesExtensions)["glDeleteRenderbuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glDeleteRenderbuffersOES;
-            (*s_glesExtensions)["glGenRenderbuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glGenRenderbuffersOES;
-            (*s_glesExtensions)["glRenderbufferStorageOES"] = (__translatorMustCastToProperFunctionPointerType)glRenderbufferStorageOES;
-            (*s_glesExtensions)["glGetRenderbufferParameterivOES"] = (__translatorMustCastToProperFunctionPointerType)glGetRenderbufferParameterivOES;
-            (*s_glesExtensions)["glIsFramebufferOES"] = (__translatorMustCastToProperFunctionPointerType)glIsFramebufferOES;
-            (*s_glesExtensions)["glBindFramebufferOES"] = (__translatorMustCastToProperFunctionPointerType)glBindFramebufferOES;
-            (*s_glesExtensions)["glDeleteFramebuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glDeleteFramebuffersOES;
-            (*s_glesExtensions)["glGenFramebuffersOES"] = (__translatorMustCastToProperFunctionPointerType)glGenFramebuffersOES;
-            (*s_glesExtensions)["glCheckFramebufferStatusOES"] = (__translatorMustCastToProperFunctionPointerType)glCheckFramebufferStatusOES;
-            (*s_glesExtensions)["glFramebufferTexture2DOES"] = (__translatorMustCastToProperFunctionPointerType)glFramebufferTexture2DOES;
-            (*s_glesExtensions)["glFramebufferRenderbufferOES"] = (__translatorMustCastToProperFunctionPointerType)glFramebufferRenderbufferOES;
-            (*s_glesExtensions)["glGetFramebufferAttachmentParameterivOES"] = (__translatorMustCastToProperFunctionPointerType)glGetFramebufferAttachmentParameterivOES;
-            (*s_glesExtensions)["glGenerateMipmapOES"] = (__translatorMustCastToProperFunctionPointerType)glGenerateMipmapOES;
-        }
-        (*s_glesExtensions)["glDrawTexsOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexsOES;
-        (*s_glesExtensions)["glDrawTexiOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexiOES;
-        (*s_glesExtensions)["glDrawTexfOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexfOES;
-        (*s_glesExtensions)["glDrawTexxOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexxOES;
-        (*s_glesExtensions)["glDrawTexsvOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexsvOES;
-        (*s_glesExtensions)["glDrawTexivOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexivOES;
-        (*s_glesExtensions)["glDrawTexfvOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexfvOES;
-        (*s_glesExtensions)["glDrawTexxvOES"] = (__translatorMustCastToProperFunctionPointerType)glDrawTexxvOES;
-    }
-    __translatorMustCastToProperFunctionPointerType ret=NULL;
-    ProcTableMap::iterator val = s_glesExtensions->find(procName);
-    if (val!=s_glesExtensions->end())
-        ret = val->second;
-    ctx->releaseGlobalLock();
-
-    return ret;
-}
-
-GL_API GLESiface* __translator_getIfaces(EGLiface* eglIface){
-    s_eglIface = eglIface;
-    return & s_glesIface;
-}
-
-}
-
-static ObjectLocalName TextureLocalName(GLenum target, unsigned int tex) {
-    GET_CTX_RET(0);
-    return (tex!=0? tex : ctx->getDefaultTextureName(target));
-}
-
-static TextureData* getTextureData(ObjectLocalName tex){
-    GET_CTX_RET(NULL);
-
-    if(!ctx->shareGroup()->isObject(TEXTURE,tex))
-    {
-        return NULL;
-    }
-
-    TextureData *texData = NULL;
-    ObjectDataPtr objData = ctx->shareGroup()->getObjectData(TEXTURE,tex);
-    if(!objData.Ptr()){
-        texData = new TextureData();
-        ctx->shareGroup()->setObjectData(TEXTURE, tex, ObjectDataPtr(texData));
-    } else {
-        texData = (TextureData*)objData.Ptr();
-    }
-    return texData;
-}
-
-static TextureData* getTextureTargetData(GLenum target){
-    GET_CTX_RET(NULL);
-    unsigned int tex = ctx->getBindedTexture(target);
-    return getTextureData(TextureLocalName(target,tex));
-}
-
-GL_API GLboolean GL_APIENTRY glIsBuffer(GLuint buffer) {
-    GET_CTX_RET(GL_FALSE)
-
-    if(buffer && ctx->shareGroup().Ptr()) {
-       ObjectDataPtr objData = ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer);
-       return objData.Ptr() ? ((GLESbuffer*)objData.Ptr())->wasBinded():GL_FALSE;
-    }
-    return GL_FALSE;
-}
-
-GL_API GLboolean GL_APIENTRY  glIsEnabled( GLenum cap) {
-    GET_CTX_CM_RET(GL_FALSE)
-    RET_AND_SET_ERROR_IF(!GLEScmValidate::capability(cap,ctx->getMaxLights(),ctx->getMaxClipPlanes()),GL_INVALID_ENUM,GL_FALSE);
-
-    if (cap == GL_POINT_SIZE_ARRAY_OES)
-        return ctx->isArrEnabled(cap);
-    else if (cap==GL_TEXTURE_GEN_STR_OES)
-        return (ctx->dispatcher().glIsEnabled(GL_TEXTURE_GEN_S) &&
-                ctx->dispatcher().glIsEnabled(GL_TEXTURE_GEN_T) &&
-                ctx->dispatcher().glIsEnabled(GL_TEXTURE_GEN_R));
-    else
-        return ctx->dispatcher().glIsEnabled(cap);
-}
-
-GL_API GLboolean GL_APIENTRY  glIsTexture( GLuint texture) {
-    GET_CTX_RET(GL_FALSE)
-
-    if(texture == 0) // Special case
-        return GL_FALSE;
-
-    TextureData* tex = getTextureData(texture);
-    return tex ? tex->wasBound : GL_FALSE;
-}
-
-GL_API GLenum GL_APIENTRY  glGetError(void) {
-    GET_CTX_RET(GL_NO_ERROR)
-    GLenum err = ctx->getGLerror();
-    if(err != GL_NO_ERROR) {
-        ctx->setGLerror(GL_NO_ERROR);
-        return err;
-    }
-
-    return ctx->dispatcher().glGetError();
-}
-
-GL_API const GLubyte * GL_APIENTRY  glGetString( GLenum name) {
-
-    GET_CTX_RET(NULL)
-    static GLubyte VENDOR[]     = "Google";
-    static GLubyte RENDERER[]   = "OpenGL ES-CM 1.1";
-    static GLubyte VERSION[]    = "OpenGL ES-CM 1.1";
-
-    switch(name) {
-        case GL_VENDOR:
-            return VENDOR;
-        case GL_RENDERER:
-            return RENDERER;
-        case GL_VERSION:
-            return VERSION;
-        case GL_EXTENSIONS:
-            return (const GLubyte*)ctx->getExtensionString();
-        default:
-            RET_AND_SET_ERROR_IF(true,GL_INVALID_ENUM,NULL);
-    }
-}
-
-GL_API void GL_APIENTRY  glActiveTexture( GLenum texture) {
-    GET_CTX_CM()
-    SET_ERROR_IF(!GLEScmValidate::textureEnum(texture,ctx->getMaxTexUnits()),GL_INVALID_ENUM);
-    ctx->setActiveTexture(texture);
-    ctx->dispatcher().glActiveTexture(texture);
-}
-
-GL_API void GL_APIENTRY  glAlphaFunc( GLenum func, GLclampf ref) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::alphaFunc(func),GL_INVALID_ENUM);
-    ctx->dispatcher().glAlphaFunc(func,ref);
-}
-
-
-GL_API void GL_APIENTRY  glAlphaFuncx( GLenum func, GLclampx ref) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::alphaFunc(func),GL_INVALID_ENUM);
-    ctx->dispatcher().glAlphaFunc(func,X2F(ref));
-}
-
-
-GL_API void GL_APIENTRY  glBindBuffer( GLenum target, GLuint buffer) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::bufferTarget(target),GL_INVALID_ENUM);
-
-    //if buffer wasn't generated before,generate one
-    if(buffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(VERTEXBUFFER,buffer)){
-        ctx->shareGroup()->genName(VERTEXBUFFER,buffer);
-        ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffer,ObjectDataPtr(new GLESbuffer()));
-    }
-    ctx->bindBuffer(target,buffer);
-    if (buffer) {
-        GLESbuffer* vbo = (GLESbuffer*)ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer).Ptr();
-        vbo->setBinded();
-    }
-}
-
-
-GL_API void GL_APIENTRY  glBindTexture( GLenum target, GLuint texture) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::textureTarget(target),GL_INVALID_ENUM)
-
-    //for handling default texture (0)
-    ObjectLocalName localTexName = TextureLocalName(target,texture);
-
-    GLuint globalTextureName = localTexName;
-    if(ctx->shareGroup().Ptr()){
-        globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName);
-        //if texture wasn't generated before,generate one
-        if(!globalTextureName){
-            ctx->shareGroup()->genName(TEXTURE,localTexName);
-            globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName);
-        }
-
-        TextureData* texData = getTextureData(localTexName);
-        if (texData->target==0)
-            texData->target = target;
-        //if texture was already bound to another target
-        SET_ERROR_IF(ctx->GLTextureTargetToLocal(texData->target) != ctx->GLTextureTargetToLocal(target), GL_INVALID_OPERATION);
-        texData->wasBound = true;
-    }
-
-    ctx->setBindedTexture(target,texture);
-    ctx->dispatcher().glBindTexture(target,globalTextureName);
-}
-
-GL_API void GL_APIENTRY  glBlendFunc( GLenum sfactor, GLenum dfactor) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::blendSrc(sfactor) || !GLEScmValidate::blendDst(dfactor),GL_INVALID_ENUM)
-    ctx->dispatcher().glBlendFunc(sfactor,dfactor);
-}
-
-GL_API void GL_APIENTRY  glBufferData( GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::bufferTarget(target),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION);
-    ctx->setBufferData(target,size,data,usage);
-}
-
-GL_API void GL_APIENTRY  glBufferSubData( GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::bufferTarget(target),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->setBufferSubData(target,offset,size,data),GL_INVALID_VALUE);
-}
-
-GL_API void GL_APIENTRY  glClear( GLbitfield mask) {
-    GET_CTX()
-    ctx->drawValidate();
-
-    ctx->dispatcher().glClear(mask);
-}
-
-GL_API void GL_APIENTRY  glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
-    GET_CTX()
-    ctx->dispatcher().glClearColor(red,green,blue,alpha);
-}
-
-GL_API void GL_APIENTRY  glClearColorx( GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha) {
-    GET_CTX()
-    ctx->dispatcher().glClearColor(X2F(red),X2F(green),X2F(blue),X2F(alpha));
-}
-
-
-GL_API void GL_APIENTRY  glClearDepthf( GLclampf depth) {
-    GET_CTX()
-    ctx->dispatcher().glClearDepth(depth);
-}
-
-GL_API void GL_APIENTRY  glClearDepthx( GLclampx depth) {
-    GET_CTX()
-    ctx->dispatcher().glClearDepth(X2F(depth));
-}
-
-GL_API void GL_APIENTRY  glClearStencil( GLint s) {
-    GET_CTX()
-    ctx->dispatcher().glClearStencil(s);
-}
-
-GL_API void GL_APIENTRY  glClientActiveTexture( GLenum texture) {
-    GET_CTX_CM()
-    SET_ERROR_IF(!GLEScmValidate::textureEnum(texture,ctx->getMaxTexUnits()),GL_INVALID_ENUM);
-    ctx->setClientActiveTexture(texture);
-    ctx->dispatcher().glClientActiveTexture(texture);
-
-}
-
-GL_API void GL_APIENTRY  glClipPlanef( GLenum plane, const GLfloat *equation) {
-    GET_CTX()
-    GLdouble tmpEquation[4];
-
-    for(int i = 0; i < 4; i++) {
-         tmpEquation[i] = static_cast<GLdouble>(equation[i]);
-    }
-    ctx->dispatcher().glClipPlane(plane,tmpEquation);
-}
-
-GL_API void GL_APIENTRY  glClipPlanex( GLenum plane, const GLfixed *equation) {
-    GET_CTX()
-    GLdouble tmpEquation[4];
-    for(int i = 0; i < 4; i++) {
-        tmpEquation[i] = X2D(equation[i]);
-    }
-    ctx->dispatcher().glClipPlane(plane,tmpEquation);
-}
-
-GL_API void GL_APIENTRY  glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
-    GET_CTX()
-    ctx->dispatcher().glColor4f(red,green,blue,alpha);
-}
-
-GL_API void GL_APIENTRY  glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha) {
-    GET_CTX()
-    ctx->dispatcher().glColor4ub(red,green,blue,alpha);
-}
-
-GL_API void GL_APIENTRY  glColor4x( GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha) {
-    GET_CTX()
-    ctx->dispatcher().glColor4f(X2F(red),X2F(green),X2F(blue),X2F(alpha));
-}
-
-GL_API void GL_APIENTRY  glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
-    GET_CTX()
-    ctx->dispatcher().glColorMask(red,green,blue,alpha);
-}
-
-GL_API void GL_APIENTRY  glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::colorPointerParams(size,stride),GL_INVALID_VALUE);
-    SET_ERROR_IF(!GLEScmValidate::colorPointerType(type),GL_INVALID_ENUM);
-    ctx->setPointer(GL_COLOR_ARRAY,size,type,stride,pointer);
-}
-
-GL_API void GL_APIENTRY  glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data) {
-    GET_CTX_CM()
-    SET_ERROR_IF(!GLEScmValidate::textureTargetEx(target),GL_INVALID_ENUM);
-
-    doCompressedTexImage2D(ctx, target, level, internalformat,
-                                width, height, border,
-                                imageSize, data, (void*)glTexImage2D);
-}
-
-GL_API void GL_APIENTRY  glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data) {
-    GET_CTX_CM()
-    SET_ERROR_IF(!(GLEScmValidate::texCompImgFrmt(format) && GLEScmValidate::textureTargetEx(target)),GL_INVALID_ENUM);
-    SET_ERROR_IF(level < 0 || level > log2(ctx->getMaxTexSize()),GL_INVALID_VALUE)
-
-    GLenum uncompressedFrmt;
-    unsigned char* uncompressed = uncompressTexture(format,uncompressedFrmt,width,height,imageSize,data,level);
-    ctx->dispatcher().glTexSubImage2D(target,level,xoffset,yoffset,width,height,uncompressedFrmt,GL_UNSIGNED_BYTE,uncompressed);
-    delete uncompressed;
-}
-
-GL_API void GL_APIENTRY  glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::pixelFrmt(ctx,internalformat) && GLEScmValidate::textureTargetEx(target)),GL_INVALID_ENUM);
-    SET_ERROR_IF(border != 0,GL_INVALID_VALUE);
-    ctx->dispatcher().glCopyTexImage2D(target,level,internalformat,x,y,width,height,border);
-}
-
-GL_API void GL_APIENTRY  glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::textureTargetEx(target),GL_INVALID_ENUM);
-    ctx->dispatcher().glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
-}
-
-GL_API void GL_APIENTRY  glCullFace( GLenum mode) {
-    GET_CTX()
-    ctx->dispatcher().glCullFace(mode);
-}
-
-GL_API void GL_APIENTRY  glDeleteBuffers( GLsizei n, const GLuint *buffers) {
-    GET_CTX()
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i < n; i++){
-           ctx->shareGroup()->deleteName(VERTEXBUFFER,buffers[i]);
-           ctx->unbindBuffer(buffers[i]);
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glDeleteTextures( GLsizei n, const GLuint *textures) {
-    GET_CTX()
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i < n; i++){
-            if(textures[i] != 0)
-            {
-                TextureData* tData = getTextureData(textures[i]);
-                // delete the underlying OpenGL texture but only if this
-                // texture is not a target of EGLImage.
-                if (!tData || tData->sourceEGLImage == 0) {
-                    const GLuint globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,textures[i]);
-                    ctx->dispatcher().glDeleteTextures(1,&globalTextureName);
-                }
-                ctx->shareGroup()->deleteName(TEXTURE,textures[i]);
-                
-                if(ctx->getBindedTexture(GL_TEXTURE_2D) == textures[i])
-                    ctx->setBindedTexture(GL_TEXTURE_2D,0);
-                if (ctx->getBindedTexture(GL_TEXTURE_CUBE_MAP) == textures[i])
-                    ctx->setBindedTexture(GL_TEXTURE_CUBE_MAP,0);
-            }
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glDepthFunc( GLenum func) {
-    GET_CTX()
-    ctx->dispatcher().glDepthFunc(func);
-}
-
-GL_API void GL_APIENTRY  glDepthMask( GLboolean flag) {
-    GET_CTX()
-    ctx->dispatcher().glDepthMask(flag);
-}
-
-GL_API void GL_APIENTRY  glDepthRangef( GLclampf zNear, GLclampf zFar) {
-    GET_CTX()
-    ctx->dispatcher().glDepthRange(zNear,zFar);
-}
-
-GL_API void GL_APIENTRY  glDepthRangex( GLclampx zNear, GLclampx zFar) {
-    GET_CTX()
-    ctx->dispatcher().glDepthRange(X2F(zNear),X2F(zFar));
-}
-
-GL_API void GL_APIENTRY  glDisable( GLenum cap) {
-    GET_CTX()
-    if (cap==GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glDisable(GL_TEXTURE_GEN_S);
-        ctx->dispatcher().glDisable(GL_TEXTURE_GEN_T);
-        ctx->dispatcher().glDisable(GL_TEXTURE_GEN_R);
-    }
-    else ctx->dispatcher().glDisable(cap);
-    if (cap==GL_TEXTURE_2D || cap==GL_TEXTURE_CUBE_MAP_OES)
-        ctx->setTextureEnabled(cap,false);
-}
-
-GL_API void GL_APIENTRY  glDisableClientState( GLenum array) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::supportedArrays(array),GL_INVALID_ENUM)
-
-    ctx->enableArr(array,false);
-    if(array != GL_POINT_SIZE_ARRAY_OES) ctx->dispatcher().glDisableClientState(array);
-}
-
-
-GL_API void GL_APIENTRY  glDrawArrays( GLenum mode, GLint first, GLsizei count) {
-    GET_CTX_CM()
-    SET_ERROR_IF(count < 0,GL_INVALID_VALUE)
-    SET_ERROR_IF(!GLEScmValidate::drawMode(mode),GL_INVALID_ENUM)
-
-    ctx->drawValidate();
-
-    if(!ctx->isArrEnabled(GL_VERTEX_ARRAY)) return;
-
-    GLESConversionArrays tmpArrs;
-    ctx->setupArraysPointers(tmpArrs,first,count,0,NULL,true);
-    if(mode == GL_POINTS && ctx->isArrEnabled(GL_POINT_SIZE_ARRAY_OES)){
-        ctx->drawPointsArrs(tmpArrs,first,count);
-    }
-    else
-    {
-        ctx->dispatcher().glDrawArrays(mode,first,count);
-    }
-}
-
-GL_API void GL_APIENTRY  glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *elementsIndices) {
-    GET_CTX_CM()
-    SET_ERROR_IF(count < 0,GL_INVALID_VALUE)
-    SET_ERROR_IF((!GLEScmValidate::drawMode(mode) || !GLEScmValidate::drawType(type)),GL_INVALID_ENUM)
-    if(!ctx->isArrEnabled(GL_VERTEX_ARRAY)) return;
-
-    ctx->drawValidate();
-
-    const GLvoid* indices = elementsIndices;
-    GLESConversionArrays tmpArrs;
-    if(ctx->isBindedBuffer(GL_ELEMENT_ARRAY_BUFFER)) { // if vbo is binded take the indices from the vbo
-        const unsigned char* buf = static_cast<unsigned char *>(ctx->getBindedBuffer(GL_ELEMENT_ARRAY_BUFFER));
-        indices = buf+reinterpret_cast<unsigned int>(elementsIndices);
-    }
-
-    ctx->setupArraysPointers(tmpArrs,0,count,type,indices,false);
-    if(mode == GL_POINTS && ctx->isArrEnabled(GL_POINT_SIZE_ARRAY_OES)){
-        ctx->drawPointsElems(tmpArrs,count,type,indices);
-    }
-    else{
-        ctx->dispatcher().glDrawElements(mode,count,type,indices);
-    }
-}
-
-GL_API void GL_APIENTRY  glEnable( GLenum cap) {
-    GET_CTX()
-    if (cap==GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glEnable(GL_TEXTURE_GEN_S);
-        ctx->dispatcher().glEnable(GL_TEXTURE_GEN_T);
-        ctx->dispatcher().glEnable(GL_TEXTURE_GEN_R);
-    }
-    else
-        ctx->dispatcher().glEnable(cap);
-    if (cap==GL_TEXTURE_2D || cap==GL_TEXTURE_CUBE_MAP_OES)
-        ctx->setTextureEnabled(cap,true);
-}
-
-GL_API void GL_APIENTRY  glEnableClientState( GLenum array) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::supportedArrays(array),GL_INVALID_ENUM)
-
-    ctx->enableArr(array,true);
-    if(array != GL_POINT_SIZE_ARRAY_OES) ctx->dispatcher().glEnableClientState(array);
-}
-
-GL_API void GL_APIENTRY  glFinish( void) {
-    GET_CTX()
-    ctx->dispatcher().glFinish();
-}
-
-GL_API void GL_APIENTRY  glFlush( void) {
-    GET_CTX()
-    ctx->dispatcher().glFlush();
-}
-
-GL_API void GL_APIENTRY  glFogf( GLenum pname, GLfloat param) {
-    GET_CTX()
-    ctx->dispatcher().glFogf(pname,param);
-}
-
-GL_API void GL_APIENTRY  glFogfv( GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glFogfv(pname,params);
-}
-
-GL_API void GL_APIENTRY  glFogx( GLenum pname, GLfixed param) {
-    GET_CTX()
-    ctx->dispatcher().glFogf(pname,(pname == GL_FOG_MODE)? static_cast<GLfloat>(param):X2F(param));
-}
-
-GL_API void GL_APIENTRY  glFogxv( GLenum pname, const GLfixed *params) {
-    GET_CTX()
-    if(pname == GL_FOG_MODE) {
-        GLfloat tmpParam = static_cast<GLfloat>(params[0]);
-        ctx->dispatcher().glFogfv(pname,&tmpParam);
-    } else {
-        GLfloat tmpParams[4];
-        for(int i=0; i< 4; i++) {
-            tmpParams[i] = X2F(params[i]);
-        }
-        ctx->dispatcher().glFogfv(pname,tmpParams);
-    }
-
-}
-
-GL_API void GL_APIENTRY  glFrontFace( GLenum mode) {
-    GET_CTX()
-    ctx->dispatcher().glFrontFace(mode);
-}
-
-GL_API void GL_APIENTRY  glFrustumf( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
-    GET_CTX()
-    ctx->dispatcher().glFrustum(left,right,bottom,top,zNear,zFar);
-}
-
-GL_API void GL_APIENTRY  glFrustumx( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
-    GET_CTX()
-    ctx->dispatcher().glFrustum(X2F(left),X2F(right),X2F(bottom),X2F(top),X2F(zNear),X2F(zFar));
-}
-
-GL_API void GL_APIENTRY  glGenBuffers( GLsizei n, GLuint *buffers) {
-    GET_CTX()
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            buffers[i] = ctx->shareGroup()->genName(VERTEXBUFFER, 0, true);
-            //generating vbo object related to this buffer name
-            ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffers[i],ObjectDataPtr(new GLESbuffer()));
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glGenTextures( GLsizei n, GLuint *textures) {
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            textures[i] = ctx->shareGroup()->genName(TEXTURE, 0, true);
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glGetBooleanv( GLenum pname, GLboolean *params) {
-    GET_CTX()
-
-    if(ctx->glGetBooleanv(pname, params))
-    {
-        return;
-    }
-
-    GLint i;
-
-    switch(pname)
-    {
-    case GL_FRAMEBUFFER_BINDING_OES:
-    case GL_RENDERBUFFER_BINDING_OES:
-        {
-            GLint name;
-            glGetIntegerv(pname,&name);
-            *params = name!=0 ? GL_TRUE: GL_FALSE;
-        }
-    break;
-    case GL_TEXTURE_GEN_STR_OES:
-        {
-            GLboolean state_s = GL_FALSE;
-            GLboolean state_t = GL_FALSE;
-            GLboolean state_r = GL_FALSE;
-            ctx->dispatcher().glGetBooleanv(GL_TEXTURE_GEN_S,&state_s);
-            ctx->dispatcher().glGetBooleanv(GL_TEXTURE_GEN_T,&state_t);
-            ctx->dispatcher().glGetBooleanv(GL_TEXTURE_GEN_R,&state_r);
-            *params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE;
-        }
-    break; 
-    case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        *params = (GLboolean)getCompressedFormats(NULL); 
-    break;    
-    case GL_COMPRESSED_TEXTURE_FORMATS:
-        {
-            int nparams = getCompressedFormats(NULL);
-            if (nparams>0) {
-                int * iparams = new int[nparams];
-                getCompressedFormats(iparams);
-                for (int i=0; i<nparams; i++) params[i] = (GLboolean)iparams[i];
-                delete [] iparams;
-            }
-        }
-    break;
-    default:
-        ctx->dispatcher().glGetBooleanv(pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetBufferParameteriv( GLenum target, GLenum pname, GLint *params) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::bufferTarget(target) && GLEScmValidate::bufferParam(pname)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION);
-    bool ret = true;
-    switch(pname) {
-    case GL_BUFFER_SIZE:
-        ctx->getBufferSize(target,params);
-        break;
-    case GL_BUFFER_USAGE:
-        ctx->getBufferUsage(target,params);
-        break;
-    }
-
-}
-
-GL_API void GL_APIENTRY  glGetClipPlanef( GLenum pname, GLfloat eqn[4]) {
-    GET_CTX()
-    GLdouble tmpEqn[4];
-
-    ctx->dispatcher().glGetClipPlane(pname,tmpEqn);
-    for(int i =0 ;i < 4; i++){
-        eqn[i] = static_cast<GLfloat>(tmpEqn[i]);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetClipPlanex( GLenum pname, GLfixed eqn[4]) {
-    GET_CTX()
-    GLdouble tmpEqn[4];
-
-    ctx->dispatcher().glGetClipPlane(pname,tmpEqn);
-    for(int i =0 ;i < 4; i++){
-        eqn[i] = F2X(tmpEqn[i]);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetFixedv( GLenum pname, GLfixed *params) {
-    GET_CTX()
-
-    if(ctx->glGetFixedv(pname, params))
-    {
-        return;
-    }
-
-    size_t nParams = glParamSize(pname);
-    GLfloat fParams[16];
-    GLint i;
-
-    switch(pname)
-    {
-    case GL_FRAMEBUFFER_BINDING_OES:
-    case GL_RENDERBUFFER_BINDING_OES:
-    case GL_TEXTURE_GEN_STR_OES:
-        glGetFloatv(pname,&fParams[0]);
-        break;
-    case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        *params = I2X(getCompressedFormats(NULL));
-        return;
-    break;    
-    case GL_COMPRESSED_TEXTURE_FORMATS:
-        {
-            int nparams = getCompressedFormats(NULL);
-            if (nparams>0) {
-                int * iparams = new int[nparams];
-                getCompressedFormats(iparams);
-                for (int i=0; i<nparams; i++) params[i] = I2X(iparams[i]);
-                delete [] iparams;
-            }
-            return;
-        }
-    break;
-    default:
-        ctx->dispatcher().glGetFloatv(pname,fParams);
-    }
-
-    if (nParams)
-    {
-        for(size_t i =0 ; i < nParams;i++) {
-            params[i] = F2X(fParams[i]);
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glGetFloatv( GLenum pname, GLfloat *params) {
-    GET_CTX()
-
-    if(ctx->glGetFloatv(pname, params))
-    {
-        return;
-    }
-
-    GLint i;
-
-    switch (pname) {
-    case GL_FRAMEBUFFER_BINDING_OES:
-    case GL_RENDERBUFFER_BINDING_OES:
-    case GL_TEXTURE_GEN_STR_OES:
-        glGetIntegerv(pname,&i);
-        *params = (GLfloat)i;
-    break;   
-    case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        *params = (GLfloat)getCompressedFormats(NULL); 
-    break;    
-    case GL_COMPRESSED_TEXTURE_FORMATS:
-        {
-            int nparams = getCompressedFormats(NULL);
-            if (nparams>0) {
-                int * iparams = new int[nparams];
-                getCompressedFormats(iparams);
-                for (int i=0; i<nparams; i++) params[i] = (GLfloat)iparams[i];
-                delete [] iparams;
-            }
-        }
-    break;
-    default:
-        ctx->dispatcher().glGetFloatv(pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetIntegerv( GLenum pname, GLint *params) {
-    GET_CTX()
-
-    if(ctx->glGetIntegerv(pname, params))
-    {
-        return;
-    }
-    
-    GLint i;
-    GLfloat f;
-
-    switch(pname)
-    {
-    case GL_TEXTURE_GEN_STR_OES:
-        ctx->dispatcher().glGetIntegerv(GL_TEXTURE_GEN_S,&params[0]);
-        break;
-    case GL_FRAMEBUFFER_BINDING_OES:
-        if (ctx->shareGroup().Ptr()) {
-            ctx->dispatcher().glGetIntegerv(pname,&i);
-            *params = ctx->shareGroup()->getLocalName(FRAMEBUFFER,i);
-        }
-        break;
-    case GL_RENDERBUFFER_BINDING_OES:
-        if (ctx->shareGroup().Ptr()) {
-            ctx->dispatcher().glGetIntegerv(pname,&i);
-            *params = ctx->shareGroup()->getLocalName(RENDERBUFFER,i);
-        }
-        break;
-    case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        *params = getCompressedFormats(NULL);
-        break;
-    case GL_COMPRESSED_TEXTURE_FORMATS:
-        getCompressedFormats(params);
-        break;
-    case GL_MAX_CLIP_PLANES:
-        ctx->dispatcher().glGetIntegerv(pname,params);
-        if(*params > 6)
-        {
-            // GLES spec requires only 6, and the ATI driver erronously
-            // returns 8 (although it supports only 6). This WAR is simple,
-            // compliant and good enough for developers.
-            *params = 6;
-        }
-        break;
-    case GL_ALPHA_TEST_REF:
-        // Both the ATI and nVidia OpenGL drivers return the wrong answer
-        // here. So return the right one.
-        ctx->dispatcher().glGetFloatv(pname,&f);
-        *params = (int)(f * (float)0x7fffffff);
-        break;
-    case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
-        ctx->dispatcher().glGetIntegerv(pname,params);
-        if(*params > 16)
-        {
-            // GLES spec requires only 2, and the ATI driver erronously
-            // returns 32 (although it supports only 16). This WAR is simple,
-            // compliant and good enough for developers.
-            *params = 16;
-        }
-        break;
-
-    default:
-        ctx->dispatcher().glGetIntegerv(pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetLightfv( GLenum light, GLenum pname, GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glGetLightfv(light,pname,params);
-}
-
-GL_API void GL_APIENTRY  glGetLightxv( GLenum light, GLenum pname, GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[4];
-
-    ctx->dispatcher().glGetLightfv(light,pname,tmpParams);
-    switch (pname){
-        case GL_AMBIENT:
-        case GL_DIFFUSE:
-        case GL_SPECULAR:
-        case GL_POSITION:
-            params[3] = F2X(tmpParams[3]);
-        case GL_SPOT_DIRECTION:
-            params[2] = F2X(tmpParams[2]);
-        case GL_SPOT_EXPONENT:
-        case GL_SPOT_CUTOFF:
-        case GL_CONSTANT_ATTENUATION:
-        case GL_LINEAR_ATTENUATION:
-        case GL_QUADRATIC_ATTENUATION:
-            params[1] = F2X(tmpParams[1]);
-            break;
-        default:{
-            ctx->setGLerror(GL_INVALID_ENUM);
-            return;
-        }
-
-    }
-    params[0] = F2X(tmpParams[0]);
-}
-
-GL_API void GL_APIENTRY  glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glGetMaterialfv(face,pname,params);
-}
-
-GL_API void GL_APIENTRY  glGetMaterialxv( GLenum face, GLenum pname, GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[4];
-    ctx->dispatcher().glGetMaterialfv(face,pname,tmpParams);
-    switch(pname){
-    case GL_AMBIENT:
-    case GL_DIFFUSE:
-    case GL_SPECULAR:
-    case GL_EMISSION:
-    case GL_AMBIENT_AND_DIFFUSE:
-        params[3] = tmpParams[3];
-        params[2] = tmpParams[2];
-        params[1] = tmpParams[1];
-    case GL_SHININESS:
-        params[0] = tmpParams[0];
-        break;
-    default:{
-            ctx->setGLerror(GL_INVALID_ENUM);
-            return;
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glGetPointerv( GLenum pname, void **params) {
-    GET_CTX()
-    const GLESpointer* p = ctx->getPointer(pname);
-    if(p) {
-        if(p->isVBO())
-        {
-            *params = (void*)(p->getBufferOffset());
-        }else{
-            *params = const_cast<void *>( p->getArrayData());
-        }
-    } else {
-        ctx->setGLerror(GL_INVALID_ENUM);
-    }
-
-}
-
-GL_API void GL_APIENTRY  glGetTexEnvfv( GLenum env, GLenum pname, GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glGetTexEnvfv(env,pname,params);
-}
-
-GL_API void GL_APIENTRY  glGetTexEnviv( GLenum env, GLenum pname, GLint *params) {
-    GET_CTX()
-    ctx->dispatcher().glGetTexEnviv(env,pname,params);
-}
-
-GL_API void GL_APIENTRY  glGetTexEnvxv( GLenum env, GLenum pname, GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[4];
-
-    ctx->dispatcher().glGetTexEnvfv(env,pname,tmpParams);
-    if(pname == GL_TEXTURE_ENV_MODE) {
-        params[0] = static_cast<GLfixed>(tmpParams[0]);
-    } else {
-        for(int i=0 ; i < 4 ; i++)
-            params[i] = F2X(tmpParams[i]);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params) {
-    GET_CTX()
-   if (pname==GL_TEXTURE_CROP_RECT_OES) {
-      TextureData *texData = getTextureTargetData(target);
-      SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-      for (int i=0;i<4;++i)
-        params[i] = texData->crop_rect[i];
-    }
-    else {
-      ctx->dispatcher().glGetTexParameterfv(target,pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetTexParameteriv( GLenum target, GLenum pname, GLint *params) {
-    GET_CTX()
-    if (pname==GL_TEXTURE_CROP_RECT_OES) {
-      TextureData *texData = getTextureTargetData(target);
-      SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-      for (int i=0;i<4;++i)
-        params[i] = texData->crop_rect[i];
-    }
-    else {
-      ctx->dispatcher().glGetTexParameteriv(target,pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glGetTexParameterxv( GLenum target, GLenum pname, GLfixed *params) {
-    GET_CTX()
-    if (pname==GL_TEXTURE_CROP_RECT_OES) {
-      TextureData *texData = getTextureTargetData(target);
-      SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-      for (int i=0;i<4;++i)
-        params[i] = F2X(texData->crop_rect[i]);
-    }
-    else {
-      GLfloat tmpParam;
-      ctx->dispatcher().glGetTexParameterfv(target,pname,&tmpParam);
-      params[0] = static_cast<GLfixed>(tmpParam);
-    }
-}
-
-GL_API void GL_APIENTRY  glHint( GLenum target, GLenum mode) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::hintTargetMode(target,mode),GL_INVALID_ENUM);
-    ctx->dispatcher().glHint(target,mode);
-}
-
-GL_API void GL_APIENTRY  glLightModelf( GLenum pname, GLfloat param) {
-    GET_CTX()
-    ctx->dispatcher().glLightModelf(pname,param);
-}
-
-GL_API void GL_APIENTRY  glLightModelfv( GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glLightModelfv(pname,params);
-}
-
-GL_API void GL_APIENTRY  glLightModelx( GLenum pname, GLfixed param) {
-    GET_CTX()
-    GLfloat tmpParam = static_cast<GLfloat>(param);
-    ctx->dispatcher().glLightModelf(pname,tmpParam);
-}
-
-GL_API void GL_APIENTRY  glLightModelxv( GLenum pname, const GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[4];
-    if(pname == GL_LIGHT_MODEL_TWO_SIDE) {
-        tmpParams[0] = X2F(params[0]);
-    } else if (pname == GL_LIGHT_MODEL_AMBIENT) {
-        for(int i=0;i<4;i++) {
-            tmpParams[i] = X2F(params[i]);
-        }
-    }
-
-    ctx->dispatcher().glLightModelfv(pname,tmpParams);
-}
-
-GL_API void GL_APIENTRY  glLightf( GLenum light, GLenum pname, GLfloat param) {
-    GET_CTX()
-    ctx->dispatcher().glLightf(light,pname,param);
-}
-
-GL_API void GL_APIENTRY  glLightfv( GLenum light, GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glLightfv(light,pname,params);
-}
-
-GL_API void GL_APIENTRY  glLightx( GLenum light, GLenum pname, GLfixed param) {
-    GET_CTX()
-    ctx->dispatcher().glLightf(light,pname,X2F(param));
-}
-
-GL_API void GL_APIENTRY  glLightxv( GLenum light, GLenum pname, const GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[4];
-
-    switch (pname) {
-        case GL_AMBIENT:
-        case GL_DIFFUSE:
-        case GL_SPECULAR:
-        case GL_EMISSION:
-        case GL_POSITION:
-            tmpParams[3] = X2F(params[3]);
-        case GL_SPOT_DIRECTION:
-            tmpParams[2] = X2F(params[2]);
-            tmpParams[1] = X2F(params[1]);
-        case GL_SPOT_EXPONENT:
-        case GL_SPOT_CUTOFF:
-        case GL_CONSTANT_ATTENUATION:
-        case GL_LINEAR_ATTENUATION:
-        case GL_QUADRATIC_ATTENUATION:
-            tmpParams[0] = X2F(params[0]);
-            break;
-        default: {
-                ctx->setGLerror(GL_INVALID_ENUM);
-                return;
-            }
-    }
-    ctx->dispatcher().glLightfv(light,pname,tmpParams);
-}
-
-GL_API void GL_APIENTRY  glLineWidth( GLfloat width) {
-    GET_CTX()
-    ctx->dispatcher().glLineWidth(width);
-}
-
-GL_API void GL_APIENTRY  glLineWidthx( GLfixed width) {
-    GET_CTX()
-    ctx->dispatcher().glLineWidth(X2F(width));
-}
-
-GL_API void GL_APIENTRY  glLoadIdentity( void) {
-    GET_CTX()
-    ctx->dispatcher().glLoadIdentity();
-}
-
-GL_API void GL_APIENTRY  glLoadMatrixf( const GLfloat *m) {
-    GET_CTX()
-    ctx->dispatcher().glLoadMatrixf(m);
-}
-
-GL_API void GL_APIENTRY  glLoadMatrixx( const GLfixed *m) {
-    GET_CTX()
-    GLfloat mat[16];
-    for(int i=0; i< 16 ; i++) {
-        mat[i] = X2F(m[i]);
-    }
-    ctx->dispatcher().glLoadMatrixf(mat);
-}
-
-GL_API void GL_APIENTRY  glLogicOp( GLenum opcode) {
-    GET_CTX()
-    ctx->dispatcher().glLogicOp(opcode);
-}
-
-GL_API void GL_APIENTRY  glMaterialf( GLenum face, GLenum pname, GLfloat param) {
-    GET_CTX()
-    ctx->dispatcher().glMaterialf(face,pname,param);
-}
-
-GL_API void GL_APIENTRY  glMaterialfv( GLenum face, GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glMaterialfv(face,pname,params);
-}
-
-GL_API void GL_APIENTRY  glMaterialx( GLenum face, GLenum pname, GLfixed param) {
-    GET_CTX()
-    ctx->dispatcher().glMaterialf(face,pname,X2F(param));
-}
-
-GL_API void GL_APIENTRY  glMaterialxv( GLenum face, GLenum pname, const GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[4];
-
-    for(int i=0; i< 4; i++) {
-        tmpParams[i] = X2F(params[i]);
-    }
-    ctx->dispatcher().glMaterialfv(face,pname,tmpParams);
-}
-
-GL_API void GL_APIENTRY  glMatrixMode( GLenum mode) {
-    GET_CTX()
-    ctx->dispatcher().glMatrixMode(mode);
-}
-
-GL_API void GL_APIENTRY  glMultMatrixf( const GLfloat *m) {
-    GET_CTX()
-    ctx->dispatcher().glMultMatrixf(m);
-}
-
-GL_API void GL_APIENTRY  glMultMatrixx( const GLfixed *m) {
-    GET_CTX()
-    GLfloat mat[16];
-    for(int i=0; i< 16 ; i++) {
-        mat[i] = X2F(m[i]);
-    }
-    ctx->dispatcher().glMultMatrixf(mat);
-}
-
-GL_API void GL_APIENTRY  glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) {
-    GET_CTX_CM()
-    SET_ERROR_IF(!GLEScmValidate::textureEnum(target,ctx->getMaxTexUnits()),GL_INVALID_ENUM);
-    ctx->dispatcher().glMultiTexCoord4f(target,s,t,r,q);
-}
-
-GL_API void GL_APIENTRY  glMultiTexCoord4x( GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q) {
-    GET_CTX_CM()
-    SET_ERROR_IF(!GLEScmValidate::textureEnum(target,ctx->getMaxTexUnits()),GL_INVALID_ENUM);
-    ctx->dispatcher().glMultiTexCoord4f(target,X2F(s),X2F(t),X2F(r),X2F(q));
-}
-
-GL_API void GL_APIENTRY  glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz) {
-    GET_CTX()
-    ctx->dispatcher().glNormal3f(nx,ny,nz);
-}
-
-GL_API void GL_APIENTRY  glNormal3x( GLfixed nx, GLfixed ny, GLfixed nz) {
-    GET_CTX()
-    ctx->dispatcher().glNormal3f(X2F(nx),X2F(ny),X2F(nz));
-}
-
-GL_API void GL_APIENTRY  glNormalPointer( GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(stride < 0,GL_INVALID_VALUE);
-    SET_ERROR_IF(!GLEScmValidate::normalPointerType(type),GL_INVALID_ENUM);
-    ctx->setPointer(GL_NORMAL_ARRAY,3,type,stride,pointer);//3 normal verctor
-}
-
-GL_API void GL_APIENTRY  glOrthof( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) {
-    GET_CTX()
-    ctx->dispatcher().glOrtho(left,right,bottom,top,zNear,zFar);
-}
-
-GL_API void GL_APIENTRY  glOrthox( GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar) {
-    GET_CTX()
-    ctx->dispatcher().glOrtho(X2F(left),X2F(right),X2F(bottom),X2F(top),X2F(zNear),X2F(zFar));
-}
-
-GL_API void GL_APIENTRY  glPixelStorei( GLenum pname, GLint param) {
-    GET_CTX()
-    SET_ERROR_IF(!(pname == GL_PACK_ALIGNMENT || pname == GL_UNPACK_ALIGNMENT),GL_INVALID_ENUM);
-    SET_ERROR_IF(!((param==1)||(param==2)||(param==4)||(param==8)), GL_INVALID_VALUE);
-    ctx->setUnpackAlignment(param);
-    ctx->dispatcher().glPixelStorei(pname,param);
-}
-
-GL_API void GL_APIENTRY  glPointParameterf( GLenum pname, GLfloat param) {
-    GET_CTX()
-    ctx->dispatcher().glPointParameterf(pname,param);
-}
-
-GL_API void GL_APIENTRY  glPointParameterfv( GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    ctx->dispatcher().glPointParameterfv(pname,params);
-}
-
-GL_API void GL_APIENTRY  glPointParameterx( GLenum pname, GLfixed param)
-{
-    GET_CTX()
-    ctx->dispatcher().glPointParameterf(pname,X2F(param));
-}
-
-GL_API void GL_APIENTRY  glPointParameterxv( GLenum pname, const GLfixed *params) {
-    GET_CTX()
-
-    GLfloat tmpParam = X2F(*params) ;
-    ctx->dispatcher().glPointParameterfv(pname,&tmpParam);
-}
-
-GL_API void GL_APIENTRY  glPointSize( GLfloat size) {
-    GET_CTX()
-    ctx->dispatcher().glPointSize(size);
-}
-
-GL_API void GL_APIENTRY  glPointSizePointerOES( GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(stride < 0,GL_INVALID_VALUE);
-    SET_ERROR_IF(!GLEScmValidate::pointPointerType(type),GL_INVALID_ENUM);
-    ctx->setPointer(GL_POINT_SIZE_ARRAY_OES,1,type,stride,pointer);
-}
-
-GL_API void GL_APIENTRY  glPointSizex( GLfixed size) {
-    GET_CTX()
-    ctx->dispatcher().glPointSize(X2F(size));
-}
-
-GL_API void GL_APIENTRY  glPolygonOffset( GLfloat factor, GLfloat units) {
-    GET_CTX()
-    ctx->dispatcher().glPolygonOffset(factor,units);
-}
-
-GL_API void GL_APIENTRY  glPolygonOffsetx( GLfixed factor, GLfixed units) {
-    GET_CTX()
-    ctx->dispatcher().glPolygonOffset(X2F(factor),X2F(units));
-}
-
-GL_API void GL_APIENTRY  glPopMatrix(void) {
-    GET_CTX()
-    ctx->dispatcher().glPopMatrix();
-}
-
-GL_API void GL_APIENTRY  glPushMatrix(void) {
-    GET_CTX()
-    ctx->dispatcher().glPushMatrix();
-}
-
-GL_API void GL_APIENTRY  glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::pixelFrmt(ctx,format) && GLEScmValidate::pixelType(ctx,type)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!(GLEScmValidate::pixelOp(format,type)),GL_INVALID_OPERATION);
-
-    ctx->dispatcher().glReadPixels(x,y,width,height,format,type,pixels);
-}
-
-GL_API void GL_APIENTRY  glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z) {
-    GET_CTX()
-    ctx->dispatcher().glRotatef(angle,x,y,z);
-}
-
-GL_API void GL_APIENTRY  glRotatex( GLfixed angle, GLfixed x, GLfixed y, GLfixed z) {
-    GET_CTX()
-    ctx->dispatcher().glRotatef(angle,X2F(x),X2F(y),X2F(z));
-}
-
-GL_API void GL_APIENTRY  glSampleCoverage( GLclampf value, GLboolean invert) {
-    GET_CTX()
-    ctx->dispatcher().glSampleCoverage(value,invert);
-}
-
-GL_API void GL_APIENTRY  glSampleCoveragex( GLclampx value, GLboolean invert) {
-    GET_CTX()
-    ctx->dispatcher().glSampleCoverage(X2F(value),invert);
-}
-
-GL_API void GL_APIENTRY  glScalef( GLfloat x, GLfloat y, GLfloat z) {
-    GET_CTX()
-    ctx->dispatcher().glScalef(x,y,z);
-}
-
-GL_API void GL_APIENTRY  glScalex( GLfixed x, GLfixed y, GLfixed z) {
-    GET_CTX()
-    ctx->dispatcher().glScalef(X2F(x),X2F(y),X2F(z));
-}
-
-GL_API void GL_APIENTRY  glScissor( GLint x, GLint y, GLsizei width, GLsizei height) {
-    GET_CTX()
-    ctx->dispatcher().glScissor(x,y,width,height);
-}
-
-GL_API void GL_APIENTRY  glShadeModel( GLenum mode) {
-    GET_CTX()
-    ctx->dispatcher().glShadeModel(mode);
-}
-
-GL_API void GL_APIENTRY  glStencilFunc( GLenum func, GLint ref, GLuint mask) {
-    GET_CTX()
-    ctx->dispatcher().glStencilFunc(func,ref,mask);
-}
-
-GL_API void GL_APIENTRY  glStencilMask( GLuint mask) {
-    GET_CTX()
-    ctx->dispatcher().glStencilMask(mask);
-}
-
-GL_API void GL_APIENTRY  glStencilOp( GLenum fail, GLenum zfail, GLenum zpass) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::stencilOp(fail) && GLEScmValidate::stencilOp(zfail) && GLEScmValidate::stencilOp(zpass)),GL_INVALID_ENUM);
-    ctx->dispatcher().glStencilOp(fail,zfail,zpass);
-}
-
-GL_API void GL_APIENTRY  glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texCoordPointerParams(size,stride),GL_INVALID_VALUE);
-    SET_ERROR_IF(!GLEScmValidate::texCoordPointerType(type),GL_INVALID_ENUM);
-    ctx->setPointer(GL_TEXTURE_COORD_ARRAY,size,type,stride,pointer);
-}
-
-GL_API void GL_APIENTRY  glTexEnvf( GLenum target, GLenum pname, GLfloat param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexEnvf(target,pname,param);
-}
-
-GL_API void GL_APIENTRY  glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexEnvfv(target,pname,params);
-}
-
-GL_API void GL_APIENTRY  glTexEnvi( GLenum target, GLenum pname, GLint param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexEnvi(target,pname,param);
-}
-
-GL_API void GL_APIENTRY  glTexEnviv( GLenum target, GLenum pname, const GLint *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexEnviv(target,pname,params);
-}
-
-GL_API void GL_APIENTRY  glTexEnvx( GLenum target, GLenum pname, GLfixed param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM);
-    GLfloat tmpParam = static_cast<GLfloat>(param);
-    ctx->dispatcher().glTexEnvf(target,pname,tmpParam);
-}
-
-GL_API void GL_APIENTRY  glTexEnvxv( GLenum target, GLenum pname, const GLfixed *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texEnv(target,pname),GL_INVALID_ENUM);
-
-    GLfloat tmpParams[4];
-    if(pname == GL_TEXTURE_ENV_COLOR) {
-        for(int i =0;i<4;i++) {
-            tmpParams[i] = X2F(params[i]);
-        }
-    } else {
-        tmpParams[0] = static_cast<GLfloat>(params[0]);
-    }
-    ctx->dispatcher().glTexEnvfv(target,pname,tmpParams);
-}
-
-GL_API void GL_APIENTRY  glTexImage2D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels) {
-    GET_CTX()
-
-    SET_ERROR_IF(!(GLEScmValidate::textureTargetEx(target) &&
-                     GLEScmValidate::pixelFrmt(ctx,internalformat) &&
-                     GLEScmValidate::pixelFrmt(ctx,format) &&
-                     GLEScmValidate::pixelType(ctx,type)),GL_INVALID_ENUM);
-
-    SET_ERROR_IF(!(GLEScmValidate::pixelOp(format,type) && internalformat == ((GLint)format)),GL_INVALID_OPERATION);
-
-    bool needAutoMipmap = false;
-
-    if (ctx->shareGroup().Ptr()){
-        TextureData *texData = getTextureTargetData(target);
-        SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-        if(texData) {
-            texData->width = width;
-            texData->height = height;
-            texData->border = border;
-            texData->internalFormat = internalformat;
-            texData->target = target;
-
-            if (texData->sourceEGLImage != 0) {
-                //
-                // This texture was a target of EGLImage,
-                // but now it is re-defined so we need to detach
-                // from the EGLImage and re-generate global texture name
-                // for it.
-                //
-                if (texData->eglImageDetach) {
-                    (*texData->eglImageDetach)(texData->sourceEGLImage);
-                }
-                unsigned int tex = ctx->getBindedTexture(target);
-                ctx->shareGroup()->replaceGlobalName(TEXTURE,
-                                                     tex,
-                                                     texData->oldGlobal);
-                ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, texData->oldGlobal);
-                texData->sourceEGLImage = 0;
-                texData->oldGlobal = 0;
-            }
-
-            needAutoMipmap = texData->requiresAutoMipmap;
-        }
-    }
-
-    ctx->dispatcher().glTexImage2D(target,level,
-                                   internalformat,width,height,
-                                   border,format,type,pixels);
-
-    if(needAutoMipmap)
-    {
-        ctx->dispatcher().glGenerateMipmapEXT(target);
-    }
-}
-
-static bool handleMipmapGeneration(GLenum target, GLenum pname, bool param)
-{
-    GET_CTX_RET(false)
-
-    if(pname == GL_GENERATE_MIPMAP && !ctx->isAutoMipmapSupported())
-    {
-        TextureData *texData = getTextureTargetData(target);
-        if(texData)
-        {
-            texData->requiresAutoMipmap = param;
-        }
-        return true;
-    }
-
-    return false;
-}
-
-GL_API void GL_APIENTRY  glTexParameterf( GLenum target, GLenum pname, GLfloat param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM);
-
-    if(handleMipmapGeneration(target, pname, (bool)param))
-        return;
-
-    ctx->dispatcher().glTexParameterf(target,pname,param);
-}
-
-GL_API void GL_APIENTRY  glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM);
-
-    if(handleMipmapGeneration(target, pname, (bool)(*params)))
-        return;
-
-    if (pname==GL_TEXTURE_CROP_RECT_OES) {
-        TextureData *texData = getTextureTargetData(target);
-        SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-        for (int i=0;i<4;++i)
-            texData->crop_rect[i] = params[i];
-    }
-    else {
-        ctx->dispatcher().glTexParameterfv(target,pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glTexParameteri( GLenum target, GLenum pname, GLint param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM);
-
-    if(handleMipmapGeneration(target, pname, (bool)param))
-        return;
-
-    ctx->dispatcher().glTexParameteri(target,pname,param);
-}
-
-GL_API void GL_APIENTRY  glTexParameteriv( GLenum target, GLenum pname, const GLint *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM);
-
-    if(handleMipmapGeneration(target, pname, (bool)(*params)))
-        return;
-
-    if (pname==GL_TEXTURE_CROP_RECT_OES) {
-        TextureData *texData = getTextureTargetData(target);
-        SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-        for (int i=0;i<4;++i)
-            texData->crop_rect[i] = params[i];
-    }
-    else {
-        ctx->dispatcher().glTexParameteriv(target,pname,params);
-    }
-}
-
-GL_API void GL_APIENTRY  glTexParameterx( GLenum target, GLenum pname, GLfixed param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM);
-
-    if(handleMipmapGeneration(target, pname, (bool)param))
-        return;
-
-    ctx->dispatcher().glTexParameterf(target,pname,static_cast<GLfloat>(param));
-}
-
-GL_API void GL_APIENTRY  glTexParameterxv( GLenum target, GLenum pname, const GLfixed *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texParams(target,pname),GL_INVALID_ENUM);
-
-    if(handleMipmapGeneration(target, pname, (bool)(*params)))
-        return;
-
-    if (pname==GL_TEXTURE_CROP_RECT_OES) {
-        TextureData *texData = getTextureTargetData(target);
-        SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-        for (int i=0;i<4;++i)
-            texData->crop_rect[i] = X2F(params[i]);
-    }
-    else {
-        GLfloat param = static_cast<GLfloat>(params[0]);
-        ctx->dispatcher().glTexParameterfv(target,pname,&param);
-    }
-}
-
-GL_API void GL_APIENTRY  glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::textureTargetEx(target) &&
-                   GLEScmValidate::pixelFrmt(ctx,format)&&
-                   GLEScmValidate::pixelType(ctx,type)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!GLEScmValidate::pixelOp(format,type),GL_INVALID_OPERATION);
-
-    ctx->dispatcher().glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);
-
-    if (ctx->shareGroup().Ptr()){
-        TextureData *texData = getTextureTargetData(target);
-        SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-        if(texData && texData->requiresAutoMipmap)
-        {
-                ctx->dispatcher().glGenerateMipmapEXT(target);
-        }
-    }
-}
-
-GL_API void GL_APIENTRY  glTranslatef( GLfloat x, GLfloat y, GLfloat z) {
-    GET_CTX()
-    ctx->dispatcher().glTranslatef(x,y,z);
-}
-
-GL_API void GL_APIENTRY  glTranslatex( GLfixed x, GLfixed y, GLfixed z) {
-    GET_CTX()
-    ctx->dispatcher().glTranslatef(X2F(x),X2F(y),X2F(z));
-}
-
-GL_API void GL_APIENTRY  glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::vertexPointerParams(size,stride),GL_INVALID_VALUE);
-    SET_ERROR_IF(!GLEScmValidate::vertexPointerType(type),GL_INVALID_ENUM);
-    ctx->setPointer(GL_VERTEX_ARRAY,size,type,stride,pointer);
-}
-
-GL_API void GL_APIENTRY  glViewport( GLint x, GLint y, GLsizei width, GLsizei height) {
-    GET_CTX()
-    ctx->dispatcher().glViewport(x,y,width,height);
-}
-
-GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
-{
-    GET_CTX();
-    SET_ERROR_IF(!GLEScmValidate::textureTargetLimited(target),GL_INVALID_ENUM);
-    EglImage *img = s_eglIface->eglAttachEGLImage((unsigned int)image);
-    if (img) {
-        // Create the texture object in the underlying EGL implementation,
-        // flag to the OpenGL layer to skip the image creation and map the
-        // current binded texture object to the existing global object.
-        if (ctx->shareGroup().Ptr()) {
-            ObjectLocalName tex = TextureLocalName(target,ctx->getBindedTexture(target));
-            unsigned int oldGlobal = ctx->shareGroup()->getGlobalName(TEXTURE, tex);
-            // Delete old texture object but only if it is not a target of a EGLImage
-            if (oldGlobal) {
-                TextureData* oldTexData = getTextureData(tex);
-                if (!oldTexData || oldTexData->sourceEGLImage == 0) {
-                    ctx->dispatcher().glDeleteTextures(1, &oldGlobal);
-                }
-            }
-            // replace mapping and bind the new global object
-            ctx->shareGroup()->replaceGlobalName(TEXTURE, tex,img->globalTexName);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, img->globalTexName);
-            TextureData *texData = getTextureTargetData(target);
-            SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-            texData->width = img->width;
-            texData->height = img->height;
-            texData->border = img->border;
-            texData->internalFormat = img->internalFormat;
-            texData->sourceEGLImage = (unsigned int)image;
-            texData->eglImageDetach = s_eglIface->eglDetachEGLImage;
-        }
-    }
-}
-
-GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
-{
-    GET_CTX();
-    SET_ERROR_IF(target != GL_RENDERBUFFER_OES,GL_INVALID_ENUM);
-    EglImage *img = s_eglIface->eglAttachEGLImage((unsigned int)image);
-    SET_ERROR_IF(!img,GL_INVALID_VALUE);
-    SET_ERROR_IF(!ctx->shareGroup().Ptr(),GL_INVALID_OPERATION);
-
-    // Get current bounded renderbuffer
-    // raise INVALID_OPERATIOn if no renderbuffer is bounded
-    GLuint rb = ctx->getRenderbufferBinding();
-    SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION);
-    ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb);
-    RenderbufferData *rbData = (RenderbufferData *)objData.Ptr();
-    SET_ERROR_IF(!rbData,GL_INVALID_OPERATION);
-
-    //
-    // flag in the renderbufferData that it is an eglImage target
-    //
-    rbData->sourceEGLImage = (unsigned int)image;
-    rbData->eglImageDetach = s_eglIface->eglDetachEGLImage;
-    rbData->eglImageGlobalTexName = img->globalTexName;
-
-    //
-    // if the renderbuffer is attached to a framebuffer
-    // change the framebuffer attachment in the undelying OpenGL
-    // to point to the eglImage texture object.
-    //
-    if (rbData->attachedFB) {
-        // update the framebuffer attachment point to the
-        // underlying texture of the img
-        GLuint prevFB = ctx->getFramebufferBinding();
-        if (prevFB != rbData->attachedFB) {
-            ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 
-                                                   rbData->attachedFB);
-        }
-        ctx->dispatcher().glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
-                                                    rbData->attachedPoint,
-                                                    GL_TEXTURE_2D,
-                                                    img->globalTexName,0);
-        if (prevFB != rbData->attachedFB) {
-            ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 
-                                                   prevFB);
-        }
-    }
-}
-
-/* GL_OES_blend_subtract*/
-GL_API void GL_APIENTRY glBlendEquationOES(GLenum mode) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::blendEquationMode(mode)), GL_INVALID_ENUM);
-    ctx->dispatcher().glBlendEquation(mode);
-}
-
-/* GL_OES_blend_equation_separate */
-GL_API void GL_APIENTRY glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha) {
-    GET_CTX()
-    SET_ERROR_IF(!(GLEScmValidate::blendEquationMode(modeRGB) && GLEScmValidate::blendEquationMode(modeAlpha)), GL_INVALID_ENUM);
-    ctx->dispatcher().glBlendEquationSeparate(modeRGB,modeAlpha);
-}
-
-/* GL_OES_blend_func_separate */
-GL_API void GL_APIENTRY glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::blendSrc(srcRGB) || !GLEScmValidate::blendDst(dstRGB) ||
-                 !GLEScmValidate::blendSrc(srcAlpha) || ! GLEScmValidate::blendDst(dstAlpha) ,GL_INVALID_ENUM);
-    ctx->dispatcher().glBlendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
-}
-
-/* GL_OES_framebuffer_object */
-GL_API GLboolean GL_APIENTRY glIsRenderbufferOES(GLuint renderbuffer) {
-    GET_CTX_RET(GL_FALSE)
-    RET_AND_SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION,GL_FALSE);
-    if(renderbuffer && ctx->shareGroup().Ptr()){
-        return ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer) ? GL_TRUE :GL_FALSE;
-    }
-    return ctx->dispatcher().glIsRenderbufferEXT(renderbuffer);
-}
-
-GL_API void GLAPIENTRY glBindRenderbufferOES(GLenum target, GLuint renderbuffer) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::renderbufferTarget(target),GL_INVALID_ENUM);
-
-    //if buffer wasn't generated before,generate one
-    if(renderbuffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer)){
-        ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer);
-        ctx->shareGroup()->setObjectData(RENDERBUFFER,
-                                         renderbuffer,
-                                         ObjectDataPtr(new RenderbufferData()));
-    }
-
-    int globalBufferName = (renderbuffer != 0) ? ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer) : 0;
-    ctx->dispatcher().glBindRenderbufferEXT(target,globalBufferName);
-
-    // update renderbuffer binding state
-    ctx->setRenderbufferBinding(renderbuffer);
-}
-
-GL_API void GLAPIENTRY glDeleteRenderbuffersOES(GLsizei n, const GLuint *renderbuffers) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    for (int i=0;i<n;++i) {
-        GLuint globalBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffers[i]);
-        ctx->dispatcher().glDeleteRenderbuffersEXT(1,&globalBufferName);
-    }
-}
-
-GL_API void GLAPIENTRY glGenRenderbuffersOES(GLsizei n, GLuint *renderbuffers) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            renderbuffers[i] = ctx->shareGroup()->genName(RENDERBUFFER, 0, true);
-            ctx->shareGroup()->setObjectData(RENDERBUFFER,
-                                             renderbuffers[i],
-                                         ObjectDataPtr(new RenderbufferData()));
-        }
-    }
-}
-
-GL_API void GLAPIENTRY glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::renderbufferTarget(target) || !GLEScmValidate::renderbufferInternalFrmt(ctx,internalformat) ,GL_INVALID_ENUM);
-    if (internalformat==GL_RGB565_OES) //RGB565 not supported by GL
-        internalformat = GL_RGB8_OES;
-
-    // Get current bounded renderbuffer
-    // raise INVALID_OPERATIOn if no renderbuffer is bounded
-    GLuint rb = ctx->getRenderbufferBinding();
-    SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION);
-    ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb);
-    RenderbufferData *rbData = (RenderbufferData *)objData.Ptr();
-    SET_ERROR_IF(!rbData,GL_INVALID_OPERATION);
-
-    //
-    // if the renderbuffer was an eglImage target, detach from
-    // the eglImage.
-    //
-    if (rbData->sourceEGLImage != 0) {
-        if (rbData->eglImageDetach) {
-            (*rbData->eglImageDetach)(rbData->sourceEGLImage);
-        }
-        rbData->sourceEGLImage = 0;
-        rbData->eglImageGlobalTexName = 0;
-    }
-
-    ctx->dispatcher().glRenderbufferStorageEXT(target,internalformat,width,height);
-}
-
-GL_API void GLAPIENTRY glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::renderbufferTarget(target) || !GLEScmValidate::renderbufferParams(pname) ,GL_INVALID_ENUM);
-
-    //
-    // If this is a renderbuffer which is eglimage's target, we
-    // should query the underlying eglimage's texture object instead.
-    //
-    GLuint rb = ctx->getRenderbufferBinding();
-    if (rb) {
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb);
-        RenderbufferData *rbData = (RenderbufferData *)objData.Ptr();
-        if (rbData && rbData->sourceEGLImage != 0) {
-            GLenum texPname;
-            switch(pname) {
-                case GL_RENDERBUFFER_WIDTH_OES:
-                    texPname = GL_TEXTURE_WIDTH;
-                    break;
-                case GL_RENDERBUFFER_HEIGHT_OES:
-                    texPname = GL_TEXTURE_HEIGHT;
-                    break;
-                case GL_RENDERBUFFER_INTERNAL_FORMAT_OES:
-                    texPname = GL_TEXTURE_INTERNAL_FORMAT;
-                    break;
-                case GL_RENDERBUFFER_RED_SIZE_OES:
-                    texPname = GL_TEXTURE_RED_SIZE;
-                    break;
-                case GL_RENDERBUFFER_GREEN_SIZE_OES:
-                    texPname = GL_TEXTURE_GREEN_SIZE;
-                    break;
-                case GL_RENDERBUFFER_BLUE_SIZE_OES:
-                    texPname = GL_TEXTURE_BLUE_SIZE;
-                    break;
-                case GL_RENDERBUFFER_ALPHA_SIZE_OES:
-                    texPname = GL_TEXTURE_ALPHA_SIZE;
-                    break;
-                case GL_RENDERBUFFER_DEPTH_SIZE_OES:
-                    texPname = GL_TEXTURE_DEPTH_SIZE;
-                    break;
-                case GL_RENDERBUFFER_STENCIL_SIZE_OES:
-                default:
-                    *params = 0; //XXX
-                    return;
-                    break;
-            }
-
-            GLint prevTex;
-            ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prevTex);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D,
-                                            rbData->eglImageGlobalTexName);
-            ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0,
-                                                       texPname,
-                                                       params);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prevTex);
-            return;
-        }
-    }
-
-    ctx->dispatcher().glGetRenderbufferParameterivEXT(target,pname,params);
-}
-
-GL_API GLboolean GLAPIENTRY glIsFramebufferOES(GLuint framebuffer) {
-    GET_CTX_RET(GL_FALSE)
-    RET_AND_SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION,GL_FALSE);
-    if (framebuffer && ctx->shareGroup().Ptr()) {
-        return ctx->shareGroup()->isObject(FRAMEBUFFER,framebuffer) ? GL_TRUE : GL_FALSE;
-    }
-    return ctx->dispatcher().glIsFramebufferEXT(framebuffer);
-}
-
-GL_API void GLAPIENTRY glBindFramebufferOES(GLenum target, GLuint framebuffer) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) ,GL_INVALID_ENUM);
-    if (framebuffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(FRAMEBUFFER,framebuffer)) {
-        ctx->shareGroup()->genName(FRAMEBUFFER,framebuffer);
-        ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffer,
-                                         ObjectDataPtr(new FramebufferData(framebuffer)));
-    }
-    int globalBufferName = (framebuffer!=0) ? ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffer) : 0;
-    ctx->dispatcher().glBindFramebufferEXT(target,globalBufferName);
-
-    // update framebuffer binding state
-    ctx->setFramebufferBinding(framebuffer);
-}
-
-GL_API void GLAPIENTRY glDeleteFramebuffersOES(GLsizei n, const GLuint *framebuffers) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    for (int i=0;i<n;++i) {
-        GLuint globalBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffers[i]);
-        ctx->dispatcher().glDeleteFramebuffersEXT(1,&globalBufferName);
-    }
-}
-
-GL_API void GLAPIENTRY glGenFramebuffersOES(GLsizei n, GLuint *framebuffers) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if (ctx->shareGroup().Ptr()) {
-        for (int i=0;i<n;i++) {
-            framebuffers[i] = ctx->shareGroup()->genName(FRAMEBUFFER, 0, true);
-            ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffers[i],
-                                             ObjectDataPtr(new FramebufferData(framebuffers[i])));
-        }
-    }
-}
-
-GL_API GLenum GLAPIENTRY glCheckFramebufferStatusOES(GLenum target) {
-    GET_CTX_RET(0)
-    RET_AND_SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION,0);
-    RET_AND_SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) ,GL_INVALID_ENUM,0);
-    return ctx->dispatcher().glCheckFramebufferStatusEXT(target);
-}
-
-GL_API void GLAPIENTRY glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) || !GLEScmValidate::framebufferAttachment(attachment) ||
-                 !GLEScmValidate::textureTargetEx(textarget),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION);
-
-    GLuint globalTexName = 0;
-    if(texture) {
-        if (!ctx->shareGroup()->isObject(TEXTURE,texture)) {
-            ctx->shareGroup()->genName(TEXTURE,texture);
-        }
-        ObjectLocalName texname = TextureLocalName(textarget,texture);
-        globalTexName = ctx->shareGroup()->getGlobalName(TEXTURE,texname);
-    }
-
-    ctx->dispatcher().glFramebufferTexture2DEXT(target,attachment,textarget,globalTexName,level);
-
-    // Update the the current framebuffer object attachment state
-    GLuint fbName = ctx->getFramebufferBinding();
-    ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName);
-    if (fbObj.Ptr() != NULL) {
-        FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-        fbData->setAttachment(attachment, textarget, 
-                              texture, ObjectDataPtr(NULL));
-    }
-}
-
-GL_API void GLAPIENTRY glFramebufferRenderbufferOES(GLenum target, GLenum attachment,GLenum renderbuffertarget, GLuint renderbuffer) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) || 
-                 !GLEScmValidate::framebufferAttachment(attachment) ||
-                 !GLEScmValidate::renderbufferTarget(renderbuffertarget), GL_INVALID_ENUM);
-
-    SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION);
-
-    GLuint globalBufferName = 0;
-    ObjectDataPtr obj;
-
-    // generate the renderbuffer object if not yet exist
-    if (renderbuffer) {
-        if (!ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer)) {
-            ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer);
-            obj = ObjectDataPtr(new RenderbufferData());
-            ctx->shareGroup()->setObjectData(RENDERBUFFER,
-                                         renderbuffer,
-                                         ObjectDataPtr(new RenderbufferData()));
-        }
-        else {
-            obj = ctx->shareGroup()->getObjectData(RENDERBUFFER,renderbuffer);
-        }
-        globalBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer);
-    }
-
-    // Update the the current framebuffer object attachment state
-    GLuint fbName = ctx->getFramebufferBinding();
-    ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName);
-    if (fbObj.Ptr() != NULL) {
-        FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-        fbData->setAttachment(attachment, renderbuffertarget, renderbuffer, obj);
-    }
-
-    if (renderbuffer && obj.Ptr() != NULL) {
-        RenderbufferData *rbData = (RenderbufferData *)obj.Ptr();
-        if (rbData->sourceEGLImage != 0) {
-            //
-            // This renderbuffer object is an eglImage target
-            // attach the eglimage's texture instead the renderbuffer.
-            //
-            ctx->dispatcher().glFramebufferTexture2DEXT(target,
-                                                    attachment,
-                                                    GL_TEXTURE_2D,
-                                                    rbData->eglImageGlobalTexName,0);
-            return;
-        }
-    }
-
-    ctx->dispatcher().glFramebufferRenderbufferEXT(target,attachment,renderbuffertarget,globalBufferName);
-}
-
-GL_API void GLAPIENTRY glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint *params) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::framebufferTarget(target) || !GLEScmValidate::framebufferAttachment(attachment) ||
-                 !GLEScmValidate::framebufferAttachmentParams(pname), GL_INVALID_ENUM);
-
-    //
-    // Take the attachment attribute from our state - if available
-    //
-    GLuint fbName = ctx->getFramebufferBinding();
-    if (fbName) {
-        ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName);
-        if (fbObj.Ptr() != NULL) {
-            FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-            GLenum target;
-            GLuint name = fbData->getAttachment(attachment, &target, NULL);
-            if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES) {
-                *params = target;
-                return;
-            }
-            else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES) {
-                *params = name;
-                return;
-            }
-        }
-    }
-
-    ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(target,attachment,pname,params);
-}
-
-GL_API void GL_APIENTRY glGenerateMipmapOES(GLenum target) {
-    GET_CTX()
-    SET_ERROR_IF(!ctx->getCaps()->GL_EXT_FRAMEBUFFER_OBJECT,GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLEScmValidate::textureTargetLimited(target),GL_INVALID_ENUM);
-    ctx->dispatcher().glGenerateMipmapEXT(target);
-}
-
-GL_API void GL_APIENTRY glCurrentPaletteMatrixOES(GLuint index) {
-    GET_CTX()
-    SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION);
-    ctx->dispatcher().glCurrentPaletteMatrixARB(index);
-}
-
-GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES() {
-    GET_CTX()
-    SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION);
-    GLint matrix[16];
-    ctx->dispatcher().glGetIntegerv(GL_MODELVIEW_MATRIX,matrix);
-    ctx->dispatcher().glMatrixIndexuivARB(1,(GLuint*)matrix);
-
-}
-
-GL_API void GL_APIENTRY glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION);
-    ctx->dispatcher().glMatrixIndexPointerARB(size,type,stride,pointer);
-}
-
-GL_API void GL_APIENTRY glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) {
-    GET_CTX()
-    SET_ERROR_IF(!(ctx->getCaps()->GL_ARB_MATRIX_PALETTE && ctx->getCaps()->GL_ARB_VERTEX_BLEND),GL_INVALID_OPERATION);
-    ctx->dispatcher().glWeightPointerARB(size,type,stride,pointer);
-
-}
-
-GL_API void GL_APIENTRY glTexGenfOES (GLenum coord, GLenum pname, GLfloat param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM);
-    if (coord == GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glTexGenf(GL_S,pname,param);
-        ctx->dispatcher().glTexGenf(GL_T,pname,param);
-        ctx->dispatcher().glTexGenf(GL_R,pname,param);
-    }
-    else
-        ctx->dispatcher().glTexGenf(coord,pname,param);
-}
-
-GL_API void GL_APIENTRY glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM);
-    if (coord == GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glTexGenfv(GL_S,pname,params);
-        ctx->dispatcher().glTexGenfv(GL_T,pname,params);
-        ctx->dispatcher().glTexGenfv(GL_R,pname,params);
-    }
-    else
-        ctx->dispatcher().glTexGenfv(coord,pname,params);
-}
-GL_API void GL_APIENTRY glTexGeniOES (GLenum coord, GLenum pname, GLint param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM);
-    if (coord == GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glTexGeni(GL_S,pname,param);
-        ctx->dispatcher().glTexGeni(GL_T,pname,param);
-        ctx->dispatcher().glTexGeni(GL_R,pname,param);
-    }
-    else
-        ctx->dispatcher().glTexGeni(coord,pname,param);
-}
-GL_API void GL_APIENTRY glTexGenivOES (GLenum coord, GLenum pname, const GLint *params) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM);
-    if (coord == GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glTexGeniv(GL_S,pname,params);
-        ctx->dispatcher().glTexGeniv(GL_T,pname,params);
-        ctx->dispatcher().glTexGeniv(GL_R,pname,params);
-    }
-    else
-        ctx->dispatcher().glTexGeniv(coord,pname,params);
-}
-GL_API void GL_APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param) {
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM);
-    if (coord == GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glTexGenf(GL_S,pname,X2F(param));
-        ctx->dispatcher().glTexGenf(GL_T,pname,X2F(param));
-        ctx->dispatcher().glTexGenf(GL_R,pname,X2F(param));
-    }
-    else
-        ctx->dispatcher().glTexGenf(coord,pname,X2F(param));
-}
-GL_API void GL_APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params) {
-    GLfloat tmpParams[1];
-    GET_CTX()
-    SET_ERROR_IF(!GLEScmValidate::texGen(coord,pname),GL_INVALID_ENUM);
-    tmpParams[0] = X2F(params[0]);
-    if (coord == GL_TEXTURE_GEN_STR_OES) {
-        ctx->dispatcher().glTexGenfv(GL_S,pname,tmpParams);
-        ctx->dispatcher().glTexGenfv(GL_T,pname,tmpParams);
-        ctx->dispatcher().glTexGenfv(GL_R,pname,tmpParams);
-    }
-    else
-        ctx->dispatcher().glTexGenfv(coord,pname,tmpParams);
-}
-
-GL_API void GL_APIENTRY glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat *params) {
-    GET_CTX()
-    if (coord == GL_TEXTURE_GEN_STR_OES)
-    {
-        GLfloat state_s = GL_FALSE;
-        GLfloat state_t = GL_FALSE;
-        GLfloat state_r = GL_FALSE;
-        ctx->dispatcher().glGetTexGenfv(GL_S,pname,&state_s);
-        ctx->dispatcher().glGetTexGenfv(GL_T,pname,&state_t);
-        ctx->dispatcher().glGetTexGenfv(GL_R,pname,&state_r);
-        *params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE;
-    }
-    else
-        ctx->dispatcher().glGetTexGenfv(coord,pname,params);
-
-}
-GL_API void GL_APIENTRY glGetTexGenivOES (GLenum coord, GLenum pname, GLint *params) {
-    GET_CTX()
-    if (coord == GL_TEXTURE_GEN_STR_OES)
-    {
-        GLint state_s = GL_FALSE;
-        GLint state_t = GL_FALSE;
-        GLint state_r = GL_FALSE;
-        ctx->dispatcher().glGetTexGeniv(GL_S,pname,&state_s);
-        ctx->dispatcher().glGetTexGeniv(GL_T,pname,&state_t);
-        ctx->dispatcher().glGetTexGeniv(GL_R,pname,&state_r);
-        *params = state_s && state_t && state_r ? GL_TRUE: GL_FALSE;
-    }
-    else
-        ctx->dispatcher().glGetTexGeniv(coord,pname,params);
-}
-
-GL_API void GL_APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params) {
-    GET_CTX()
-    GLfloat tmpParams[1];
-
-    if (coord == GL_TEXTURE_GEN_STR_OES)
-    {
-        GLfloat state_s = GL_FALSE;
-        GLfloat state_t = GL_FALSE;
-        GLfloat state_r = GL_FALSE;
-        ctx->dispatcher().glGetTexGenfv(GL_TEXTURE_GEN_S,pname,&state_s);
-        ctx->dispatcher().glGetTexGenfv(GL_TEXTURE_GEN_T,pname,&state_t);
-        ctx->dispatcher().glGetTexGenfv(GL_TEXTURE_GEN_R,pname,&state_r);
-        tmpParams[0] = state_s && state_t && state_r ? GL_TRUE: GL_FALSE;
-    }
-    else
-        ctx->dispatcher().glGetTexGenfv(coord,pname,tmpParams);
-
-    params[0] = F2X(tmpParams[1]);
-}
-
-template <class T, GLenum TypeName>
-void glDrawTexOES (T x, T y, T z, T width, T height) {
-    GET_CTX()
-
-    SET_ERROR_IF((width<=0 || height<=0),GL_INVALID_VALUE);
-
-    ctx->drawValidate();
-
-    int numClipPlanes;
-
-    GLint viewport[4];
-    z = (z>1 ? 1 : (z<0 ?  0 : z));
-
-    T     vertices[4*3] = {x , y, z,
-                             x , y+height, z,
-                             x+width, y+height, z,
-                             x+width, y, z};
-    GLfloat texels[ctx->getMaxTexUnits()][4*2];
-    memset((void*)texels, 0, ctx->getMaxTexUnits()*4*2*sizeof(GLfloat));
-
-    ctx->dispatcher().glPushClientAttrib(GL_CLIENT_VERTEX_ARRAY_BIT);
-    ctx->dispatcher().glPushAttrib(GL_TRANSFORM_BIT);
-
-    //setup projection matrix to draw in viewport aligned coordinates
-    ctx->dispatcher().glMatrixMode(GL_PROJECTION);
-    ctx->dispatcher().glPushMatrix();
-    ctx->dispatcher().glLoadIdentity();
-    ctx->dispatcher().glGetIntegerv(GL_VIEWPORT,viewport);
-    ctx->dispatcher().glOrtho(viewport[0],viewport[0] + viewport[2],viewport[1],viewport[1]+viewport[3],0,-1);
-    //setup texture matrix
-    ctx->dispatcher().glMatrixMode(GL_TEXTURE);
-    ctx->dispatcher().glPushMatrix();
-    ctx->dispatcher().glLoadIdentity();
-    //setup modelview matrix
-    ctx->dispatcher().glMatrixMode(GL_MODELVIEW);
-    ctx->dispatcher().glPushMatrix();
-    ctx->dispatcher().glLoadIdentity();
-    //backup vbo's
-    int array_buffer,element_array_buffer;
-    glGetIntegerv(GL_ARRAY_BUFFER_BINDING,&array_buffer);
-    glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING,&element_array_buffer);
-    ctx->dispatcher().glBindBuffer(GL_ARRAY_BUFFER,0);
-    ctx->dispatcher().glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
-
-    //disable clip planes
-    ctx->dispatcher().glGetIntegerv(GL_MAX_CLIP_PLANES,&numClipPlanes);
-    for (int i=0;i<numClipPlanes;++i)
-        ctx->dispatcher().glDisable(GL_CLIP_PLANE0+i);
-
-    int nTexPtrs = 0;
-    for (int i=0;i<ctx->getMaxTexUnits();++i) {
-        if (ctx->isTextureUnitEnabled(GL_TEXTURE0+i)) {
-            TextureData * texData = NULL;
-            unsigned int texname = ctx->getBindedTexture(GL_TEXTURE0+i,GL_TEXTURE_2D);
-            ObjectLocalName tex = TextureLocalName(GL_TEXTURE_2D,texname);
-            ctx->dispatcher().glClientActiveTexture(GL_TEXTURE0+i);
-            ObjectDataPtr objData = ctx->shareGroup()->getObjectData(TEXTURE,tex);
-            if (objData.Ptr()) {
-                texData = (TextureData*)objData.Ptr();
-                //calculate texels
-                texels[i][0] = (float)(texData->crop_rect[0])/(float)(texData->width);
-                texels[i][1] = (float)(texData->crop_rect[1])/(float)(texData->height);
-
-                texels[i][2] = (float)(texData->crop_rect[0])/(float)(texData->width);
-                texels[i][3] = (float)(texData->crop_rect[3]+texData->crop_rect[1])/(float)(texData->height);
-
-                texels[i][4] = (float)(texData->crop_rect[2]+texData->crop_rect[0])/(float)(texData->width);
-                texels[i][5] = (float)(texData->crop_rect[3]+texData->crop_rect[1])/(float)(texData->height);
-
-                texels[i][6] = (float)(texData->crop_rect[2]+texData->crop_rect[0])/(float)(texData->width);
-                texels[i][7] = (float)(texData->crop_rect[1])/(float)(texData->height);
-
-                ctx->dispatcher().glTexCoordPointer(2,GL_FLOAT,0,texels[i]);
-                nTexPtrs++;
-             }
-        }
-    }
-
-    if (nTexPtrs>0) {
-        //draw rectangle - only if we have some textures enabled & ready
-        ctx->dispatcher().glEnableClientState(GL_VERTEX_ARRAY);
-        ctx->dispatcher().glVertexPointer(3,TypeName,0,vertices);
-        ctx->dispatcher().glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-        ctx->dispatcher().glDrawArrays(GL_TRIANGLE_FAN,0,4);
-    }
-
-    //restore vbo's
-    ctx->dispatcher().glBindBuffer(GL_ARRAY_BUFFER,array_buffer);
-    ctx->dispatcher().glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,element_array_buffer);
-
-    //restore matrix state
-
-    ctx->dispatcher().glMatrixMode(GL_MODELVIEW);
-    ctx->dispatcher().glPopMatrix();
-    ctx->dispatcher().glMatrixMode(GL_TEXTURE);
-    ctx->dispatcher().glPopMatrix();
-    ctx->dispatcher().glMatrixMode(GL_PROJECTION);
-    ctx->dispatcher().glPopMatrix();
-
-    ctx->dispatcher().glPopAttrib();
-    ctx->dispatcher().glPopClientAttrib();
-}
-
-GL_API void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height) {
-    glDrawTexOES<GLshort,GL_SHORT>(x,y,z,width,height);
-}
-
-GL_API void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height) {
-    glDrawTexOES<GLint,GL_INT>(x,y,z,width,height);
-}
-
-GL_API void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height) {
-    glDrawTexOES<GLfloat,GL_FLOAT>(x,y,z,width,height);
-}
-
-GL_API void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height) {
-    glDrawTexOES<GLfloat,GL_FLOAT>(X2F(x),X2F(y),X2F(z),X2F(width),X2F(height));
-}
-
-GL_API void GL_APIENTRY glDrawTexsvOES (const GLshort * coords) {
-    glDrawTexOES<GLshort,GL_SHORT>(coords[0],coords[1],coords[2],coords[3],coords[4]);
-}
-
-GL_API void GL_APIENTRY glDrawTexivOES (const GLint * coords) {
-    glDrawTexOES<GLint,GL_INT>(coords[0],coords[1],coords[2],coords[3],coords[4]);
-}
-
-GL_API void GL_APIENTRY glDrawTexfvOES (const GLfloat * coords) {
-    glDrawTexOES<GLfloat,GL_FLOAT>(coords[0],coords[1],coords[2],coords[3],coords[4]);
-}
-
-GL_API void GL_APIENTRY glDrawTexxvOES (const GLfixed * coords) {
-    glDrawTexOES<GLfloat,GL_FLOAT>(X2F(coords[0]),X2F(coords[1]),X2F(coords[2]),X2F(coords[3]),X2F(coords[4]));
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp
deleted file mode 100644
index 891b4e3..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLEScmUtils.h"
-
-
-size_t glParamSize(GLenum param)
-{
-    size_t s = 0;
-
-    switch(param)
-    {
-    case GL_MAX_TEXTURE_SIZE:
-    //case GL_TEXTURE_GEN_MODE_OES:
-    case GL_TEXTURE_ENV_MODE:
-    case GL_FOG_MODE:
-    case GL_FOG_DENSITY:
-    case GL_FOG_START:
-    case GL_FOG_END:
-    case GL_SPOT_EXPONENT:
-    case GL_CONSTANT_ATTENUATION:
-    case GL_LINEAR_ATTENUATION:
-    case GL_QUADRATIC_ATTENUATION:
-    case GL_SHININESS:
-    case GL_LIGHT_MODEL_TWO_SIDE:
-    case GL_POINT_SIZE:
-    case GL_POINT_SIZE_MIN:
-    case GL_POINT_SIZE_MAX:
-    case GL_POINT_FADE_THRESHOLD_SIZE:
-    case GL_CULL_FACE_MODE:
-    case GL_FRONT_FACE:
-    case GL_SHADE_MODEL:
-    case GL_DEPTH_WRITEMASK:
-    case GL_DEPTH_CLEAR_VALUE:
-    case GL_STENCIL_FAIL:
-    case GL_STENCIL_PASS_DEPTH_FAIL:
-    case GL_STENCIL_PASS_DEPTH_PASS:
-    case GL_STENCIL_REF:
-    case GL_STENCIL_WRITEMASK:
-    case GL_MATRIX_MODE:
-    case GL_MODELVIEW_STACK_DEPTH:
-    case GL_PROJECTION_STACK_DEPTH:
-    case GL_TEXTURE_STACK_DEPTH:
-    case GL_ALPHA_TEST_FUNC:
-    case GL_ALPHA_TEST_REF:
-    case GL_BLEND_DST:
-    case GL_BLEND_SRC:
-    case GL_LOGIC_OP_MODE:
-    case GL_SCISSOR_TEST:
-    case GL_MAX_TEXTURE_UNITS:
-        s = 1;
-        break;
-    case GL_ALIASED_LINE_WIDTH_RANGE:
-    case GL_ALIASED_POINT_SIZE_RANGE:
-    case GL_DEPTH_RANGE:
-    case GL_MAX_VIEWPORT_DIMS:
-    case GL_SMOOTH_POINT_SIZE_RANGE:
-    case GL_SMOOTH_LINE_WIDTH_RANGE:
-        s= 2;
-        break;
-    case GL_SPOT_DIRECTION:
-    case GL_POINT_DISTANCE_ATTENUATION:
-    case GL_CURRENT_NORMAL:
-        s =  3;
-        break;
-    case GL_CURRENT_TEXTURE_COORDS:
-    case GL_CURRENT_COLOR:
-    case GL_FOG_COLOR:
-    case GL_AMBIENT:
-    case GL_DIFFUSE:
-    case GL_SPECULAR:
-    case GL_EMISSION:
-    case GL_POSITION:
-    case GL_LIGHT_MODEL_AMBIENT:
-    case GL_TEXTURE_ENV_COLOR:
-    case GL_SCISSOR_BOX:
-    case GL_VIEWPORT:
-    //case GL_TEXTURE_CROP_RECT_OES:
-        s =  4;
-        break;
-    case GL_MODELVIEW_MATRIX:
-    case GL_PROJECTION_MATRIX:
-    case GL_TEXTURE_MATRIX:
-        s = 16;
-    default:
-        s = 1; // assume 1
-    }
-    return s;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.h b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.h
deleted file mode 100644
index 38ad6bc..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmUtils.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLES_UTILS_H
-#define GLES_UTILS_H
-#include <GLES/gl.h>
-#include <stdlib.h>
-
-size_t glParamSize(GLenum param);
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp
deleted file mode 100644
index 1970232..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.cpp
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLEScmValidate.h"
-#include <GLcommon/GLutils.h>
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#include <GLcommon/GLEScontext.h>
-#include "GLEScmValidate.h"
-
-
-bool GLEScmValidate::lightEnum(GLenum e,unsigned int maxLights) {
-    return  e >=GL_LIGHT0 && e <= (GL_LIGHT0+maxLights);
-}
-
-bool GLEScmValidate::clipPlaneEnum(GLenum e,unsigned int maxClipPlanes) {
-    return  e >=GL_CLIP_PLANE0 && e <= (GL_CLIP_PLANE0+maxClipPlanes);
-}
-
-bool GLEScmValidate::alphaFunc(GLenum f) {
-    switch(f) {
-    case GL_NEVER:
-    case GL_LESS:
-    case GL_EQUAL:
-    case GL_LEQUAL:
-    case GL_GREATER:
-    case GL_NOTEQUAL:
-    case GL_GEQUAL:
-    case GL_ALWAYS:
-        return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::blendSrc(GLenum s) {
-   switch(s) {
-    case GL_ZERO:
-    case GL_ONE:
-    case GL_DST_COLOR:
-    case GL_ONE_MINUS_DST_COLOR:
-    case GL_SRC_ALPHA:
-    case GL_ONE_MINUS_SRC_ALPHA:
-    case GL_DST_ALPHA:
-    case GL_ONE_MINUS_DST_ALPHA:
-    case GL_SRC_ALPHA_SATURATE:
-        return true;
-  }
-  return false;
-}
-
-bool GLEScmValidate::vertexPointerParams(GLint size,GLsizei stride) {
-    return ((size >=2) && (size <= 4)) && (stride >=0) ;
-}
-
-bool GLEScmValidate::colorPointerParams(GLint size,GLsizei stride) {
-    return ((size >=3) && (size <= 4)) && (stride >=0) ;
-}
-
-bool GLEScmValidate::texCoordPointerParams(GLint size,GLsizei stride) {
-    return ((size >=2) && (size <= 4)) && (stride >=0) ;
-}
-
-bool GLEScmValidate::supportedArrays(GLenum arr) {
-    switch(arr) {
-    case GL_COLOR_ARRAY:
-    case GL_NORMAL_ARRAY:
-    case GL_POINT_SIZE_ARRAY_OES:
-    case GL_TEXTURE_COORD_ARRAY:
-    case GL_VERTEX_ARRAY:
-        return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::hintTargetMode(GLenum target,GLenum mode) {
-   switch(target) {
-   case GL_FOG_HINT:
-   case GL_GENERATE_MIPMAP_HINT:
-   case GL_LINE_SMOOTH_HINT:
-   case GL_PERSPECTIVE_CORRECTION_HINT:
-   case GL_POINT_SMOOTH_HINT:
-       break;
-   default: return false;
-   }
-   switch(mode) {
-   case GL_FASTEST:
-   case GL_NICEST:
-   case GL_DONT_CARE:
-       break;
-   default: return false;
-   }
-   return true;
-}
-
-bool GLEScmValidate::texParams(GLenum target,GLenum pname) {
-    switch(pname) {
-    case GL_TEXTURE_MIN_FILTER:
-    case GL_TEXTURE_MAG_FILTER:
-    case GL_TEXTURE_WRAP_S:
-    case GL_TEXTURE_WRAP_T:
-    case GL_TEXTURE_CROP_RECT_OES:
-    case GL_GENERATE_MIPMAP:
-        break;
-    default:
-        return false;
-    }
-    return (target == GL_TEXTURE_2D)||(target == GL_TEXTURE_CUBE_MAP_OES);
-}
-
-bool GLEScmValidate::texEnv(GLenum target,GLenum pname) {
-    switch(pname) {
-    case GL_TEXTURE_ENV_MODE:
-    case GL_TEXTURE_ENV_COLOR:
-    case GL_COMBINE_RGB:
-    case GL_COMBINE_ALPHA:
-    case GL_SRC0_RGB:
-    case GL_SRC1_RGB:
-    case GL_SRC2_RGB:
-    case GL_SRC0_ALPHA:
-    case GL_SRC1_ALPHA:
-    case GL_SRC2_ALPHA:
-    case GL_OPERAND0_RGB:
-    case GL_OPERAND1_RGB:
-    case GL_OPERAND2_RGB:
-    case GL_OPERAND0_ALPHA:
-    case GL_OPERAND1_ALPHA:
-    case GL_OPERAND2_ALPHA:
-    case GL_RGB_SCALE:
-    case GL_ALPHA_SCALE:
-    case GL_COORD_REPLACE_OES:
-        break;
-    default:
-        return false;
-    }
-    return (target == GL_TEXTURE_ENV || target == GL_POINT_SPRITE_OES);
-}
-
-bool GLEScmValidate::capability(GLenum cap,int maxLights,int maxClipPlanes) {
-    switch(cap) {
-    case GL_ALPHA_TEST:
-    case GL_BLEND:
-    case GL_COLOR_ARRAY:
-    case GL_COLOR_LOGIC_OP:
-    case GL_COLOR_MATERIAL:
-    case GL_CULL_FACE:
-    case GL_DEPTH_TEST:
-    case GL_DITHER:
-    case GL_FOG:
-    case GL_LIGHTING:
-    case GL_LINE_SMOOTH:
-    case GL_MULTISAMPLE:
-    case GL_NORMAL_ARRAY:
-    case GL_NORMALIZE:
-    case GL_POINT_SIZE_ARRAY_OES:
-    case GL_POINT_SMOOTH:
-    case GL_POINT_SPRITE_OES:
-    case GL_POLYGON_OFFSET_FILL:
-    case GL_RESCALE_NORMAL:
-    case GL_SAMPLE_ALPHA_TO_COVERAGE:
-    case GL_SAMPLE_ALPHA_TO_ONE:
-    case GL_SAMPLE_COVERAGE:
-    case GL_SCISSOR_TEST:
-    case GL_STENCIL_TEST:
-    case GL_TEXTURE_2D:
-    case GL_TEXTURE_COORD_ARRAY:
-    case GL_VERTEX_ARRAY:
-        return true;
-    }
-    return GLEScmValidate::lightEnum(cap,maxLights) || GLEScmValidate::clipPlaneEnum(cap,maxClipPlanes);
-}
-
-
-bool GLEScmValidate::texCompImgFrmt(GLenum format) {
-    switch(format) {
-    case GL_PALETTE4_RGB8_OES:
-    case GL_PALETTE4_RGBA8_OES:
-    case GL_PALETTE4_R5_G6_B5_OES:
-    case GL_PALETTE4_RGBA4_OES:
-    case GL_PALETTE4_RGB5_A1_OES:
-    case GL_PALETTE8_RGB8_OES:
-    case GL_PALETTE8_RGBA8_OES:
-    case GL_PALETTE8_R5_G6_B5_OES:
-    case GL_PALETTE8_RGBA4_OES:
-    case GL_PALETTE8_RGB5_A1_OES:
-        return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::blendDst(GLenum d) {
-   switch(d) {
-    case GL_ZERO:
-    case GL_ONE:
-    case GL_SRC_COLOR:
-    case GL_ONE_MINUS_SRC_COLOR:
-    case GL_SRC_ALPHA:
-    case GL_ONE_MINUS_SRC_ALPHA:
-    case GL_DST_ALPHA:
-    case GL_ONE_MINUS_DST_ALPHA:
-        return true;
-   }
-   return false;
-}
-
-bool GLEScmValidate::renderbufferInternalFrmt(GLEScontext* ctx, GLenum internalformat)
-{
-    switch (internalformat) {
-    case GL_DEPTH_COMPONENT16_OES:
-    case GL_RGBA4_OES:
-    case GL_RGB5_A1_OES:
-    case GL_RGB565_OES:
-    case GL_STENCIL_INDEX1_OES:
-    case GL_STENCIL_INDEX4_OES:
-    case GL_STENCIL_INDEX8_OES:
-    case GL_RGB8_OES:
-    case GL_RGBA8_OES:
-    case GL_DEPTH_COMPONENT24_OES:
-    case GL_DEPTH_COMPONENT32_OES:
-        return true;
-    }
-    if (ctx->getCaps()->GL_EXT_PACKED_DEPTH_STENCIL && internalformat==GL_DEPTH24_STENCIL8_OES)
-        return true;
-
-    return false;
-}
-
-bool GLEScmValidate::stencilOp(GLenum param) {
-    switch (param) {
-    case GL_KEEP:
-    case GL_ZERO:
-    case GL_REPLACE:
-    case GL_INCR:
-    case GL_DECR:
-    case GL_INVERT:
-    case GL_INCR_WRAP_OES:
-    case GL_DECR_WRAP_OES:
-      return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::texGen(GLenum coord, GLenum pname) {
-    return (coord == GL_TEXTURE_GEN_STR_OES && pname == GL_TEXTURE_GEN_MODE_OES);
-}
-
-bool GLEScmValidate::colorPointerType(GLenum type){
-    switch(type){
-    case GL_UNSIGNED_BYTE:
-    case GL_FIXED:
-    case GL_FLOAT:
-        return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::normalPointerType(GLenum type){
-
-    switch(type){
-    case GL_BYTE:
-    case GL_SHORT:
-    case GL_FLOAT:
-    case GL_FIXED:
-        return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::pointPointerType(GLenum type){
-    return type == GL_FIXED || type == GL_FLOAT;
-}
-
-bool GLEScmValidate::texCoordPointerType(GLenum type){
-    switch(type){
-    case GL_BYTE:
-    case GL_SHORT:
-    case GL_FLOAT:
-    case GL_FIXED:
-        return true;
-    }
-    return false;
-}
-
-bool GLEScmValidate::vertexPointerType(GLenum type){
-    switch(type){
-    case GL_BYTE:
-    case GL_SHORT:
-    case GL_FLOAT:
-    case GL_FIXED:
-        return true;
-    }
-    return false;
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.h b/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.h
deleted file mode 100644
index 9bc3393..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_CM/GLEScmValidate.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLES_CM_VALIDATE_H
-#define GLES_CM_VALIDATE_H
-
-#include <GLES/gl.h>
-#include <GLcommon/GLESvalidate.h>
-struct GLEScmValidate : public GLESvalidate
-{
-static bool blendSrc(GLenum s);
-static bool blendDst(GLenum d);
-static bool lightEnum(GLenum e,unsigned int maxLIghts);
-static bool clipPlaneEnum(GLenum e,unsigned int maxClipPlanes);
-static bool alphaFunc(GLenum f);
-static bool vertexPointerParams(GLint size,GLsizei stride);
-static bool colorPointerParams(GLint size,GLsizei stride);
-static bool supportedArrays(GLenum arr);
-static bool hintTargetMode(GLenum target,GLenum mode);
-static bool capability(GLenum cap,int maxLights,int maxClipPlanes);
-static bool texParams(GLenum target,GLenum pname);
-static bool texCoordPointerParams(GLint size,GLsizei stride);
-
-static bool texEnv(GLenum target,GLenum pname);
-static bool texCompImgFrmt(GLenum format);
-
-static bool renderbufferInternalFrmt(GLEScontext * ctx, GLenum internalformat);
-static bool stencilOp(GLenum param);
-static bool texGen(GLenum coord,GLenum pname);
-
-static bool colorPointerType(GLenum type);
-static bool normalPointerType(GLenum type);
-static bool pointPointerType(GLenum type);
-static bool texCoordPointerType(GLenum type);
-static bool vertexPointerType(GLenum type);
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk b/tools/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk
deleted file mode 100644
index a7c68b1..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/Android.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-### GLES_CM host implementation (On top of OpenGL) ########################
-$(call emugl-begin-host-shared-library,libGLES_V2_translator)
-$(call emugl-import, libGLcommon)
-
-LOCAL_SRC_FILES :=                    \
-     GLESv2Imp.cpp                    \
-     GLESv2Context.cpp                \
-     GLESv2Validate.cpp               \
-     ShaderParser.cpp                 \
-     ProgramData.cpp
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp
deleted file mode 100644
index 92f9319..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include "GLESv2Context.h"
-
-
-
-void GLESv2Context::init() {
-    android::Mutex::Autolock mutex(s_lock);
-    if(!m_initialized) {
-        s_glDispatch.dispatchFuncs(GLES_2_0);
-        GLEScontext::init();
-        for(int i=0; i < s_glSupport.maxVertexAttribs;i++){
-            m_map[i] = new GLESpointer();
-        }
-        setAttribute0value(0.0, 0.0, 0.0, 1.0);
-    }
-    m_initialized = true;
-}
-
-GLESv2Context::GLESv2Context():GLEScontext(), m_att0Array(NULL), m_att0ArrayLength(0), m_att0NeedsDisable(false){};
-
-GLESv2Context::~GLESv2Context()
-{
-    delete[] m_att0Array;
-}
-
-void GLESv2Context::setAttribute0value(float x, float y, float z, float w)
-{
-    m_attribute0value[0] = x;
-    m_attribute0value[1] = y;
-    m_attribute0value[2] = z;
-    m_attribute0value[3] = w;
-}
-
-void GLESv2Context::validateAtt0PreDraw(unsigned int count)
-{
-    m_att0NeedsDisable = false;
-
-    if(count == 0)
-        return;
-
-    int enabled = 0;
-    s_glDispatch.glGetVertexAttribiv(0, GL_VERTEX_ATTRIB_ARRAY_ENABLED, &enabled);
-    if(enabled)
-        return;
-
-    if(count > m_att0ArrayLength)
-    {
-        delete [] m_att0Array; 
-        m_att0Array = new GLfloat[4*count];
-        m_att0ArrayLength = count;
-    }
-
-    for(unsigned int i=0; i<count; i++)
-        memcpy(m_att0Array+i*4, m_attribute0value, 4*sizeof(GLfloat));
-
-    s_glDispatch.glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, m_att0Array);
-    s_glDispatch.glEnableVertexAttribArray(0);
-
-    m_att0NeedsDisable = true;
-}
-
-void GLESv2Context::validateAtt0PostDraw(void)
-{
-    if(m_att0NeedsDisable)
-        s_glDispatch.glDisableVertexAttribArray(0);
-
-    m_att0NeedsDisable = false;
-}
-
-void GLESv2Context::setupArraysPointers(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) {
-    ArraysMap::iterator it;
-
-    //going over all clients arrays Pointers
-    for ( it=m_map.begin() ; it != m_map.end(); it++ ) {
-        GLenum array_id   = (*it).first;
-        GLESpointer* p = (*it).second;
-        if(!isArrEnabled(array_id)) continue;
-
-        unsigned int size = p->getSize();
-
-        if(needConvert(cArrs,first,count,type,indices,direct,p,array_id)){
-            //conversion has occured
-            ArrayData currentArr = cArrs.getCurrentArray();
-            setupArr(currentArr.data,array_id,currentArr.type,size,currentArr.stride, p->getNormalized());
-            ++cArrs;
-        } else {
-            setupArr(p->getData(),array_id,p->getType(),
-                     size,p->getStride(), p->getNormalized());
-        }
-    }
-}
-
-//setting client side arr
-void GLESv2Context::setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int index){
-     if(arr == NULL) return;
-     s_glDispatch.glVertexAttribPointer(arrayType,size,dataType,normalized,stride,arr);
-}
-
-bool GLESv2Context::needConvert(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) {
-
-    bool usingVBO = p->isVBO();
-    GLenum arrType = p->getType();
-    /*
-     conversion is not necessary in the following cases:
-      (*) array type is not fixed
-    */
-    if(arrType != GL_FIXED) return false;
-
-    if(!usingVBO) {
-        if (direct) {
-            convertDirect(cArrs,first,count,array_id,p);
-        } else {
-            convertIndirect(cArrs,count,type,indices,array_id,p);
-        }
-    } else {
-        if (direct) {
-            convertDirectVBO(cArrs,first,count,array_id,p) ;
-        } else {
-            convertIndirectVBO(cArrs,count,type,indices,array_id,p);
-        }
-    }
-    return true;
-}
-
-void GLESv2Context::initExtensionString() {
-    *s_glExtensions = "GL_OES_EGL_image GL_OES_depth24 GL_OES_depth32 GL_OES_element_index_uint "
-                      "GL_OES_texture_float GL_OES_texture_float_linear "
-                      "GL_OES_compressed_paletted_texture GL_OES_compressed_ETC1_RGB8_texture GL_OES_depth_texture ";
-    if (s_glSupport.GL_ARB_HALF_FLOAT_PIXEL || s_glSupport.GL_NV_HALF_FLOAT)
-        *s_glExtensions+="GL_OES_texture_half_float GL_OES_texture_half_float_linear ";
-    if (s_glSupport.GL_EXT_PACKED_DEPTH_STENCIL)
-        *s_glExtensions+="GL_OES_packed_depth_stencil ";
-    if (s_glSupport.GL_ARB_HALF_FLOAT_VERTEX)
-        *s_glExtensions+="GL_OES_vertex_half_float ";
-    if (s_glSupport.GL_OES_STANDARD_DERIVATIVES)
-        *s_glExtensions+="GL_OES_standard_derivatives ";
-}
-
-int GLESv2Context::getMaxTexUnits() {
-    return getCaps()->maxTexImageUnits;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.h b/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.h
deleted file mode 100644
index 9cfc067..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Context.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef GLES_V2_CONTEXT_H
-#define GLES_V2_CONTEXT_H
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <GLcommon/GLDispatch.h>
-#include <GLcommon/GLEScontext.h>
-#include <GLcommon/objectNameManager.h>
-#include <utils/threads.h>
-
-
-
-class GLESv2Context : public GLEScontext{
-public:
-    void init();
-    GLESv2Context();
-    virtual ~GLESv2Context();
-    void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct);
-    int  getMaxTexUnits();
-
-    // This whole att0 thing is about a incompatibility between GLES and OpenGL.
-    // GLES allows a vertex shader attribute to be in location 0 and have a
-    // current value, while OpenGL is not very clear about this, which results
-    // in each implementation doing something different.
-    void setAttribute0value(float x, float y, float z, float w);
-    void validateAtt0PreDraw(unsigned int count);
-    void validateAtt0PostDraw(void);
-    const float* getAtt0(void) {return m_attribute0value;}
-
-protected:
-    bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id);
-private:
-    void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride,GLboolean normalized, int pointsIndex = -1);
-    void initExtensionString();
-
-    float m_attribute0value[4];
-    GLfloat* m_att0Array;
-    unsigned int m_att0ArrayLength;
-    bool m_att0NeedsDisable;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp
deleted file mode 100644
index 3c48a43..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Imp.cpp
+++ /dev/null
@@ -1,2081 +0,0 @@
-/*
-* Copyright(C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0(the "License"){    GET_CTX();}
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifdef _WIN32
-#undef  GL_APICALL
-#define GL_API __declspec(dllexport)
-#define GL_APICALL __declspec(dllexport)
-#endif
-
-#define GL_GLEXT_PROTOTYPES
-#include <stdio.h>
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#include <GLcommon/TranslatorIfaces.h>
-#include <GLcommon/gldefs.h>
-#include "GLESv2Context.h"
-#include "GLESv2Validate.h"
-#include "ShaderParser.h"
-#include "ProgramData.h"
-#include <GLcommon/TextureUtils.h>
-#include <GLcommon/FramebufferData.h>
-
-extern "C" {
-
-//decleration
-static void initContext(GLEScontext* ctx,ShareGroupPtr grp);
-static void deleteGLESContext(GLEScontext* ctx);
-static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp);
-static GLEScontext* createGLESContext();
-static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName);
-
-}
-
-/************************************** GLES EXTENSIONS *********************************************************/
-//extentions descriptor
-typedef std::map<std::string, __translatorMustCastToProperFunctionPointerType> ProcTableMap;
-ProcTableMap *s_glesExtensions = NULL;
-/****************************************************************************************************************/
-
-static EGLiface*  s_eglIface = NULL;
-static GLESiface  s_glesIface = {
-    createGLESContext:createGLESContext,
-    initContext      :initContext,
-    deleteGLESContext:deleteGLESContext,
-    flush            :(FUNCPTR)glFlush,
-    finish           :(FUNCPTR)glFinish,
-    setShareGroup    :setShareGroup,
-    getProcAddress   :getProcAddress
-};
-
-#include <GLcommon/GLESmacros.h>
-
-extern "C" {
-
-static void initContext(GLEScontext* ctx,ShareGroupPtr grp) {
-    if (!ctx->isInitialized()) {
-        ctx->setShareGroup(grp);
-        ctx->init();
-        glBindTexture(GL_TEXTURE_2D,0);
-        glBindTexture(GL_TEXTURE_CUBE_MAP,0);
-    }
-}
-static GLEScontext* createGLESContext() {
-    return new GLESv2Context();
-}
-
-static void deleteGLESContext(GLEScontext* ctx) {
-    delete ctx;
-}
-
-static void setShareGroup(GLEScontext* ctx,ShareGroupPtr grp) {
-    if(ctx) {
-        ctx->setShareGroup(grp);
-    }
-}
-
-static __translatorMustCastToProperFunctionPointerType getProcAddress(const char* procName) {
-    GET_CTX_RET(NULL)
-    ctx->getGlobalLock();
-    static bool proc_table_initialized = false;
-    if (!proc_table_initialized) {
-        proc_table_initialized = true;
-        if (!s_glesExtensions)
-            s_glesExtensions = new ProcTableMap();
-        else
-            s_glesExtensions->clear();
-        (*s_glesExtensions)["glEGLImageTargetTexture2DOES"] = (__translatorMustCastToProperFunctionPointerType)glEGLImageTargetTexture2DOES;
-        (*s_glesExtensions)["glEGLImageTargetRenderbufferStorageOES"]=(__translatorMustCastToProperFunctionPointerType)glEGLImageTargetRenderbufferStorageOES;
-    }
-    __translatorMustCastToProperFunctionPointerType ret=NULL;
-    ProcTableMap::iterator val = s_glesExtensions->find(procName);
-    if (val!=s_glesExtensions->end())
-        ret = val->second;
-    ctx->releaseGlobalLock();
-
-    return ret;
-}
-
-GL_APICALL GLESiface* __translator_getIfaces(EGLiface* eglIface){
-    s_eglIface = eglIface;
-    return & s_glesIface;
-}
-
-}
-
-static ObjectLocalName TextureLocalName(GLenum target,unsigned int tex) {
-    GET_CTX_RET(0);
-    return (tex!=0? tex : ctx->getDefaultTextureName(target));
-}
-
-static TextureData* getTextureData(ObjectLocalName tex) {
-    GET_CTX_RET(NULL);
-    TextureData *texData = NULL;
-    ObjectDataPtr objData = ctx->shareGroup()->getObjectData(TEXTURE,tex);
-    if(!objData.Ptr()){
-        texData = new TextureData();
-        ctx->shareGroup()->setObjectData(TEXTURE, tex, ObjectDataPtr(texData));
-    } else {
-        texData = (TextureData*)objData.Ptr();
-    }
-    return texData;
-}
-
-static TextureData* getTextureTargetData(GLenum target){
-    GET_CTX_RET(NULL);
-    unsigned int tex = ctx->getBindedTexture(target);
-    return getTextureData(TextureLocalName(target,tex));
-}
-
-GL_APICALL void  GL_APIENTRY glActiveTexture(GLenum texture){
-    GET_CTX_V2();
-    SET_ERROR_IF (!GLESv2Validate::textureEnum(texture,ctx->getMaxTexUnits()),GL_INVALID_ENUM);
-    ctx->setActiveTexture(texture);
-    ctx->dispatcher().glActiveTexture(texture);
-}
-
-GL_APICALL void  GL_APIENTRY glAttachShader(GLuint program, GLuint shader){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        const GLuint globalShaderName  = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE);
-
-        ObjectDataPtr programData = ctx->shareGroup()->getObjectData(SHADER,program);
-        ObjectDataPtr shaderData = ctx->shareGroup()->getObjectData(SHADER,shader);
-        SET_ERROR_IF(!shaderData.Ptr() || !programData.Ptr() ,GL_INVALID_OPERATION);
-        SET_ERROR_IF(!(shaderData.Ptr()->getDataType() ==SHADER_DATA) || 
-                     !(programData.Ptr()->getDataType()==PROGRAM_DATA) ,GL_INVALID_OPERATION);
-
-        GLenum shaderType = ((ShaderParser*)shaderData.Ptr())->getType();
-        ProgramData* pData = (ProgramData*)programData.Ptr();
-        SET_ERROR_IF((pData->getAttachedShader(shaderType)!=0), GL_INVALID_OPERATION);
-        pData->attachShader(shader,shaderType);
-        ctx->dispatcher().glAttachShader(globalProgramName,globalShaderName);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glBindAttribLocation(GLuint program, GLuint index, const GLchar* name){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::attribName(name),GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLESv2Validate::attribIndex(index),GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-
-        ctx->dispatcher().glBindAttribLocation(globalProgramName,index,name);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glBindBuffer(GLenum target, GLuint buffer){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM);
-    //if buffer wasn't generated before,generate one
-    if(buffer && ctx->shareGroup().Ptr() && !ctx->shareGroup()->isObject(VERTEXBUFFER,buffer)){
-        ctx->shareGroup()->genName(VERTEXBUFFER,buffer);
-        ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffer,ObjectDataPtr(new GLESbuffer()));
-    }
-    ctx->bindBuffer(target,buffer);
-    if (buffer) {
-        GLESbuffer* vbo = (GLESbuffer*)ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer).Ptr();
-        vbo->setBinded();
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glBindFramebuffer(GLenum target, GLuint framebuffer){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::framebufferTarget(target),GL_INVALID_ENUM);
-
-    GLuint globalFrameBufferName = framebuffer;
-    if(framebuffer && ctx->shareGroup().Ptr()){
-        globalFrameBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffer);
-        //if framebuffer wasn't generated before,generate one
-        if(!globalFrameBufferName){
-            ctx->shareGroup()->genName(FRAMEBUFFER,framebuffer);
-            ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffer,
-                                             ObjectDataPtr(new FramebufferData(framebuffer)));
-            globalFrameBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffer);
-        }
-    }
-    ctx->dispatcher().glBindFramebufferEXT(target,globalFrameBufferName);
-
-    // update framebuffer binding state
-    ctx->setFramebufferBinding(framebuffer);
-}
-
-GL_APICALL void  GL_APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::renderbufferTarget(target),GL_INVALID_ENUM);
-
-    GLuint globalRenderBufferName = renderbuffer;
-    if(renderbuffer && ctx->shareGroup().Ptr()){
-        globalRenderBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer);
-        //if renderbuffer wasn't generated before,generate one
-        if(!globalRenderBufferName){
-            ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer);
-            ctx->shareGroup()->setObjectData(RENDERBUFFER,
-                                         renderbuffer,
-                                         ObjectDataPtr(new RenderbufferData()));
-            globalRenderBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer);
-        }
-    }
-    ctx->dispatcher().glBindRenderbufferEXT(target,globalRenderBufferName);
-
-    // update renderbuffer binding state
-    ctx->setRenderbufferBinding(renderbuffer);
-}
-
-GL_APICALL void  GL_APIENTRY glBindTexture(GLenum target, GLuint texture){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::textureTarget(target),GL_INVALID_ENUM)
-
-    //for handling default texture (0)
-    ObjectLocalName localTexName = TextureLocalName(target,texture);
-    
-    GLuint globalTextureName = localTexName;
-    if(ctx->shareGroup().Ptr()){
-        globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName);
-        //if texture wasn't generated before,generate one
-        if(!globalTextureName){
-            ctx->shareGroup()->genName(TEXTURE,localTexName);
-            globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,localTexName);
-        }
-
-        TextureData* texData = getTextureData(localTexName);
-        if (texData->target==0)
-            texData->target = target;
-        //if texture was already bound to another target
-        SET_ERROR_IF(ctx->GLTextureTargetToLocal(texData->target) != ctx->GLTextureTargetToLocal(target), GL_INVALID_OPERATION);
-        texData->wasBound = true;
-    }
-
-    ctx->setBindedTexture(target,texture);
-    ctx->dispatcher().glBindTexture(target,globalTextureName);
-}
-
-GL_APICALL void  GL_APIENTRY glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha){
-    GET_CTX();
-    ctx->dispatcher().glBlendColor(red,green,blue,alpha);
-}
-
-GL_APICALL void  GL_APIENTRY glBlendEquation( GLenum mode ){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::blendEquationMode(mode),GL_INVALID_ENUM)
-    ctx->dispatcher().glBlendEquation(mode);
-}
-
-GL_APICALL void  GL_APIENTRY glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::blendEquationMode(modeRGB) && GLESv2Validate::blendEquationMode(modeAlpha)),GL_INVALID_ENUM);
-    ctx->dispatcher().glBlendEquationSeparate(modeRGB,modeAlpha);
-}
-
-GL_APICALL void  GL_APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::blendSrc(sfactor) || !GLESv2Validate::blendDst(dfactor),GL_INVALID_ENUM)
-    ctx->dispatcher().glBlendFunc(sfactor,dfactor);
-}
-
-GL_APICALL void  GL_APIENTRY glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha){
-    GET_CTX();
-    SET_ERROR_IF(
-!(GLESv2Validate::blendSrc(srcRGB) && GLESv2Validate::blendDst(dstRGB) && GLESv2Validate::blendSrc(srcAlpha) && GLESv2Validate::blendDst(dstAlpha)),GL_INVALID_ENUM);
-    ctx->dispatcher().glBlendFuncSeparate(srcRGB,dstRGB,srcAlpha,dstAlpha);
-}
-
-GL_APICALL void  GL_APIENTRY glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION);
-    ctx->setBufferData(target,size,data,usage);
-}
-
-GL_APICALL void  GL_APIENTRY glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data){
-    GET_CTX();
-    SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION);
-    SET_ERROR_IF(!GLESv2Validate::bufferTarget(target),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->setBufferSubData(target,offset,size,data),GL_INVALID_VALUE);
-}
-
-
-GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus(GLenum target){
-    GET_CTX_RET(GL_FRAMEBUFFER_COMPLETE);
-    RET_AND_SET_ERROR_IF(!GLESv2Validate::framebufferTarget(target),GL_INVALID_ENUM,GL_FRAMEBUFFER_COMPLETE);
-    ctx->drawValidate();
-    return ctx->dispatcher().glCheckFramebufferStatusEXT(target);
-}
-
-GL_APICALL void  GL_APIENTRY glClear(GLbitfield mask){
-    GET_CTX();
-    ctx->drawValidate();
-
-    ctx->dispatcher().glClear(mask);
-}
-GL_APICALL void  GL_APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha){
-    GET_CTX();
-    ctx->dispatcher().glClearColor(red,green,blue,alpha);
-}
-GL_APICALL void  GL_APIENTRY glClearDepthf(GLclampf depth){
-    GET_CTX();
-    ctx->dispatcher().glClearDepth(depth);
-}
-GL_APICALL void  GL_APIENTRY glClearStencil(GLint s){
-    GET_CTX();
-    ctx->dispatcher().glClearStencil(s);
-}
-GL_APICALL void  GL_APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha){
-    GET_CTX();
-    ctx->dispatcher().glColorMask(red,green,blue,alpha);
-}
-
-GL_APICALL void  GL_APIENTRY glCompileShader(GLuint shader){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!= SHADER_DATA,GL_INVALID_OPERATION);
-        ShaderParser* sp = (ShaderParser*)objData.Ptr();
-        ctx->dispatcher().glCompileShader(globalShaderName);
-
-        GLsizei infoLogLength=0;
-        GLchar* infoLog;
-        ctx->dispatcher().glGetShaderiv(globalShaderName,GL_INFO_LOG_LENGTH,&infoLogLength);
-        infoLog = new GLchar[infoLogLength+1];
-        ctx->dispatcher().glGetShaderInfoLog(globalShaderName,infoLogLength,NULL,infoLog);
-        sp->setInfoLog(infoLog);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
-{
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM);
-
-    doCompressedTexImage2D(ctx, target, level, internalformat,
-                                width, height, border,
-                                imageSize, data, (void*)glTexImage2D);
-}
-
-GL_APICALL void  GL_APIENTRY glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM);
-    ctx->dispatcher().glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data);
-}
-
-GL_APICALL void  GL_APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::pixelFrmt(ctx,internalformat) && GLESv2Validate::textureTargetEx(target)),GL_INVALID_ENUM);
-    SET_ERROR_IF(border != 0,GL_INVALID_VALUE);
-    ctx->dispatcher().glCopyTexImage2D(target,level,internalformat,x,y,width,height,border);
-}
-
-GL_APICALL void  GL_APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM);
-    ctx->dispatcher().glCopyTexSubImage2D(target,level,xoffset,yoffset,x,y,width,height);
-}
-
-GL_APICALL GLuint GL_APIENTRY glCreateProgram(void){
-    GET_CTX_RET(0);
-    const GLuint globalProgramName = ctx->dispatcher().glCreateProgram();
-    if(ctx->shareGroup().Ptr() && globalProgramName) {
-            ProgramData* programInfo = new ProgramData();
-            const GLuint localProgramName = ctx->shareGroup()->genName(SHADER, 0, true);
-            ctx->shareGroup()->replaceGlobalName(SHADER,localProgramName,globalProgramName);
-            ctx->shareGroup()->setObjectData(SHADER,localProgramName,ObjectDataPtr(programInfo));
-            return localProgramName;
-    }
-    if(globalProgramName){
-        ctx->dispatcher().glDeleteProgram(globalProgramName);
-    }
-    return 0;
-}
-
-GL_APICALL GLuint GL_APIENTRY glCreateShader(GLenum type){
-    GET_CTX_V2_RET(0);
-    RET_AND_SET_ERROR_IF(!GLESv2Validate::shaderType(type),GL_INVALID_ENUM,0);
-    const GLuint globalShaderName = ctx->dispatcher().glCreateShader(type);
-    if(ctx->shareGroup().Ptr() && globalShaderName) {
-            const GLuint localShaderName = ctx->shareGroup()->genName(SHADER, 0, true);
-            ShaderParser* sp = new ShaderParser(type);
-            ctx->shareGroup()->replaceGlobalName(SHADER,localShaderName,globalShaderName);
-            ctx->shareGroup()->setObjectData(SHADER,localShaderName,ObjectDataPtr(sp));
-            return localShaderName;
-    }
-    if(globalShaderName){
-        ctx->dispatcher().glDeleteShader(globalShaderName);
-    }
-    return 0;
-}
-
-GL_APICALL void  GL_APIENTRY glCullFace(GLenum mode){
-    GET_CTX();
-    ctx->dispatcher().glCullFace(mode);
-}
-
-GL_APICALL void  GL_APIENTRY glDeleteBuffers(GLsizei n, const GLuint* buffers){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i < n; i++){
-           ctx->shareGroup()->deleteName(VERTEXBUFFER,buffers[i]);
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i < n; i++){
-           const GLuint globalFrameBufferName = ctx->shareGroup()->getGlobalName(FRAMEBUFFER,framebuffers[i]);
-           ctx->shareGroup()->deleteName(FRAMEBUFFER,framebuffers[i]);
-           ctx->dispatcher().glDeleteFramebuffersEXT(1,&globalFrameBufferName);
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i < n; i++){
-           const GLuint globalRenderBufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffers[i]);
-           ctx->shareGroup()->deleteName(RENDERBUFFER,renderbuffers[i]);
-           ctx->dispatcher().glDeleteRenderbuffersEXT(1,&globalRenderBufferName);
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glDeleteTextures(GLsizei n, const GLuint* textures){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i < n; i++){
-            if (textures[i]!=0) {
-                TextureData* tData = getTextureData(textures[i]);
-                // delete the underlying OpenGL texture but only if this
-                // texture is not a target of EGLImage.
-                if (!tData || tData->sourceEGLImage == 0) {
-                    const GLuint globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,textures[i]);
-                    ctx->dispatcher().glDeleteTextures(1,&globalTextureName);
-                }
-                ctx->shareGroup()->deleteName(TEXTURE,textures[i]);
-
-                if (ctx->getBindedTexture(GL_TEXTURE_2D) == textures[i])
-                    ctx->setBindedTexture(GL_TEXTURE_2D,0);
-                if (ctx->getBindedTexture(GL_TEXTURE_CUBE_MAP) == textures[i])
-                    ctx->setBindedTexture(GL_TEXTURE_CUBE_MAP,0);
-            }
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glDeleteProgram(GLuint program){
-    GET_CTX();
-    if(program && ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(!globalProgramName, GL_INVALID_VALUE);
-        ctx->shareGroup()->deleteName(SHADER,program);
-        ctx->dispatcher().glDeleteProgram(globalProgramName);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glDeleteShader(GLuint shader){
-    GET_CTX();
-    if(shader && ctx->shareGroup().Ptr()) {
-        const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        SET_ERROR_IF(!globalShaderName, GL_INVALID_VALUE);
-        ctx->shareGroup()->deleteName(SHADER,shader);
-        ctx->dispatcher().glDeleteShader(globalShaderName);
-    }
-        
-}
-
-GL_APICALL void  GL_APIENTRY glDepthFunc(GLenum func){
-    GET_CTX();
-    ctx->dispatcher().glDepthFunc(func);
-}
-GL_APICALL void  GL_APIENTRY glDepthMask(GLboolean flag){
-    GET_CTX();
-    ctx->dispatcher().glDepthMask(flag);
-}
-GL_APICALL void  GL_APIENTRY glDepthRangef(GLclampf zNear, GLclampf zFar){
-    GET_CTX();
-    ctx->dispatcher().glDepthRange(zNear,zFar);
-}
-
-GL_APICALL void  GL_APIENTRY glDetachShader(GLuint program, GLuint shader){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        const GLuint globalShaderName  = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE);
-
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(!objData.Ptr(),GL_INVALID_OPERATION);
-        SET_ERROR_IF(!(objData.Ptr()->getDataType()==PROGRAM_DATA) ,GL_INVALID_OPERATION);
-
-        ProgramData* programData = (ProgramData*)objData.Ptr();
-        SET_ERROR_IF(!programData->isAttached(shader),GL_INVALID_OPERATION);
-        programData->detachShader(shader);
-
-        ctx->dispatcher().glDetachShader(globalProgramName,globalShaderName);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glDisable(GLenum cap){
-    GET_CTX();
-    ctx->dispatcher().glDisable(cap);
-}
-
-GL_APICALL void  GL_APIENTRY glDisableVertexAttribArray(GLuint index){
-    GET_CTX();
-    SET_ERROR_IF((!GLESv2Validate::arrayIndex(ctx,index)),GL_INVALID_VALUE);
-    ctx->enableArr(index,false);
-    ctx->dispatcher().glDisableVertexAttribArray(index);
-}
-
-GL_APICALL void  GL_APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count){
-    GET_CTX_V2();
-    SET_ERROR_IF(count < 0,GL_INVALID_VALUE)
-    SET_ERROR_IF(!GLESv2Validate::drawMode(mode),GL_INVALID_ENUM);
-
-    ctx->drawValidate();
-
-    GLESConversionArrays tmpArrs;
-    ctx->setupArraysPointers(tmpArrs,first,count,0,NULL,true);
-
-    ctx->validateAtt0PreDraw(count);
-
-    //Enable texture generation for GL_POINTS and gl_PointSize shader variable
-    //GLES2 assumes this is enabled by default, we need to set this state for GL
-    if (mode==GL_POINTS) {
-        ctx->dispatcher().glEnable(GL_POINT_SPRITE);
-        ctx->dispatcher().glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
-    }
-
-    ctx->dispatcher().glDrawArrays(mode,first,count);
-
-    if (mode==GL_POINTS) {
-        ctx->dispatcher().glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
-        ctx->dispatcher().glDisable(GL_POINT_SPRITE);
-    }
-
-    ctx->validateAtt0PostDraw();
-}
-
-GL_APICALL void  GL_APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* elementsIndices){
-    GET_CTX_V2();
-    SET_ERROR_IF(count < 0,GL_INVALID_VALUE)
-    SET_ERROR_IF(!(GLESv2Validate::drawMode(mode) && GLESv2Validate::drawType(type)),GL_INVALID_ENUM);
-
-    ctx->drawValidate();
-
-    const GLvoid* indices = elementsIndices;
-    if(ctx->isBindedBuffer(GL_ELEMENT_ARRAY_BUFFER)) { // if vbo is binded take the indices from the vbo
-        const unsigned char* buf = static_cast<unsigned char *>(ctx->getBindedBuffer(GL_ELEMENT_ARRAY_BUFFER));
-        indices = buf+reinterpret_cast<unsigned int>(elementsIndices);
-    }
-
-    GLESConversionArrays tmpArrs;
-    ctx->setupArraysPointers(tmpArrs,0,count,type,indices,false);
-
-    int maxIndex = ctx->findMaxIndex(count, type, indices);
-    ctx->validateAtt0PreDraw(maxIndex);
-    
-    //See glDrawArrays
-    if (mode==GL_POINTS) {
-        ctx->dispatcher().glEnable(GL_POINT_SPRITE);
-        ctx->dispatcher().glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
-    }
-
-    ctx->dispatcher().glDrawElements(mode,count,type,indices);
-
-    if (mode==GL_POINTS) {
-        ctx->dispatcher().glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
-        ctx->dispatcher().glDisable(GL_POINT_SPRITE);
-    }
-
-    ctx->validateAtt0PostDraw();
-}
-
-GL_APICALL void  GL_APIENTRY glEnable(GLenum cap){
-    GET_CTX();
-    ctx->dispatcher().glEnable(cap);
-}
-
-GL_APICALL void  GL_APIENTRY glEnableVertexAttribArray(GLuint index){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::arrayIndex(ctx,index)),GL_INVALID_VALUE);
-    ctx->enableArr(index,true);
-    ctx->dispatcher().glEnableVertexAttribArray(index);
-}
-
-GL_APICALL void  GL_APIENTRY glFinish(void){
-    GET_CTX();
-    ctx->dispatcher().glFinish();
-}
-GL_APICALL void  GL_APIENTRY glFlush(void){
-    GET_CTX();
-    ctx->dispatcher().glFlush();
-}
-
-
-GL_APICALL void  GL_APIENTRY glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::framebufferTarget(target)              &&
-                   GLESv2Validate::renderbufferTarget(renderbuffertarget) &&
-                   GLESv2Validate::framebufferAttachment(attachment)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION);
-
-    GLuint globalRenderbufferName = 0;
-    ObjectDataPtr obj;
-
-    // generate the renderbuffer object if not yet exist
-    if(renderbuffer) {
-        if (!ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer)) {
-            ctx->shareGroup()->genName(RENDERBUFFER,renderbuffer);
-            obj = ObjectDataPtr(new RenderbufferData());
-            ctx->shareGroup()->setObjectData(RENDERBUFFER,
-                                         renderbuffer, obj);
-        }
-        else {
-            obj = ctx->shareGroup()->getObjectData(RENDERBUFFER, renderbuffer);
-        }
-
-        globalRenderbufferName = ctx->shareGroup()->getGlobalName(RENDERBUFFER,renderbuffer);
-    }
-
-    // Update the the current framebuffer object attachment state
-    GLuint fbName = ctx->getFramebufferBinding();
-    ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName);
-    if (fbObj.Ptr() != NULL) {
-        FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-        fbData->setAttachment(attachment, renderbuffertarget, renderbuffer, obj);
-    }
-
-    if (renderbuffer && obj.Ptr() != NULL) {
-        RenderbufferData *rbData = (RenderbufferData *)obj.Ptr();
-        if (rbData->sourceEGLImage != 0) {
-            //
-            // This renderbuffer object is an eglImage target
-            // attach the eglimage's texture instead the renderbuffer.
-            //
-            ctx->dispatcher().glFramebufferTexture2DEXT(target,
-                                                    attachment,
-                                                    GL_TEXTURE_2D,
-                                                    rbData->eglImageGlobalTexName,0);
-            return;
-        }
-    }
-
-    ctx->dispatcher().glFramebufferRenderbufferEXT(target,attachment,renderbuffertarget,globalRenderbufferName);
-}
-
-GL_APICALL void  GL_APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::framebufferTarget(target) &&
-                   GLESv2Validate::textureTargetEx(textarget)  &&
-                   GLESv2Validate::framebufferAttachment(attachment)),GL_INVALID_ENUM);
-    SET_ERROR_IF(level != 0, GL_INVALID_VALUE);
-    SET_ERROR_IF(!ctx->shareGroup().Ptr(), GL_INVALID_OPERATION);
-
-    GLuint globalTextureName = 0;
-
-    if(texture) {
-        if (!ctx->shareGroup()->isObject(TEXTURE,texture)) {
-            ctx->shareGroup()->genName(TEXTURE,texture);
-        }
-        ObjectLocalName texname = TextureLocalName(textarget,texture);
-        globalTextureName = ctx->shareGroup()->getGlobalName(TEXTURE,texname);
-    }
-
-    ctx->dispatcher().glFramebufferTexture2DEXT(target,attachment,textarget,globalTextureName,level);
-
-    // Update the the current framebuffer object attachment state
-    GLuint fbName = ctx->getFramebufferBinding();
-    ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName);
-    if (fbObj.Ptr() != NULL) {
-        FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-        fbData->setAttachment(attachment, textarget, 
-                              texture, ObjectDataPtr(NULL));
-    }
-}
-
-
-GL_APICALL void  GL_APIENTRY glFrontFace(GLenum mode){
-    GET_CTX();
-    ctx->dispatcher().glFrontFace(mode);
-}
-
-GL_APICALL void  GL_APIENTRY glGenBuffers(GLsizei n, GLuint* buffers){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            buffers[i] = ctx->shareGroup()->genName(VERTEXBUFFER, 0, true);
-            //generating vbo object related to this buffer name
-            ctx->shareGroup()->setObjectData(VERTEXBUFFER,buffers[i],ObjectDataPtr(new GLESbuffer()));
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGenerateMipmap(GLenum target){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::textureTargetEx(target),GL_INVALID_ENUM);
-    ctx->dispatcher().glGenerateMipmapEXT(target);
-}
-
-GL_APICALL void  GL_APIENTRY glGenFramebuffers(GLsizei n, GLuint* framebuffers){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            framebuffers[i] = ctx->shareGroup()->genName(FRAMEBUFFER, 0 ,true);
-            ctx->shareGroup()->setObjectData(FRAMEBUFFER, framebuffers[i],
-                                             ObjectDataPtr(new FramebufferData(framebuffers[i])));
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGenRenderbuffers(GLsizei n, GLuint* renderbuffers){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            renderbuffers[i] = ctx->shareGroup()->genName(RENDERBUFFER, 0, true);
-            ctx->shareGroup()->setObjectData(RENDERBUFFER,
-                                         renderbuffers[i],
-                                         ObjectDataPtr(new RenderbufferData()));
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGenTextures(GLsizei n, GLuint* textures){
-    GET_CTX();
-    SET_ERROR_IF(n<0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()) {
-        for(int i=0; i<n ;i++) {
-            textures[i] = ctx->shareGroup()->genName(TEXTURE, 0, true);
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        ctx->dispatcher().glGetActiveAttrib(globalProgramName,index,bufsize,length,size,type,name);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        ctx->dispatcher().glGetActiveUniform(globalProgramName,index,bufsize,length,size,type,name);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ctx->dispatcher().glGetAttachedShaders(globalProgramName,maxcount,count,shaders);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        GLint numShaders=0;
-        ctx->dispatcher().glGetProgramiv(globalProgramName,GL_ATTACHED_SHADERS,&numShaders);
-        for(int i=0 ; i < maxcount && i<numShaders ;i++){
-           shaders[i] = ctx->shareGroup()->getLocalName(SHADER,shaders[i]);
-        }
-    }
-}
-
-GL_APICALL int GL_APIENTRY glGetAttribLocation(GLuint program, const GLchar* name){
-     GET_CTX_RET(-1);
-     if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        RET_AND_SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE,-1);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        RET_AND_SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION,-1);
-        ProgramData* pData = (ProgramData *)objData.Ptr();
-        RET_AND_SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION,-1);
-        return ctx->dispatcher().glGetAttribLocation(globalProgramName,name);
-     }
-     return -1;
-}
-
-GL_APICALL void  GL_APIENTRY glGetBooleanv(GLenum pname, GLboolean* params){
-    GET_CTX();
-
-    if (ctx->glGetBooleanv(pname,params))
-    {
-        return;
-    }
-
-    switch(pname)
-    {
-        case GL_SHADER_COMPILER:
-        case GL_SHADER_BINARY_FORMATS:
-        case GL_NUM_SHADER_BINARY_FORMATS:
-        case GL_MAX_VERTEX_UNIFORM_VECTORS:
-        case GL_MAX_VARYING_VECTORS:
-        case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
-            if(ctx->getCaps()->GL_ARB_ES2_COMPATIBILITY)
-                ctx->dispatcher().glGetBooleanv(pname,params);
-            else
-            {
-                GLint iparam;
-                glGetIntegerv(pname,&iparam);
-                *params = (iparam != 0);
-            }
-            break;
-
-        default:
-            ctx->dispatcher().glGetBooleanv(pname,params);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::bufferTarget(target) && GLESv2Validate::bufferParam(pname)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!ctx->isBindedBuffer(target),GL_INVALID_OPERATION);
-    bool ret = true;
-    switch(pname) {
-    case GL_BUFFER_SIZE:
-        ctx->getBufferSize(target,params);
-        break;
-    case GL_BUFFER_USAGE:
-        ctx->getBufferUsage(target,params);
-        break;
-    }
-}
-
-
-GL_APICALL GLenum GL_APIENTRY glGetError(void){
-    GET_CTX_RET(GL_NO_ERROR)
-    GLenum err = ctx->getGLerror();
-    if(err != GL_NO_ERROR) {
-        ctx->setGLerror(GL_NO_ERROR);
-        return err;
-    }
-    return ctx->dispatcher().glGetError();
-}
-
-GL_APICALL void  GL_APIENTRY glGetFloatv(GLenum pname, GLfloat* params){
-    GET_CTX();
-
-    if (ctx->glGetFloatv(pname,params)) {
-        return;
-    }
-
-    GLint i;
-
-    switch (pname) {
-    case GL_CURRENT_PROGRAM:
-    case GL_FRAMEBUFFER_BINDING:
-    case GL_RENDERBUFFER_BINDING:
-        glGetIntegerv(pname,&i);
-        *params = (GLfloat)i;
-        break;
-    case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        *params = (GLfloat)getCompressedFormats(NULL); 
-        break;    
-    case GL_COMPRESSED_TEXTURE_FORMATS:
-        {
-            int nparams = getCompressedFormats(NULL);
-            if (nparams>0) {
-                int * iparams = new int[nparams];
-                getCompressedFormats(iparams);
-                for (int i=0; i<nparams; i++) params[i] = (GLfloat)iparams[i];
-                delete [] iparams;
-            }
-        }
-        break;
-
-    case GL_SHADER_COMPILER:
-    case GL_SHADER_BINARY_FORMATS:
-    case GL_NUM_SHADER_BINARY_FORMATS:
-    case GL_MAX_VERTEX_UNIFORM_VECTORS:
-    case GL_MAX_VARYING_VECTORS:
-    case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
-        if(ctx->getCaps()->GL_ARB_ES2_COMPATIBILITY)
-            ctx->dispatcher().glGetFloatv(pname,params);
-        else
-        {
-            glGetIntegerv(pname,&i);
-            *params = (GLfloat)i;
-        }
-        break;
-
-    default:
-        ctx->dispatcher().glGetFloatv(pname,params);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetIntegerv(GLenum pname, GLint* params){
-    GET_CTX();
-
-    if (ctx->glGetIntegerv(pname,params))
-    {
-        return;
-    }
-  
-    bool es2 = ctx->getCaps()->GL_ARB_ES2_COMPATIBILITY;
-    GLint i;
-
-    switch (pname) {
-    case GL_CURRENT_PROGRAM:
-        if (ctx->shareGroup().Ptr()) {
-            ctx->dispatcher().glGetIntegerv(pname,&i);
-            *params = ctx->shareGroup()->getLocalName(SHADER,i);
-        }
-        break;
-    case GL_FRAMEBUFFER_BINDING:
-        if (ctx->shareGroup().Ptr()) {
-            ctx->dispatcher().glGetIntegerv(pname,&i);
-            *params = ctx->shareGroup()->getLocalName(FRAMEBUFFER,i);
-        }
-        break;
-    case GL_RENDERBUFFER_BINDING:
-        if (ctx->shareGroup().Ptr()) {
-            ctx->dispatcher().glGetIntegerv(pname,&i);
-            *params = ctx->shareGroup()->getLocalName(RENDERBUFFER,i);
-        }
-        break;
-
-    case GL_NUM_COMPRESSED_TEXTURE_FORMATS:
-        *params = getCompressedFormats(NULL); 
-        break;    
-    case GL_COMPRESSED_TEXTURE_FORMATS:
-        getCompressedFormats(params);
-        break;
-
-    case GL_SHADER_COMPILER:
-        if(es2)
-            ctx->dispatcher().glGetIntegerv(pname,params);
-        else
-            *params = 1;
-        break;
-
-    case GL_SHADER_BINARY_FORMATS:
-        if(es2)
-            ctx->dispatcher().glGetIntegerv(pname,params);
-        break;
-
-    case GL_NUM_SHADER_BINARY_FORMATS:
-        if(es2)
-            ctx->dispatcher().glGetIntegerv(pname,params);
-        else
-            *params = 0;
-        break;
-
-    case GL_MAX_VERTEX_UNIFORM_VECTORS:
-        if(es2)
-            ctx->dispatcher().glGetIntegerv(pname,params);
-        else
-            *params = 128;
-        break;
-
-    case GL_MAX_VARYING_VECTORS:
-        if(es2)
-            ctx->dispatcher().glGetIntegerv(pname,params);
-        else
-            *params = 8;
-        break;
-
-    case GL_MAX_FRAGMENT_UNIFORM_VECTORS:
-        if(es2)
-            ctx->dispatcher().glGetIntegerv(pname,params);
-        else
-            *params = 16;
-        break;
-
-    case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
-        ctx->dispatcher().glGetIntegerv(pname,params);
-        if(*params > 16)
-        {
-            // GLES spec requires only 2, and the ATI driver erronously
-            // returns 32 (although it supports only 16). This WAR is simple,
-            // compliant and good enough for developers.
-            *params = 16;
-        }
-        break;
-    default:
-        ctx->dispatcher().glGetIntegerv(pname,params);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::framebufferTarget(target)         &&
-                   GLESv2Validate::framebufferAttachment(attachment) &&
-                   GLESv2Validate::framebufferAttachmentParams(pname)),GL_INVALID_ENUM);
-
-    //
-    // Take the attachment attribute from our state - if available
-    //
-    GLuint fbName = ctx->getFramebufferBinding();
-    if (fbName) {
-        ObjectDataPtr fbObj = ctx->shareGroup()->getObjectData(FRAMEBUFFER,fbName);
-        if (fbObj.Ptr() != NULL) {
-            FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-            GLenum target;
-            GLuint name = fbData->getAttachment(attachment, &target, NULL);
-            if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE) {
-                if (target == GL_TEXTURE_2D) {
-                    *params = GL_TEXTURE;
-                    return;
-                }
-                else if (target == GL_RENDERBUFFER) {
-                    *params = GL_RENDERBUFFER;
-                    return;
-                }
-            }
-            else if (pname == GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) {
-                *params = name;
-                return;
-            }
-        }
-    }
-
-    ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(target,attachment,pname,params);
-}
-
-GL_APICALL void  GL_APIENTRY glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::renderbufferTarget(target) && GLESv2Validate::renderbufferParams(pname)),GL_INVALID_ENUM);
-
-    //
-    // If this is a renderbuffer which is eglimage's target, we
-    // should query the underlying eglimage's texture object instead.
-    //
-    GLuint rb = ctx->getRenderbufferBinding();
-    if (rb) {
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb);
-        RenderbufferData *rbData = (RenderbufferData *)objData.Ptr();
-        if (rbData && rbData->sourceEGLImage != 0) {
-            GLenum texPname;
-            switch(pname) {
-                case GL_RENDERBUFFER_WIDTH:
-                    texPname = GL_TEXTURE_WIDTH;
-                    break;
-                case GL_RENDERBUFFER_HEIGHT:
-                    texPname = GL_TEXTURE_HEIGHT;
-                    break;
-                case GL_RENDERBUFFER_INTERNAL_FORMAT:
-                    texPname = GL_TEXTURE_INTERNAL_FORMAT;
-                    break;
-                case GL_RENDERBUFFER_RED_SIZE:
-                    texPname = GL_TEXTURE_RED_SIZE;
-                    break;
-                case GL_RENDERBUFFER_GREEN_SIZE:
-                    texPname = GL_TEXTURE_GREEN_SIZE;
-                    break;
-                case GL_RENDERBUFFER_BLUE_SIZE:
-                    texPname = GL_TEXTURE_BLUE_SIZE;
-                    break;
-                case GL_RENDERBUFFER_ALPHA_SIZE:
-                    texPname = GL_TEXTURE_ALPHA_SIZE;
-                    break;
-                case GL_RENDERBUFFER_DEPTH_SIZE:
-                    texPname = GL_TEXTURE_DEPTH_SIZE;
-                    break;
-                case GL_RENDERBUFFER_STENCIL_SIZE:
-                default:
-                    *params = 0; //XXX
-                    return;
-                    break;
-            }
-
-            GLint prevTex;
-            ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prevTex);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D,
-                                            rbData->eglImageGlobalTexName);
-            ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0,
-                                                       texPname,
-                                                       params);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prevTex);
-            return;
-        }
-    }
-
-    ctx->dispatcher().glGetRenderbufferParameterivEXT(target,pname,params);
-}
-
-
-GL_APICALL void  GL_APIENTRY glGetProgramiv(GLuint program, GLenum pname, GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::programParam(pname),GL_INVALID_ENUM);
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        switch(pname) {
-        case GL_LINK_STATUS:
-            {
-                ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-                SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION);
-                SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-                ProgramData* programData = (ProgramData*)objData.Ptr();
-                params[0] = programData->getLinkStatus();
-            }
-            break;
-        //validate status should not return GL_TRUE if link failed
-        case GL_VALIDATE_STATUS:
-            {
-                ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-                SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION);
-                SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-                ProgramData* programData = (ProgramData*)objData.Ptr();
-                if (programData->getLinkStatus()==GL_TRUE) 
-                    ctx->dispatcher().glGetProgramiv(globalProgramName,pname,params);
-                else
-                    params[0] = GL_FALSE;
-            }
-            break;
-        case GL_INFO_LOG_LENGTH:
-            {
-                ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-                SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION);
-                SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-                ProgramData* programData = (ProgramData*)objData.Ptr();
-                GLint logLength = strlen(programData->getInfoLog());
-                params[0] = (logLength>0) ? logLength+1 : 0;
-            }
-            break;   
-        default:
-            ctx->dispatcher().glGetProgramiv(globalProgramName,pname,params);
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        ProgramData* programData = (ProgramData*)objData.Ptr();
-
-        if (bufsize==0) {
-            if (length) {
-                *length = 0;
-            }
-            return;
-        }
-
-        GLsizei logLength;
-        logLength = strlen(programData->getInfoLog());
-        
-        GLsizei returnLength=0;
-        if (infolog) {
-            returnLength = bufsize-1 < logLength ? bufsize-1 : logLength;
-            strncpy(infolog,programData->getInfoLog(),returnLength+1);
-            infolog[returnLength] = '\0';
-        }
-        if (length) {
-            *length = returnLength;
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetShaderiv(GLuint shader, GLenum pname, GLint* params){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE);
-        switch(pname) {
-        case GL_INFO_LOG_LENGTH:
-            {
-                ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader);
-                SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION);
-                SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION);
-                ShaderParser* sp = (ShaderParser*)objData.Ptr();
-                GLint logLength = strlen(sp->getInfoLog());
-                params[0] = (logLength>0) ? logLength+1 : 0;
-            }
-            break;
-        default:
-            ctx->dispatcher().glGetShaderiv(globalShaderName,pname,params);
-        }
-    }
-}
-
-
-GL_APICALL void  GL_APIENTRY glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        SET_ERROR_IF(globalShaderName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader);
-        SET_ERROR_IF(!objData.Ptr() ,GL_INVALID_OPERATION);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION);
-        ShaderParser* sp = (ShaderParser*)objData.Ptr();
-
-        if (bufsize==0) {
-            if (length) {
-                *length = 0;
-            }
-            return;
-        }
-
-        GLsizei logLength;
-        logLength = strlen(sp->getInfoLog());
-        
-        GLsizei returnLength=0;
-        if (infolog) {
-            returnLength = bufsize-1 <logLength ? bufsize-1 : logLength;
-            strncpy(infolog,sp->getInfoLog(),returnLength+1);
-            infolog[returnLength] = '\0';
-        }
-        if (length) {
-            *length = returnLength;
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision){
-    GET_CTX_V2();
-    SET_ERROR_IF(!(GLESv2Validate::shaderType(shadertype) && GLESv2Validate::precisionType(precisiontype)),GL_INVALID_ENUM);
-
-    switch (precisiontype) {
-    case GL_LOW_INT:
-    case GL_MEDIUM_INT:
-    case GL_HIGH_INT:
-        range[0] = range[1] = 16;
-        *precision = 0;
-        break;
-
-    case GL_LOW_FLOAT:
-    case GL_MEDIUM_FLOAT:
-    case GL_HIGH_FLOAT:
-        if(ctx->dispatcher().glGetShaderPrecisionFormat != NULL) {
-            ctx->dispatcher().glGetShaderPrecisionFormat(shadertype,precisiontype,range,precision);
-        } else {
-            range[0] = range[1] = 127;
-            *precision = 24;
-        }
-        break;
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-       const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-       SET_ERROR_IF(globalShaderName == 0,GL_INVALID_VALUE);
-       ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader);
-       SET_ERROR_IF(!objData.Ptr(),GL_INVALID_OPERATION);
-       SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION);
-       const char* src = ((ShaderParser*)objData.Ptr())->getOriginalSrc();
-       int srcLength = 0;
-       if (src) {
-            srcLength = strlen(src);
-       }
-
-       int returnLength = bufsize<srcLength ? bufsize-1 : srcLength;
-       if (returnLength) {
-            strncpy(source,src, returnLength);
-            source[returnLength] = '\0';
-       }
-
-       if (length)
-          *length = returnLength;
-    }
-}
-
-
-GL_APICALL const GLubyte* GL_APIENTRY glGetString(GLenum name){
-    GET_CTX_RET(NULL)
-    static GLubyte VENDOR[]     = "Google";
-    static GLubyte RENDERER[]   = "OpenGL ES 2.0";
-    static GLubyte VERSION[]    = "OpenGL ES 2.0";
-    static GLubyte SHADING[]    = "OpenGL ES GLSL ES 1.0.17";
-    switch(name) {
-        case GL_VENDOR:
-            return VENDOR;
-        case GL_RENDERER:
-            return RENDERER;
-        case GL_VERSION:
-            return VERSION;
-        case GL_SHADING_LANGUAGE_VERSION:
-            return SHADING;
-        case GL_EXTENSIONS:
-            return (const GLubyte*)ctx->getExtensionString();
-        default:
-            RET_AND_SET_ERROR_IF(true,GL_INVALID_ENUM,NULL);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM);
-    ctx->dispatcher().glGetTexParameterfv(target,pname,params);
-
-}
-GL_APICALL void  GL_APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM);
-    ctx->dispatcher().glGetTexParameteriv(target,pname,params);
-}
-
-GL_APICALL void  GL_APIENTRY glGetUniformfv(GLuint program, GLint location, GLfloat* params){
-    GET_CTX();
-    SET_ERROR_IF(location < 0,GL_INVALID_OPERATION);
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        ProgramData* pData = (ProgramData *)objData.Ptr();
-        SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION);
-        ctx->dispatcher().glGetUniformfv(globalProgramName,location,params);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetUniformiv(GLuint program, GLint location, GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(location < 0,GL_INVALID_OPERATION);
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        ProgramData* pData = (ProgramData *)objData.Ptr();
-        SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION);
-        ctx->dispatcher().glGetUniformiv(globalProgramName,location,params);
-    }
-}
-
-GL_APICALL int GL_APIENTRY glGetUniformLocation(GLuint program, const GLchar* name){
-    GET_CTX_RET(-1);
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        RET_AND_SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE,-1);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        RET_AND_SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION,-1);
-        ProgramData* pData = (ProgramData *)objData.Ptr();
-        RET_AND_SET_ERROR_IF(pData->getLinkStatus() != GL_TRUE,GL_INVALID_OPERATION,-1);
-        return ctx->dispatcher().glGetUniformLocation(globalProgramName,name);
-    }
-    return -1;
-}
-
-
-
-GL_APICALL void  GL_APIENTRY glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params){
-    GET_CTX_V2();
-    const GLESpointer* p = ctx->getPointer(index);
-    if(p) {
-        switch(pname){
-        case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
-            *params = 0;
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_ENABLED:
-            *params = p->isEnable();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_SIZE:
-            *params = p->getSize();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_STRIDE:
-            *params = p->getStride();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_TYPE:
-            *params = p->getType();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:
-            *params = p->isNormalize();
-            break;
-        case GL_CURRENT_VERTEX_ATTRIB:
-            if(index == 0)
-            {
-                const float* att0 = ctx->getAtt0();
-                for(int i=0; i<4; i++)
-                    params[i] = att0[i];
-            }
-            else
-                ctx->dispatcher().glGetVertexAttribfv(index,pname,params);
-            break;
-        default:
-            ctx->setGLerror(GL_INVALID_ENUM);
-        }
-    } else {
-        ctx->setGLerror(GL_INVALID_VALUE);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params){
-    GET_CTX_V2();
-    const GLESpointer* p = ctx->getPointer(index);
-    if(p) {
-        switch(pname){
-        case GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:
-            *params = 0;
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_ENABLED:
-            *params = p->isEnable();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_SIZE:
-            *params = p->getSize();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_STRIDE:
-            *params = p->getStride();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_TYPE:
-            *params = p->getType();
-            break;
-        case GL_VERTEX_ATTRIB_ARRAY_NORMALIZED:
-            *params = p->isNormalize();
-            break;
-        case GL_CURRENT_VERTEX_ATTRIB:
-            if(index == 0)
-            {
-                const float* att0 = ctx->getAtt0();
-                for(int i=0; i<4; i++)
-                    params[i] = (GLint)att0[i];
-            }
-            else
-                ctx->dispatcher().glGetVertexAttribiv(index,pname,params);
-            break;
-        default:
-            ctx->setGLerror(GL_INVALID_ENUM);
-        }
-    } else {
-        ctx->setGLerror(GL_INVALID_VALUE);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer){
-    GET_CTX();
-    SET_ERROR_IF(pname != GL_VERTEX_ATTRIB_ARRAY_POINTER,GL_INVALID_ENUM);
-    SET_ERROR_IF((!GLESv2Validate::arrayIndex(ctx,index)),GL_INVALID_VALUE);
-
-    const GLESpointer* p = ctx->getPointer(index);
-    if(p) {
-        *pointer = const_cast<void *>( p->getBufferData());
-    } else {
-        ctx->setGLerror(GL_INVALID_VALUE);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glHint(GLenum target, GLenum mode){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::hintTargetMode(target,mode),GL_INVALID_ENUM);
-    ctx->dispatcher().glHint(target,mode);
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsEnabled(GLenum cap){
-    GET_CTX_RET(GL_FALSE);
-    RET_AND_SET_ERROR_IF(!GLESv2Validate::capability(cap),GL_INVALID_ENUM,GL_FALSE);
-    return ctx->dispatcher().glIsEnabled(cap);
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsBuffer(GLuint buffer){
-    GET_CTX_RET(GL_FALSE)
-    if(buffer && ctx->shareGroup().Ptr()) {
-       ObjectDataPtr objData = ctx->shareGroup()->getObjectData(VERTEXBUFFER,buffer);
-       return objData.Ptr() ? ((GLESbuffer*)objData.Ptr())->wasBinded():GL_FALSE;
-    }
-    return GL_FALSE;
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer(GLuint framebuffer){
-    GET_CTX_RET(GL_FALSE)
-    if(framebuffer && ctx->shareGroup().Ptr()){
-        return ctx->shareGroup()->isObject(FRAMEBUFFER,framebuffer) ? GL_TRUE :GL_FALSE;
-    }
-    return GL_FALSE;
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer(GLuint renderbuffer){
-    GET_CTX_RET(GL_FALSE)
-    if(renderbuffer && ctx->shareGroup().Ptr()){
-        return ctx->shareGroup()->isObject(RENDERBUFFER,renderbuffer) ? GL_TRUE :GL_FALSE;
-    }
-    return GL_FALSE;
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsTexture(GLuint texture){
-    GET_CTX_RET(GL_FALSE)
-    if (texture==0)
-        return GL_FALSE;
-    TextureData* tex = getTextureData(texture);
-    return tex ? tex->wasBound : GL_FALSE;
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsProgram(GLuint program){
-    GET_CTX_RET(GL_FALSE)
-    if(program && ctx->shareGroup().Ptr() &&
-       ctx->shareGroup()->isObject(SHADER,program)) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        return ctx->dispatcher().glIsProgram(globalProgramName);
-    }
-    return GL_FALSE;
-}
-
-GL_APICALL GLboolean    GL_APIENTRY glIsShader(GLuint shader){
-    GET_CTX_RET(GL_FALSE)
-    if(shader && ctx->shareGroup().Ptr() &&
-       ctx->shareGroup()->isObject(SHADER,shader)) {
-        const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-        return ctx->dispatcher().glIsShader(globalShaderName);
-    }
-    return GL_FALSE;
-}
-
-GL_APICALL void  GL_APIENTRY glLineWidth(GLfloat width){
-    GET_CTX();
-    ctx->dispatcher().glLineWidth(width);
-}
-
-GL_APICALL void  GL_APIENTRY glLinkProgram(GLuint program){
-    GET_CTX();
-    GLint linkStatus = GL_FALSE;
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(!objData.Ptr(), GL_INVALID_OPERATION);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA, GL_INVALID_OPERATION);
-        ProgramData* programData = (ProgramData*)objData.Ptr();
-        GLint fragmentShader   = programData->getAttachedFragmentShader();
-        GLint vertexShader =  programData->getAttachedVertexShader();
-        if (vertexShader != 0 && fragmentShader!=0) {
-            /* validating that the fragment & vertex shaders were compiled successfuly*/
-            GLint fCompileStatus = GL_FALSE;
-            GLint vCompileStatus = GL_FALSE;
-            GLuint fragmentShaderGlobal = ctx->shareGroup()->getGlobalName(SHADER,fragmentShader);
-            GLuint vertexShaderGlobal = ctx->shareGroup()->getGlobalName(SHADER,vertexShader);
-            ctx->dispatcher().glGetShaderiv(fragmentShaderGlobal,GL_COMPILE_STATUS,&fCompileStatus);
-            ctx->dispatcher().glGetShaderiv(vertexShaderGlobal,GL_COMPILE_STATUS,&vCompileStatus);
-
-            if(fCompileStatus != 0 && vCompileStatus != 0){
-                ctx->dispatcher().glLinkProgram(globalProgramName);
-                ctx->dispatcher().glGetProgramiv(globalProgramName,GL_LINK_STATUS,&linkStatus);
-            }
-        }
-        programData->setLinkStatus(linkStatus);
-        
-        GLsizei infoLogLength=0;
-        GLchar* infoLog;
-        ctx->dispatcher().glGetProgramiv(globalProgramName,GL_INFO_LOG_LENGTH,&infoLogLength);
-        infoLog = new GLchar[infoLogLength+1];
-        ctx->dispatcher().glGetProgramInfoLog(globalProgramName,infoLogLength,NULL,infoLog);
-        programData->setInfoLog(infoLog);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glPixelStorei(GLenum pname, GLint param){
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::pixelStoreParam(pname),GL_INVALID_ENUM);
-    SET_ERROR_IF(!((param==1)||(param==2)||(param==4)||(param==8)), GL_INVALID_VALUE);
-    ctx->setUnpackAlignment(param);
-    ctx->dispatcher().glPixelStorei(pname,param);
-}
-
-GL_APICALL void  GL_APIENTRY glPolygonOffset(GLfloat factor, GLfloat units){
-    GET_CTX();
-    ctx->dispatcher().glPolygonOffset(factor,units);
-}
-
-GL_APICALL void  GL_APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::readPixelFrmt(format) && GLESv2Validate::pixelType(ctx,type)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!(GLESv2Validate::pixelOp(format,type)),GL_INVALID_OPERATION);
-    ctx->dispatcher().glReadPixels(x,y,width,height,format,type,pixels);
-}
-
-
-GL_APICALL void  GL_APIENTRY glReleaseShaderCompiler(void){
-    GET_CTX();
-
-    if(ctx->dispatcher().glReleaseShaderCompiler != NULL)
-    {
-        ctx->dispatcher().glReleaseShaderCompiler();
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){
-    GET_CTX();
-    GLenum internal = internalformat;
-    switch (internalformat) {
-    case GL_RGB565:
-        internal = GL_RGB;
-        break;
-    case GL_RGB5_A1:
-        internal = GL_RGBA;
-        break;
-    default:
-        internal = internalformat;
-        break;
-    }
-
-    // Get current bounded renderbuffer
-    // raise INVALID_OPERATIOn if no renderbuffer is bounded
-    GLuint rb = ctx->getRenderbufferBinding();
-    SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION);
-    ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb);
-    RenderbufferData *rbData = (RenderbufferData *)objData.Ptr();
-    SET_ERROR_IF(!rbData,GL_INVALID_OPERATION);
-
-    //
-    // if the renderbuffer was an eglImage target, detach from
-    // the eglImage.
-    //
-    if (rbData->sourceEGLImage != 0) {
-        if (rbData->eglImageDetach) {
-            (*rbData->eglImageDetach)(rbData->sourceEGLImage);
-        }
-        rbData->sourceEGLImage = 0;
-        rbData->eglImageGlobalTexName = 0;
-    }
-
-    ctx->dispatcher().glRenderbufferStorageEXT(target,internal,width,height);
-}
-
-GL_APICALL void  GL_APIENTRY glSampleCoverage(GLclampf value, GLboolean invert){
-    GET_CTX();
-    ctx->dispatcher().glSampleCoverage(value,invert);
-}
-
-GL_APICALL void  GL_APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height){
-    GET_CTX();
-    ctx->dispatcher().glScissor(x,y,width,height);
-}
-
-GL_APICALL void  GL_APIENTRY glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length){
-    GET_CTX();
-
-    SET_ERROR_IF( (ctx->dispatcher().glShaderBinary == NULL), GL_INVALID_OPERATION);
-
-    if(ctx->shareGroup().Ptr()){
-        for(int i=0; i < n ; i++){
-            const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shaders[i]);
-            SET_ERROR_IF(globalShaderName == 0,GL_INVALID_VALUE);
-            ctx->dispatcher().glShaderBinary(1,&globalShaderName,binaryformat,binary,length);
-        }
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length){
-    GET_CTX_V2();
-    SET_ERROR_IF(count < 0,GL_INVALID_VALUE);
-    if(ctx->shareGroup().Ptr()){
-            const GLuint globalShaderName = ctx->shareGroup()->getGlobalName(SHADER,shader);
-            SET_ERROR_IF(globalShaderName == 0,GL_INVALID_VALUE);
-            ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,shader);
-            SET_ERROR_IF(!objData.Ptr(),GL_INVALID_OPERATION);
-            SET_ERROR_IF(objData.Ptr()->getDataType()!=SHADER_DATA,GL_INVALID_OPERATION);
-            ShaderParser* sp = (ShaderParser*)objData.Ptr();
-            sp->setSrc(ctx->glslVersion(),count,string,length);
-            ctx->dispatcher().glShaderSource(globalShaderName,1,sp->parsedLines(),NULL);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask){
-    GET_CTX();
-    ctx->dispatcher().glStencilFunc(func,ref,mask);
-}
-GL_APICALL void  GL_APIENTRY glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask){
-    GET_CTX();
-    ctx->dispatcher().glStencilFuncSeparate(face,func,ref,mask);
-}
-GL_APICALL void  GL_APIENTRY glStencilMask(GLuint mask){
-    GET_CTX();
-    ctx->dispatcher().glStencilMask(mask);
-}
-
-GL_APICALL void  GL_APIENTRY glStencilMaskSeparate(GLenum face, GLuint mask){
-    GET_CTX();
-    ctx->dispatcher().glStencilMaskSeparate(face,mask);
-}
-
-GL_APICALL void  GL_APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass){
-    GET_CTX();
-    ctx->dispatcher().glStencilOp(fail,zfail,zpass);
-}
-
-GL_APICALL void  GL_APIENTRY glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass){
-    GET_CTX();
-    ctx->dispatcher().glStencilOp(fail,zfail,zpass);
-}
-
-GL_APICALL void  GL_APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTargetEx(target) &&
-                   GLESv2Validate::pixelFrmt(ctx,internalformat) &&
-                   GLESv2Validate::pixelFrmt(ctx,format)&&
-                   GLESv2Validate::pixelType(ctx,type)),GL_INVALID_ENUM);
-
-    SET_ERROR_IF((format == GL_DEPTH_COMPONENT || internalformat == GL_DEPTH_COMPONENT) &&
-                    (type != GL_UNSIGNED_SHORT && type != GL_UNSIGNED_INT), GL_INVALID_OPERATION);
-
-    SET_ERROR_IF((type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT) &&
-                    (format != GL_DEPTH_COMPONENT || internalformat != GL_DEPTH_COMPONENT), GL_INVALID_OPERATION);
-
-    SET_ERROR_IF(!(GLESv2Validate::pixelOp(format,type) && internalformat == ((GLint)format)),GL_INVALID_OPERATION);
-    SET_ERROR_IF(border != 0,GL_INVALID_VALUE);
-
-    if (ctx->shareGroup().Ptr()){
-        TextureData *texData = getTextureTargetData(target);
-        if(texData) {
-            texData->width = width;
-            texData->height = height;
-            texData->border = border;
-            texData->internalFormat = internalformat;
-            texData->target = target;
-
-            if (texData->sourceEGLImage != 0) {
-                //
-                // This texture was a target of EGLImage,
-                // but now it is re-defined so we need to detach
-                // from the EGLImage and re-generate global texture name
-                // for it.
-                //
-                if (texData->eglImageDetach) {
-                    (*texData->eglImageDetach)(texData->sourceEGLImage);
-                }
-                unsigned int tex = ctx->getBindedTexture(target);
-                ctx->shareGroup()->replaceGlobalName(TEXTURE,
-                                                     tex,
-                                                     texData->oldGlobal);
-                ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, texData->oldGlobal);
-                texData->sourceEGLImage = 0;
-                texData->oldGlobal = 0;
-            }
-        }
-    }
-
-    if (type==GL_HALF_FLOAT_OES)
-        type = GL_HALF_FLOAT_NV;
-    if (pixels==NULL && type==GL_UNSIGNED_SHORT_5_5_5_1)
-        type = GL_UNSIGNED_SHORT;
-    ctx->dispatcher().glTexImage2D(target,level,internalformat,width,height,border,format,type,pixels);
-}
-
-
-GL_APICALL void  GL_APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexParameterf(target,pname,param);
-}
-GL_APICALL void  GL_APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexParameterfv(target,pname,params);
-}
-GL_APICALL void  GL_APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexParameteri(target,pname,param);
-}
-GL_APICALL void  GL_APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint* params){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTarget(target) && GLESv2Validate::textureParams(pname)),GL_INVALID_ENUM);
-    ctx->dispatcher().glTexParameteriv(target,pname,params);
-}
-
-GL_APICALL void  GL_APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels){
-    GET_CTX();
-    SET_ERROR_IF(!(GLESv2Validate::textureTargetEx(target) &&
-                   GLESv2Validate::pixelFrmt(ctx,format)&&
-                   GLESv2Validate::pixelType(ctx,type)),GL_INVALID_ENUM);
-    SET_ERROR_IF(!GLESv2Validate::pixelOp(format,type),GL_INVALID_OPERATION);
-    if (type==GL_HALF_FLOAT_OES)
-        type = GL_HALF_FLOAT_NV;
-
-    ctx->dispatcher().glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels);
-
-}
-
-GL_APICALL void  GL_APIENTRY glUniform1f(GLint location, GLfloat x){
-    GET_CTX();
-    ctx->dispatcher().glUniform1f(location,x);
-}
-GL_APICALL void  GL_APIENTRY glUniform1fv(GLint location, GLsizei count, const GLfloat* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform1fv(location,count,v);
-}
-
-GL_APICALL void  GL_APIENTRY glUniform1i(GLint location, GLint x){
-    GET_CTX();
-    ctx->dispatcher().glUniform1i(location,x);
-}
-GL_APICALL void  GL_APIENTRY glUniform1iv(GLint location, GLsizei count, const GLint* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform1iv(location,count,v);
-}
-GL_APICALL void  GL_APIENTRY glUniform2f(GLint location, GLfloat x, GLfloat y){
-    GET_CTX();
-    ctx->dispatcher().glUniform2f(location,x,y);
-}
-GL_APICALL void  GL_APIENTRY glUniform2fv(GLint location, GLsizei count, const GLfloat* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform2fv(location,count,v);
-}
-GL_APICALL void  GL_APIENTRY glUniform2i(GLint location, GLint x, GLint y){
-    GET_CTX();
-    ctx->dispatcher().glUniform2i(location,x,y);
-}
-GL_APICALL void  GL_APIENTRY glUniform2iv(GLint location, GLsizei count, const GLint* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform2iv(location,count,v);
-}
-GL_APICALL void  GL_APIENTRY glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z){
-    GET_CTX();
-    ctx->dispatcher().glUniform3f(location,x,y,z);
-}
-GL_APICALL void  GL_APIENTRY glUniform3fv(GLint location, GLsizei count, const GLfloat* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform3fv(location,count,v);
-}
-GL_APICALL void  GL_APIENTRY glUniform3i(GLint location, GLint x, GLint y, GLint z){
-    GET_CTX();
-    ctx->dispatcher().glUniform3i(location,x,y,z);
-}
-
-GL_APICALL void  GL_APIENTRY glUniform3iv(GLint location, GLsizei count, const GLint* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform3iv(location,count,v);
-}
-
-GL_APICALL void  GL_APIENTRY glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w){
-    GET_CTX();
-    ctx->dispatcher().glUniform4f(location,x,y,z,w);
-}
-
-GL_APICALL void  GL_APIENTRY glUniform4fv(GLint location, GLsizei count, const GLfloat* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform4fv(location,count,v);
-}
-
-GL_APICALL void  GL_APIENTRY glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w){
-    GET_CTX();
-    ctx->dispatcher().glUniform4i(location,x,y,z,w);
-}
-
-GL_APICALL void  GL_APIENTRY glUniform4iv(GLint location, GLsizei count, const GLint* v){
-    GET_CTX();
-    ctx->dispatcher().glUniform4iv(location,count,v);
-}
-
-GL_APICALL void  GL_APIENTRY glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){
-    GET_CTX();
-    SET_ERROR_IF(transpose != GL_FALSE,GL_INVALID_VALUE);
-    ctx->dispatcher().glUniformMatrix2fv(location,count,transpose,value);
-}
-
-GL_APICALL void  GL_APIENTRY glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){
-    GET_CTX();
-    SET_ERROR_IF(transpose != GL_FALSE,GL_INVALID_VALUE);
-    ctx->dispatcher().glUniformMatrix3fv(location,count,transpose,value);
-}
-
-GL_APICALL void  GL_APIENTRY glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){
-    GET_CTX();
-    SET_ERROR_IF(transpose != GL_FALSE,GL_INVALID_VALUE);
-    ctx->dispatcher().glUniformMatrix4fv(location,count,transpose,value);
-}
-
-GL_APICALL void  GL_APIENTRY glUseProgram(GLuint program){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(program!=0 && globalProgramName==0,GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr() && (objData.Ptr()->getDataType()!=PROGRAM_DATA),GL_INVALID_OPERATION);
-        ctx->dispatcher().glUseProgram(globalProgramName);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glValidateProgram(GLuint program){
-    GET_CTX();
-    if(ctx->shareGroup().Ptr()) {
-        const GLuint globalProgramName = ctx->shareGroup()->getGlobalName(SHADER,program);
-        SET_ERROR_IF(globalProgramName==0, GL_INVALID_VALUE);
-        ObjectDataPtr objData = ctx->shareGroup()->getObjectData(SHADER,program);
-        SET_ERROR_IF(objData.Ptr()->getDataType()!=PROGRAM_DATA,GL_INVALID_OPERATION);
-        ProgramData* programData = (ProgramData*)objData.Ptr();
-        ctx->dispatcher().glValidateProgram(globalProgramName);
-
-        GLsizei infoLogLength=0;
-        GLchar* infoLog;
-        ctx->dispatcher().glGetProgramiv(globalProgramName,GL_INFO_LOG_LENGTH,&infoLogLength);
-        infoLog = new GLchar[infoLogLength+1];
-        ctx->dispatcher().glGetProgramInfoLog(globalProgramName,infoLogLength,NULL,infoLog);
-        programData->setInfoLog(infoLog);
-    }
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib1f(GLuint indx, GLfloat x){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib1f(indx,x);
-    if(indx == 0)
-        ctx->setAttribute0value(x, 0.0, 0.0, 1.0);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib1fv(GLuint indx, const GLfloat* values){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib1fv(indx,values);
-    if(indx == 0)
-        ctx->setAttribute0value(values[0], 0.0, 0.0, 1.0);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib2f(indx,x,y);
-    if(indx == 0)
-        ctx->setAttribute0value(x, y, 0.0, 1.0);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib2fv(GLuint indx, const GLfloat* values){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib2fv(indx,values);
-    if(indx == 0)
-        ctx->setAttribute0value(values[0], values[1], 0.0, 1.0);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib3f(indx,x,y,z);
-    if(indx == 0)
-        ctx->setAttribute0value(x, y, z, 1.0);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib3fv(GLuint indx, const GLfloat* values){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib3fv(indx,values);
-    if(indx == 0)
-        ctx->setAttribute0value(values[0], values[1], values[2], 1.0);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib4f(indx,x,y,z,w);
-    if(indx == 0)
-        ctx->setAttribute0value(x, y, z, w);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttrib4fv(GLuint indx, const GLfloat* values){
-    GET_CTX_V2();
-    ctx->dispatcher().glVertexAttrib4fv(indx,values);
-    if(indx == 0)
-        ctx->setAttribute0value(values[0], values[1], values[2], values[3]);
-}
-
-GL_APICALL void  GL_APIENTRY glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr){
-    GET_CTX();
-    SET_ERROR_IF((!GLESv2Validate::arrayIndex(ctx,indx)),GL_INVALID_VALUE);
-    if (type == GL_HALF_FLOAT_OES) type = GL_HALF_FLOAT;
-    ctx->setPointer(indx,size,type,stride,ptr,normalized);
-}
-
-GL_APICALL void  GL_APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height){
-    GET_CTX();
-    ctx->dispatcher().glViewport(x,y,width,height);
-}
-
-GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
-{
-    GET_CTX();
-    SET_ERROR_IF(!GLESv2Validate::textureTargetLimited(target),GL_INVALID_ENUM);
-    EglImage *img = s_eglIface->eglAttachEGLImage((unsigned int)image);
-    if (img) {
-        // Create the texture object in the underlying EGL implementation,
-        // flag to the OpenGL layer to skip the image creation and map the
-        // current binded texture object to the existing global object.
-        if (ctx->shareGroup().Ptr()) {
-            ObjectLocalName tex = TextureLocalName(target,ctx->getBindedTexture(target));
-            unsigned int oldGlobal = ctx->shareGroup()->getGlobalName(TEXTURE, tex);
-            // Delete old texture object
-            if (oldGlobal) {
-                ctx->dispatcher().glDeleteTextures(1, &oldGlobal);
-            }
-            // replace mapping and bind the new global object
-            ctx->shareGroup()->replaceGlobalName(TEXTURE, tex,img->globalTexName);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, img->globalTexName);
-            TextureData *texData = getTextureTargetData(target);
-            SET_ERROR_IF(texData==NULL,GL_INVALID_OPERATION);
-            texData->sourceEGLImage = (unsigned int)image;
-            texData->eglImageDetach = s_eglIface->eglDetachEGLImage;
-            texData->oldGlobal = oldGlobal;
-        }
-    }
-}
-
-GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
-{
-    GET_CTX();
-    SET_ERROR_IF(target != GL_RENDERBUFFER_OES,GL_INVALID_ENUM);
-    EglImage *img = s_eglIface->eglAttachEGLImage((unsigned int)image);
-    SET_ERROR_IF(!img,GL_INVALID_VALUE);
-    SET_ERROR_IF(!ctx->shareGroup().Ptr(),GL_INVALID_OPERATION);
-
-    // Get current bounded renderbuffer
-    // raise INVALID_OPERATIOn if no renderbuffer is bounded
-    GLuint rb = ctx->getRenderbufferBinding();
-    SET_ERROR_IF(rb == 0,GL_INVALID_OPERATION);
-    ObjectDataPtr objData = ctx->shareGroup()->getObjectData(RENDERBUFFER,rb);
-    RenderbufferData *rbData = (RenderbufferData *)objData.Ptr();
-    SET_ERROR_IF(!rbData,GL_INVALID_OPERATION);
-
-    //
-    // flag in the renderbufferData that it is an eglImage target
-    //
-    rbData->sourceEGLImage = (unsigned int)image;
-    rbData->eglImageDetach = s_eglIface->eglDetachEGLImage;
-    rbData->eglImageGlobalTexName = img->globalTexName;
-
-    //
-    // if the renderbuffer is attached to a framebuffer
-    // change the framebuffer attachment in the undelying OpenGL
-    // to point to the eglImage texture object.
-    //
-    if (rbData->attachedFB) {
-        // update the framebuffer attachment point to the
-        // underlying texture of the img
-        GLuint prevFB = ctx->getFramebufferBinding();
-        if (prevFB != rbData->attachedFB) {
-            ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 
-                                                   rbData->attachedFB);
-        }
-        ctx->dispatcher().glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
-                                                    rbData->attachedPoint,
-                                                    GL_TEXTURE_2D,
-                                                    img->globalTexName,0);
-        if (prevFB != rbData->attachedFB) {
-            ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 
-                                                   prevFB);
-        }
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Validate.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Validate.cpp
deleted file mode 100644
index 53d1314..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Validate.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLESv2Validate.h"
-
-bool GLESv2Validate::blendEquationMode(GLenum mode){
-    return mode == GL_FUNC_ADD             ||
-           mode == GL_FUNC_SUBTRACT        ||
-           mode == GL_FUNC_REVERSE_SUBTRACT;
-}
-
-bool GLESv2Validate::blendSrc(GLenum s) {
-   switch(s) {
-   case GL_ZERO:
-   case GL_ONE:
-   case GL_SRC_COLOR:
-   case GL_ONE_MINUS_SRC_COLOR:
-   case GL_DST_COLOR:
-   case GL_ONE_MINUS_DST_COLOR:
-   case GL_SRC_ALPHA:
-   case GL_ONE_MINUS_SRC_ALPHA:
-   case GL_DST_ALPHA:
-   case GL_ONE_MINUS_DST_ALPHA:
-   case GL_CONSTANT_COLOR:
-   case GL_ONE_MINUS_CONSTANT_COLOR:
-   case GL_CONSTANT_ALPHA:
-   case GL_ONE_MINUS_CONSTANT_ALPHA:
-   case GL_SRC_ALPHA_SATURATE:
-        return true;
-  }
-  return false;
-}
-
-
-bool GLESv2Validate::blendDst(GLenum d) {
-   switch(d) {
-   case GL_ZERO:
-   case GL_ONE:
-   case GL_SRC_COLOR:
-   case GL_ONE_MINUS_SRC_COLOR:
-   case GL_DST_COLOR:
-   case GL_ONE_MINUS_DST_COLOR:
-   case GL_SRC_ALPHA:
-   case GL_ONE_MINUS_SRC_ALPHA:
-   case GL_DST_ALPHA:
-   case GL_ONE_MINUS_DST_ALPHA:
-   case GL_CONSTANT_COLOR:
-   case GL_ONE_MINUS_CONSTANT_COLOR:
-   case GL_CONSTANT_ALPHA:
-   case GL_ONE_MINUS_CONSTANT_ALPHA:
-        return true;
-   }
-   return false;
-}
-
-bool GLESv2Validate::textureParams(GLenum param){
-    switch(param) {
-    case GL_TEXTURE_MIN_FILTER:
-    case GL_TEXTURE_MAG_FILTER:
-    case GL_TEXTURE_WRAP_S:
-    case GL_TEXTURE_WRAP_T:
-        return true;
-    default:
-        return false;
-    }
-}
-
-bool GLESv2Validate::hintTargetMode(GLenum target,GLenum mode){
-
-   switch(mode) {
-   case GL_FASTEST:
-   case GL_NICEST:
-   case GL_DONT_CARE:
-       break;
-   default: return false;
-   }
-   return target == GL_GENERATE_MIPMAP_HINT || target == GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES;
-}
-
-bool GLESv2Validate::capability(GLenum cap){
-    switch(cap){
-    case GL_BLEND:
-    case GL_CULL_FACE:
-    case GL_DEPTH_TEST:
-    case GL_DITHER:
-    case GL_POLYGON_OFFSET_FILL:
-    case GL_SAMPLE_ALPHA_TO_COVERAGE:
-    case GL_SAMPLE_COVERAGE:
-    case GL_SCISSOR_TEST:
-    case GL_STENCIL_TEST:
-        return true;
-    }
-    return false;
-}
-
-bool GLESv2Validate::pixelStoreParam(GLenum param){
-    return param == GL_PACK_ALIGNMENT || param == GL_UNPACK_ALIGNMENT;
-}
-
-bool GLESv2Validate::readPixelFrmt(GLenum format){
-    switch(format) {
-    case GL_ALPHA:
-    case GL_RGB:
-    case GL_RGBA:
-        return true;
-    }
-    return false;
-}
-
-
-bool GLESv2Validate::shaderType(GLenum type){
-    return type == GL_VERTEX_SHADER || type == GL_FRAGMENT_SHADER;
-}
-
-bool GLESv2Validate::precisionType(GLenum type){
-    switch(type){
-    case GL_LOW_FLOAT:
-    case GL_MEDIUM_FLOAT:
-    case GL_HIGH_FLOAT:
-    case GL_LOW_INT:
-    case GL_MEDIUM_INT:
-    case GL_HIGH_INT:
-        return true;
-    }
-    return false;
-}
-
-bool GLESv2Validate::arrayIndex(GLEScontext * ctx,GLuint index) {
-    return index < (GLuint)ctx->getCaps()->maxVertexAttribs;
-}
-
-bool GLESv2Validate::pixelType(GLEScontext * ctx,GLenum type) {
-    if(type == GL_UNSIGNED_SHORT || type == GL_UNSIGNED_INT)
-        return true;
-
-    return GLESvalidate::pixelType(ctx, type);
-}
-
-bool GLESv2Validate::pixelFrmt(GLEScontext* ctx,GLenum format) {
-    if(format == GL_DEPTH_COMPONENT)
-        return true;
-
-    return GLESvalidate::pixelFrmt(ctx, format);
-}
-
-bool GLESv2Validate::attribName(const GLchar* name){
-    const GLchar* found = strstr(name,"gl_");
-    return (!found) ||
-           (found != name) ; // attrib name does not start with gl_
-}
-
-bool GLESv2Validate::attribIndex(int index){
-    return index >=0 && index < GL_MAX_VERTEX_ATTRIBS;
-}
-
-bool GLESv2Validate::programParam(GLenum pname){
-    switch(pname){
-        case GL_DELETE_STATUS:
-        case GL_LINK_STATUS:
-        case GL_VALIDATE_STATUS:
-        case GL_INFO_LOG_LENGTH:
-        case GL_ATTACHED_SHADERS:
-        case GL_ACTIVE_ATTRIBUTES:
-        case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:
-        case GL_ACTIVE_UNIFORMS:
-        case GL_ACTIVE_UNIFORM_MAX_LENGTH:
-            return true;
-    }
-    return false;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Validate.h b/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Validate.h
deleted file mode 100644
index c62149b..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/GLESv2Validate.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef GLES_V2_VALIDATE_H
-#define GLES_V2_VALIDATE_H
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#include <GLcommon/GLESvalidate.h>
-
-struct GLESv2Validate:public GLESvalidate{
-static bool blendEquationMode(GLenum mode);
-static bool blendSrc(GLenum s);
-static bool blendDst(GLenum d);
-static bool textureParams(GLenum param);
-static bool hintTargetMode(GLenum target,GLenum mode);
-static bool capability(GLenum cap);
-static bool pixelStoreParam(GLenum param);
-static bool readPixelFrmt(GLenum format);
-static bool shaderType(GLenum type);
-static bool precisionType(GLenum type);
-static bool arrayIndex(GLEScontext * ctx,GLuint index);
-static bool pixelType(GLEScontext * ctx,GLenum type);
-static bool pixelFrmt(GLEScontext* ctx,GLenum format);
-static bool attribName(const GLchar* name);
-static bool attribIndex(int index);
-static bool programParam(GLenum pname);
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ProgramData.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_V2/ProgramData.cpp
deleted file mode 100644
index 656c782..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ProgramData.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLES2/gl2.h>
-#include <GLcommon/objectNameManager.h>
-#include "ProgramData.h"
-
-ProgramData::ProgramData() :  ObjectData(PROGRAM_DATA),
-                              AttachedVertexShader(0),
-                              AttachedFragmentShader(0),
-                              LinkStatus(GL_FALSE) {
-    infoLog = new GLchar[1];
-    infoLog[0] = '\0';
-}
-
-ProgramData::~ProgramData () {
-    delete[] infoLog;
-};
-
-void ProgramData::setInfoLog(GLchar* log) {
-    delete[] infoLog;
-    infoLog = log;
-}
-
-GLchar* ProgramData::getInfoLog() {
-    return infoLog;
-}
-
-GLuint ProgramData::getAttachedVertexShader() {
-    return AttachedVertexShader;
-}
-
-GLuint ProgramData::getAttachedFragmentShader() {
-    return AttachedFragmentShader;
-}
-
-GLuint ProgramData::getAttachedShader(GLenum type) {
-    GLuint shader = 0;
-    switch (type) {
-    case GL_VERTEX_SHADER:
-        shader = AttachedVertexShader;
-        break;
-    case GL_FRAGMENT_SHADER:
-        shader = AttachedFragmentShader;
-        break;
-    }
-    return shader;
-}
-
-bool ProgramData::attachShader(GLuint shader,GLenum type) {
-    if (type==GL_VERTEX_SHADER && AttachedVertexShader==0) {
-        AttachedVertexShader=shader;
-        return true;
-    }
-    else if (type==GL_FRAGMENT_SHADER && AttachedFragmentShader==0) {
-        AttachedFragmentShader=shader;
-        return true;
-    }
-    return false;
-}
-
-bool ProgramData::isAttached(GLuint shader) {
-    return (AttachedFragmentShader==shader || AttachedVertexShader==shader);
-}
-
-bool ProgramData::detachShader(GLuint shader) {
-    if (AttachedVertexShader==shader) {
-        AttachedVertexShader = 0;
-        return true;
-    }
-    else if (AttachedFragmentShader==shader) {
-        AttachedFragmentShader = 0;
-        return true;
-    }
-    return false;
-}
-
-void ProgramData::setLinkStatus(GLint status) {
-    LinkStatus = status;
-}
-
-GLint ProgramData::getLinkStatus() {
-    return LinkStatus;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ProgramData.h b/tools/emulator/opengl/host/libs/Translator/GLES_V2/ProgramData.h
deleted file mode 100644
index a79574a..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ProgramData.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef PROGRAM_DATA_H
-#define PROGRAM_DATA_H
-
-class ProgramData:public ObjectData{
-public:
-    ProgramData();
-    virtual ~ProgramData();
-
-    GLuint getAttachedVertexShader();
-    GLuint getAttachedFragmentShader();
-    GLuint getAttachedShader(GLenum type);
-
-    bool attachShader(GLuint shader,GLenum type);
-    bool isAttached(GLuint shader);
-    bool detachShader(GLuint shader);
-
-    void setLinkStatus(GLint status);
-    GLint getLinkStatus();
-
-    void setInfoLog(GLchar *log);
-    GLchar* getInfoLog();
-
-private:
-    GLuint AttachedVertexShader;
-    GLuint AttachedFragmentShader;
-    GLint  LinkStatus;
-    GLchar* infoLog;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ShaderParser.cpp b/tools/emulator/opengl/host/libs/Translator/GLES_V2/ShaderParser.cpp
deleted file mode 100644
index 82cf5b5..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ShaderParser.cpp
+++ /dev/null
@@ -1,327 +0,0 @@
-#include "ShaderParser.h"
-#include <string.h>
-
-ShaderParser::ShaderParser():ObjectData(SHADER_DATA),
-                             m_type(0),
-                             m_originalSrc(NULL),
-                             m_parsedLines(NULL) {
-    m_infoLog = new GLchar[1];
-    m_infoLog[0] = '\0';
-};
-
-ShaderParser::ShaderParser(GLenum type):ObjectData(SHADER_DATA), 
-                                        m_type(type),
-                                        m_originalSrc(NULL),
-                                        m_parsedLines(NULL) {
-
-    m_infoLog = new GLchar[1];
-    m_infoLog[0] = '\0';
-};
-
-void ShaderParser::setSrc(const Version& ver,GLsizei count,const GLchar** strings,const GLint* length){
-    for(int i = 0;i<count;i++){
-        m_src.append(strings[i]);
-    }
-    //store original source
-    if (m_originalSrc)
-        free(m_originalSrc);
-    m_originalSrc = strdup(m_src.c_str());
-
-    clearParsedSrc();
-
-    // parseGLSLversion must be called first since #version should be the
-    // first token in the shader source.
-    parseGLSLversion();
-    parseBuiltinConstants();
-    /*
-      version 1.30.10 is the first version of GLSL Language containing precision qualifiers
-      if the glsl version is less than 1.30.10 than we will use a shader parser which omits
-      all precision qualifiers from the shader source , otherwise we will use a shader parser
-      which set the default precisions to be the same as the default precisions of GLSL ES
-    */
-#if 0
-    if(ver < Version(1,30,10)){
-        parseOmitPrecision();
-     } else {
-        parseExtendDefaultPrecision();
-     }
-#else
-    //XXX: Until proved otherwise, glsl doesn't know/use those precision macros, so we omit then
-    parseOmitPrecision();
-#endif
-    parseLineNumbers();
-    parseOriginalSrc();
-}
-const GLchar** ShaderParser::parsedLines() {
-      m_parsedLines = (GLchar*)m_parsedSrc.c_str();
-      return const_cast<const GLchar**> (&m_parsedLines);
-};
-
-const char* ShaderParser::getOriginalSrc(){
-    return m_originalSrc;
-}
-
-void ShaderParser::parseLineNumbers()
-{
-    m_parsedSrc += "#line 1\n";
-}
-
-void ShaderParser::parseOriginalSrc() {
-    m_parsedSrc+=m_src;
-}
-
-void ShaderParser::parseGLSLversion() {
-
-    //
-    // find in shader the #version token if exist.
-    // That token should be the first non-comment or blank token
-    //
-    const char *src = m_src.c_str();
-    const int minGLSLVersion = 120;
-    int glslVersion = minGLSLVersion;
-    enum {
-        PARSE_NONE,
-        PARSE_IN_C_COMMENT,
-        PARSE_IN_LINE_COMMENT
-    } parseState = PARSE_NONE;
-    const char *c = src;
-
-    while( c && *c != '\0') {
-        if (parseState == PARSE_IN_C_COMMENT) {
-            if (*c == '*' && *(c+1) == '/') {
-                parseState = PARSE_NONE;
-                c += 2;
-            }
-            else c++;
-        }
-        else if (parseState == PARSE_IN_LINE_COMMENT) {
-            if (*c == '\n') {
-                parseState = PARSE_NONE;
-            }
-            c++;
-        }
-        else if (*c == '/' && *(c+1) == '/') {
-            parseState = PARSE_IN_LINE_COMMENT;
-            c += 2;
-        }
-        else if (*c == '/' && *(c+1) == '*') {
-            parseState = PARSE_IN_C_COMMENT;
-            c += 2;
-        }
-        else if (*c == ' ' || *c == '\t' || *c == '\r' || *c == '\n') {
-            c++;
-        }
-        else {
-            //
-            // We have reached the first non-blank character outside
-            // a comment, this must be a #version token or else #version
-            // token does not exist in this shader source.
-            //
-            if (!strncmp(c,"#version",8)) {
-                int ver;
-                if (sscanf(c+8,"%d",&ver) == 1) {
-                    //
-                    // parsed version string correctly, blank out the
-                    // version token from the source, we will add it later at
-                    // the begining of the shader.
-                    //
-                    char *cc = (char *)c;
-                    for (int i=0; i<8; i++,cc++) *cc = ' ';
-                    while (*cc < '0' || *cc > '9') { *cc = ' '; cc++; }
-                    while (*cc >= '0' && *cc <= '9') { *cc = ' '; cc++; }
-
-                    // Use the version from the source but only if
-                    // it is larger than our minGLSLVersion
-                    if (ver > minGLSLVersion) glslVersion = ver;
-                }
-            }
-
-            //
-            // break the loop, no need to go further on the source.
-            break;
-        }
-    }
-
-    //
-    // allow to force GLSL version through environment variable
-    //
-    const char *forceVersion = getenv("GOOGLE_GLES_FORCE_GLSL_VERSION");
-    if (forceVersion) {
-        int ver;
-        if (sscanf(forceVersion,"%d",&ver) == 1) {
-            glslVersion = ver;
-        }
-    }
-
-    //
-    // if glslVersion is defined, add it to the parsed source
-    //
-    if (glslVersion > 0) {
-        char vstr[16];
-        sprintf(vstr,"%d",glslVersion);
-        m_parsedSrc += std::string("#version ") + 
-                       std::string(vstr) + 
-                       std::string("\n");
-    }
-}
-
-void ShaderParser::parseBuiltinConstants()
-{
-    m_parsedSrc += 
-                   "const int _translator_gl_MaxVertexUniformVectors = 256;\n"
-                   "const int _translator_gl_MaxFragmentUniformVectors = 256;\n"
-                   "const int _translator_gl_MaxVaryingVectors = 15;\n"
-                   "#define gl_MaxVertexUniformVectors _translator_gl_MaxVertexUniformVectors\n"
-                   "#define gl_MaxFragmentUniformVectors _translator_gl_MaxFragmentUniformVectors\n"
-                   "#define gl_MaxVaryingVectors _translator_gl_MaxVaryingVectors\n";
-
-}
-
-void ShaderParser::parseOmitPrecision(){
-
-    //defines we need to add in order to Omit precisions qualifiers
-    static const GLchar defines[] = {
-                                         "#define GLES 1\n"
-                                         "#define lowp \n"
-                                         "#define mediump \n"
-                                         "#define highp \n"
-                                     };
-    m_parsedSrc+=defines;
-
-    //
-    // parse the source and blank out precision statements
-    // which has the following syntax:
-    //   precision {qualifier} {type};
-    // where {qualifier} is one of lowp,mediump or hightp
-    // type is any valid GLES defined type (we do not check that here!)
-    // NOTE: This is needed in order to workaround driver bug in
-    //       Intel/Linux where the compiler does not get statement like
-    //       "float;", otherwise we could just define a macro named
-    //       precision to be empty.
-    //
-    const char *src = m_src.c_str();
-
-    enum { 
-        PRECISION,
-        QUALIFIER,
-        SEMICOLON
-    } statementState = PRECISION;
-    const char *precision = NULL;
-    const char *delimiter = NULL;
-    
-    enum {
-        PARSE_NONE,
-        PARSE_IN_C_COMMENT,
-        PARSE_IN_LINE_COMMENT
-    } parseState = PARSE_NONE;
-    const char *c = src;
-    const char *t = NULL;
-
-    #define IS_DELIMITER(c) ( (c) == ' ' || (c) == '\t' || (c) == '\r' || (c) == '\n' )
-    #define IS_TOKEN_START(c) ( ((c) >= 'a' && (c) <='z') || ((c) >= 'A' && (c) <= 'Z') )
-    #define IS_TOKEN_DELIMITER(c) ( IS_DELIMITER(c) || (c) == ';' )
-
-    while( c && *c != '\0') {
-        if (parseState == PARSE_IN_C_COMMENT) {
-            if (*c == '*' && *(c+1) == '/') {
-                parseState = PARSE_NONE;
-                c += 2;
-            }
-            else c++;
-        }
-        else if (parseState == PARSE_IN_LINE_COMMENT) {
-            if (*c == '\n') {
-                parseState = PARSE_NONE;
-            }
-            c++;
-        }
-        else if (*c == '/' && *(c+1) == '/') {
-            parseState = PARSE_IN_LINE_COMMENT;
-            c += 2;
-        }
-        else if (*c == '/' && *(c+1) == '*') {
-            parseState = PARSE_IN_C_COMMENT;
-            c += 2;
-        }
-        else if (t && IS_TOKEN_DELIMITER(*c)) {
-            int tokenLen = c - t;
-            switch (statementState) {
-            case PRECISION:
-                if (tokenLen == 9 && !strncmp(t,"precision",9)) {
-                    statementState = QUALIFIER;
-                    precision = t;
-                }
-                break;
-            case QUALIFIER:
-                if ((tokenLen == 4 && !strncmp(t,"lowp",4)) ||
-                    (tokenLen == 7 && !strncmp(t,"mediump",7)) ||
-                    (tokenLen == 5 && !strncmp(t,"highp",5))) {
-                    statementState = SEMICOLON;
-                }
-                else {
-                    statementState = PRECISION;
-                }
-                break;
-            case SEMICOLON:
-                if (*c == ';') {
-                    for (char *r = (char *)precision; r<=c ; ++r) {
-                        *r = ' '; //blank the character
-                    }
-                }
-                statementState = PRECISION; //search for the next precision line
-                break;
-            default:
-                break;
-            }
-            c++;
-            t = NULL;
-        }
-        else if (IS_DELIMITER(*c)) {
-            c++;
-        }
-        else {
-            if (!t && IS_TOKEN_START(*c)) {
-                t = c;
-            }
-            c++;
-        }
-    }
-}
-
-void ShaderParser::parseExtendDefaultPrecision(){
-
-    //the precision lines which we need to add to the shader
-    static const GLchar extend[] = {
-                                      "#define GLES 1\n"
-                                      "precision lowp sampler2D;\n"
-                                      "precision lowp samplerCube;\n"
-                                   };
-
-    m_parsedSrc+=extend;
-}
-
-void ShaderParser::clearParsedSrc(){
-    m_parsedSrc.clear();
-}
-
-GLenum ShaderParser::getType() {
-    return m_type;
-}
-
-void ShaderParser::setInfoLog(GLchar* infoLog)
-{
-    delete[] m_infoLog;
-    m_infoLog = infoLog;
-}
-
-GLchar* ShaderParser::getInfoLog()
-{   
-    return m_infoLog;
-}
-
-ShaderParser::~ShaderParser(){
-    clearParsedSrc();
-    if (m_originalSrc)
-        free(m_originalSrc);
-    delete[] m_infoLog;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ShaderParser.h b/tools/emulator/opengl/host/libs/Translator/GLES_V2/ShaderParser.h
deleted file mode 100644
index 8c0ff3e..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLES_V2/ShaderParser.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SHADER_PARSER_H
-#define SHADER_PARSER_H
-
-#include "GLESv2Context.h"
-#include <string>
-#include <GLES2/gl2.h>
-#include <GLcommon/objectNameManager.h>
-
-class ShaderParser:public ObjectData{
-public:
-    ShaderParser();
-    ShaderParser(GLenum type);
-    void           setSrc(const Version& ver,GLsizei count,const GLchar** strings,const GLint* length);
-    const char*    getOriginalSrc();
-    const GLchar** parsedLines();
-    GLenum         getType();
-    ~ShaderParser();
-
-    void setInfoLog(GLchar * infoLog);
-    GLchar* getInfoLog();
-
-private:
-    void parseOriginalSrc();
-    void parseGLSLversion();
-    void parseBuiltinConstants();
-    void parseOmitPrecision();
-    void parseExtendDefaultPrecision();
-    void parseLineNumbers();
-    void clearParsedSrc();
-
-    GLenum      m_type;
-    char*       m_originalSrc;
-    std::string m_src;
-    std::string m_parsedSrc;
-    GLchar*     m_parsedLines;
-    GLchar*     m_infoLog;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/Android.mk b/tools/emulator/opengl/host/libs/Translator/GLcommon/Android.mk
deleted file mode 100644
index 88d8bdf..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-### EGL host implementation ########################
-$(call emugl-begin-host-static-library,libGLcommon)
-
-$(call emugl-import,libOpenglOsUtils)
-
-translator_path := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES :=           \
-     GLDispatch.cpp          \
-     GLutils.cpp             \
-     GLEScontext.cpp         \
-     GLESvalidate.cpp        \
-     GLESpointer.cpp         \
-     GLESbuffer.cpp          \
-     DummyGLfuncs.cpp        \
-     RangeManip.cpp          \
-     TextureUtils.cpp        \
-     PaletteTexture.cpp      \
-     etc1.cpp                \
-     objectNameManager.cpp   \
-     FramebufferData.cpp
-
-ifeq ($(HOST_OS),linux)
-#    $(call emugl-export,LDFLAGS,-Wl,--whole-archive)
-    $(call emugl-export,LDLIBS,-lGL -ldl)
-    GL_COMMON_LINKER_FLAGS := -Wl,-Bsymbolic
-    $(call emugl-export,LDFLAGS,$(GL_COMMON_LINKER_FLAGS))
-endif
-
-ifeq ($(HOST_OS),windows)
-    $(call emugl-export,LDLIBS,-lopengl32 -lgdi32)
-    GL_COMMON_LINKER_FLAGS := -Wl,--add-stdcall-alias
-    $(call emugl-export,LDFLAGS,$(GL_COMMON_LINKER_FLAGS))
-endif
-
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH)/../include $(EMUGL_PATH)/shared)
-$(call emugl-export,STATIC_LIBRARIES, libcutils libutils liblog)
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/DummyGLfuncs.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/DummyGLfuncs.cpp
deleted file mode 100644
index 722aca0..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/DummyGLfuncs.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-#include "DummyGLfuncs.h"
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-    void GLAPIENTRY dummy_glActiveTexture ( GLenum texture ){}
-    void GLAPIENTRY dummy_glBindBuffer (GLenum target, GLuint buffer){}
-    void GLAPIENTRY dummy_glBindTexture (GLenum target, GLuint texture){}
-    void GLAPIENTRY dummy_glBlendFunc (GLenum sfactor, GLenum dfactor){}
-    void GLAPIENTRY dummy_glBlendEquation( GLenum mode ){}
-    void GLAPIENTRY dummy_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha){}
-    void GLAPIENTRY dummy_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha){}
-    void GLAPIENTRY dummy_glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage){}
-    void GLAPIENTRY dummy_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data){}
-    void GLAPIENTRY dummy_glClear(GLbitfield mask){}
-    void GLAPIENTRY dummy_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha){}
-    void GLAPIENTRY dummy_glClearStencil(GLint s){}
-    void GLAPIENTRY dummy_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha){}
-    void GLAPIENTRY dummy_glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ){}
-    void GLAPIENTRY dummy_glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ){}
-    void GLAPIENTRY dummy_glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border){}
-    void GLAPIENTRY dummy_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height){}
-    void GLAPIENTRY dummy_glCullFace(GLenum mode){}
-    void GLAPIENTRY dummy_glDeleteBuffers(GLsizei n, const GLuint *buffers){}
-    void GLAPIENTRY dummy_glDeleteTextures(GLsizei n, const GLuint *textures){}
-    void GLAPIENTRY dummy_glDepthFunc(GLenum func){}
-    void GLAPIENTRY dummy_glDepthMask(GLboolean flag){}
-    void GLAPIENTRY dummy_glDepthRange(GLclampd zNear, GLclampd zFar){}
-    void GLAPIENTRY dummy_glDisable(GLenum cap){}
-    void GLAPIENTRY dummy_glDrawArrays(GLenum mode, GLint first, GLsizei count){}
-    void GLAPIENTRY dummy_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices){}
-    void GLAPIENTRY dummy_glEnable(GLenum cap){}
-    void GLAPIENTRY dummy_glFinish(void){}
-    void GLAPIENTRY dummy_glFlush(void){}
-    void GLAPIENTRY dummy_glFrontFace(GLenum mode){}
-    void GLAPIENTRY dummy_glGenBuffers(GLsizei n, GLuint *buffers){}
-    void GLAPIENTRY dummy_glGenTextures(GLsizei n, GLuint *textures){}
-    void GLAPIENTRY dummy_glGetBooleanv(GLenum pname, GLboolean *params){}
-    void GLAPIENTRY dummy_glGetBufferParameteriv(GLenum, GLenum, GLint *){}
-    GLenum GLAPIENTRY dummy_glGetError(void){ return 0;}
-    void GLAPIENTRY dummy_glGetFloatv(GLenum pname, GLfloat *params){}
-    void GLAPIENTRY dummy_glGetIntegerv(GLenum pname, GLint *params){}
-    const GLubyte * GLAPIENTRY dummy_glGetString(GLenum name){ return 0;}
-    void GLAPIENTRY dummy_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params){}
-    void GLAPIENTRY dummy_glGetTexParameteriv(GLenum target, GLenum pname, GLint *params){}
-    void GLAPIENTRY dummy_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params){}
-    void GLAPIENTRY dummy_glHint(GLenum target, GLenum mode){}
-    GLboolean GLAPIENTRY dummy_glIsBuffer(GLuint){ return false;}
-    GLboolean GLAPIENTRY dummy_glIsEnabled(GLenum cap){ return false;}
-    GLboolean GLAPIENTRY dummy_glIsTexture(GLuint texture){return false;}
-    void GLAPIENTRY dummy_glLineWidth(GLfloat width){}
-    void GLAPIENTRY dummy_glPolygonOffset(GLfloat factor, GLfloat units){}
-    void GLAPIENTRY dummy_glPixelStorei(GLenum pname, GLint param){}
-    void GLAPIENTRY dummy_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels){}
-    void GLAPIENTRY dummy_glSampleCoverage(GLclampf value, GLboolean invert ){}
-    void GLAPIENTRY dummy_glScissor(GLint x, GLint y, GLsizei width, GLsizei height){}
-    void GLAPIENTRY dummy_glStencilFunc(GLenum func, GLint ref, GLuint mask){}
-    void GLAPIENTRY dummy_glStencilMask(GLuint mask){}
-    void GLAPIENTRY dummy_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass){}
-    void GLAPIENTRY dummy_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels){}
-    void GLAPIENTRY dummy_glTexParameteri(GLenum target, GLenum pname, GLint param){}
-    void GLAPIENTRY dummy_glTexParameteriv(GLenum target, GLenum pname, const GLint *params){}
-    void GLAPIENTRY dummy_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels){}
-    void GLAPIENTRY dummy_glViewport(GLint x, GLint y, GLsizei width, GLsizei height){}
-    void GLAPIENTRY dummy_glPushAttrib( GLbitfield mask ){}
-    void GLAPIENTRY dummy_glPopAttrib( void ){}
-    void GLAPIENTRY dummy_glPushClientAttrib( GLbitfield mask ){}
-    void GLAPIENTRY dummy_glPopClientAttrib( void ){}
-
-    /* OpenGL functions which are needed ONLY for implementing GLES 1.1*/
-    void GLAPIENTRY dummy_glAlphaFunc(GLenum func, GLclampf ref){}
-    void GLAPIENTRY dummy_glBegin( GLenum mode ){}
-    void GLAPIENTRY dummy_glClearDepth(GLclampd depth){}
-    void GLAPIENTRY dummy_glClientActiveTexture( GLenum texture ){}
-    void GLAPIENTRY dummy_glClipPlane(GLenum plane, const GLdouble *equation){}
-    void GLAPIENTRY dummy_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha){}
-    void GLAPIENTRY dummy_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha){}
-    void GLAPIENTRY dummy_glColor4fv( const GLfloat *v ){}
-    void GLAPIENTRY dummy_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha){}
-    void GLAPIENTRY dummy_glColor4ubv( const GLubyte *v ){}
-    void GLAPIENTRY dummy_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer){}
-    void GLAPIENTRY dummy_glDisableClientState(GLenum array){}
-    void GLAPIENTRY dummy_glEnableClientState(GLenum array){}
-    void GLAPIENTRY dummy_glEnd(void){}
-    void GLAPIENTRY dummy_glFogf(GLenum pname, GLfloat param){}
-    void GLAPIENTRY dummy_glFogfv(GLenum pname, const GLfloat *params){}
-    void GLAPIENTRY dummy_glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar){}
-    void GLAPIENTRY dummy_glGetClipPlane(GLenum plane, GLdouble *equation){}
-    void GLAPIENTRY dummy_glGetDoublev( GLenum pname, GLdouble *params ){}
-    void GLAPIENTRY dummy_glGetLightfv(GLenum light, GLenum pname, GLfloat *params){}
-    void GLAPIENTRY dummy_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params){}
-    void GLAPIENTRY dummy_glGetPointerv(GLenum pname, GLvoid* *params){}
-    void GLAPIENTRY dummy_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params){}
-    void GLAPIENTRY dummy_glGetTexEnviv(GLenum target, GLenum pname, GLint *params){}
-    void GLAPIENTRY dummy_glLightf(GLenum light, GLenum pname, GLfloat param){}
-    void GLAPIENTRY dummy_glLightfv(GLenum light, GLenum pname, const GLfloat *params){}
-    void GLAPIENTRY dummy_glLightModelf(GLenum pname, GLfloat param){}
-    void GLAPIENTRY dummy_glLightModelfv(GLenum pname, const GLfloat *params){}
-    void GLAPIENTRY dummy_glLoadIdentity(void){}
-    void GLAPIENTRY dummy_glLoadMatrixf(const GLfloat *m){}
-    void GLAPIENTRY dummy_glLogicOp(GLenum opcode){}
-    void GLAPIENTRY dummy_glMaterialf(GLenum face, GLenum pname, GLfloat param){}
-    void GLAPIENTRY dummy_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params){}
-    void GLAPIENTRY dummy_glMultiTexCoord2fv( GLenum target, const GLfloat *v ){}
-    void GLAPIENTRY dummy_glMultiTexCoord2sv( GLenum target, const GLshort *v ){}
-    void GLAPIENTRY dummy_glMultiTexCoord3fv( GLenum target, const GLfloat *v ){}
-    void GLAPIENTRY dummy_glMultiTexCoord3sv( GLenum target, const GLshort *v ){}
-    void GLAPIENTRY dummy_glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ){}
-    void GLAPIENTRY dummy_glMultiTexCoord4fv( GLenum target, const GLfloat *v ){}
-    void GLAPIENTRY dummy_glMultiTexCoord4sv( GLenum target, const GLshort *v ){}
-    void GLAPIENTRY dummy_glMultMatrixf(const GLfloat *m){}
-    void GLAPIENTRY dummy_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz){}
-    void GLAPIENTRY dummy_glNormal3fv( const GLfloat *v ){}
-    void GLAPIENTRY dummy_glNormal3sv(const GLshort *v ){}
-    void GLAPIENTRY dummy_glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar){}
-    void GLAPIENTRY dummy_glPointParameterf(GLenum, GLfloat){}
-    void GLAPIENTRY dummy_glPointParameterfv(GLenum, const GLfloat *){}
-    void GLAPIENTRY dummy_glPointSize(GLfloat size){}
-    void GLAPIENTRY dummy_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z){}
-    void GLAPIENTRY dummy_glScalef(GLfloat x, GLfloat y, GLfloat z){}
-    void GLAPIENTRY dummy_glTexEnvf(GLenum target, GLenum pname, GLfloat param){}
-    void GLAPIENTRY dummy_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params){}
-    void GLAPIENTRY dummy_glTexParameterf(GLenum target, GLenum pname, GLfloat param){}
-    void GLAPIENTRY dummy_glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params){}
-    void GLAPIENTRY dummy_glMatrixMode(GLenum mode){}
-    void GLAPIENTRY dummy_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer){}
-    void GLAPIENTRY dummy_glPopMatrix(void){}
-    void GLAPIENTRY dummy_glPushMatrix(void){}
-    void GLAPIENTRY dummy_glShadeModel(GLenum mode){}
-    void GLAPIENTRY dummy_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer){}
-    void GLAPIENTRY dummy_glTexEnvi(GLenum target, GLenum pname, GLint param){}
-    void GLAPIENTRY dummy_glTexEnviv(GLenum target, GLenum pname, const GLint *params){}
-    void GLAPIENTRY dummy_glTranslatef(GLfloat x, GLfloat y, GLfloat z){}
-    void GLAPIENTRY dummy_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer){}
-
-    /* OpenGL functions which are needed ONLY for implementing GLES 1.1 EXTENSIONS*/
-    GLboolean GLAPIENTRY dummy_glIsRenderbufferEXT(GLuint renderbuffer){ return false;}
-    void GLAPIENTRY dummy_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer){}
-    void GLAPIENTRY dummy_glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers){}
-    void GLAPIENTRY dummy_glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers){}
-    void GLAPIENTRY dummy_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){}
-    void GLAPIENTRY dummy_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params){}
-    GLboolean GLAPIENTRY dummy_glIsFramebufferEXT(GLuint framebuffer){ return false;}
-    void GLAPIENTRY dummy_glBindFramebufferEXT(GLenum target, GLuint framebuffer){}
-    void GLAPIENTRY dummy_glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers){}
-    void GLAPIENTRY dummy_glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers){}
-    GLenum GLAPIENTRY dummy_glCheckFramebufferStatusEXT(GLenum target){ return 0;}
-    void GLAPIENTRY dummy_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){}
-    void GLAPIENTRY dummy_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){}
-    void GLAPIENTRY dummy_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset){}
-    void GLAPIENTRY dummy_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer){}
-    void GLAPIENTRY dummy_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params){}
-    void GLAPIENTRY dummy_glGenerateMipmapEXT(GLenum target){}
-    void GLAPIENTRY dummy_glCurrentPaletteMatrixARB(GLint index){}
-    void GLAPIENTRY dummy_glMatrixIndexuivARB(GLint size, GLuint * indices){}
-    void GLAPIENTRY dummy_glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer){}
-    void GLAPIENTRY dummy_glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer){}
-    void GLAPIENTRY dummy_glTexGenf(GLenum coord, GLenum pname, GLfloat param ){}
-    void GLAPIENTRY dummy_glTexGeni(GLenum coord, GLenum pname, GLint param ){}
-    void GLAPIENTRY dummy_glTexGenf(GLenum coord, GLenum pname, const GLfloat *params ){}
-    void GLAPIENTRY dummy_glTexGeniv(GLenum coord, GLenum pname, const GLint *params ){}
-    void GLAPIENTRY dummy_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params ){}
-    void GLAPIENTRY dummy_glGetTexGeniv(GLenum coord, GLenum pname, GLint *params ){}
-
-    /* Loading OpenGL functions which are needed ONLY for implementing GLES 2.0*/
-    void GL_APIENTRY dummy_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha){}
-    void GL_APIENTRY dummy_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask){}
-    void GL_APIENTRY dummy_glStencilMaskSeparate(GLenum face, GLuint mask){}
-    void GL_APIENTRY dummy_glGenerateMipmap(GLenum target){}
-    void GL_APIENTRY dummy_glBindFramebuffer(GLenum target, GLuint framebuffer){}
-    void GL_APIENTRY dummy_glBindRenderbuffer(GLenum target, GLuint renderbuffer){}
-    void GL_APIENTRY dummy_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers){}
-    void GL_APIENTRY dummy_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers){}
-    GLboolean GL_APIENTRY dummy_glIsProgram(GLuint program){ return false;}
-    GLboolean GL_APIENTRY dummy_glIsShader(GLuint shader){ return false;}
-    void GL_APIENTRY dummy_glVertexAttrib1f(GLuint indx, GLfloat x){}
-    void GL_APIENTRY dummy_glVertexAttrib1fv(GLuint indx, const GLfloat* values){}
-    void GL_APIENTRY dummy_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y){}
-    void GL_APIENTRY dummy_glVertexAttrib2fv(GLuint indx, const GLfloat* values){}
-    void GL_APIENTRY dummy_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z){}
-    void GL_APIENTRY dummy_glVertexAttrib3fv(GLuint indx, const GLfloat* values){}
-    void GL_APIENTRY dummy_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w){}
-    void GL_APIENTRY dummy_glVertexAttrib4fv(GLuint indx, const GLfloat* values){}
-    void GL_APIENTRY dummy_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr){}
-    void GL_APIENTRY dummy_glDisableVertexAttribArray(GLuint index){}
-    void GL_APIENTRY dummy_glEnableVertexAttribArray(GLuint index){}
-    void GL_APIENTRY dummy_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params){}
-    void GL_APIENTRY dummy_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params){}
-    void GL_APIENTRY dummy_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer){}
-    void GL_APIENTRY dummy_glUniform1f(GLint location, GLfloat x){}
-    void GL_APIENTRY dummy_glUniform1fv(GLint location, GLsizei count, const GLfloat* v){}
-    void GL_APIENTRY dummy_glUniform1i(GLint location, GLint x){}
-    void GL_APIENTRY dummy_glUniform1iv(GLint location, GLsizei count, const GLint* v){}
-    void GL_APIENTRY dummy_glUniform2f(GLint location, GLfloat x, GLfloat y){}
-    void GL_APIENTRY dummy_glUniform2fv(GLint location, GLsizei count, const GLfloat* v){}
-    void GL_APIENTRY dummy_glUniform2i(GLint location, GLint x, GLint y){}
-    void GL_APIENTRY dummy_glUniform2iv(GLint location, GLsizei count, const GLint* v){}
-    void GL_APIENTRY dummy_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z){}
-    void GL_APIENTRY dummy_glUniform3fv(GLint location, GLsizei count, const GLfloat* v){}
-    void GL_APIENTRY dummy_glUniform3i(GLint location, GLint x, GLint y, GLint z){}
-    void GL_APIENTRY dummy_glUniform3iv(GLint location, GLsizei count, const GLint* v){}
-    void GL_APIENTRY dummy_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w){}
-    void GL_APIENTRY dummy_glUniform4fv(GLint location, GLsizei count, const GLfloat* v){}
-    void GL_APIENTRY dummy_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w){}
-    void GL_APIENTRY dummy_glUniform4iv(GLint location, GLsizei count, const GLint* v){}
-    void GL_APIENTRY dummy_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){}
-    void GL_APIENTRY dummy_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){}
-    void GL_APIENTRY dummy_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value){}
-    void GL_APIENTRY dummy_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params){}
-    void GL_APIENTRY dummy_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params){}
-    GLboolean GL_APIENTRY dummy_glIsFramebuffer(GLuint framebuffer){ return false;}
-    GLboolean GL_APIENTRY dummy_glIsRenderbuffer(GLuint renderbuffer){ return false;}
-    GLenum GL_APIENTRY dummy_glCheckFramebufferStatus(GLenum target){ return 0;}
-    void GL_APIENTRY dummy_glAttachShader(GLuint program, GLuint shader){}
-    void GL_APIENTRY dummy_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name){}
-    void GL_APIENTRY dummy_glCompileShader(GLuint shader){}
-    GLuint GL_APIENTRY dummy_glCreateProgram(void){ return 0;}
-    GLuint GL_APIENTRY dummy_glCreateShader(GLenum type){ return 0;}
-    void GL_APIENTRY dummy_glDeleteProgram(GLuint program){}
-    void GL_APIENTRY dummy_glDeleteShader(GLuint shader){}
-    void GL_APIENTRY dummy_glDetachShader(GLuint program, GLuint shader){}
-    void GL_APIENTRY dummy_glLinkProgram(GLuint program){}
-    void GL_APIENTRY dummy_glUseProgram(GLuint program){}
-    void GL_APIENTRY dummy_glValidateProgram(GLuint program){}
-    void GL_APIENTRY dummy_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name){}
-    void GL_APIENTRY dummy_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name){}
-    void GL_APIENTRY dummy_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders){}
-    int  GL_APIENTRY dummy_glGetAttribLocation(GLuint program, const GLchar* name){ return 0;}
-    void GL_APIENTRY dummy_glGetProgramiv(GLuint program, GLenum pname, GLint* params){}
-    void GL_APIENTRY dummy_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog){}
-    void GL_APIENTRY dummy_glGetShaderiv(GLuint shader, GLenum pname, GLint* params){}
-    void GL_APIENTRY dummy_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog){}
-    void GL_APIENTRY dummy_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision){}
-    void GL_APIENTRY dummy_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source){}
-    void GL_APIENTRY dummy_glGetUniformfv(GLuint program, GLint location, GLfloat* params){}
-    void GL_APIENTRY dummy_glGetUniformiv(GLuint program, GLint location, GLint* params){}
-    int  GL_APIENTRY dummy_glGetUniformLocation(GLuint program, const GLchar* name){ return 0;}
-    void GL_APIENTRY dummy_glReleaseShaderCompiler(void){}
-    void GL_APIENTRY dummy_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height){}
-    void GL_APIENTRY dummy_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length){}
-    void GL_APIENTRY dummy_glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length){}
-    void GL_APIENTRY dummy_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer){}
-    void GL_APIENTRY dummy_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level){}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/DummyGLfuncs.h b/tools/emulator/opengl/host/libs/Translator/GLcommon/DummyGLfuncs.h
deleted file mode 100644
index c7e3519..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/DummyGLfuncs.h
+++ /dev/null
@@ -1,265 +0,0 @@
-#ifndef DUMMY_GL_FUNCS_H
-#define DUMMY_GL_FUNCS_H
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <GLES/gl.h>
-#include <GLES2/gl2.h>
-
-#include <GLcommon/gldefs.h>
-#define GLAPIENTRY GL_APIENTRY
-
-    void GLAPIENTRY dummy_glActiveTexture ( GLenum texture );
-    void GLAPIENTRY dummy_glBindBuffer (GLenum target, GLuint buffer);
-    void GLAPIENTRY dummy_glBindTexture (GLenum target, GLuint texture);
-    void GLAPIENTRY dummy_glBlendFunc (GLenum sfactor, GLenum dfactor);
-    void GLAPIENTRY dummy_glBlendEquation( GLenum mode );
-    void GLAPIENTRY dummy_glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
-    void GLAPIENTRY dummy_glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-    void GLAPIENTRY dummy_glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
-    void GLAPIENTRY dummy_glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
-    void GLAPIENTRY dummy_glClear(GLbitfield mask);
-    void GLAPIENTRY dummy_glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-    void GLAPIENTRY dummy_glClearStencil(GLint s);
-    void GLAPIENTRY dummy_glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-    void GLAPIENTRY dummy_glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-    void GLAPIENTRY dummy_glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-    void GLAPIENTRY dummy_glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-    void GLAPIENTRY dummy_glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-    void GLAPIENTRY dummy_glCullFace(GLenum mode);
-    void GLAPIENTRY dummy_glDeleteBuffers(GLsizei n, const GLuint *buffers);
-    void GLAPIENTRY dummy_glDeleteTextures(GLsizei n, const GLuint *textures);
-    void GLAPIENTRY dummy_glDepthFunc(GLenum func);
-    void GLAPIENTRY dummy_glDepthMask(GLboolean flag);
-    void GLAPIENTRY dummy_glDepthRange(GLclampd zNear, GLclampd zFar);
-    void GLAPIENTRY dummy_glDisable(GLenum cap);
-    void GLAPIENTRY dummy_glDrawArrays(GLenum mode, GLint first, GLsizei count);
-    void GLAPIENTRY dummy_glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
-    void GLAPIENTRY dummy_glEnable(GLenum cap);
-    void GLAPIENTRY dummy_glFinish(void);
-    void GLAPIENTRY dummy_glFlush(void);
-    void GLAPIENTRY dummy_glFrontFace(GLenum mode);
-    void GLAPIENTRY dummy_glGenBuffers(GLsizei n, GLuint *buffers);
-    void GLAPIENTRY dummy_glGenTextures(GLsizei n, GLuint *textures);
-    void GLAPIENTRY dummy_glGetBooleanv(GLenum pname, GLboolean *params);
-    void GLAPIENTRY dummy_glGetBufferParameteriv(GLenum, GLenum, GLint *);
-    GLenum GLAPIENTRY dummy_glGetError(void);
-    void GLAPIENTRY dummy_glGetFloatv(GLenum pname, GLfloat *params);
-    void GLAPIENTRY dummy_glGetIntegerv(GLenum pname, GLint *params);
-    const GLubyte * GLAPIENTRY dummy_glGetString(GLenum name);
-    void GLAPIENTRY dummy_glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params);
-    void GLAPIENTRY dummy_glGetTexParameteriv(GLenum target, GLenum pname, GLint *params);
-    void GLAPIENTRY dummy_glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
-    void GLAPIENTRY dummy_glHint(GLenum target, GLenum mode);
-    GLboolean GLAPIENTRY dummy_glIsBuffer(GLuint);
-    GLboolean GLAPIENTRY dummy_glIsEnabled(GLenum cap);
-    GLboolean GLAPIENTRY dummy_glIsTexture(GLuint texture);
-    void GLAPIENTRY dummy_glLineWidth(GLfloat width);
-    void GLAPIENTRY dummy_glPolygonOffset(GLfloat factor, GLfloat units);
-    void GLAPIENTRY dummy_glPixelStorei(GLenum pname, GLint param);
-    void GLAPIENTRY dummy_glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
-    void GLAPIENTRY dummy_glSampleCoverage(GLclampf value, GLboolean invert );
-    void GLAPIENTRY dummy_glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
-    void GLAPIENTRY dummy_glStencilFunc(GLenum func, GLint ref, GLuint mask);
-    void GLAPIENTRY dummy_glStencilMask(GLuint mask);
-    void GLAPIENTRY dummy_glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
-    void GLAPIENTRY dummy_glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-    void GLAPIENTRY dummy_glTexParameteri(GLenum target, GLenum pname, GLint param);
-    void GLAPIENTRY dummy_glTexParameteriv(GLenum target, GLenum pname, const GLint *params);
-    void GLAPIENTRY dummy_glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-    void GLAPIENTRY dummy_glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
-    void GLAPIENTRY dummy_glPushAttrib( GLbitfield mask );
-    void GLAPIENTRY dummy_glPopAttrib( void );
-    void GLAPIENTRY dummy_glPushClientAttrib( GLbitfield mask );
-    void GLAPIENTRY dummy_glPopClientAttrib( void );
-
-    /* OpenGL functions which are needed ONLY for implementing GLES 1.1*/
-    void GLAPIENTRY dummy_glAlphaFunc(GLenum func, GLclampf ref);
-    void GLAPIENTRY dummy_glBegin( GLenum mode );
-    void GLAPIENTRY dummy_glClearDepth(GLclampd depth);
-    void GLAPIENTRY dummy_glClientActiveTexture( GLenum texture );
-    void GLAPIENTRY dummy_glClipPlane(GLenum plane, const GLdouble *equation);
-    void GLAPIENTRY dummy_glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
-    void GLAPIENTRY dummy_glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-    void GLAPIENTRY dummy_glColor4fv( const GLfloat *v );
-    void GLAPIENTRY dummy_glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-    void GLAPIENTRY dummy_glColor4ubv( const GLubyte *v );
-    void GLAPIENTRY dummy_glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    void GLAPIENTRY dummy_glDisableClientState(GLenum array);
-    void GLAPIENTRY dummy_glEnableClientState(GLenum array);
-    void GLAPIENTRY dummy_glEnd(void);
-    void GLAPIENTRY dummy_glFogf(GLenum pname, GLfloat param);
-    void GLAPIENTRY dummy_glFogfv(GLenum pname, const GLfloat *params);
-    void GLAPIENTRY dummy_glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-    void GLAPIENTRY dummy_glGetClipPlane(GLenum plane, GLdouble *equation);
-    void GLAPIENTRY dummy_glGetDoublev( GLenum pname, GLdouble *params );
-    void GLAPIENTRY dummy_glGetLightfv(GLenum light, GLenum pname, GLfloat *params);
-    void GLAPIENTRY dummy_glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params);
-    void GLAPIENTRY dummy_glGetPointerv(GLenum pname, GLvoid* *params);
-    void GLAPIENTRY dummy_glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params);
-    void GLAPIENTRY dummy_glGetTexEnviv(GLenum target, GLenum pname, GLint *params);
-    void GLAPIENTRY dummy_glLightf(GLenum light, GLenum pname, GLfloat param);
-    void GLAPIENTRY dummy_glLightfv(GLenum light, GLenum pname, const GLfloat *params);
-    void GLAPIENTRY dummy_glLightModelf(GLenum pname, GLfloat param);
-    void GLAPIENTRY dummy_glLightModelfv(GLenum pname, const GLfloat *params);
-    void GLAPIENTRY dummy_glLoadIdentity(void);
-    void GLAPIENTRY dummy_glLoadMatrixf(const GLfloat *m);
-    void GLAPIENTRY dummy_glLogicOp(GLenum opcode);
-    void GLAPIENTRY dummy_glMaterialf(GLenum face, GLenum pname, GLfloat param);
-    void GLAPIENTRY dummy_glMaterialfv(GLenum face, GLenum pname, const GLfloat *params);
-    void GLAPIENTRY dummy_glMultiTexCoord2fv( GLenum target, const GLfloat *v );
-    void GLAPIENTRY dummy_glMultiTexCoord2sv( GLenum target, const GLshort *v );
-    void GLAPIENTRY dummy_glMultiTexCoord3fv( GLenum target, const GLfloat *v );
-    void GLAPIENTRY dummy_glMultiTexCoord3sv( GLenum target, const GLshort *v );
-    void GLAPIENTRY dummy_glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-    void GLAPIENTRY dummy_glMultiTexCoord4fv( GLenum target, const GLfloat *v );
-    void GLAPIENTRY dummy_glMultiTexCoord4sv( GLenum target, const GLshort *v );
-    void GLAPIENTRY dummy_glMultMatrixf(const GLfloat *m);
-    void GLAPIENTRY dummy_glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
-    void GLAPIENTRY dummy_glNormal3fv( const GLfloat *v );
-    void GLAPIENTRY dummy_glNormal3sv(const GLshort *v );
-    void GLAPIENTRY dummy_glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-    void GLAPIENTRY dummy_glPointParameterf(GLenum, GLfloat);
-    void GLAPIENTRY dummy_glPointParameterfv(GLenum, const GLfloat *);
-    void GLAPIENTRY dummy_glPointSize(GLfloat size);
-    void GLAPIENTRY dummy_glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-    void GLAPIENTRY dummy_glScalef(GLfloat x, GLfloat y, GLfloat z);
-    void GLAPIENTRY dummy_glTexEnvf(GLenum target, GLenum pname, GLfloat param);
-    void GLAPIENTRY dummy_glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params);
-    void GLAPIENTRY dummy_glTexParameterf(GLenum target, GLenum pname, GLfloat param);
-    void GLAPIENTRY dummy_glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params);
-    void GLAPIENTRY dummy_glMatrixMode(GLenum mode);
-    void GLAPIENTRY dummy_glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
-    void GLAPIENTRY dummy_glPopMatrix(void);
-    void GLAPIENTRY dummy_glPushMatrix(void);
-    void GLAPIENTRY dummy_glShadeModel(GLenum mode);
-    void GLAPIENTRY dummy_glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    void GLAPIENTRY dummy_glTexEnvi(GLenum target, GLenum pname, GLint param);
-    void GLAPIENTRY dummy_glTexEnviv(GLenum target, GLenum pname, const GLint *params);
-    void GLAPIENTRY dummy_glTranslatef(GLfloat x, GLfloat y, GLfloat z);
-    void GLAPIENTRY dummy_glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-
-    /* OpenGL functions which are needed ONLY for implementing GLES 1.1 EXTENSIONS*/
-    GLboolean GLAPIENTRY dummy_glIsRenderbufferEXT(GLuint renderbuffer);
-    void GLAPIENTRY dummy_glBindRenderbufferEXT(GLenum target, GLuint renderbuffer);
-    void GLAPIENTRY dummy_glDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers);
-    void GLAPIENTRY dummy_glGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers);
-    void GLAPIENTRY dummy_glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-    void GLAPIENTRY dummy_glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params);
-    GLboolean GLAPIENTRY dummy_glIsFramebufferEXT(GLuint framebuffer);
-    void GLAPIENTRY dummy_glBindFramebufferEXT(GLenum target, GLuint framebuffer);
-    void GLAPIENTRY dummy_glDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers);
-    void GLAPIENTRY dummy_glGenFramebuffersEXT(GLsizei n, GLuint *framebuffers);
-    GLenum GLAPIENTRY dummy_glCheckFramebufferStatusEXT(GLenum target);
-    void GLAPIENTRY dummy_glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-    void GLAPIENTRY dummy_glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-    void GLAPIENTRY dummy_glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-    void GLAPIENTRY dummy_glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-    void GLAPIENTRY dummy_glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params);
-    void GLAPIENTRY dummy_glGenerateMipmapEXT(GLenum target);
-    void GLAPIENTRY dummy_glCurrentPaletteMatrixARB(GLint index);
-    void GLAPIENTRY dummy_glMatrixIndexuivARB(GLint size, GLuint * indices);
-    void GLAPIENTRY dummy_glMatrixIndexPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
-    void GLAPIENTRY dummy_glWeightPointerARB(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
-    void GLAPIENTRY dummy_glTexGenf(GLenum coord, GLenum pname, GLfloat param );
-    void GLAPIENTRY dummy_glTexGeni(GLenum coord, GLenum pname, GLint param );
-    void GLAPIENTRY dummy_glTexGenf(GLenum coord, GLenum pname, const GLfloat *params );
-    void GLAPIENTRY dummy_glTexGeniv(GLenum coord, GLenum pname, const GLint *params );
-    void GLAPIENTRY dummy_glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params );
-    void GLAPIENTRY dummy_glGetTexGeniv(GLenum coord, GLenum pname, GLint *params );
-
-    /* Loading OpenGL functions which are needed ONLY for implementing GLES 2.0*/
-    void GL_APIENTRY dummy_glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-    void GL_APIENTRY dummy_glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
-    void GL_APIENTRY dummy_glStencilMaskSeparate(GLenum face, GLuint mask);
-    void GL_APIENTRY dummy_glGenerateMipmap(GLenum target);
-    void GL_APIENTRY dummy_glBindFramebuffer(GLenum target, GLuint framebuffer);
-    void GL_APIENTRY dummy_glBindRenderbuffer(GLenum target, GLuint renderbuffer);
-    void GL_APIENTRY dummy_glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers);
-    void GL_APIENTRY dummy_glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers);
-    GLboolean GL_APIENTRY dummy_glIsProgram(GLuint program);
-    GLboolean GL_APIENTRY dummy_glIsShader(GLuint shader);
-    void GL_APIENTRY dummy_glVertexAttrib1f(GLuint indx, GLfloat x);
-    void GL_APIENTRY dummy_glVertexAttrib1fv(GLuint indx, const GLfloat* values);
-    void GL_APIENTRY dummy_glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y);
-    void GL_APIENTRY dummy_glVertexAttrib2fv(GLuint indx, const GLfloat* values);
-    void GL_APIENTRY dummy_glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-    void GL_APIENTRY dummy_glVertexAttrib3fv(GLuint indx, const GLfloat* values);
-    void GL_APIENTRY dummy_glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-    void GL_APIENTRY dummy_glVertexAttrib4fv(GLuint indx, const GLfloat* values);
-    void GL_APIENTRY dummy_glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-    void GL_APIENTRY dummy_glDisableVertexAttribArray(GLuint index);
-    void GL_APIENTRY dummy_glEnableVertexAttribArray(GLuint index);
-    void GL_APIENTRY dummy_glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
-    void GL_APIENTRY dummy_glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
-    void GL_APIENTRY dummy_glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer);
-    void GL_APIENTRY dummy_glUniform1f(GLint location, GLfloat x);
-    void GL_APIENTRY dummy_glUniform1fv(GLint location, GLsizei count, const GLfloat* v);
-    void GL_APIENTRY dummy_glUniform1i(GLint location, GLint x);
-    void GL_APIENTRY dummy_glUniform1iv(GLint location, GLsizei count, const GLint* v);
-    void GL_APIENTRY dummy_glUniform2f(GLint location, GLfloat x, GLfloat y);
-    void GL_APIENTRY dummy_glUniform2fv(GLint location, GLsizei count, const GLfloat* v);
-    void GL_APIENTRY dummy_glUniform2i(GLint location, GLint x, GLint y);
-    void GL_APIENTRY dummy_glUniform2iv(GLint location, GLsizei count, const GLint* v);
-    void GL_APIENTRY dummy_glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z);
-    void GL_APIENTRY dummy_glUniform3fv(GLint location, GLsizei count, const GLfloat* v);
-    void GL_APIENTRY dummy_glUniform3i(GLint location, GLint x, GLint y, GLint z);
-    void GL_APIENTRY dummy_glUniform3iv(GLint location, GLsizei count, const GLint* v);
-    void GL_APIENTRY dummy_glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-    void GL_APIENTRY dummy_glUniform4fv(GLint location, GLsizei count, const GLfloat* v);
-    void GL_APIENTRY dummy_glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w);
-    void GL_APIENTRY dummy_glUniform4iv(GLint location, GLsizei count, const GLint* v);
-    void GL_APIENTRY dummy_glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-    void GL_APIENTRY dummy_glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-    void GL_APIENTRY dummy_glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-    void GL_APIENTRY dummy_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
-    void GL_APIENTRY dummy_glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params);
-    GLboolean GL_APIENTRY dummy_glIsFramebuffer(GLuint framebuffer);
-    GLboolean GL_APIENTRY dummy_glIsRenderbuffer(GLuint renderbuffer);
-    GLenum GL_APIENTRY dummy_glCheckFramebufferStatus(GLenum target);
-    void GL_APIENTRY dummy_glAttachShader(GLuint program, GLuint shader);
-    void GL_APIENTRY dummy_glBindAttribLocation(GLuint program, GLuint index, const GLchar* name);
-    void GL_APIENTRY dummy_glCompileShader(GLuint shader);
-    GLuint GL_APIENTRY dummy_glCreateProgram(void);
-    GLuint GL_APIENTRY dummy_glCreateShader(GLenum type);
-    void GL_APIENTRY dummy_glDeleteProgram(GLuint program);
-    void GL_APIENTRY dummy_glDeleteShader(GLuint shader);
-    void GL_APIENTRY dummy_glDetachShader(GLuint program, GLuint shader);
-    void GL_APIENTRY dummy_glLinkProgram(GLuint program);
-    void GL_APIENTRY dummy_glUseProgram(GLuint program);
-    void GL_APIENTRY dummy_glValidateProgram(GLuint program);
-    void GL_APIENTRY dummy_glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-    void GL_APIENTRY dummy_glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-    void GL_APIENTRY dummy_glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-    int  GL_APIENTRY dummy_glGetAttribLocation(GLuint program, const GLchar* name);
-    void GL_APIENTRY dummy_glGetProgramiv(GLuint program, GLenum pname, GLint* params);
-    void GL_APIENTRY dummy_glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-    void GL_APIENTRY dummy_glGetShaderiv(GLuint shader, GLenum pname, GLint* params);
-    void GL_APIENTRY dummy_glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-    void GL_APIENTRY dummy_glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-    void GL_APIENTRY dummy_glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-    void GL_APIENTRY dummy_glGetUniformfv(GLuint program, GLint location, GLfloat* params);
-    void GL_APIENTRY dummy_glGetUniformiv(GLuint program, GLint location, GLint* params);
-    int  GL_APIENTRY dummy_glGetUniformLocation(GLuint program, const GLchar* name);
-    void GL_APIENTRY dummy_glReleaseShaderCompiler(void);
-    void GL_APIENTRY dummy_glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-    void GL_APIENTRY dummy_glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-    void GL_APIENTRY dummy_glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
-    void GL_APIENTRY dummy_glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-    void GL_APIENTRY dummy_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/FramebufferData.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/FramebufferData.cpp
deleted file mode 100644
index c923bfc..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/FramebufferData.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#include <GLcommon/FramebufferData.h>
-#include <GLcommon/GLEScontext.h>
-
-RenderbufferData::RenderbufferData() : sourceEGLImage(0),
-                         eglImageDetach(NULL),
-                         attachedFB(0),
-                         attachedPoint(0),
-                         eglImageGlobalTexName(0) {
-}
-
-RenderbufferData::~RenderbufferData() {
-    if (sourceEGLImage && eglImageDetach) (*eglImageDetach)(sourceEGLImage);
-}
-
-
-FramebufferData::FramebufferData(GLuint name):m_dirty(false) {
-    m_fbName = name;
-    for (int i=0; i<MAX_ATTACH_POINTS; i++) {
-        m_attachPoints[i].target = 0;
-        m_attachPoints[i].name = 0;
-        m_attachPoints[i].obj = ObjectDataPtr(NULL);
-        m_attachPoints[i].owned = false;
-    }
-}
-
-FramebufferData::~FramebufferData() {
-for (int i=0; i<MAX_ATTACH_POINTS; i++) {
-    detachObject(i);
-}
-}
-
-void FramebufferData::setAttachment(GLenum attachment,
-               GLenum target,
-               GLuint name,
-               ObjectDataPtr obj,
-               bool takeOwnership) {
-int idx = attachmentPointIndex(attachment);
-
-    if (m_attachPoints[idx].target != target ||
-        m_attachPoints[idx].name != name ||
-        m_attachPoints[idx].obj.Ptr() != obj.Ptr() ||
-        m_attachPoints[idx].owned != takeOwnership) {
-
-        detachObject(idx); 
-
-        m_attachPoints[idx].target = target;
-        m_attachPoints[idx].name = name;
-        m_attachPoints[idx].obj = obj;
-        m_attachPoints[idx].owned = takeOwnership;
-
-        if (target == GL_RENDERBUFFER_OES && obj.Ptr() != NULL) {
-            RenderbufferData *rbData = (RenderbufferData *)obj.Ptr();
-            rbData->attachedFB = m_fbName;
-            rbData->attachedPoint = attachment;
-        }
-
-        m_dirty = true;
-    }
-}
-
-GLuint FramebufferData::getAttachment(GLenum attachment,
-                 GLenum *outTarget,
-                 ObjectDataPtr *outObj) {
-    int idx = attachmentPointIndex(attachment);
-    if (outTarget) *outTarget = m_attachPoints[idx].target;
-    if (outObj) *outObj = m_attachPoints[idx].obj;
-    return m_attachPoints[idx].name;
-}
-
-int FramebufferData::attachmentPointIndex(GLenum attachment)
-{
-    switch(attachment) {
-    case GL_COLOR_ATTACHMENT0_OES:
-        return 0;
-    case GL_DEPTH_ATTACHMENT_OES:
-        return 1;
-    case GL_STENCIL_ATTACHMENT_OES:
-        return 2;
-    default:
-        return MAX_ATTACH_POINTS;
-    }
-}
-
-void FramebufferData::detachObject(int idx) {
-    if (m_attachPoints[idx].target == GL_RENDERBUFFER_OES && m_attachPoints[idx].obj.Ptr() != NULL) {
-        RenderbufferData *rbData = (RenderbufferData *)m_attachPoints[idx].obj.Ptr();
-        rbData->attachedFB = 0;
-        rbData->attachedPoint = 0;
-    }
-
-    if(m_attachPoints[idx].owned)
-    {
-        switch(m_attachPoints[idx].target)
-        {
-        case GL_RENDERBUFFER_OES:
-            GLEScontext::dispatcher().glDeleteRenderbuffersEXT(1, &(m_attachPoints[idx].name));
-            break;
-        case GL_TEXTURE_2D:
-            GLEScontext::dispatcher().glDeleteTextures(1, &(m_attachPoints[idx].name));
-            break;
-        }
-    }
-
-    m_attachPoints[idx].target = 0;
-    m_attachPoints[idx].name = 0;
-    m_attachPoints[idx].obj = ObjectDataPtr(NULL);
-    m_attachPoints[idx].owned = false;
-}
-
-void FramebufferData::validate(GLEScontext* ctx)
-{
-    if(!getAttachment(GL_COLOR_ATTACHMENT0_OES, NULL, NULL))
-    {
-        // GLES does not require the framebuffer to have a color attachment.
-        // OpenGL does. Therefore, if no color is attached, create a dummy
-        // color texture and attach it.
-        // This dummy color texture will is owned by the FramebufferObject,
-        // and will be released by it when its object is detached.
-
-        GLint type = GL_NONE;
-        GLint name = 0;
-
-        ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &type);
-        if(type != GL_NONE)
-        {
-            ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &name);
-        }
-        else
-        {
-            ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &type);
-            if(type != GL_NONE)
-            {
-                ctx->dispatcher().glGetFramebufferAttachmentParameterivEXT(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT_OES, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &name);
-            }
-            else
-            {
-                // No color, depth or stencil attachments - do nothing
-                return;
-            }
-        }
-
-        // Find the existing attachment(s) dimensions
-        GLint width = 0;
-        GLint height = 0;
-
-        if(type == GL_RENDERBUFFER)
-        {
-            GLint prev;
-            ctx->dispatcher().glGetIntegerv(GL_RENDERBUFFER_BINDING, &prev);
-            ctx->dispatcher().glBindRenderbufferEXT(GL_RENDERBUFFER, name);
-            ctx->dispatcher().glGetRenderbufferParameterivEXT(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &width);
-            ctx->dispatcher().glGetRenderbufferParameterivEXT(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &height);
-            ctx->dispatcher().glBindRenderbufferEXT(GL_RENDERBUFFER, prev);
-        }
-        else if(type == GL_TEXTURE)
-        {
-            GLint prev;
-            ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prev);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, name);
-            ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
-            ctx->dispatcher().glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);
-            ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prev);
-        }
-
-        // Create the color attachment and attch it
-        unsigned int tex = ctx->shareGroup()->genGlobalName(TEXTURE);
-        GLint prev;
-        ctx->dispatcher().glGetIntegerv(GL_TEXTURE_BINDING_2D, &prev);
-        ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, tex);
-
-        ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
-        ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
-        ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
-        ctx->dispatcher().glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
-        ctx->dispatcher().glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-
-        ctx->dispatcher().glFramebufferTexture2DEXT(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tex, 0);
-        setAttachment(GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, tex, ObjectDataPtr(NULL), true);
-
-        ctx->dispatcher().glBindTexture(GL_TEXTURE_2D, prev);
-    }
-
-    if(m_dirty)
-    {
-        // This is a workaround for a bug found in several OpenGL
-        // drivers (e.g. ATI's) - after the framebuffer attachments
-        // have changed, and before the next draw, unbind and rebind
-        // the framebuffer to sort things out.
-        ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER,0);
-        ctx->dispatcher().glBindFramebufferEXT(GL_FRAMEBUFFER,ctx->shareGroup()->getGlobalName(FRAMEBUFFER,m_fbName));
-
-        m_dirty = false;
-    }
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp
deleted file mode 100644
index abed760..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp
+++ /dev/null
@@ -1,537 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <GLcommon/GLDispatch.h>
-#include <stdio.h>
-#include <OpenglOsUtils/osDynLibrary.h>
-
-#ifdef __linux__
-#include <GL/glx.h>
-#elif defined(WIN32)
-#include <windows.h>
-#endif
-
-#include "DummyGLfuncs.h"
-
-typedef void (*GL_FUNC_PTR)();
-
-static GL_FUNC_PTR getGLFuncAddress(const char *funcName) {
-    GL_FUNC_PTR ret = NULL;
-#ifdef __linux__
-    static osUtils::dynLibrary* libGL = osUtils::dynLibrary::open("libGL.so");
-    ret = (GL_FUNC_PTR)glXGetProcAddress((const GLubyte*)funcName);
-#elif defined(WIN32)
-    static osUtils::dynLibrary* libGL = osUtils::dynLibrary::open("opengl32");
-    ret = (GL_FUNC_PTR)wglGetProcAddress(funcName);
-#elif defined(__APPLE__)
-    static osUtils::dynLibrary* libGL = osUtils::dynLibrary::open("/System/Library/Frameworks/OpenGL.framework/OpenGL");
-#endif
-    if(!ret && libGL){
-        ret = libGL->findSymbol(funcName);
-    }
-    return ret;
-}
-
-#define LOAD_GL_FUNC(name)  {   void * funcAddrs = NULL;                                    \
-                                if(name == NULL){                                           \
-                                    funcAddrs = (void *)getGLFuncAddress(#name);            \
-                                    if(funcAddrs){                                          \
-                                        *(void**)(&name) = funcAddrs;                       \
-                                    } else {                                                \
-                                        fprintf(stderr,"could not load func %s\n",#name);   \
-                                        *(void**)(&name) = (void *)dummy_##name;            \
-                                    }                                                       \
-                                }                                                           \
-                           }
-
-#define LOAD_GLEXT_FUNC(name)  {   void * funcAddrs = NULL;                                \
-                                if(name == NULL){                                       \
-                                funcAddrs = (void *)getGLFuncAddress(#name);            \
-                                if(funcAddrs)                                           \
-                                    *(void**)(&name) = funcAddrs;                       \
-                                }                                                       \
-                           }
-
-/* initializing static GLDispatch members*/
-
-android::Mutex GLDispatch::s_lock;
-void (GLAPIENTRY *GLDispatch::glActiveTexture)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glBindBuffer)(GLenum,GLuint) = NULL;
-void (GLAPIENTRY *GLDispatch::glBindTexture)(GLenum, GLuint) = NULL;
-void (GLAPIENTRY *GLDispatch::glBlendFunc)(GLenum,GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glBlendEquation)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glBlendEquationSeparate)(GLenum,GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glBlendFuncSeparate)(GLenum,GLenum,GLenum,GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glBufferData)(GLenum,GLsizeiptr,const GLvoid *,GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glBufferSubData)(GLenum,GLintptr,GLsizeiptr,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glClear)(GLbitfield) = NULL;
-void (GLAPIENTRY *GLDispatch::glClearColor)(GLclampf,GLclampf,GLclampf,GLclampf) = NULL;
-void (GLAPIENTRY *GLDispatch::glClearStencil)(GLint) = NULL;
-void (GLAPIENTRY *GLDispatch::glColorMask)(GLboolean,GLboolean,GLboolean,GLboolean) = NULL;
-void (GLAPIENTRY *GLDispatch::glCompressedTexImage2D)(GLenum,GLint,GLenum,GLsizei,GLsizei,GLint,GLsizei, const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glCompressedTexSubImage2D)(GLenum,GLint,GLint,GLint,GLsizei,GLsizei,GLenum,GLsizei,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glCopyTexImage2D)(GLenum,GLint,GLenum,GLint,GLint,GLsizei,GLsizei,GLint) = NULL;
-void (GLAPIENTRY *GLDispatch::glCopyTexSubImage2D)(GLenum,GLint,GLint,GLint,GLint,GLint,GLsizei,GLsizei) = NULL;
-void (GLAPIENTRY *GLDispatch::glCullFace)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glDeleteBuffers)(GLsizei,const GLuint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glDeleteTextures)(GLsizei,const GLuint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glDepthFunc)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glDepthMask)(GLboolean) = NULL;
-void (GLAPIENTRY *GLDispatch::glDepthRange)(GLclampd,GLclampd) = NULL;
-void (GLAPIENTRY *GLDispatch::glDisable)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glDrawArrays)(GLenum,GLint,GLsizei) = NULL;
-void (GLAPIENTRY *GLDispatch::glDrawElements)(GLenum,GLsizei,GLenum,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glEnable)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glFinish)() = NULL;
-void (GLAPIENTRY *GLDispatch::glFlush)() = NULL;
-void (GLAPIENTRY *GLDispatch::glFrontFace)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glGenBuffers)(GLsizei,GLuint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGenTextures)(GLsizei,GLuint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetBooleanv)(GLenum,GLboolean *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetBufferParameteriv)(GLenum, GLenum, GLint *) = NULL;
-GLenum (GLAPIENTRY *GLDispatch::glGetError)() = NULL;
-void (GLAPIENTRY *GLDispatch::glGetFloatv)(GLenum,GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetIntegerv)(GLenum,GLint *) = NULL;
-const GLubyte * (GLAPIENTRY *GLDispatch::glGetString) (GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexParameterfv)(GLenum,GLenum,GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexParameteriv)(GLenum,GLenum,GLint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint *params) = NULL;
-void (GLAPIENTRY *GLDispatch::glHint)(GLenum,GLenum) = NULL;
-GLboolean (GLAPIENTRY *GLDispatch::glIsBuffer)(GLuint) = NULL;
-GLboolean (GLAPIENTRY *GLDispatch::glIsEnabled)(GLenum) = NULL;
-GLboolean (GLAPIENTRY *GLDispatch::glIsTexture)(GLuint) = NULL;
-void (GLAPIENTRY *GLDispatch::glLineWidth)(GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glPolygonOffset)(GLfloat, GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glPixelStorei)(GLenum,GLint) = NULL;
-void (GLAPIENTRY *GLDispatch::glReadPixels)(GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glSampleCoverage)(GLclampf,GLboolean) = NULL;
-void (GLAPIENTRY *GLDispatch::glScissor)(GLint,GLint,GLsizei,GLsizei) = NULL;
-void (GLAPIENTRY *GLDispatch::glStencilFunc)(GLenum,GLint,GLuint) = NULL;
-void (GLAPIENTRY *GLDispatch::glStencilMask)(GLuint) = NULL;
-void (GLAPIENTRY *GLDispatch::glStencilOp)(GLenum, GLenum,GLenum);
-void (GLAPIENTRY *GLDispatch::glTexImage2D)(GLenum,GLint,GLint,GLsizei,GLsizei,GLint,GLenum,GLenum,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexParameterf)(GLenum,GLenum, GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexParameterfv)(GLenum,GLenum,const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexParameteri)(GLenum,GLenum,GLint) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexParameteriv)(GLenum,GLenum,const GLint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexSubImage2D)(GLenum,GLint,GLint,GLint,GLsizei,GLsizei,GLenum,GLenum,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glViewport)(GLint,GLint,GLsizei,GLsizei) = NULL;
-void (GLAPIENTRY *GLDispatch::glPushAttrib) ( GLbitfield mask ) = NULL;
-void (GLAPIENTRY *GLDispatch::glPopAttrib) ( void ) = NULL;
-void (GLAPIENTRY *GLDispatch::glPushClientAttrib) ( GLbitfield mask ) = NULL;
-void (GLAPIENTRY *GLDispatch::glPopClientAttrib) ( void ) = NULL;
-
-/*GLES 1.1*/
-void (GLAPIENTRY *GLDispatch::glAlphaFunc)(GLenum,GLclampf) = NULL;
-void (GLAPIENTRY *GLDispatch::glBegin)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glClearDepth)(GLclampd) = NULL;
-void (GLAPIENTRY *GLDispatch::glClientActiveTexture)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glClipPlane)(GLenum,const GLdouble *) = NULL;
-void (GLAPIENTRY *GLDispatch::glColor4d)(GLdouble,GLdouble,GLdouble,GLdouble) = NULL;
-void (GLAPIENTRY *GLDispatch::glColor4f)(GLfloat,GLfloat,GLfloat,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glColor4fv)(const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glColor4ub)(GLubyte,GLubyte,GLubyte,GLubyte) = NULL;
-void (GLAPIENTRY *GLDispatch::glColor4ubv)(const GLubyte *) = NULL;
-void (GLAPIENTRY *GLDispatch::glColorPointer)(GLint,GLenum,GLsizei,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glDisableClientState)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glEnableClientState)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glEnd)() = NULL;
-void (GLAPIENTRY *GLDispatch::glFogf)(GLenum, GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glFogfv)(GLenum,const GLfloat *);
-void (GLAPIENTRY *GLDispatch::glFrustum)(GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetClipPlane)(GLenum,GLdouble *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetDoublev)(GLenum,GLdouble *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetLightfv)(GLenum,GLenum,GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetMaterialfv)(GLenum,GLenum,GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetPointerv)(GLenum,GLvoid**) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexEnvfv)(GLenum,GLenum,GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexEnviv)(GLenum,GLenum,GLint *)= NULL;
-void (GLAPIENTRY *GLDispatch::glLightf)(GLenum,GLenum,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glLightfv)(GLenum,GLenum,const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glLightModelf)(GLenum,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glLightModelfv)(GLenum,const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glLoadIdentity)() = NULL;
-void (GLAPIENTRY *GLDispatch::glLoadMatrixf)(const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glLogicOp)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glMaterialf)(GLenum,GLenum,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glMaterialfv)(GLenum,GLenum,const GLfloat *);
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord2fv)(GLenum, const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord2sv)(GLenum, const GLshort *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord3fv)(GLenum, const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord3sv)(GLenum,const GLshort *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord4f)(GLenum,GLfloat,GLfloat,GLfloat,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord4fv)(GLenum,const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultiTexCoord4sv)(GLenum,const GLshort *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMultMatrixf)(const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glNormal3f)(GLfloat,GLfloat,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glNormal3fv)(const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glNormal3sv)(const GLshort *) = NULL;
-void (GLAPIENTRY *GLDispatch::glOrtho)(GLdouble,GLdouble,GLdouble,GLdouble,GLdouble,GLdouble) = NULL;
-void (GLAPIENTRY *GLDispatch::glPointParameterf)(GLenum, GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glPointParameterfv)(GLenum, const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glPointSize)(GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glRotatef)(GLfloat,GLfloat,GLfloat,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glScalef)(GLfloat,GLfloat,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexEnvf)(GLenum,GLenum,GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexEnvfv)(GLenum,GLenum,const GLfloat *) = NULL;
-void (GLAPIENTRY *GLDispatch::glMatrixMode)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glNormalPointer)(GLenum,GLsizei,const GLvoid *) = NULL;
-void (GLAPIENTRY *GLDispatch::glPopMatrix)() = NULL;
-void (GLAPIENTRY *GLDispatch::glPushMatrix)() = NULL;
-void (GLAPIENTRY *GLDispatch::glShadeModel)(GLenum) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexCoordPointer)(GLint,GLenum, GLsizei, const GLvoid*) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexEnvi)(GLenum ,GLenum,GLint) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexEnviv)(GLenum, GLenum, const GLint *) = NULL;
-void (GLAPIENTRY *GLDispatch::glTranslatef)(GLfloat,GLfloat, GLfloat) = NULL;
-void (GLAPIENTRY *GLDispatch::glVertexPointer)(GLint,GLenum,GLsizei, const GLvoid *) = NULL;
-
-/* GLES 1.1 EXTENSIONS*/
-GLboolean (GLAPIENTRY *GLDispatch::glIsRenderbufferEXT) (GLuint renderbuffer) = NULL;
-void (GLAPIENTRY *GLDispatch::glBindRenderbufferEXT) (GLenum target, GLuint renderbuffer) = NULL;
-void (GLAPIENTRY *GLDispatch::glDeleteRenderbuffersEXT) (GLsizei n, const GLuint *renderbuffers) = NULL;
-void (GLAPIENTRY *GLDispatch::glGenRenderbuffersEXT) (GLsizei n, GLuint *renderbuffers) = NULL;
-void (GLAPIENTRY *GLDispatch::glRenderbufferStorageEXT) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetRenderbufferParameterivEXT) (GLenum target, GLenum pname, GLint *params) = NULL;
-GLboolean (GLAPIENTRY *GLDispatch::glIsFramebufferEXT) (GLuint framebuffer) = NULL;
-void (GLAPIENTRY *GLDispatch::glBindFramebufferEXT) (GLenum target, GLuint framebuffer) = NULL;
-void (GLAPIENTRY *GLDispatch::glDeleteFramebuffersEXT) (GLsizei n, const GLuint *framebuffers) = NULL;
-void (GLAPIENTRY *GLDispatch::glGenFramebuffersEXT) (GLsizei n, GLuint *framebuffers) = NULL;
-GLenum (GLAPIENTRY *GLDispatch::glCheckFramebufferStatusEXT) (GLenum target) = NULL;
-void (GLAPIENTRY *GLDispatch::glFramebufferTexture1DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL;
-void (GLAPIENTRY *GLDispatch::glFramebufferTexture2DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) = NULL;
-void (GLAPIENTRY *GLDispatch::glFramebufferTexture3DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) = NULL;
-void (GLAPIENTRY *GLDispatch::glFramebufferRenderbufferEXT) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetFramebufferAttachmentParameterivEXT) (GLenum target, GLenum attachment, GLenum pname, GLint *params) = NULL;
-void (GLAPIENTRY *GLDispatch::glGenerateMipmapEXT) (GLenum target) = NULL;
-void (GLAPIENTRY *GLDispatch::glCurrentPaletteMatrixARB) (GLint index) = NULL;
-void (GLAPIENTRY *GLDispatch::glMatrixIndexuivARB) (GLint size, GLuint * indices) = NULL;
-void (GLAPIENTRY *GLDispatch::glMatrixIndexPointerARB) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) = NULL;
-void (GLAPIENTRY *GLDispatch::glWeightPointerARB) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexGenf) (GLenum coord, GLenum pname, GLfloat param ) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexGeni) (GLenum coord, GLenum pname, GLint param ) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexGenfv) (GLenum coord, GLenum pname, const GLfloat *params ) = NULL;
-void (GLAPIENTRY *GLDispatch::glTexGeniv) (GLenum coord, GLenum pname, const GLint *params ) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexGenfv) (GLenum coord, GLenum pname, GLfloat *params ) = NULL;
-void (GLAPIENTRY *GLDispatch::glGetTexGeniv) (GLenum coord, GLenum pname, GLint *params ) = NULL;
-
-/* GLES 2.0*/
-void (GL_APIENTRY *GLDispatch::glBlendColor)(GLclampf,GLclampf,GLclampf,GLclampf) = NULL;
-void (GL_APIENTRY *GLDispatch::glStencilFuncSeparate)(GLenum,GLenum,GLint,GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glStencilMaskSeparate)(GLenum,GLuint) = NULL;
-GLboolean (GL_APIENTRY *GLDispatch::glIsProgram)(GLuint program) = NULL;
-GLboolean (GL_APIENTRY *GLDispatch::glIsShader)(GLuint shader) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib1f)(GLuint,GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib1fv)(GLuint,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib2f)(GLuint,GLfloat, GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib2fv)(GLuint,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib3f)(GLuint,GLfloat, GLfloat,GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib3fv)(GLuint,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib4f)(GLuint,GLfloat,GLfloat,GLfloat,GLfloat ) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttrib4fv)(GLuint,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glVertexAttribPointer)(GLuint,GLint,GLenum,GLboolean,GLsizei,const GLvoid*) = NULL;
-void (GL_APIENTRY *GLDispatch::glDisableVertexAttribArray)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glEnableVertexAttribArray)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetVertexAttribfv)(GLuint,GLenum,GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetVertexAttribiv)(GLuint,GLenum,GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetVertexAttribPointerv)(GLuint,GLenum,GLvoid**) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform1f)(GLint,GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform1fv)(GLint,GLsizei,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform1i)(GLint,GLint) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform1iv)(GLint,GLsizei,const GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform2f)(GLint,GLfloat,GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform2fv)(GLint,GLsizei,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform2i)(GLint,GLint,GLint) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform2iv)(GLint ,GLsizei,const GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform3f)(GLint,GLfloat,GLfloat,GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform3fv)(GLint,GLsizei,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform3i)(GLint,GLint,GLint,GLint) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform3iv)(GLint,GLsizei,const GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform4f)(GLint,GLfloat,GLfloat,GLfloat,GLfloat) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform4fv)(GLint,GLsizei,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform4i)(GLint,GLint,GLint,GLint,GLint) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniform4iv)(GLint,GLsizei,const GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniformMatrix2fv)(GLint,GLsizei,GLboolean,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniformMatrix3fv)(GLint,GLsizei,GLboolean,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glUniformMatrix4fv)(GLint,GLsizei,GLboolean,const GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glAttachShader)(GLuint,GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glBindAttribLocation)(GLuint,GLuint,const GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glCompileShader)(GLuint) = NULL;
-GLuint (GL_APIENTRY *GLDispatch::glCreateProgram)() = NULL;
-GLuint (GL_APIENTRY *GLDispatch::glCreateShader)(GLenum) = NULL;
-void (GL_APIENTRY *GLDispatch::glDeleteProgram)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glDeleteShader)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glDetachShader)(GLuint,GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glLinkProgram)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glUseProgram)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glValidateProgram)(GLuint) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetActiveAttrib)(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetActiveUniform)(GLuint,GLuint,GLsizei,GLsizei*,GLint*,GLenum*,GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetAttachedShaders)(GLuint,GLsizei,GLsizei*,GLuint*) = NULL;
-int  (GL_APIENTRY *GLDispatch::glGetAttribLocation)(GLuint,const GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetProgramiv)(GLuint,GLenum,GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetProgramInfoLog)(GLuint,GLsizei,GLsizei*,GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetShaderiv)(GLuint,GLenum,GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetShaderInfoLog)(GLuint,GLsizei,GLsizei*,GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetShaderPrecisionFormat)(GLenum,GLenum,GLint*,GLint*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetShaderSource)(GLuint,GLsizei,GLsizei*,GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetUniformfv)(GLuint,GLint,GLfloat*) = NULL;
-void (GL_APIENTRY *GLDispatch::glGetUniformiv)(GLuint,GLint,GLint*) = NULL;
-int  (GL_APIENTRY *GLDispatch::glGetUniformLocation)(GLuint,const GLchar*) = NULL;
-void (GL_APIENTRY *GLDispatch::glReleaseShaderCompiler)() = NULL;
-void (GL_APIENTRY *GLDispatch::glShaderBinary)(GLsizei,const GLuint*,GLenum,const GLvoid*,GLsizei) = NULL;
-void (GL_APIENTRY *GLDispatch::glShaderSource)(GLuint,GLsizei,const GLchar**,const GLint*) = NULL;
-
-GLDispatch::GLDispatch():m_isLoaded(false){};
-
-
-void GLDispatch::dispatchFuncs(GLESVersion version){
-    android::Mutex::Autolock mutex(s_lock);
-    if(m_isLoaded)
-        return;
-
-    /* Loading OpenGL functions which are needed for implementing BOTH GLES 1.1 & GLES 2.0*/
-    LOAD_GL_FUNC(glActiveTexture);
-    LOAD_GL_FUNC(glBindBuffer);
-    LOAD_GL_FUNC(glBindTexture);
-    LOAD_GL_FUNC(glBlendFunc);
-    LOAD_GL_FUNC(glBlendEquation);
-    LOAD_GL_FUNC(glBlendEquationSeparate);
-    LOAD_GL_FUNC(glBlendFuncSeparate);
-    LOAD_GL_FUNC(glBufferData);
-    LOAD_GL_FUNC(glBufferSubData);
-    LOAD_GL_FUNC(glClear);
-    LOAD_GL_FUNC(glClearColor);
-    LOAD_GL_FUNC(glClearDepth);
-    LOAD_GL_FUNC(glClearStencil);
-    LOAD_GL_FUNC(glColorMask);
-    LOAD_GL_FUNC(glCompressedTexImage2D);
-    LOAD_GL_FUNC(glCompressedTexSubImage2D);
-    LOAD_GL_FUNC(glCopyTexImage2D);
-    LOAD_GL_FUNC(glCopyTexSubImage2D);
-    LOAD_GL_FUNC(glCullFace);
-    LOAD_GL_FUNC(glDeleteBuffers);
-    LOAD_GL_FUNC(glDeleteTextures);
-    LOAD_GL_FUNC(glDepthFunc);
-    LOAD_GL_FUNC(glDepthMask);
-    LOAD_GL_FUNC(glDepthRange);
-    LOAD_GL_FUNC(glDisable);
-    LOAD_GL_FUNC(glDrawArrays);
-    LOAD_GL_FUNC(glDrawElements);
-    LOAD_GL_FUNC(glEnable);
-    LOAD_GL_FUNC(glFinish);
-    LOAD_GL_FUNC(glFlush);
-    LOAD_GL_FUNC(glFrontFace);
-    LOAD_GL_FUNC(glGenBuffers);
-    LOAD_GL_FUNC(glGenTextures);
-    LOAD_GL_FUNC(glGetBooleanv);
-    LOAD_GL_FUNC(glGetBufferParameteriv);
-    LOAD_GL_FUNC(glGetError);
-    LOAD_GL_FUNC(glGetFloatv);
-    LOAD_GL_FUNC(glGetIntegerv);
-    LOAD_GL_FUNC(glGetString);
-    LOAD_GL_FUNC(glTexParameterf);
-    LOAD_GL_FUNC(glTexParameterfv);
-    LOAD_GL_FUNC(glGetTexParameterfv);
-    LOAD_GL_FUNC(glGetTexParameteriv);
-    LOAD_GL_FUNC(glGetTexLevelParameteriv);
-    LOAD_GL_FUNC(glHint);
-    LOAD_GL_FUNC(glIsBuffer);
-    LOAD_GL_FUNC(glIsEnabled);
-    LOAD_GL_FUNC(glIsTexture);
-    LOAD_GL_FUNC(glLineWidth);
-    LOAD_GL_FUNC(glPolygonOffset);
-    LOAD_GL_FUNC(glPixelStorei);
-    LOAD_GL_FUNC(glReadPixels);
-    LOAD_GL_FUNC(glSampleCoverage);
-    LOAD_GL_FUNC(glScissor);
-    LOAD_GL_FUNC(glStencilFunc);
-    LOAD_GL_FUNC(glStencilMask);
-    LOAD_GL_FUNC(glStencilOp);
-    LOAD_GL_FUNC(glTexImage2D);
-    LOAD_GL_FUNC(glTexParameteri);
-    LOAD_GL_FUNC(glTexParameteriv);
-    LOAD_GL_FUNC(glTexSubImage2D);
-    LOAD_GL_FUNC(glViewport);
-    LOAD_GL_FUNC(glPushAttrib);
-    LOAD_GL_FUNC(glPushClientAttrib);
-    LOAD_GL_FUNC(glPopAttrib);
-    LOAD_GL_FUNC(glPopClientAttrib);
-    LOAD_GLEXT_FUNC(glIsRenderbufferEXT);
-    LOAD_GLEXT_FUNC(glBindRenderbufferEXT);
-    LOAD_GLEXT_FUNC(glDeleteRenderbuffersEXT);
-    LOAD_GLEXT_FUNC(glGenRenderbuffersEXT);
-    LOAD_GLEXT_FUNC(glRenderbufferStorageEXT);
-    LOAD_GLEXT_FUNC(glGetRenderbufferParameterivEXT);
-    LOAD_GLEXT_FUNC(glIsFramebufferEXT);
-    LOAD_GLEXT_FUNC(glBindFramebufferEXT);
-    LOAD_GLEXT_FUNC(glDeleteFramebuffersEXT);
-    LOAD_GLEXT_FUNC(glGenFramebuffersEXT);
-    LOAD_GLEXT_FUNC(glCheckFramebufferStatusEXT);
-    LOAD_GLEXT_FUNC(glFramebufferTexture1DEXT);
-    LOAD_GLEXT_FUNC(glFramebufferTexture2DEXT);
-    LOAD_GLEXT_FUNC(glFramebufferTexture3DEXT);
-    LOAD_GLEXT_FUNC(glFramebufferRenderbufferEXT);
-    LOAD_GLEXT_FUNC(glGetFramebufferAttachmentParameterivEXT);
-    LOAD_GLEXT_FUNC(glGenerateMipmapEXT);
-
-    /* Loading OpenGL functions which are needed ONLY for implementing GLES 1.1*/
-    if(version == GLES_1_1){
-        LOAD_GL_FUNC(glAlphaFunc);
-        LOAD_GL_FUNC(glBegin);
-        LOAD_GL_FUNC(glClientActiveTexture);
-        LOAD_GL_FUNC(glClipPlane);
-        LOAD_GL_FUNC(glColor4d);
-        LOAD_GL_FUNC(glColor4f);
-        LOAD_GL_FUNC(glColor4fv);
-        LOAD_GL_FUNC(glColor4ub);
-        LOAD_GL_FUNC(glColor4ubv);
-        LOAD_GL_FUNC(glColorPointer);
-        LOAD_GL_FUNC(glDisableClientState);
-        LOAD_GL_FUNC(glEnableClientState);
-        LOAD_GL_FUNC(glEnd);
-        LOAD_GL_FUNC(glFogf);
-        LOAD_GL_FUNC(glFogfv);
-        LOAD_GL_FUNC(glFrustum);
-        LOAD_GL_FUNC(glGetClipPlane);
-        LOAD_GL_FUNC(glGetDoublev);
-        LOAD_GL_FUNC(glGetLightfv);
-        LOAD_GL_FUNC(glGetMaterialfv);
-        LOAD_GL_FUNC(glGetPointerv);
-        LOAD_GL_FUNC(glGetTexEnvfv);
-        LOAD_GL_FUNC(glGetTexEnviv);
-        LOAD_GL_FUNC(glLightf);
-        LOAD_GL_FUNC(glLightfv);
-        LOAD_GL_FUNC(glLightModelf);
-        LOAD_GL_FUNC(glLightModelfv);
-        LOAD_GL_FUNC(glLoadIdentity);
-        LOAD_GL_FUNC(glLoadMatrixf);
-        LOAD_GL_FUNC(glLogicOp);
-        LOAD_GL_FUNC(glMaterialf);
-        LOAD_GL_FUNC(glMaterialfv);
-        LOAD_GL_FUNC(glMultiTexCoord2fv);
-        LOAD_GL_FUNC(glMultiTexCoord2sv);
-        LOAD_GL_FUNC(glMultiTexCoord3fv);
-        LOAD_GL_FUNC(glMultiTexCoord3sv);
-        LOAD_GL_FUNC(glMultiTexCoord4fv);
-        LOAD_GL_FUNC(glMultiTexCoord4sv);
-        LOAD_GL_FUNC(glMultiTexCoord4f);
-        LOAD_GL_FUNC(glMultMatrixf);
-        LOAD_GL_FUNC(glNormal3f);
-        LOAD_GL_FUNC(glNormal3fv);
-        LOAD_GL_FUNC(glNormal3sv);
-        LOAD_GL_FUNC(glOrtho);
-        LOAD_GL_FUNC(glPointParameterf);
-        LOAD_GL_FUNC(glPointParameterfv);
-        LOAD_GL_FUNC(glPointSize);
-        LOAD_GL_FUNC(glRotatef);
-        LOAD_GL_FUNC(glScalef);
-        LOAD_GL_FUNC(glTexEnvf);
-        LOAD_GL_FUNC(glTexEnvfv);
-        LOAD_GL_FUNC(glMatrixMode);
-        LOAD_GL_FUNC(glNormalPointer);
-        LOAD_GL_FUNC(glPopMatrix);
-        LOAD_GL_FUNC(glPushMatrix);
-        LOAD_GL_FUNC(glShadeModel);
-        LOAD_GL_FUNC(glTexCoordPointer);
-        LOAD_GL_FUNC(glTexEnvi);
-        LOAD_GL_FUNC(glTexEnviv);
-        LOAD_GL_FUNC(glTranslatef);
-        LOAD_GL_FUNC(glVertexPointer);
-
-        LOAD_GLEXT_FUNC(glCurrentPaletteMatrixARB);
-        LOAD_GLEXT_FUNC(glMatrixIndexuivARB);
-        LOAD_GLEXT_FUNC(glMatrixIndexPointerARB);
-        LOAD_GLEXT_FUNC(glWeightPointerARB);
-        LOAD_GLEXT_FUNC(glTexGenf);
-        LOAD_GLEXT_FUNC(glTexGeni);
-        LOAD_GLEXT_FUNC(glTexGenfv);
-        LOAD_GLEXT_FUNC(glTexGeniv);
-        LOAD_GLEXT_FUNC(glGetTexGenfv);
-        LOAD_GLEXT_FUNC(glGetTexGeniv);
-
-    } else if (version == GLES_2_0){
-
-    /* Loading OpenGL functions which are needed ONLY for implementing GLES 2.0*/
-
-        LOAD_GL_FUNC(glBlendColor);
-        LOAD_GL_FUNC(glBlendFuncSeparate);
-        LOAD_GL_FUNC(glStencilFuncSeparate);
-        LOAD_GL_FUNC(glIsProgram);
-        LOAD_GL_FUNC(glIsShader);
-        LOAD_GL_FUNC(glVertexAttrib1f);
-        LOAD_GL_FUNC(glVertexAttrib1fv);
-        LOAD_GL_FUNC(glVertexAttrib2f);
-        LOAD_GL_FUNC(glVertexAttrib2fv);
-        LOAD_GL_FUNC(glVertexAttrib3f);
-        LOAD_GL_FUNC(glVertexAttrib3fv);
-        LOAD_GL_FUNC(glVertexAttrib4f);
-        LOAD_GL_FUNC(glVertexAttrib4fv);
-        LOAD_GL_FUNC(glVertexAttribPointer);
-        LOAD_GL_FUNC(glDisableVertexAttribArray);
-        LOAD_GL_FUNC(glEnableVertexAttribArray);
-        LOAD_GL_FUNC(glGetVertexAttribfv);
-        LOAD_GL_FUNC(glGetVertexAttribiv);
-        LOAD_GL_FUNC(glGetVertexAttribPointerv);
-        LOAD_GL_FUNC(glUniform1f);
-        LOAD_GL_FUNC(glUniform1fv);
-        LOAD_GL_FUNC(glUniform1i);
-        LOAD_GL_FUNC(glUniform1iv);
-        LOAD_GL_FUNC(glUniform2f);
-        LOAD_GL_FUNC(glUniform2fv);
-        LOAD_GL_FUNC(glUniform2i);
-        LOAD_GL_FUNC(glUniform2iv);
-        LOAD_GL_FUNC(glUniform3f);
-        LOAD_GL_FUNC(glUniform3fv);
-        LOAD_GL_FUNC(glUniform3i);
-        LOAD_GL_FUNC(glUniform3iv);
-        LOAD_GL_FUNC(glUniform4f);
-        LOAD_GL_FUNC(glUniform4fv);
-        LOAD_GL_FUNC(glUniform4i);
-        LOAD_GL_FUNC(glUniform4iv);
-        LOAD_GL_FUNC(glUniformMatrix2fv);
-        LOAD_GL_FUNC(glUniformMatrix3fv);
-        LOAD_GL_FUNC(glUniformMatrix4fv);
-        LOAD_GL_FUNC(glAttachShader);
-        LOAD_GL_FUNC(glBindAttribLocation);
-        LOAD_GL_FUNC(glCompileShader);
-        LOAD_GL_FUNC(glCreateProgram);
-        LOAD_GL_FUNC(glCreateShader);
-        LOAD_GL_FUNC(glDeleteProgram);
-        LOAD_GL_FUNC(glDeleteShader);
-        LOAD_GL_FUNC(glDetachShader);
-        LOAD_GL_FUNC(glLinkProgram);
-        LOAD_GL_FUNC(glUseProgram);
-        LOAD_GL_FUNC(glValidateProgram);
-        LOAD_GL_FUNC(glGetActiveAttrib);
-        LOAD_GL_FUNC(glGetActiveUniform);
-        LOAD_GL_FUNC(glGetAttachedShaders);
-        LOAD_GL_FUNC(glGetAttribLocation);
-        LOAD_GL_FUNC(glGetProgramiv);
-        LOAD_GL_FUNC(glGetProgramInfoLog);
-        LOAD_GL_FUNC(glGetShaderiv);
-        LOAD_GL_FUNC(glGetShaderInfoLog);
-        LOAD_GLEXT_FUNC(glGetShaderPrecisionFormat);
-        LOAD_GL_FUNC(glGetShaderSource);
-        LOAD_GL_FUNC(glGetUniformfv);
-        LOAD_GL_FUNC(glGetUniformiv);
-        LOAD_GL_FUNC(glGetUniformLocation);
-        LOAD_GLEXT_FUNC(glReleaseShaderCompiler);
-        LOAD_GLEXT_FUNC(glShaderBinary);
-        LOAD_GL_FUNC(glShaderSource);
-        LOAD_GL_FUNC(glStencilMaskSeparate);
-    }
-    m_isLoaded = true;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESbuffer.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESbuffer.cpp
deleted file mode 100644
index b055cc7..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESbuffer.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLcommon/GLESbuffer.h>
-#include <string.h>
-
-bool  GLESbuffer::setBuffer(GLuint size,GLuint usage,const GLvoid* data) {
-    m_size = size;
-    m_usage = usage;
-    if(m_data) {
-        delete [] m_data;
-        m_data = NULL;
-    }
-    m_data = new unsigned char[size];
-    if(m_data) {
-        memcpy(m_data,data,size);
-        m_conversionManager.clear();
-        m_conversionManager.addRange(Range(0,m_size));
-        return true;
-    }
-    return false;
-}
-
-bool  GLESbuffer::setSubBuffer(GLint offset,GLuint size,const GLvoid* data) {
-    if(offset + size > m_size) return false;
-    memcpy(m_data+offset,data,size);
-    m_conversionManager.addRange(Range(offset,size));
-    m_conversionManager.merge();
-    return true;
-}
-
-void  GLESbuffer::getConversions(const RangeList& rIn,RangeList& rOut) {
-        m_conversionManager.delRanges(rIn,rOut);
-        rOut.merge();
-}
-
-GLESbuffer::~GLESbuffer() {
-    if(m_data) {
-        delete [] m_data;
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp
deleted file mode 100644
index 22b4c8b..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLEScontext.cpp
+++ /dev/null
@@ -1,695 +0,0 @@
-#include <GLcommon/GLEScontext.h>
-#include <GLcommon/GLconversion_macros.h>
-#include <GLcommon/GLESmacros.h>
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#include <GLcommon/GLESvalidate.h>
-#include <GLcommon/TextureUtils.h>
-#include <GLcommon/FramebufferData.h>
-#include <strings.h>
-
-//decleration
-static void convertFixedDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize);
-static void convertFixedIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize);
-static void convertByteDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize);
-static void convertByteIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize);
-
-GLESConversionArrays::~GLESConversionArrays() {
-    for(std::map<GLenum,ArrayData>::iterator it = m_arrays.begin(); it != m_arrays.end();it++) {
-        if((*it).second.allocated){
-            if((*it).second.type == GL_FLOAT){
-                GLfloat* p = (GLfloat *)((*it).second.data);
-                if(p) delete[] p;
-            } else if((*it).second.type == GL_SHORT){
-                GLshort* p = (GLshort *)((*it).second.data);
-                if(p) delete[] p;
-            }
-        }
-    }
-}
-
-void GLESConversionArrays::allocArr(unsigned int size,GLenum type){
-    if(type == GL_FIXED){
-        m_arrays[m_current].data = new GLfloat[size];
-        m_arrays[m_current].type = GL_FLOAT;
-    } else if(type == GL_BYTE){
-        m_arrays[m_current].data = new GLshort[size];
-        m_arrays[m_current].type = GL_SHORT;
-    }
-    m_arrays[m_current].stride = 0;
-    m_arrays[m_current].allocated = true;
-}
-
-void GLESConversionArrays::setArr(void* data,unsigned int stride,GLenum type){
-   m_arrays[m_current].type = type;
-   m_arrays[m_current].data = data;
-   m_arrays[m_current].stride = stride;
-   m_arrays[m_current].allocated = false;
-}
-
-void* GLESConversionArrays::getCurrentData(){
-    return m_arrays[m_current].data;
-}
-
-ArrayData& GLESConversionArrays::getCurrentArray(){
-    return m_arrays[m_current];
-}
-
-unsigned int GLESConversionArrays::getCurrentIndex(){
-    return m_current;
-}
-
-ArrayData& GLESConversionArrays::operator[](int i){
-    return m_arrays[i];
-}
-
-void GLESConversionArrays::operator++(){
-    m_current++;
-}
-
-GLDispatch     GLEScontext::s_glDispatch;
-android::Mutex GLEScontext::s_lock;
-std::string*   GLEScontext::s_glExtensions= NULL;
-GLSupport      GLEScontext::s_glSupport;
-
-Version::Version():m_major(0),
-                   m_minor(0),
-                   m_release(0){};
-
-Version::Version(int major,int minor,int release):m_major(major),
-                                                  m_minor(minor),
-                                                  m_release(release){};
-
-Version::Version(const Version& ver):m_major(ver.m_major),
-                                     m_minor(ver.m_minor),
-                                     m_release(ver.m_release){}
-
-Version::Version(const char* versionString){
-    m_release = 0;
-    if((!versionString) ||
-      ((!(sscanf(versionString,"%d.%d"   ,&m_major,&m_minor) == 2)) &&
-       (!(sscanf(versionString,"%d.%d.%d",&m_major,&m_minor,&m_release) == 3)))){
-        m_major = m_minor = 0; // the version is not in the right format
-    }
-}
-
-Version& Version::operator=(const Version& ver){
-    m_major   = ver.m_major;
-    m_minor   = ver.m_minor;
-    m_release = ver.m_release;
-    return *this;
-}
-
-bool Version::operator<(const Version& ver) const{
-    if(m_major < ver.m_major) return true;
-    if(m_major == ver.m_major){
-        if(m_minor < ver.m_minor) return true;
-        if(m_minor == ver.m_minor){
-           return m_release < ver.m_release;
-        }
-    }
-    return false;
-}
-
-void GLEScontext::init() {
-
-    if (!s_glExtensions) {
-        initCapsLocked(s_glDispatch.glGetString(GL_EXTENSIONS));
-        s_glExtensions = new std::string("");
-    }
-
-    if (!m_initialized) {
-        initExtensionString();
-
-        int maxTexUnits = getMaxTexUnits();
-        m_texState = new textureUnitState[maxTexUnits];
-        for (int i=0;i<maxTexUnits;++i) {
-            for (int j=0;j<NUM_TEXTURE_TARGETS;++j)
-            {
-                m_texState[i][j].texture = 0;
-                m_texState[i][j].enabled = GL_FALSE;
-            }
-        }
-    }
-}
-
-GLEScontext::GLEScontext():
-                           m_initialized(false)    ,
-                           m_activeTexture(0)      ,
-                           m_unpackAlignment(4)    ,
-                           m_glError(GL_NO_ERROR)  ,
-                           m_texState(0)          ,
-                           m_arrayBuffer(0)        ,
-                           m_elementBuffer(0),
-                           m_renderbuffer(0),
-                           m_framebuffer(0)
-{
-};
-
-GLenum GLEScontext::getGLerror() {
-    return m_glError;
-}
-
-void GLEScontext::setGLerror(GLenum err) {
-    m_glError = err;
-}
-
-void GLEScontext::setActiveTexture(GLenum tex) {
-   m_activeTexture = tex - GL_TEXTURE0;
-}
-
-GLEScontext::~GLEScontext() {
-    for(ArraysMap::iterator it = m_map.begin(); it != m_map.end();it++) {
-        GLESpointer* p = (*it).second;
-        if(p) {
-            delete p;
-        }
-    }
-    delete[] m_texState;
-    m_texState = NULL;
-}
-
-const GLvoid* GLEScontext::setPointer(GLenum arrType,GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize) {
-    GLuint bufferName = m_arrayBuffer;
-    if(bufferName) {
-        unsigned int offset = reinterpret_cast<unsigned int>(data);
-        GLESbuffer* vbo = static_cast<GLESbuffer*>(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr());
-        m_map[arrType]->setBuffer(size,type,stride,vbo,bufferName,offset,normalize);
-        return  static_cast<const unsigned char*>(vbo->getData()) +  offset;
-    }
-    m_map[arrType]->setArray(size,type,stride,data,normalize);
-    return data;
-}
-
-void GLEScontext::enableArr(GLenum arr,bool enable) {
-    m_map[arr]->enable(enable);
-}
-
-bool GLEScontext::isArrEnabled(GLenum arr) {
-    return m_map[arr]->isEnable();
-}
-
-const GLESpointer* GLEScontext::getPointer(GLenum arrType) {
-    if (m_map.find(arrType) != m_map.end()) return m_map[arrType];
-    return NULL;
-}
-
-static void convertFixedDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize) {
-
-    for(unsigned int i = 0; i < nBytes;i+=strideOut) {
-        const GLfixed* fixed_data = (const GLfixed *)dataIn;
-        //filling attrib
-        for(int j=0;j<attribSize;j++) {
-            reinterpret_cast<GLfloat*>(&static_cast<unsigned char*>(dataOut)[i])[j] = X2F(fixed_data[j]);
-        }
-        dataIn += strideIn;
-    }
-}
-
-static void convertFixedIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize) {
-    for(int i = 0 ;i < count ;i++) {
-        unsigned short index = indices_type == GL_UNSIGNED_BYTE? ((GLubyte *)indices)[i]:
-                                                             ((GLushort *)indices)[i];
-        const GLfixed* fixed_data = (GLfixed *)(dataIn  + index*strideIn);
-        GLfloat* float_data = reinterpret_cast<GLfloat*>(static_cast<unsigned char*>(dataOut) + index*strideOut);
-
-        for(int j=0;j<attribSize;j++) {
-            float_data[j] = X2F(fixed_data[j]);
-         }
-    }
-}
-
-static void convertByteDirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,unsigned int nBytes,unsigned int strideOut,int attribSize) {
-
-    for(unsigned int i = 0; i < nBytes;i+=strideOut) {
-        const GLbyte* byte_data = (const GLbyte *)dataIn;
-        //filling attrib
-        for(int j=0;j<attribSize;j++) {
-            reinterpret_cast<GLshort*>(&static_cast<unsigned char*>(dataOut)[i])[j] = B2S(byte_data[j]);
-        }
-        dataIn += strideIn;
-    }
-}
-
-static void convertByteIndirectLoop(const char* dataIn,unsigned int strideIn,void* dataOut,GLsizei count,GLenum indices_type,const GLvoid* indices,unsigned int strideOut,int attribSize) {
-    for(int i = 0 ;i < count ;i++) {
-        unsigned short index = indices_type == GL_UNSIGNED_BYTE? ((GLubyte *)indices)[i]:
-                                                             ((GLushort *)indices)[i];
-        const GLbyte* bytes_data = (GLbyte *)(dataIn  + index*strideIn);
-        GLshort* short_data = reinterpret_cast<GLshort*>(static_cast<unsigned char*>(dataOut) + index*strideOut);
-
-        for(int j=0;j<attribSize;j++) {
-            short_data[j] = B2S(bytes_data[j]);
-         }
-    }
-}
-static void directToBytesRanges(GLint first,GLsizei count,GLESpointer* p,RangeList& list) {
-
-    int attribSize = p->getSize()*4; //4 is the sizeof GLfixed or GLfloat in bytes
-    int stride = p->getStride()?p->getStride():attribSize;
-    int start  = p->getBufferOffset()+first*attribSize;
-    if(!p->getStride()) {
-        list.addRange(Range(start,count*attribSize));
-    } else {
-        for(int i = 0 ;i < count; i++,start+=stride) {
-            list.addRange(Range(start,attribSize));
-        }
-    }
-}
-
-static void indirectToBytesRanges(const GLvoid* indices,GLenum indices_type,GLsizei count,GLESpointer* p,RangeList& list) {
-
-    int attribSize = p->getSize() * 4; //4 is the sizeof GLfixed or GLfloat in bytes
-    int stride = p->getStride()?p->getStride():attribSize;
-    int start  = p->getBufferOffset();
-    for(int i=0 ; i < count; i++) {
-        GLushort index = (indices_type == GL_UNSIGNED_SHORT?
-                         static_cast<const GLushort*>(indices)[i]:
-                         static_cast<const GLubyte*>(indices)[i]);
-        list.addRange(Range(start+index*stride,attribSize));
-
-    }
-}
-
-int bytesRangesToIndices(RangeList& ranges,GLESpointer* p,GLushort* indices) {
-
-    int attribSize = p->getSize() * 4; //4 is the sizeof GLfixed or GLfloat in bytes
-    int stride = p->getStride()?p->getStride():attribSize;
-    int offset = p->getBufferOffset();
-
-    int n = 0;
-    for(int i=0;i<ranges.size();i++) {
-        int startIndex = (ranges[i].getStart() - offset) / stride;
-        int nElements = ranges[i].getSize()/attribSize;
-        for(int j=0;j<nElements;j++) {
-            indices[n++] = startIndex+j;
-        }
-    }
-    return n;
-}
-
-void GLEScontext::convertDirect(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p) {
-
-    GLenum type    = p->getType();
-    int attribSize = p->getSize();
-    unsigned int size = attribSize*count + first;
-    unsigned int bytes = type == GL_FIXED ? sizeof(GLfixed):sizeof(GLbyte);
-    cArrs.allocArr(size,type);
-    int stride = p->getStride()?p->getStride():bytes*attribSize;
-    const char* data = (const char*)p->getArrayData() + (first*stride);
-
-    if(type == GL_FIXED) {
-        convertFixedDirectLoop(data,stride,cArrs.getCurrentData(),size*sizeof(GLfloat),attribSize*sizeof(GLfloat),attribSize);
-    } else if(type == GL_BYTE) {
-        convertByteDirectLoop(data,stride,cArrs.getCurrentData(),size*sizeof(GLshort),attribSize*sizeof(GLshort),attribSize);
-    }
-}
-
-void GLEScontext::convertDirectVBO(GLESConversionArrays& cArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p) {
-
-    RangeList ranges;
-    RangeList conversions;
-    GLushort* indices = NULL;
-    GLenum type    = p->getType();
-    int attribSize = p->getSize();
-    int stride = p->getStride()?p->getStride():sizeof(GLfixed)*attribSize;
-    unsigned int size = p->getStride()?p->getStride()*count:attribSize*count*sizeof(GLfixed);
-    char* data = (char*)p->getBufferData() + (first*stride);
-
-    if(p->bufferNeedConversion()) {
-        directToBytesRanges(first,count,p,ranges); //converting indices range to buffer bytes ranges by offset
-        p->getBufferConversions(ranges,conversions); // getting from the buffer the relevant ranges that still needs to be converted
-
-        if(conversions.size()) { // there are some elements to convert
-           indices = new GLushort[count];
-           int nIndices = bytesRangesToIndices(conversions,p,indices); //converting bytes ranges by offset to indices in this array
-           convertFixedIndirectLoop(data,stride,data,nIndices,GL_UNSIGNED_SHORT,indices,stride,attribSize);
-        }
-    }
-    if(indices) delete[] indices;
-    cArrs.setArr(data,p->getStride(),GL_FLOAT);
-}
-
-int GLEScontext::findMaxIndex(GLsizei count,GLenum type,const GLvoid* indices) {
-    //finding max index
-    int max = 0;
-    if(type == GL_UNSIGNED_BYTE) {
-        GLubyte*  b_indices  =(GLubyte *)indices;
-        for(int i=0;i<count;i++) {
-            if(b_indices[i] > max) max = b_indices[i];
-        }
-    } else {
-        GLushort* us_indices =(GLushort *)indices;
-        for(int i=0;i<count;i++) {
-            if(us_indices[i] > max) max = us_indices[i];
-        }
-    }
-    return max;
-}
-
-void GLEScontext::convertIndirect(GLESConversionArrays& cArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p) {
-    GLenum type    = p->getType();
-    int maxElements = findMaxIndex(count,type,indices) + 1;
-
-    int attribSize = p->getSize();
-    int size = attribSize * maxElements;
-    unsigned int bytes = type == GL_FIXED ? sizeof(GLfixed):sizeof(GLbyte);
-    cArrs.allocArr(size,type);
-    int stride = p->getStride()?p->getStride():bytes*attribSize;
-
-    const char* data = (const char*)p->getArrayData();
-    if(type == GL_FIXED) {
-        convertFixedIndirectLoop(data,stride,cArrs.getCurrentData(),count,indices_type,indices,attribSize*sizeof(GLfloat),attribSize);
-    } else if(type == GL_BYTE){
-        convertByteIndirectLoop(data,stride,cArrs.getCurrentData(),count,indices_type,indices,attribSize*sizeof(GLshort),attribSize);
-    }
-}
-
-void GLEScontext::convertIndirectVBO(GLESConversionArrays& cArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p) {
-    RangeList ranges;
-    RangeList conversions;
-    GLushort* conversionIndices = NULL;
-    GLenum type    = p->getType();
-    int attribSize = p->getSize();
-    int stride = p->getStride()?p->getStride():sizeof(GLfixed)*attribSize;
-    char* data = static_cast<char*>(p->getBufferData());
-    if(p->bufferNeedConversion()) {
-        indirectToBytesRanges(indices,indices_type,count,p,ranges); //converting indices range to buffer bytes ranges by offset
-        p->getBufferConversions(ranges,conversions); // getting from the buffer the relevant ranges that still needs to be converted
-        if(conversions.size()) { // there are some elements to convert
-            conversionIndices = new GLushort[count];
-            int nIndices = bytesRangesToIndices(conversions,p,conversionIndices); //converting bytes ranges by offset to indices in this array
-            convertFixedIndirectLoop(data,stride,data,nIndices,GL_UNSIGNED_SHORT,conversionIndices,stride,attribSize);
-        }
-    }
-    if(conversionIndices) delete[] conversionIndices;
-    cArrs.setArr(data,p->getStride(),GL_FLOAT);
-}
-
-
-
-void GLEScontext::bindBuffer(GLenum target,GLuint buffer) {
-    if(target == GL_ARRAY_BUFFER) {
-        m_arrayBuffer = buffer;
-    } else {
-       m_elementBuffer = buffer;
-    }
-}
-
-void GLEScontext::unbindBuffer(GLuint buffer) {
-    if(m_arrayBuffer == buffer)
-    {
-        m_arrayBuffer = 0;
-    }
-    if(m_elementBuffer == buffer)
-    {
-        m_elementBuffer = 0;
-    }
-}
-
-//checks if any buffer is binded to target
-bool GLEScontext::isBindedBuffer(GLenum target) {
-    if(target == GL_ARRAY_BUFFER) {
-        return m_arrayBuffer != 0;
-    } else {
-        return m_elementBuffer != 0;
-    }
-}
-
-GLuint GLEScontext::getBuffer(GLenum target) {
-    return target == GL_ARRAY_BUFFER ? m_arrayBuffer:m_elementBuffer;
-}
-
-GLvoid* GLEScontext::getBindedBuffer(GLenum target) {
-    GLuint bufferName = getBuffer(target);
-    if(!bufferName) return NULL;
-
-    GLESbuffer* vbo = static_cast<GLESbuffer*>(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr());
-    return vbo->getData();
-}
-
-void GLEScontext::getBufferSize(GLenum target,GLint* param) {
-    GLuint bufferName = getBuffer(target);
-    GLESbuffer* vbo = static_cast<GLESbuffer*>(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr());
-    *param = vbo->getSize();
-}
-
-void GLEScontext::getBufferUsage(GLenum target,GLint* param) {
-    GLuint bufferName = getBuffer(target);
-    GLESbuffer* vbo = static_cast<GLESbuffer*>(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr());
-    *param = vbo->getUsage();
-}
-
-bool GLEScontext::setBufferData(GLenum target,GLsizeiptr size,const GLvoid* data,GLenum usage) {
-    GLuint bufferName = getBuffer(target);
-    if(!bufferName) return false;
-    GLESbuffer* vbo = static_cast<GLESbuffer*>(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr());
-    return vbo->setBuffer(size,usage,data);
-}
-
-bool GLEScontext::setBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid* data) {
-
-    GLuint bufferName = getBuffer(target);
-    if(!bufferName) return false;
-    GLESbuffer* vbo = static_cast<GLESbuffer*>(m_shareGroup->getObjectData(VERTEXBUFFER,bufferName).Ptr());
-    return vbo->setSubBuffer(offset,size,data);
-}
-
-const char * GLEScontext::getExtensionString() {
-    const char * ret;
-    s_lock.lock();
-    if (s_glExtensions)
-        ret = s_glExtensions->c_str();
-    else
-        ret="";
-    s_lock.unlock();
-    return ret;
-}
-
-void GLEScontext::getGlobalLock() {
-    s_lock.lock();
-}
-
-void GLEScontext::releaseGlobalLock() {
-    s_lock.unlock();
-}
-
-
-void GLEScontext::initCapsLocked(const GLubyte * extensionString)
-{
-    const char* cstring = (const char*)extensionString;
-
-    s_glDispatch.glGetIntegerv(GL_MAX_VERTEX_ATTRIBS,&s_glSupport.maxVertexAttribs);
-    s_glDispatch.glGetIntegerv(GL_MAX_CLIP_PLANES,&s_glSupport.maxClipPlane);
-    s_glDispatch.glGetIntegerv(GL_MAX_LIGHTS,&s_glSupport.maxLights);
-    s_glDispatch.glGetIntegerv(GL_MAX_TEXTURE_SIZE,&s_glSupport.maxTexSize);
-    s_glDispatch.glGetIntegerv(GL_MAX_TEXTURE_UNITS,&s_glSupport.maxTexUnits);
-    s_glDispatch.glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS,&s_glSupport.maxTexImageUnits);
-    const GLubyte* glslVersion = s_glDispatch.glGetString(GL_SHADING_LANGUAGE_VERSION);
-    s_glSupport.glslVersion = Version((const  char*)(glslVersion));
-
-    if (strstr(cstring,"GL_EXT_bgra ")!=NULL)
-        s_glSupport.GL_EXT_TEXTURE_FORMAT_BGRA8888 = true;
-
-    if (strstr(cstring,"GL_EXT_framebuffer_object ")!=NULL)
-        s_glSupport.GL_EXT_FRAMEBUFFER_OBJECT = true;
-
-    if (strstr(cstring,"GL_ARB_vertex_blend ")!=NULL)
-        s_glSupport.GL_ARB_VERTEX_BLEND = true;
-
-    if (strstr(cstring,"GL_ARB_matrix_palette ")!=NULL)
-        s_glSupport.GL_ARB_MATRIX_PALETTE = true;
-
-    if (strstr(cstring,"GL_EXT_packed_depth_stencil ")!=NULL )
-        s_glSupport.GL_EXT_PACKED_DEPTH_STENCIL = true;
-
-    if (strstr(cstring,"GL_OES_read_format ")!=NULL)
-        s_glSupport.GL_OES_READ_FORMAT = true;
-
-    if (strstr(cstring,"GL_ARB_half_float_pixel ")!=NULL)
-        s_glSupport.GL_ARB_HALF_FLOAT_PIXEL = true;
-
-    if (strstr(cstring,"GL_NV_half_float ")!=NULL)
-        s_glSupport.GL_NV_HALF_FLOAT = true;
-
-    if (strstr(cstring,"GL_ARB_half_float_vertex ")!=NULL)
-        s_glSupport.GL_ARB_HALF_FLOAT_VERTEX = true;
-
-    if (strstr(cstring,"GL_SGIS_generate_mipmap ")!=NULL)
-        s_glSupport.GL_SGIS_GENERATE_MIPMAP = true;
-
-    if (strstr(cstring,"GL_ARB_ES2_compatibility ")!=NULL)
-        s_glSupport.GL_ARB_ES2_COMPATIBILITY = true;
-
-    if (strstr(cstring,"GL_OES_standard_derivatives ")!=NULL)
-        s_glSupport.GL_OES_STANDARD_DERIVATIVES = true;
-
-}
-
-bool GLEScontext::isTextureUnitEnabled(GLenum unit) {
-    for (int i=0;i<NUM_TEXTURE_TARGETS;++i) {
-        if (m_texState[unit-GL_TEXTURE0][i].enabled)
-            return true;
-    }
-    return false;
-}
-
-bool GLEScontext::glGetBooleanv(GLenum pname, GLboolean *params)
-{
-    GLint iParam;
-
-    if(glGetIntegerv(pname, &iParam))
-    {
-        *params = (iParam != 0);
-        return true;
-    }
-
-    return false;
-}
-
-bool GLEScontext::glGetFixedv(GLenum pname, GLfixed *params)
-{
-    bool result = false;
-    GLint numParams = 1;
-
-    GLint* iParams = new GLint[numParams];
-    if (numParams>0 && glGetIntegerv(pname,iParams)) {
-        while(numParams >= 0)
-        {
-            params[numParams] = I2X(iParams[numParams]);
-            numParams--;
-        }
-        result = true;
-    }
-    delete [] iParams;
-
-    return result;
-}
-
-bool GLEScontext::glGetFloatv(GLenum pname, GLfloat *params)
-{
-    bool result = false;
-    GLint numParams = 1;
-
-    GLint* iParams = new GLint[numParams];
-    if (numParams>0 && glGetIntegerv(pname,iParams)) {
-        while(numParams >= 0)
-        {
-            params[numParams] = (GLfloat)iParams[numParams];
-            numParams--;
-        }
-        result = true;
-    }
-    delete [] iParams;
-
-    return result;
-}        
-
-bool GLEScontext::glGetIntegerv(GLenum pname, GLint *params)
-{
-    switch(pname)
-    {
-        case GL_ARRAY_BUFFER_BINDING:
-            *params = m_arrayBuffer;
-            break;
-
-        case GL_ELEMENT_ARRAY_BUFFER_BINDING:
-            *params = m_elementBuffer;
-            break;
-
-        case GL_TEXTURE_BINDING_CUBE_MAP:
-            *params = m_texState[m_activeTexture][TEXTURE_CUBE_MAP].texture;
-            break;
-
-        case GL_TEXTURE_BINDING_2D:
-            *params = m_texState[m_activeTexture][TEXTURE_2D].texture;
-            break;
-
-        case GL_ACTIVE_TEXTURE:
-            *params = m_activeTexture+GL_TEXTURE0;
-            break;
-
-        case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-            *params = GL_UNSIGNED_BYTE;
-            break;
-
-        case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-            *params = GL_RGBA;
-            break;
-        default:
-            return false;
-    }
-
-    return true;
-}
-
-TextureTarget GLEScontext::GLTextureTargetToLocal(GLenum target) {
-    TextureTarget value=TEXTURE_2D;
-    switch (target) {
-    case GL_TEXTURE_CUBE_MAP:
-    case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
-    case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
-    case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
-    case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
-    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
-    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
-        value = TEXTURE_CUBE_MAP;
-        break;
-    case GL_TEXTURE_2D:
-        value = TEXTURE_2D;
-        break;
-    }
-    return value;
-}
-
-unsigned int GLEScontext::getBindedTexture(GLenum target) {
-    TextureTarget pos = GLTextureTargetToLocal(target);
-    return m_texState[m_activeTexture][pos].texture;
-}
-  
-unsigned int GLEScontext::getBindedTexture(GLenum unit, GLenum target) {
-    TextureTarget pos = GLTextureTargetToLocal(target);
-    return m_texState[unit-GL_TEXTURE0][pos].texture;
-}
-
-void GLEScontext::setBindedTexture(GLenum target, unsigned int tex) {
-    TextureTarget pos = GLTextureTargetToLocal(target);
-    m_texState[m_activeTexture][pos].texture = tex;
-}
-
-void GLEScontext::setTextureEnabled(GLenum target, GLenum enable) {
-    TextureTarget pos = GLTextureTargetToLocal(target);
-    m_texState[m_activeTexture][pos].enabled = enable;
-}
-
-#define INTERNAL_NAME(x) (x +0x100000000ll);
-
-ObjectLocalName GLEScontext::getDefaultTextureName(GLenum target) {
-    ObjectLocalName name = 0;
-    switch (GLTextureTargetToLocal(target)) {
-    case TEXTURE_2D:
-        name = INTERNAL_NAME(0);
-        break;
-    case TEXTURE_CUBE_MAP:
-        name = INTERNAL_NAME(1);
-        break;
-    default:
-        name = 0;
-        break;
-    }
-    return name;
-}
-
-void GLEScontext::drawValidate(void)
-{
-    if(m_framebuffer == 0)
-        return;
-
-    ObjectDataPtr fbObj = m_shareGroup->getObjectData(FRAMEBUFFER,m_framebuffer);
-    if (fbObj.Ptr() == NULL)
-        return;
-
-    FramebufferData *fbData = (FramebufferData *)fbObj.Ptr();
-
-    fbData->validate(this);
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESpointer.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESpointer.cpp
deleted file mode 100644
index 372257e..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESpointer.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLcommon/GLESpointer.h>
-#include <stdlib.h>
-
-GLESpointer::GLESpointer():m_size(4),
-                           m_type(GL_FLOAT),
-                           m_stride(0),
-                           m_enabled(false),
-                           m_normalize(false),
-                           m_data(NULL),
-                           m_buffer(NULL),
-                           m_bufferName(0),
-                           m_buffOffset(0),
-                           m_isVBO(false){};
-
-
-GLenum GLESpointer:: getType() const {
-    return m_type;
-}
-
-GLint GLESpointer::getSize() const  {
-    return m_size;
-}
-
-GLsizei GLESpointer::getStride() const {
-    return m_stride;
-}
-
-const GLvoid* GLESpointer::getArrayData() const {
-    return m_data;
-}
-
-GLvoid* GLESpointer::getBufferData() const {
-    return  m_buffer ? static_cast<unsigned char*>(m_buffer->getData()) + m_buffOffset : NULL;
-}
-
-const GLvoid* GLESpointer::getData() const{
-    return m_isVBO ? getBufferData():getArrayData();
-}
-
-void GLESpointer::redirectPointerData(){
-    m_data = getBufferData();
-}
-
-GLuint GLESpointer::getBufferName() const {
-    return m_bufferName;
-}
-
-unsigned int GLESpointer::getBufferOffset() const {
-
-    return  m_buffOffset;
-}
-
-bool GLESpointer::isEnable() const {
-    return m_enabled;
-}
-
-bool GLESpointer::isNormalize() const {
-    return m_normalize;
-}
-
-bool GLESpointer::isVBO() const {
-    return m_isVBO;
-}
-
-void GLESpointer::enable(bool b) {
-    m_enabled = b;
-}
-
-void GLESpointer::setArray(GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize) {
-    m_size   = size;
-    m_type   = type;
-    m_stride = stride;
-    m_data   = data;
-    m_buffer = NULL;
-    m_bufferName = 0;
-    m_normalize = normalize;
-    m_isVBO = false;
-}
-
-void GLESpointer::setBuffer(GLint size,GLenum type,GLsizei stride,GLESbuffer* buf,GLuint bufferName,int offset,bool normalize) {
-    m_size   = size;
-    m_type   = type;
-    m_stride = stride;
-    m_data   = NULL;
-    m_buffer = buf;
-    m_bufferName = bufferName;
-    m_buffOffset = offset;
-    m_normalize = normalize;
-    m_isVBO = true;
-}
-
-void GLESpointer::getBufferConversions(const RangeList& rl,RangeList& rlOut) {
-    m_buffer->getConversions(rl,rlOut);
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp
deleted file mode 100644
index 7233116..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLESvalidate.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-#include<GLcommon/GLESvalidate.h>
-#include<GLES/gl.h>
-#include<GLES/glext.h>
-#include<GLES2/gl2.h>
-#include<GLES2/gl2ext.h>
-#include <OpenglCodecCommon/ErrorLog.h>
-
-
-bool  GLESvalidate::textureEnum(GLenum e,unsigned int maxTex) {
-    return e >= GL_TEXTURE0 && e <= (GL_TEXTURE0 + maxTex);
-}
-
-bool GLESvalidate::pixelType(GLEScontext * ctx, GLenum type) {
-    if ((ctx && ctx->getCaps()->GL_EXT_PACKED_DEPTH_STENCIL) &&
-       (type == GL_UNSIGNED_INT_24_8_OES) )
-        return true;
-
-    if (ctx &&
-       (ctx->getCaps()->GL_ARB_HALF_FLOAT_PIXEL || ctx->getCaps()->GL_NV_HALF_FLOAT) &&
-       (type == GL_HALF_FLOAT_OES))
-        return true;
-
-    switch(type) {
-    case GL_UNSIGNED_BYTE:
-    case GL_UNSIGNED_SHORT_5_6_5:
-    case GL_UNSIGNED_SHORT_4_4_4_4:
-    case GL_UNSIGNED_SHORT_5_5_5_1:
-    case GL_FLOAT:
-        return true;
-    }
-    return false;
-}
-
-bool GLESvalidate::pixelOp(GLenum format,GLenum type) {
-     switch(type) {
-     case GL_UNSIGNED_SHORT_4_4_4_4:
-     case GL_UNSIGNED_SHORT_5_5_5_1:
-         return format == GL_RGBA;
-     case GL_UNSIGNED_SHORT_5_6_5:
-         return format == GL_RGB;
-     }
-     return true;
-}
-
-bool GLESvalidate::pixelFrmt(GLEScontext* ctx ,GLenum format) {
-    if (ctx && ctx->getCaps()->GL_EXT_TEXTURE_FORMAT_BGRA8888 && format == GL_BGRA_EXT)
-      return true;
-    if (ctx && ctx->getCaps()->GL_EXT_PACKED_DEPTH_STENCIL && format == GL_DEPTH_STENCIL_OES)
-      return true;
-    switch(format) {
-    case GL_ALPHA:
-    case GL_RGB:
-    case GL_RGBA:
-    case GL_LUMINANCE:
-    case GL_LUMINANCE_ALPHA:
-        return true;
-    }
-    return false;
-}
-
-bool GLESvalidate::bufferTarget(GLenum target) {
-    return target == GL_ARRAY_BUFFER || target == GL_ELEMENT_ARRAY_BUFFER;
-}
-
-bool GLESvalidate::bufferParam(GLenum param) {
- return  (param == GL_BUFFER_SIZE) || (param == GL_BUFFER_USAGE);
-}
-
-bool GLESvalidate::drawMode(GLenum mode) {
-    switch(mode) {
-    case GL_POINTS:
-    case GL_LINE_STRIP:
-    case GL_LINE_LOOP:
-    case GL_LINES:
-    case GL_TRIANGLE_STRIP:
-    case GL_TRIANGLE_FAN:
-    case GL_TRIANGLES:
-        return true;
-    }
-    return false;
-}
-
-bool GLESvalidate::drawType(GLenum mode) {
-    return  mode == GL_UNSIGNED_BYTE ||
-            mode == GL_UNSIGNED_SHORT ||
-            mode == GL_UNSIGNED_INT;
-}
-
-bool GLESvalidate::textureTarget(GLenum target) {
-    return target==GL_TEXTURE_2D || target==GL_TEXTURE_CUBE_MAP;
-}
-
-bool GLESvalidate::textureTargetLimited(GLenum target) {
-    return target==GL_TEXTURE_2D;
-}
-
-bool GLESvalidate::textureTargetEx(GLenum target) {
-    switch(target) {
-    case GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES:
-    case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES:
-    case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES:
-    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES:
-    case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES:
-    case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES:
-    case GL_TEXTURE_2D:
-      return true;
-    } 
-    return false;
-}
-
-bool GLESvalidate::blendEquationMode(GLenum mode){
-    return mode == GL_FUNC_ADD             ||
-           mode == GL_FUNC_SUBTRACT        ||
-           mode == GL_FUNC_REVERSE_SUBTRACT;
-}
-
-bool GLESvalidate::framebufferTarget(GLenum target){
-    return target == GL_FRAMEBUFFER;
-}
-
-bool GLESvalidate::framebufferAttachment(GLenum attachment){
-    switch(attachment){
-    case GL_COLOR_ATTACHMENT0:
-    case GL_DEPTH_ATTACHMENT:
-    case GL_STENCIL_ATTACHMENT:
-        return true;
-    }
-    return false;
-}
-
-bool GLESvalidate::framebufferAttachmentParams(GLenum pname){
-    switch(pname){
-    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:
-    case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:
-    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:
-    case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:
-        return true;
-    }
-    return false;
-}
-
-bool GLESvalidate::renderbufferTarget(GLenum target){
-    return target == GL_RENDERBUFFER;
-}
-
-bool GLESvalidate::renderbufferParams(GLenum pname){
-    switch(pname){
-    case GL_RENDERBUFFER_WIDTH:
-    case GL_RENDERBUFFER_HEIGHT:
-    case GL_RENDERBUFFER_INTERNAL_FORMAT:
-    case GL_RENDERBUFFER_RED_SIZE:
-    case GL_RENDERBUFFER_GREEN_SIZE:
-    case GL_RENDERBUFFER_BLUE_SIZE:
-    case GL_RENDERBUFFER_ALPHA_SIZE:
-    case GL_RENDERBUFFER_DEPTH_SIZE:
-    case GL_RENDERBUFFER_STENCIL_SIZE:
-        return true;
-    }
-    return false;
-}
-
-bool GLESvalidate::texImgDim(GLsizei width,GLsizei height,int maxTexSize) {
-
- if( width < 0 || height < 0 || width > maxTexSize || height > maxTexSize)
-    return false;
- return isPowerOf2(width) && isPowerOf2(height);
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLutils.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/GLutils.cpp
deleted file mode 100644
index 46e292c..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/GLutils.cpp
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLcommon/GLutils.h>
-
-bool isPowerOf2(int num) {
-    return (num & (num -1)) == 0;
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/PaletteTexture.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/PaletteTexture.cpp
deleted file mode 100644
index c99ed07..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/PaletteTexture.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLcommon/PaletteTexture.h"
-#include <stdio.h>
-
-
-
-struct Color
-{
-  Color(unsigned char r, unsigned char g,unsigned char b, unsigned char a):red(r),green(g),blue(b),alpha(a){};
-  unsigned char red;
-  unsigned char green;
-  unsigned char blue;
-  unsigned char alpha;
-};
-
-void getPaletteInfo(GLenum internalFormat,unsigned int& indexSizeBits,unsigned int& colorSizeBytes,GLenum& colorFrmt) {
-
-        colorFrmt = GL_RGB;
-        switch(internalFormat)
-    {
-    case GL_PALETTE4_RGB8_OES:
-        indexSizeBits = 4;
-        colorSizeBytes = 3;
-        break;
-
-    case GL_PALETTE4_RGBA8_OES:
-        indexSizeBits = 4;
-        colorSizeBytes = 4;
-        colorFrmt = GL_RGBA;
-        break;
-
-    case GL_PALETTE4_RGBA4_OES:
-    case GL_PALETTE4_RGB5_A1_OES:
-        colorFrmt = GL_RGBA;
-        /* fall-through */
-    case GL_PALETTE4_R5_G6_B5_OES:
-        indexSizeBits = 4;
-        colorSizeBytes = 2;
-        break;
-
-    case GL_PALETTE8_RGB8_OES:
-        indexSizeBits = 8;
-        colorSizeBytes = 3;
-        break;
-
-    case GL_PALETTE8_RGBA8_OES:
-        indexSizeBits = 8;
-        colorSizeBytes = 4;
-        colorFrmt = GL_RGBA;
-        break;
-
-    case GL_PALETTE8_RGBA4_OES:
-    case GL_PALETTE8_RGB5_A1_OES:
-        colorFrmt = GL_RGBA;
-        /* fall-through */
-    case GL_PALETTE8_R5_G6_B5_OES:
-        indexSizeBits = 8;
-        colorSizeBytes = 2;
-        break;
-    }
-}
-
-
-Color paletteColor(const unsigned char* pallete,unsigned int index,GLenum format)
-{
-        short s;
-        switch(format) {
-        //RGB
-    case GL_PALETTE4_RGB8_OES:
-    case GL_PALETTE8_RGB8_OES:
-            return Color(pallete[index],pallete[index+1],pallete[index+2],0);
-    case GL_PALETTE8_R5_G6_B5_OES:
-    case GL_PALETTE4_R5_G6_B5_OES:
-            s = *((short *)(pallete+index));
-            return Color((s >> 11)*255/31,((s >> 5) & 0x3f)*255/63 ,(s & 0x1f)*255/31,0);
-
-        //RGBA
-    case GL_PALETTE4_RGBA8_OES:
-    case GL_PALETTE8_RGBA8_OES:
-            return Color(pallete[index],pallete[index+1],pallete[index+2],pallete[index+3]);
-    case GL_PALETTE4_RGBA4_OES:
-    case GL_PALETTE8_RGBA4_OES:
-            s = *((short *)(pallete+index));
-            return Color(((s >> 12) & 0xf)*255/15,((s >> 8) & 0xf)*255/15,((s >> 4) & 0xf)*255/15 ,(s & 0xf)*255/15);
-    case GL_PALETTE4_RGB5_A1_OES:
-    case GL_PALETTE8_RGB5_A1_OES:
-            s = *((short *)(pallete+index));
-            return Color(((s >> 11) & 0x1f)*255/31,((s >> 6) & 0x1f)*255/31,((s >> 1) & 0x1f)*255/31 ,(s & 0x1) * 255);
-        default:
-            return Color(255,255,255,255);
-    }
-}
-
-unsigned char* uncompressTexture(GLenum internalformat,GLenum& formatOut,GLsizei width,GLsizei height,GLsizei imageSize, const GLvoid* data,GLint level) {
-
-    unsigned int indexSizeBits;  //the size of the color index in the pallete
-    unsigned int colorSizeBytes; //the size of each color cell in the pallete
-
-    getPaletteInfo(internalformat,indexSizeBits,colorSizeBytes,formatOut);
-    if(!data)
-    {
-        return NULL;
-    }
-
-    const unsigned char* palette = static_cast<const unsigned char *>(data);
-
-    //the pallete positioned in the begininng of the data
-    // so we jump over it to get to the colos indices in the palette
-
-    int nColors = 2 << (indexSizeBits -1); //2^indexSizeBits
-    int paletteSizeBytes = nColors*colorSizeBytes;
-    const unsigned char* imageIndices =  palette + paletteSizeBytes;
-
-    //jumping to the the correct mipmap level
-    for(int i=0;i<level;i++) {
-        imageIndices+= (width*height*indexSizeBits)/8;
-        width  = width  >> 1;
-        height = height >> 1;
-    }
-
-    int colorSizeOut = (formatOut == GL_RGB? 3:4);
-    int nPixels = width*height;
-    unsigned char* pixelsOut = new unsigned char[nPixels*colorSizeOut];
-    if(!pixelsOut) return NULL;
-
-    int leftBytes = ((palette + imageSize) /* the end of data pointer*/
-                      - imageIndices);
-    int leftPixels = (leftBytes * 8 )/indexSizeBits;
-
-    int maxIndices = (leftPixels < nPixels) ? leftPixels:nPixels;
-
-    //filling the pixels array
-    for(int i =0 ; i < maxIndices ; i++) {
-        int paletteIndex = 0;
-        int indexOut = i*colorSizeOut;
-        if(indexSizeBits == 4) {
-            paletteIndex = (i%2) == 0 ?
-                           imageIndices[i/2] >> 4:  //upper bits
-                           imageIndices[i/2] & 0xf; //lower bits
-        } else {
-            paletteIndex = imageIndices[i];
-        }
-
-        paletteIndex*=colorSizeBytes;
-        Color c = paletteColor(palette,paletteIndex,internalformat);
-
-        pixelsOut[indexOut] = c.red;
-        pixelsOut[indexOut+1] = c.green;
-        pixelsOut[indexOut+2] = c.blue;
-        if(formatOut == GL_RGBA) {
-            pixelsOut[indexOut+3] = c.alpha;
-        }
-    }
-    return pixelsOut;
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/RangeManip.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/RangeManip.cpp
deleted file mode 100644
index 5ba609b..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/RangeManip.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLcommon/RangeManip.h>
-
-
-bool Range::rangeIntersection(const Range& r,Range& rOut) const {
-    if(m_start > r.getEnd() || r.getStart() > m_end) return false;
-    int max_start = (m_start > r.getStart())? m_start:r.getStart();
-    int min_end = (m_end < r.getEnd())?m_end:r.getEnd();
-    int size = min_end - max_start;
-    if(size) {
-        rOut.setRange(max_start,min_end-max_start);
-        return true;
-    }
-    return false;
-}
-
-bool Range::rangeUnion(const Range& r,Range& rOut) const {
-    if(m_start > r.getEnd() || r.getStart() > m_end) return false;
-    int min_start = (m_start < r.getStart())?m_start:r.getStart();
-    int max_end = (m_end > r.getEnd())?m_end:r.getEnd();
-    int size =  max_end - min_start;
-    if(size) {
-        rOut.setRange(min_start,max_end-min_start);
-        return false;
-    }
-    return false;
-}
-
-void RangeList::addRange(const Range& r) {
-    list.push_back(r);
-}
-
-void RangeList::addRanges(const RangeList& rl) {
-    for(int i =0; i< rl.size();i++) {
-       addRange(rl.list[i]);
-    }
-}
-
-void RangeList::delRanges(const RangeList& rl,RangeList& deleted) {
-    for(int i =0; i< rl.size();i++) {
-       delRange(rl.list[i],deleted);
-    }
-}
-
-bool RangeList::empty() const{
-    return list.empty();
-}
-
-int  RangeList::size() const{
-    return list.size();
-}
-void RangeList::clear() {
-    return list.clear();
-}
-
-void RangeList::erase(unsigned int i) {
-    if(i > list.size()) return;
-    list.erase(list.begin() +i);
-}
-
-void RangeList::delRange(const Range& r,RangeList& deleted) {
-    if(r.getSize() == 0) return;
-
-    Range intersection;
-    Range temp;
-    // compare new rect to each and any of the rects on the list
-    for (int i=0;i<(int)list.size();i++) { // i must be signed for i-- below
-     // if there is intersection
-     if (r.rangeIntersection(list[i],intersection)) {
-             Range old=list[i];
-         // remove old as it is about to be split
-         erase(i);
-         i--;
-         if (intersection!=old) { // otherwise split:
-             //intersection on right side
-             if(old.getStart() != intersection.getStart()) {
-                 list.insert(list.begin(),Range(old.getStart(),intersection.getStart() - old.getStart()));
-             }
-
-             //intersection on left side
-             if(old.getEnd() != intersection.getEnd()) {
-                 list.insert(list.begin(),Range(intersection.getEnd(),old.getEnd() - intersection.getEnd()));
-             }
-         }
-         deleted.addRange(intersection);
-     }
- }
-}
-
-void RangeList::merge() {
-    if(list.empty()) return;
-
-    Range temp;
-    bool changed;
-
-    do { // re-run if changed in last run
-        changed=0;
-        // run for each combinations of two rects in the list
-        for (int i=0;i<(((int)list.size())-1) && !changed ;i++)
-        {
-            for (int j=i+1;j<(int)list.size() && !changed ;j++)
-            {
-               if (list[i].rangeUnion(list[j],temp)) {
-                    // are them exactly one on left of the other
-                    list[i] = temp;
-                    erase(j);
-                    changed=1;
-               }
-            }
-        }
-    } while (changed);
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/TextureUtils.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/TextureUtils.cpp
deleted file mode 100644
index 81152f6..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/TextureUtils.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <GLcommon/TextureUtils.h>
-#include <GLcommon/GLESmacros.h>
-#include <GLcommon/GLDispatch.h>
-#include <GLcommon/GLESvalidate.h>
-#include <stdio.h>
-#include <cmath>
-
-int getCompressedFormats(int* formats){
-    if(formats){
-        //Palette
-        formats[0] = GL_PALETTE4_RGBA8_OES;
-        formats[1] = GL_PALETTE4_RGBA4_OES;
-        formats[2] = GL_PALETTE8_RGBA8_OES;
-        formats[3] = GL_PALETTE8_RGBA4_OES;
-        formats[4] = GL_PALETTE4_RGB8_OES;
-        formats[5] = GL_PALETTE8_RGB8_OES;
-        formats[6] = GL_PALETTE4_RGB5_A1_OES;
-        formats[7] = GL_PALETTE8_RGB5_A1_OES;
-        formats[8] = GL_PALETTE4_R5_G6_B5_OES;
-        formats[9] = GL_PALETTE8_R5_G6_B5_OES;
-        //ETC
-        formats[MAX_SUPPORTED_PALETTE] = GL_ETC1_RGB8_OES;
-    }
-    return MAX_SUPPORTED_PALETTE + MAX_ETC_SUPPORTED;
-}
-
-void  doCompressedTexImage2D(GLEScontext * ctx, GLenum target, GLint level, 
-                                          GLenum internalformat, GLsizei width, 
-                                          GLsizei height, GLint border, 
-                                          GLsizei imageSize, const GLvoid* data, void * funcPtr)
-{
-    /* XXX: This is just a hack to fix the resolve of glTexImage2D problem
-       It will be removed when we'll no longer link against ligGL */
-    typedef void (GLAPIENTRY *glTexImage2DPtr_t ) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-    glTexImage2DPtr_t glTexImage2DPtr;
-    glTexImage2DPtr =  (glTexImage2DPtr_t)funcPtr; 
-
-    switch (internalformat) {
-        case GL_ETC1_RGB8_OES:
-            {
-                GLint format = GL_RGB;
-                GLint type = GL_UNSIGNED_BYTE;
-
-                GLsizei compressedSize = etc1_get_encoded_data_size(width, height);
-                SET_ERROR_IF((compressedSize > imageSize), GL_INVALID_VALUE);
-
-                const int32_t align = ctx->getUnpackAlignment()-1;
-                const int32_t bpr = ((width * 3) + align) & ~align;
-                const size_t size = bpr * height;
-
-                etc1_byte* pOut = new etc1_byte[size];
-                int res = etc1_decode_image((const etc1_byte*)data, pOut, width, height, 3, bpr);
-                SET_ERROR_IF(res!=0, GL_INVALID_VALUE);
-                glTexImage2DPtr(target,level,format,width,height,border,format,type,pOut);
-                delete [] pOut;
-            }
-            break;
-            
-        case GL_PALETTE4_RGB8_OES:
-        case GL_PALETTE4_RGBA8_OES:
-        case GL_PALETTE4_R5_G6_B5_OES:
-        case GL_PALETTE4_RGBA4_OES:
-        case GL_PALETTE4_RGB5_A1_OES:
-        case GL_PALETTE8_RGB8_OES:
-        case GL_PALETTE8_RGBA8_OES:
-        case GL_PALETTE8_R5_G6_B5_OES:
-        case GL_PALETTE8_RGBA4_OES:
-        case GL_PALETTE8_RGB5_A1_OES:
-            {
-                SET_ERROR_IF(level > log2(ctx->getMaxTexSize()) || 
-                             border !=0 || level > 0 || 
-                             !GLESvalidate::texImgDim(width,height,ctx->getMaxTexSize()+2),GL_INVALID_VALUE)
-
-                int nMipmaps = -level + 1;
-                GLsizei tmpWidth  = width;
-                GLsizei tmpHeight = height;
-
-                for(int i = 0; i < nMipmaps ; i++)
-                {
-                   GLenum uncompressedFrmt;
-                   unsigned char* uncompressed = uncompressTexture(internalformat,uncompressedFrmt,width,height,imageSize,data,i);
-                   glTexImage2DPtr(target,i,uncompressedFrmt,tmpWidth,tmpHeight,border,uncompressedFrmt,GL_UNSIGNED_BYTE,uncompressed);
-                   tmpWidth/=2;
-                   tmpHeight/=2;
-                   delete[] uncompressed;
-                }
-            }
-            break;
-
-        default:
-            SET_ERROR_IF(1, GL_INVALID_ENUM);
-            break;
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/etc1.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/etc1.cpp
deleted file mode 100644
index 5ed2c3c..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/etc1.cpp
+++ /dev/null
@@ -1,670 +0,0 @@
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <ETC1/etc1.h>
-
-#include <string.h>
-
-/* From http://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt
-
- The number of bits that represent a 4x4 texel block is 64 bits if
- <internalformat> is given by ETC1_RGB8_OES.
-
- The data for a block is a number of bytes,
-
- {q0, q1, q2, q3, q4, q5, q6, q7}
-
- where byte q0 is located at the lowest memory address and q7 at
- the highest. The 64 bits specifying the block is then represented
- by the following 64 bit integer:
-
- int64bit = 256*(256*(256*(256*(256*(256*(256*q0+q1)+q2)+q3)+q4)+q5)+q6)+q7;
-
- ETC1_RGB8_OES:
-
- a) bit layout in bits 63 through 32 if diffbit = 0
-
- 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48
- -----------------------------------------------
- | base col1 | base col2 | base col1 | base col2 |
- | R1 (4bits)| R2 (4bits)| G1 (4bits)| G2 (4bits)|
- -----------------------------------------------
-
- 47 46 45 44 43 42 41 40 39 38 37 36 35 34  33  32
- ---------------------------------------------------
- | base col1 | base col2 | table  | table  |diff|flip|
- | B1 (4bits)| B2 (4bits)| cw 1   | cw 2   |bit |bit |
- ---------------------------------------------------
-
-
- b) bit layout in bits 63 through 32 if diffbit = 1
-
- 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48
- -----------------------------------------------
- | base col1    | dcol 2 | base col1    | dcol 2 |
- | R1' (5 bits) | dR2    | G1' (5 bits) | dG2    |
- -----------------------------------------------
-
- 47 46 45 44 43 42 41 40 39 38 37 36 35 34  33  32
- ---------------------------------------------------
- | base col 1   | dcol 2 | table  | table  |diff|flip|
- | B1' (5 bits) | dB2    | cw 1   | cw 2   |bit |bit |
- ---------------------------------------------------
-
-
- c) bit layout in bits 31 through 0 (in both cases)
-
- 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- -----------------------------------------------
- |       most significant pixel index bits       |
- | p| o| n| m| l| k| j| i| h| g| f| e| d| c| b| a|
- -----------------------------------------------
-
- 15 14 13 12 11 10  9  8  7  6  5  4  3   2   1  0
- --------------------------------------------------
- |         least significant pixel index bits       |
- | p| o| n| m| l| k| j| i| h| g| f| e| d| c | b | a |
- --------------------------------------------------
-
-
- Add table 3.17.2: Intensity modifier sets for ETC1 compressed textures:
-
- table codeword                modifier table
- ------------------        ----------------------
- 0                     -8  -2  2   8
- 1                    -17  -5  5  17
- 2                    -29  -9  9  29
- 3                    -42 -13 13  42
- 4                    -60 -18 18  60
- 5                    -80 -24 24  80
- 6                   -106 -33 33 106
- 7                   -183 -47 47 183
-
-
- Add table 3.17.3 Mapping from pixel index values to modifier values for
- ETC1 compressed textures:
-
- pixel index value
- ---------------
- msb     lsb           resulting modifier value
- -----   -----          -------------------------
- 1       1            -b (large negative value)
- 1       0            -a (small negative value)
- 0       0             a (small positive value)
- 0       1             b (large positive value)
-
-
- */
-
-static const int kModifierTable[] = {
-/* 0 */2, 8, -2, -8,
-/* 1 */5, 17, -5, -17,
-/* 2 */9, 29, -9, -29,
-/* 3 */13, 42, -13, -42,
-/* 4 */18, 60, -18, -60,
-/* 5 */24, 80, -24, -80,
-/* 6 */33, 106, -33, -106,
-/* 7 */47, 183, -47, -183 };
-
-static const int kLookup[8] = { 0, 1, 2, 3, -4, -3, -2, -1 };
-
-static inline etc1_byte clamp(int x) {
-    return (etc1_byte) (x >= 0 ? (x < 255 ? x : 255) : 0);
-}
-
-static
-inline int convert4To8(int b) {
-    int c = b & 0xf;
-    return (c << 4) | c;
-}
-
-static
-inline int convert5To8(int b) {
-    int c = b & 0x1f;
-    return (c << 3) | (c >> 2);
-}
-
-static
-inline int convert6To8(int b) {
-    int c = b & 0x3f;
-    return (c << 2) | (c >> 4);
-}
-
-static
-inline int divideBy255(int d) {
-    return (d + 128 + (d >> 8)) >> 8;
-}
-
-static
-inline int convert8To4(int b) {
-    int c = b & 0xff;
-    return divideBy255(b * 15);
-}
-
-static
-inline int convert8To5(int b) {
-    int c = b & 0xff;
-    return divideBy255(b * 31);
-}
-
-static
-inline int convertDiff(int base, int diff) {
-    return convert5To8((0x1f & base) + kLookup[0x7 & diff]);
-}
-
-static
-void decode_subblock(etc1_byte* pOut, int r, int g, int b, const int* table,
-        etc1_uint32 low, bool second, bool flipped) {
-    int baseX = 0;
-    int baseY = 0;
-    if (second) {
-        if (flipped) {
-            baseY = 2;
-        } else {
-            baseX = 2;
-        }
-    }
-    for (int i = 0; i < 8; i++) {
-        int x, y;
-        if (flipped) {
-            x = baseX + (i >> 1);
-            y = baseY + (i & 1);
-        } else {
-            x = baseX + (i >> 2);
-            y = baseY + (i & 3);
-        }
-        int k = y + (x * 4);
-        int offset = ((low >> k) & 1) | ((low >> (k + 15)) & 2);
-        int delta = table[offset];
-        etc1_byte* q = pOut + 3 * (x + 4 * y);
-        *q++ = clamp(r + delta);
-        *q++ = clamp(g + delta);
-        *q++ = clamp(b + delta);
-    }
-}
-
-// Input is an ETC1 compressed version of the data.
-// Output is a 4 x 4 square of 3-byte pixels in form R, G, B
-
-void etc1_decode_block(const etc1_byte* pIn, etc1_byte* pOut) {
-    etc1_uint32 high = (pIn[0] << 24) | (pIn[1] << 16) | (pIn[2] << 8) | pIn[3];
-    etc1_uint32 low = (pIn[4] << 24) | (pIn[5] << 16) | (pIn[6] << 8) | pIn[7];
-    int r1, r2, g1, g2, b1, b2;
-    if (high & 2) {
-        // differential
-        int rBase = high >> 27;
-        int gBase = high >> 19;
-        int bBase = high >> 11;
-        r1 = convert5To8(rBase);
-        r2 = convertDiff(rBase, high >> 24);
-        g1 = convert5To8(gBase);
-        g2 = convertDiff(gBase, high >> 16);
-        b1 = convert5To8(bBase);
-        b2 = convertDiff(bBase, high >> 8);
-    } else {
-        // not differential
-        r1 = convert4To8(high >> 28);
-        r2 = convert4To8(high >> 24);
-        g1 = convert4To8(high >> 20);
-        g2 = convert4To8(high >> 16);
-        b1 = convert4To8(high >> 12);
-        b2 = convert4To8(high >> 8);
-    }
-    int tableIndexA = 7 & (high >> 5);
-    int tableIndexB = 7 & (high >> 2);
-    const int* tableA = kModifierTable + tableIndexA * 4;
-    const int* tableB = kModifierTable + tableIndexB * 4;
-    bool flipped = (high & 1) != 0;
-    decode_subblock(pOut, r1, g1, b1, tableA, low, false, flipped);
-    decode_subblock(pOut, r2, g2, b2, tableB, low, true, flipped);
-}
-
-typedef struct {
-    etc1_uint32 high;
-    etc1_uint32 low;
-    etc1_uint32 score; // Lower is more accurate
-} etc_compressed;
-
-static
-inline void take_best(etc_compressed* a, const etc_compressed* b) {
-    if (a->score > b->score) {
-        *a = *b;
-    }
-}
-
-static
-void etc_average_colors_subblock(const etc1_byte* pIn, etc1_uint32 inMask,
-        etc1_byte* pColors, bool flipped, bool second) {
-    int r = 0;
-    int g = 0;
-    int b = 0;
-
-    if (flipped) {
-        int by = 0;
-        if (second) {
-            by = 2;
-        }
-        for (int y = 0; y < 2; y++) {
-            int yy = by + y;
-            for (int x = 0; x < 4; x++) {
-                int i = x + 4 * yy;
-                if (inMask & (1 << i)) {
-                    const etc1_byte* p = pIn + i * 3;
-                    r += *(p++);
-                    g += *(p++);
-                    b += *(p++);
-                }
-            }
-        }
-    } else {
-        int bx = 0;
-        if (second) {
-            bx = 2;
-        }
-        for (int y = 0; y < 4; y++) {
-            for (int x = 0; x < 2; x++) {
-                int xx = bx + x;
-                int i = xx + 4 * y;
-                if (inMask & (1 << i)) {
-                    const etc1_byte* p = pIn + i * 3;
-                    r += *(p++);
-                    g += *(p++);
-                    b += *(p++);
-                }
-            }
-        }
-    }
-    pColors[0] = (etc1_byte)((r + 4) >> 3);
-    pColors[1] = (etc1_byte)((g + 4) >> 3);
-    pColors[2] = (etc1_byte)((b + 4) >> 3);
-}
-
-static
-inline int square(int x) {
-    return x * x;
-}
-
-static etc1_uint32 chooseModifier(const etc1_byte* pBaseColors,
-        const etc1_byte* pIn, etc1_uint32 *pLow, int bitIndex,
-        const int* pModifierTable) {
-    etc1_uint32 bestScore = ~0;
-    int bestIndex = 0;
-    int pixelR = pIn[0];
-    int pixelG = pIn[1];
-    int pixelB = pIn[2];
-    int r = pBaseColors[0];
-    int g = pBaseColors[1];
-    int b = pBaseColors[2];
-    for (int i = 0; i < 4; i++) {
-        int modifier = pModifierTable[i];
-        int decodedG = clamp(g + modifier);
-        etc1_uint32 score = (etc1_uint32) (6 * square(decodedG - pixelG));
-        if (score >= bestScore) {
-            continue;
-        }
-        int decodedR = clamp(r + modifier);
-        score += (etc1_uint32) (3 * square(decodedR - pixelR));
-        if (score >= bestScore) {
-            continue;
-        }
-        int decodedB = clamp(b + modifier);
-        score += (etc1_uint32) square(decodedB - pixelB);
-        if (score < bestScore) {
-            bestScore = score;
-            bestIndex = i;
-        }
-    }
-    etc1_uint32 lowMask = (((bestIndex >> 1) << 16) | (bestIndex & 1))
-            << bitIndex;
-    *pLow |= lowMask;
-    return bestScore;
-}
-
-static
-void etc_encode_subblock_helper(const etc1_byte* pIn, etc1_uint32 inMask,
-        etc_compressed* pCompressed, bool flipped, bool second,
-        const etc1_byte* pBaseColors, const int* pModifierTable) {
-    int score = pCompressed->score;
-    if (flipped) {
-        int by = 0;
-        if (second) {
-            by = 2;
-        }
-        for (int y = 0; y < 2; y++) {
-            int yy = by + y;
-            for (int x = 0; x < 4; x++) {
-                int i = x + 4 * yy;
-                if (inMask & (1 << i)) {
-                    score += chooseModifier(pBaseColors, pIn + i * 3,
-                            &pCompressed->low, yy + x * 4, pModifierTable);
-                }
-            }
-        }
-    } else {
-        int bx = 0;
-        if (second) {
-            bx = 2;
-        }
-        for (int y = 0; y < 4; y++) {
-            for (int x = 0; x < 2; x++) {
-                int xx = bx + x;
-                int i = xx + 4 * y;
-                if (inMask & (1 << i)) {
-                    score += chooseModifier(pBaseColors, pIn + i * 3,
-                            &pCompressed->low, y + xx * 4, pModifierTable);
-                }
-            }
-        }
-    }
-    pCompressed->score = score;
-}
-
-static bool inRange4bitSigned(int color) {
-    return color >= -4 && color <= 3;
-}
-
-static void etc_encodeBaseColors(etc1_byte* pBaseColors,
-        const etc1_byte* pColors, etc_compressed* pCompressed) {
-    int r1, g1, b1, r2, g2, b2; // 8 bit base colors for sub-blocks
-    bool differential;
-    {
-        int r51 = convert8To5(pColors[0]);
-        int g51 = convert8To5(pColors[1]);
-        int b51 = convert8To5(pColors[2]);
-        int r52 = convert8To5(pColors[3]);
-        int g52 = convert8To5(pColors[4]);
-        int b52 = convert8To5(pColors[5]);
-
-        r1 = convert5To8(r51);
-        g1 = convert5To8(g51);
-        b1 = convert5To8(b51);
-
-        int dr = r52 - r51;
-        int dg = g52 - g51;
-        int db = b52 - b51;
-
-        differential = inRange4bitSigned(dr) && inRange4bitSigned(dg)
-                && inRange4bitSigned(db);
-        if (differential) {
-            r2 = convert5To8(r51 + dr);
-            g2 = convert5To8(g51 + dg);
-            b2 = convert5To8(b51 + db);
-            pCompressed->high |= (r51 << 27) | ((7 & dr) << 24) | (g51 << 19)
-                    | ((7 & dg) << 16) | (b51 << 11) | ((7 & db) << 8) | 2;
-        }
-    }
-
-    if (!differential) {
-        int r41 = convert8To4(pColors[0]);
-        int g41 = convert8To4(pColors[1]);
-        int b41 = convert8To4(pColors[2]);
-        int r42 = convert8To4(pColors[3]);
-        int g42 = convert8To4(pColors[4]);
-        int b42 = convert8To4(pColors[5]);
-        r1 = convert4To8(r41);
-        g1 = convert4To8(g41);
-        b1 = convert4To8(b41);
-        r2 = convert4To8(r42);
-        g2 = convert4To8(g42);
-        b2 = convert4To8(b42);
-        pCompressed->high |= (r41 << 28) | (r42 << 24) | (g41 << 20) | (g42
-                << 16) | (b41 << 12) | (b42 << 8);
-    }
-    pBaseColors[0] = r1;
-    pBaseColors[1] = g1;
-    pBaseColors[2] = b1;
-    pBaseColors[3] = r2;
-    pBaseColors[4] = g2;
-    pBaseColors[5] = b2;
-}
-
-static
-void etc_encode_block_helper(const etc1_byte* pIn, etc1_uint32 inMask,
-        const etc1_byte* pColors, etc_compressed* pCompressed, bool flipped) {
-    pCompressed->score = ~0;
-    pCompressed->high = (flipped ? 1 : 0);
-    pCompressed->low = 0;
-
-    etc1_byte pBaseColors[6];
-
-    etc_encodeBaseColors(pBaseColors, pColors, pCompressed);
-
-    int originalHigh = pCompressed->high;
-
-    const int* pModifierTable = kModifierTable;
-    for (int i = 0; i < 8; i++, pModifierTable += 4) {
-        etc_compressed temp;
-        temp.score = 0;
-        temp.high = originalHigh | (i << 5);
-        temp.low = 0;
-        etc_encode_subblock_helper(pIn, inMask, &temp, flipped, false,
-                pBaseColors, pModifierTable);
-        take_best(pCompressed, &temp);
-    }
-    pModifierTable = kModifierTable;
-    etc_compressed firstHalf = *pCompressed;
-    for (int i = 0; i < 8; i++, pModifierTable += 4) {
-        etc_compressed temp;
-        temp.score = firstHalf.score;
-        temp.high = firstHalf.high | (i << 2);
-        temp.low = firstHalf.low;
-        etc_encode_subblock_helper(pIn, inMask, &temp, flipped, true,
-                pBaseColors + 3, pModifierTable);
-        if (i == 0) {
-            *pCompressed = temp;
-        } else {
-            take_best(pCompressed, &temp);
-        }
-    }
-}
-
-static void writeBigEndian(etc1_byte* pOut, etc1_uint32 d) {
-    pOut[0] = (etc1_byte)(d >> 24);
-    pOut[1] = (etc1_byte)(d >> 16);
-    pOut[2] = (etc1_byte)(d >> 8);
-    pOut[3] = (etc1_byte) d;
-}
-
-// Input is a 4 x 4 square of 3-byte pixels in form R, G, B
-// inmask is a 16-bit mask where bit (1 << (x + y * 4)) tells whether the corresponding (x,y)
-// pixel is valid or not. Invalid pixel color values are ignored when compressing.
-// Output is an ETC1 compressed version of the data.
-
-void etc1_encode_block(const etc1_byte* pIn, etc1_uint32 inMask,
-        etc1_byte* pOut) {
-    etc1_byte colors[6];
-    etc1_byte flippedColors[6];
-    etc_average_colors_subblock(pIn, inMask, colors, false, false);
-    etc_average_colors_subblock(pIn, inMask, colors + 3, false, true);
-    etc_average_colors_subblock(pIn, inMask, flippedColors, true, false);
-    etc_average_colors_subblock(pIn, inMask, flippedColors + 3, true, true);
-
-    etc_compressed a, b;
-    etc_encode_block_helper(pIn, inMask, colors, &a, false);
-    etc_encode_block_helper(pIn, inMask, flippedColors, &b, true);
-    take_best(&a, &b);
-    writeBigEndian(pOut, a.high);
-    writeBigEndian(pOut + 4, a.low);
-}
-
-// Return the size of the encoded image data (does not include size of PKM header).
-
-etc1_uint32 etc1_get_encoded_data_size(etc1_uint32 width, etc1_uint32 height) {
-    return (((width + 3) & ~3) * ((height + 3) & ~3)) >> 1;
-}
-
-// Encode an entire image.
-// pIn - pointer to the image data. Formatted such that the Red component of
-//       pixel (x,y) is at pIn + pixelSize * x + stride * y + redOffset;
-// pOut - pointer to encoded data. Must be large enough to store entire encoded image.
-
-int etc1_encode_image(const etc1_byte* pIn, etc1_uint32 width, etc1_uint32 height,
-        etc1_uint32 pixelSize, etc1_uint32 stride, etc1_byte* pOut) {
-    if (pixelSize < 2 || pixelSize > 3) {
-        return -1;
-    }
-    static const unsigned short kYMask[] = { 0x0, 0xf, 0xff, 0xfff, 0xffff };
-    static const unsigned short kXMask[] = { 0x0, 0x1111, 0x3333, 0x7777,
-            0xffff };
-    etc1_byte block[ETC1_DECODED_BLOCK_SIZE];
-    etc1_byte encoded[ETC1_ENCODED_BLOCK_SIZE];
-
-    etc1_uint32 encodedWidth = (width + 3) & ~3;
-    etc1_uint32 encodedHeight = (height + 3) & ~3;
-
-    for (etc1_uint32 y = 0; y < encodedHeight; y += 4) {
-        etc1_uint32 yEnd = height - y;
-        if (yEnd > 4) {
-            yEnd = 4;
-        }
-        int ymask = kYMask[yEnd];
-        for (etc1_uint32 x = 0; x < encodedWidth; x += 4) {
-            etc1_uint32 xEnd = width - x;
-            if (xEnd > 4) {
-                xEnd = 4;
-            }
-            int mask = ymask & kXMask[xEnd];
-            for (etc1_uint32 cy = 0; cy < yEnd; cy++) {
-                etc1_byte* q = block + (cy * 4) * 3;
-                const etc1_byte* p = pIn + pixelSize * x + stride * (y + cy);
-                if (pixelSize == 3) {
-                    memcpy(q, p, xEnd * 3);
-                } else {
-                    for (etc1_uint32 cx = 0; cx < xEnd; cx++) {
-                        int pixel = (p[1] << 8) | p[0];
-                        *q++ = convert5To8(pixel >> 11);
-                        *q++ = convert6To8(pixel >> 5);
-                        *q++ = convert5To8(pixel);
-                        p += pixelSize;
-                    }
-                }
-            }
-            etc1_encode_block(block, mask, encoded);
-            memcpy(pOut, encoded, sizeof(encoded));
-            pOut += sizeof(encoded);
-        }
-    }
-    return 0;
-}
-
-// Decode an entire image.
-// pIn - pointer to encoded data.
-// pOut - pointer to the image data. Will be written such that the Red component of
-//       pixel (x,y) is at pIn + pixelSize * x + stride * y + redOffset. Must be
-//        large enough to store entire image.
-
-
-int etc1_decode_image(const etc1_byte* pIn, etc1_byte* pOut,
-        etc1_uint32 width, etc1_uint32 height,
-        etc1_uint32 pixelSize, etc1_uint32 stride) {
-    if (pixelSize < 2 || pixelSize > 3) {
-        return -1;
-    }
-    etc1_byte block[ETC1_DECODED_BLOCK_SIZE];
-
-    etc1_uint32 encodedWidth = (width + 3) & ~3;
-    etc1_uint32 encodedHeight = (height + 3) & ~3;
-
-    for (etc1_uint32 y = 0; y < encodedHeight; y += 4) {
-        etc1_uint32 yEnd = height - y;
-        if (yEnd > 4) {
-            yEnd = 4;
-        }
-        for (etc1_uint32 x = 0; x < encodedWidth; x += 4) {
-            etc1_uint32 xEnd = width - x;
-            if (xEnd > 4) {
-                xEnd = 4;
-            }
-            etc1_decode_block(pIn, block);
-            pIn += ETC1_ENCODED_BLOCK_SIZE;
-            for (etc1_uint32 cy = 0; cy < yEnd; cy++) {
-                const etc1_byte* q = block + (cy * 4) * 3;
-                etc1_byte* p = pOut + pixelSize * x + stride * (y + cy);
-                if (pixelSize == 3) {
-                    memcpy(p, q, xEnd * 3);
-                } else {
-                    for (etc1_uint32 cx = 0; cx < xEnd; cx++) {
-                        etc1_byte r = *q++;
-                        etc1_byte g = *q++;
-                        etc1_byte b = *q++;
-                        etc1_uint32 pixel = ((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3);
-                        *p++ = (etc1_byte) pixel;
-                        *p++ = (etc1_byte) (pixel >> 8);
-                    }
-                }
-            }
-        }
-    }
-    return 0;
-}
-
-static const char kMagic[] = { 'P', 'K', 'M', ' ', '1', '0' };
-
-static const etc1_uint32 ETC1_PKM_FORMAT_OFFSET = 6;
-static const etc1_uint32 ETC1_PKM_ENCODED_WIDTH_OFFSET = 8;
-static const etc1_uint32 ETC1_PKM_ENCODED_HEIGHT_OFFSET = 10;
-static const etc1_uint32 ETC1_PKM_WIDTH_OFFSET = 12;
-static const etc1_uint32 ETC1_PKM_HEIGHT_OFFSET = 14;
-
-static const etc1_uint32 ETC1_RGB_NO_MIPMAPS = 0;
-
-static void writeBEUint16(etc1_byte* pOut, etc1_uint32 data) {
-    pOut[0] = (etc1_byte) (data >> 8);
-    pOut[1] = (etc1_byte) data;
-}
-
-static etc1_uint32 readBEUint16(const etc1_byte* pIn) {
-    return (pIn[0] << 8) | pIn[1];
-}
-
-// Format a PKM header
-
-void etc1_pkm_format_header(etc1_byte* pHeader, etc1_uint32 width, etc1_uint32 height) {
-    memcpy(pHeader, kMagic, sizeof(kMagic));
-    etc1_uint32 encodedWidth = (width + 3) & ~3;
-    etc1_uint32 encodedHeight = (height + 3) & ~3;
-    writeBEUint16(pHeader + ETC1_PKM_FORMAT_OFFSET, ETC1_RGB_NO_MIPMAPS);
-    writeBEUint16(pHeader + ETC1_PKM_ENCODED_WIDTH_OFFSET, encodedWidth);
-    writeBEUint16(pHeader + ETC1_PKM_ENCODED_HEIGHT_OFFSET, encodedHeight);
-    writeBEUint16(pHeader + ETC1_PKM_WIDTH_OFFSET, width);
-    writeBEUint16(pHeader + ETC1_PKM_HEIGHT_OFFSET, height);
-}
-
-// Check if a PKM header is correctly formatted.
-
-etc1_bool etc1_pkm_is_valid(const etc1_byte* pHeader) {
-    if (memcmp(pHeader, kMagic, sizeof(kMagic))) {
-        return false;
-    }
-    etc1_uint32 format = readBEUint16(pHeader + ETC1_PKM_FORMAT_OFFSET);
-    etc1_uint32 encodedWidth = readBEUint16(pHeader + ETC1_PKM_ENCODED_WIDTH_OFFSET);
-    etc1_uint32 encodedHeight = readBEUint16(pHeader + ETC1_PKM_ENCODED_HEIGHT_OFFSET);
-    etc1_uint32 width = readBEUint16(pHeader + ETC1_PKM_WIDTH_OFFSET);
-    etc1_uint32 height = readBEUint16(pHeader + ETC1_PKM_HEIGHT_OFFSET);
-    return format == ETC1_RGB_NO_MIPMAPS &&
-            encodedWidth >= width && encodedWidth - width < 4 &&
-            encodedHeight >= height && encodedHeight - height < 4;
-}
-
-// Read the image width from a PKM header
-
-etc1_uint32 etc1_pkm_get_width(const etc1_byte* pHeader) {
-    return readBEUint16(pHeader + ETC1_PKM_WIDTH_OFFSET);
-}
-
-// Read the image height from a PKM header
-
-etc1_uint32 etc1_pkm_get_height(const etc1_byte* pHeader){
-    return readBEUint16(pHeader + ETC1_PKM_HEIGHT_OFFSET);
-}
diff --git a/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp b/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp
deleted file mode 100644
index cfea855..0000000
--- a/tools/emulator/opengl/host/libs/Translator/GLcommon/objectNameManager.cpp
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <map>
-#include <GLcommon/objectNameManager.h>
-#include <GLcommon/GLEScontext.h>
-
-
-NameSpace::NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace) :
-    m_nextName(0),
-    m_type(p_type),
-    m_globalNameSpace(globalNameSpace)
-{
-}
-
-NameSpace::~NameSpace()
-{
-    for (NamesMap::iterator n = m_localToGlobalMap.begin();
-         n != m_localToGlobalMap.end();
-         n++) {
-        m_globalNameSpace->deleteName(m_type, (*n).second);
-    }
-}
-
-ObjectLocalName
-NameSpace::genName(ObjectLocalName p_localName, bool genGlobal, bool genLocal)
-{
-
-    ObjectLocalName localName = p_localName;
-    if (genLocal) {
-        do {
-            localName = ++m_nextName;
-        } while( localName == 0 || m_localToGlobalMap.find(localName) != m_localToGlobalMap.end() );
-    }
-
-    if (genGlobal) {
-        unsigned int globalName = m_globalNameSpace->genName(m_type);
-        m_localToGlobalMap[localName] = globalName;
-    }
-
-    return localName;
-}
-
-
-unsigned int
-NameSpace::genGlobalName(void)
-{
-    return m_globalNameSpace->genName(m_type);
-}
-
-unsigned int
-NameSpace::getGlobalName(ObjectLocalName p_localName)
-{
-    NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
-    if (n != m_localToGlobalMap.end()) {
-        // object found - return its global name map
-        return (*n).second;
-    }
-
-    // object does not exist;
-    return 0;
-}
-
-ObjectLocalName
-NameSpace::getLocalName(unsigned int p_globalName)
-{
-    for(NamesMap::iterator it = m_localToGlobalMap.begin(); it != m_localToGlobalMap.end();it++){
-        if((*it).second == p_globalName){
-            // object found - return its local name
-            return (*it).first;
-        }
-    }
-
-    // object does not exist;
-    return 0;
-}
-
-void
-NameSpace::deleteName(ObjectLocalName p_localName)
-{
-    NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
-    if (n != m_localToGlobalMap.end()) {
-        m_globalNameSpace->deleteName(m_type, (*n).second);
-        m_localToGlobalMap.erase(p_localName);
-    }
-}
-
-bool
-NameSpace::isObject(ObjectLocalName p_localName)
-{
-    return (m_localToGlobalMap.find(p_localName) != m_localToGlobalMap.end() );
-}
-
-void
-NameSpace::replaceGlobalName(ObjectLocalName p_localName, unsigned int p_globalName)
-{
-    NamesMap::iterator n( m_localToGlobalMap.find(p_localName) );
-    if (n != m_localToGlobalMap.end()) {
-        m_globalNameSpace->deleteName(m_type, (*n).second);
-        (*n).second = p_globalName;
-    }
-}
-
-
-GlobalNameSpace::GlobalNameSpace()
-{
-    mutex_init(&m_lock);
-}
-
-GlobalNameSpace::~GlobalNameSpace()
-{
-    mutex_destroy(&m_lock);
-}
-
-unsigned int 
-GlobalNameSpace::genName(NamedObjectType p_type)
-{
-    if ( p_type >= NUM_OBJECT_TYPES ) return 0;
-    unsigned int name = 0;
-
-    mutex_lock(&m_lock);
-    switch (p_type) {
-    case VERTEXBUFFER:
-        GLEScontext::dispatcher().glGenBuffers(1,&name);
-        break;
-    case TEXTURE:
-        GLEScontext::dispatcher().glGenTextures(1,&name);
-        break;
-    case RENDERBUFFER:
-        GLEScontext::dispatcher().glGenRenderbuffersEXT(1,&name);
-        break;
-    case FRAMEBUFFER:
-        GLEScontext::dispatcher().glGenFramebuffersEXT(1,&name);
-        break;
-    case SHADER: //objects in shader namepace are not handled
-    default:
-        name = 0;
-    }
-    mutex_unlock(&m_lock);
-    return name;
-}
-
-void 
-GlobalNameSpace::deleteName(NamedObjectType p_type, unsigned int p_name)
-{
-}
-
-typedef std::pair<NamedObjectType, ObjectLocalName> ObjectIDPair;
-typedef std::map<ObjectIDPair, ObjectDataPtr> ObjectDataMap;
-
-ShareGroup::ShareGroup(GlobalNameSpace *globalNameSpace)
-{
-    mutex_init(&m_lock);
-
-    for (int i=0; i<NUM_OBJECT_TYPES; i++) {
-        m_nameSpace[i] = new NameSpace((NamedObjectType)i, globalNameSpace);
-    }
-
-    m_objectsData = NULL;
-}
-
-ShareGroup::~ShareGroup()
-{
-    mutex_lock(&m_lock);
-    for (int t = 0; t < NUM_OBJECT_TYPES; t++) {
-        delete m_nameSpace[t];
-    }
-
-    ObjectDataMap *map = (ObjectDataMap *)m_objectsData;
-    if (map) delete map;
-
-    mutex_unlock(&m_lock);
-    mutex_destroy(&m_lock);
-}
-
-ObjectLocalName
-ShareGroup::genName(NamedObjectType p_type, ObjectLocalName p_localName, bool genLocal)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return 0;
-
-    mutex_lock(&m_lock);
-    ObjectLocalName localName = m_nameSpace[p_type]->genName(p_localName,true,genLocal);
-    mutex_unlock(&m_lock);
-
-    return localName;
-}
-
-unsigned int
-ShareGroup::genGlobalName(NamedObjectType p_type)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return 0;
-
-    mutex_lock(&m_lock);
-    unsigned int name = m_nameSpace[p_type]->genGlobalName();
-    mutex_unlock(&m_lock);
-
-    return name;
-}
-
-unsigned int
-ShareGroup::getGlobalName(NamedObjectType p_type, ObjectLocalName p_localName)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return 0;
-
-    mutex_lock(&m_lock);
-    unsigned int globalName = m_nameSpace[p_type]->getGlobalName(p_localName);
-    mutex_unlock(&m_lock);
-
-    return globalName;
-}
-
-ObjectLocalName
-ShareGroup::getLocalName(NamedObjectType p_type, unsigned int p_globalName)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return 0;
-
-    mutex_lock(&m_lock);
-    ObjectLocalName localName = m_nameSpace[p_type]->getLocalName(p_globalName);
-    mutex_unlock(&m_lock);
-
-    return localName;
-}
-
-void
-ShareGroup::deleteName(NamedObjectType p_type, ObjectLocalName p_localName)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return;
-
-    mutex_lock(&m_lock);
-    m_nameSpace[p_type]->deleteName(p_localName);
-    ObjectDataMap *map = (ObjectDataMap *)m_objectsData;
-    if (map) {
-        map->erase( ObjectIDPair(p_type, p_localName) );
-    }
-    mutex_unlock(&m_lock);
-}
-
-bool
-ShareGroup::isObject(NamedObjectType p_type, ObjectLocalName p_localName)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return 0;
-
-    mutex_lock(&m_lock);
-    bool exist = m_nameSpace[p_type]->isObject(p_localName);
-    mutex_unlock(&m_lock);
-
-    return exist;
-}
-
-void
-ShareGroup::replaceGlobalName(NamedObjectType p_type, ObjectLocalName p_localName, unsigned int p_globalName)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return;
-
-    mutex_lock(&m_lock);
-    m_nameSpace[p_type]->replaceGlobalName(p_localName, p_globalName);
-    mutex_unlock(&m_lock);
-}
-
-void
-ShareGroup::setObjectData(NamedObjectType p_type, ObjectLocalName p_localName, ObjectDataPtr data)
-{
-    if (p_type >= NUM_OBJECT_TYPES) return;
-
-    mutex_lock(&m_lock);
-
-    ObjectDataMap *map = (ObjectDataMap *)m_objectsData;
-    if (!map) {
-        map = new ObjectDataMap();
-        m_objectsData = map;
-    }
-
-    ObjectIDPair id( p_type, p_localName );
-    map->insert( std::pair<ObjectIDPair, ObjectDataPtr>(id, data) );
-
-    mutex_unlock(&m_lock);
-}
-
-ObjectDataPtr
-ShareGroup::getObjectData(NamedObjectType p_type, ObjectLocalName p_localName)
-{
-    ObjectDataPtr ret;
-
-    if (p_type >= NUM_OBJECT_TYPES) return ret;
-
-    mutex_lock(&m_lock);
-
-    ObjectDataMap *map = (ObjectDataMap *)m_objectsData;
-    if (map) {
-        ObjectDataMap::iterator i = map->find( ObjectIDPair(p_type, p_localName) );
-        if (i != map->end()) ret = (*i).second;
-    }
-
-    mutex_unlock(&m_lock);
-
-    return ret;
-}
-
-ObjectNameManager::ObjectNameManager(GlobalNameSpace *globalNameSpace) :
-    m_globalNameSpace(globalNameSpace)
-{
-    mutex_init(&m_lock);
-}
-
-ObjectNameManager::~ObjectNameManager()
-{
-    mutex_destroy(&m_lock);
-}
-
-ShareGroupPtr
-ObjectNameManager::createShareGroup(void *p_groupName)
-{
-    mutex_lock(&m_lock);
-
-    ShareGroupPtr shareGroupReturn;
-
-    ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
-    if (s != m_groups.end()) {
-        shareGroupReturn = (*s).second;
-    }
-    else {
-        //
-        // Group does not exist, create new group
-        //
-        shareGroupReturn = ShareGroupPtr( new ShareGroup(m_globalNameSpace) );
-        m_groups.insert( std::pair<void *, ShareGroupPtr>(p_groupName, shareGroupReturn) );
-    }
-
-    mutex_unlock(&m_lock);
-
-    return shareGroupReturn;
-}
-
-ShareGroupPtr
-ObjectNameManager::getShareGroup(void *p_groupName)
-{
-    mutex_lock(&m_lock);
-
-    ShareGroupPtr shareGroupReturn(NULL);
-
-    ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
-    if (s != m_groups.end()) {
-        shareGroupReturn = (*s).second;
-    }
-    mutex_unlock(&m_lock);
-
-    return shareGroupReturn;
-}
-
-ShareGroupPtr
-ObjectNameManager::attachShareGroup(void *p_groupName, void *p_existingGroupName)
-{
-    mutex_lock(&m_lock);
-
-    ShareGroupPtr shareGroupReturn;
-
-    ShareGroupsMap::iterator s( m_groups.find(p_existingGroupName) );
-    if (s == m_groups.end()) {
-        // ShareGroup did not found !!!
-        mutex_unlock(&m_lock);
-        return ShareGroupPtr(NULL);
-    }
-
-    shareGroupReturn = (*s).second;
-
-    if (m_groups.find(p_groupName) == m_groups.end())
-    {
-        m_groups.insert( std::pair<void *, ShareGroupPtr>(p_groupName, shareGroupReturn) );
-    }
-
-    mutex_unlock(&m_lock);
-
-    return shareGroupReturn;
-}
-
-void
-ObjectNameManager::deleteShareGroup(void *p_groupName)
-{
-    mutex_lock(&m_lock);
-
-    ShareGroupsMap::iterator s( m_groups.find(p_groupName) );
-    if (s != m_groups.end()) {
-        m_groups.erase(s);
-    }
-
-    mutex_unlock(&m_lock);
-}
-
-void *ObjectNameManager::getGlobalContext()
-{
-    void *ret = NULL;
-
-    mutex_lock(&m_lock);
-    if (m_groups.size() > 0) ret = (*m_groups.begin()).first;
-    mutex_unlock(&m_lock);
-
-    return ret;
-}
-
diff --git a/tools/emulator/opengl/host/libs/Translator/include/EGL/egl.h b/tools/emulator/opengl/host/libs/Translator/include/EGL/egl.h
deleted file mode 100644
index 99ea342..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/EGL/egl.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/* -*- mode: c; tab-width: 8; -*- */
-/* vi: set sw=4 ts=8: */
-/* Reference version of egl.h for EGL 1.4.
- * $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
- */
-
-/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-#ifndef __egl_h_
-#define __egl_h_
-
-/* All platform-dependent types and macro boilerplate (such as EGLAPI
- * and EGLAPIENTRY) should go in eglplatform.h.
- */
-#include <EGL/eglplatform.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* EGL Types */
-/* EGLint is defined in eglplatform.h */
-typedef unsigned int EGLBoolean;
-typedef unsigned int EGLenum;
-typedef void *EGLConfig;
-typedef void *EGLContext;
-typedef void *EGLDisplay;
-typedef void *EGLSurface;
-typedef void *EGLClientBuffer;
-
-/* EGL Versioning */
-#define EGL_VERSION_1_0			1
-#define EGL_VERSION_1_1			1
-#define EGL_VERSION_1_2			1
-#define EGL_VERSION_1_3			1
-#define EGL_VERSION_1_4			1
-
-/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
- * enums are assigned unique values starting at 0x3000.
- */
-
-/* EGL aliases */
-#define EGL_FALSE			0
-#define EGL_TRUE			1
-
-/* Out-of-band handle values */
-#define EGL_DEFAULT_DISPLAY		((EGLNativeDisplayType)0)
-#define EGL_NO_CONTEXT			((EGLContext)0)
-#define EGL_NO_DISPLAY			((EGLDisplay)0)
-#define EGL_NO_SURFACE			((EGLSurface)0)
-
-/* Out-of-band attribute value */
-#define EGL_DONT_CARE			((EGLint)-1)
-
-/* Errors / GetError return values */
-#define EGL_SUCCESS			0x3000
-#define EGL_NOT_INITIALIZED		0x3001
-#define EGL_BAD_ACCESS			0x3002
-#define EGL_BAD_ALLOC			0x3003
-#define EGL_BAD_ATTRIBUTE		0x3004
-#define EGL_BAD_CONFIG			0x3005
-#define EGL_BAD_CONTEXT			0x3006
-#define EGL_BAD_CURRENT_SURFACE		0x3007
-#define EGL_BAD_DISPLAY			0x3008
-#define EGL_BAD_MATCH			0x3009
-#define EGL_BAD_NATIVE_PIXMAP		0x300A
-#define EGL_BAD_NATIVE_WINDOW		0x300B
-#define EGL_BAD_PARAMETER		0x300C
-#define EGL_BAD_SURFACE			0x300D
-#define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */
-
-/* Reserved 0x300F-0x301F for additional errors */
-
-/* Config attributes */
-#define EGL_BUFFER_SIZE			0x3020
-#define EGL_ALPHA_SIZE			0x3021
-#define EGL_BLUE_SIZE			0x3022
-#define EGL_GREEN_SIZE			0x3023
-#define EGL_RED_SIZE			0x3024
-#define EGL_DEPTH_SIZE			0x3025
-#define EGL_STENCIL_SIZE		0x3026
-#define EGL_CONFIG_CAVEAT		0x3027
-#define EGL_CONFIG_ID			0x3028
-#define EGL_LEVEL			0x3029
-#define EGL_MAX_PBUFFER_HEIGHT		0x302A
-#define EGL_MAX_PBUFFER_PIXELS		0x302B
-#define EGL_MAX_PBUFFER_WIDTH		0x302C
-#define EGL_NATIVE_RENDERABLE		0x302D
-#define EGL_NATIVE_VISUAL_ID		0x302E
-#define EGL_NATIVE_VISUAL_TYPE		0x302F
-#define EGL_SAMPLES			0x3031
-#define EGL_SAMPLE_BUFFERS		0x3032
-#define EGL_SURFACE_TYPE		0x3033
-#define EGL_TRANSPARENT_TYPE		0x3034
-#define EGL_TRANSPARENT_BLUE_VALUE	0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE	0x3036
-#define EGL_TRANSPARENT_RED_VALUE	0x3037
-#define EGL_NONE			0x3038	/* Attrib list terminator */
-#define EGL_BIND_TO_TEXTURE_RGB		0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA	0x303A
-#define EGL_MIN_SWAP_INTERVAL		0x303B
-#define EGL_MAX_SWAP_INTERVAL		0x303C
-#define EGL_LUMINANCE_SIZE		0x303D
-#define EGL_ALPHA_MASK_SIZE		0x303E
-#define EGL_COLOR_BUFFER_TYPE		0x303F
-#define EGL_RENDERABLE_TYPE		0x3040
-#define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */
-#define EGL_CONFORMANT			0x3042
-
-/* Reserved 0x3041-0x304F for additional config attributes */
-
-/* Config attribute values */
-#define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */
-#define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */
-#define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */
-#define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */
-#define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */
-
-/* More config attribute values, for EGL_TEXTURE_FORMAT */
-#define EGL_NO_TEXTURE			0x305C
-#define EGL_TEXTURE_RGB			0x305D
-#define EGL_TEXTURE_RGBA		0x305E
-#define EGL_TEXTURE_2D			0x305F
-
-/* Config attribute mask bits */
-#define EGL_PBUFFER_BIT			0x0001	/* EGL_SURFACE_TYPE mask bits */
-#define EGL_PIXMAP_BIT			0x0002	/* EGL_SURFACE_TYPE mask bits */
-#define EGL_WINDOW_BIT			0x0004	/* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_COLORSPACE_LINEAR_BIT	0x0020	/* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT	0x0040	/* EGL_SURFACE_TYPE mask bits */
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200	/* EGL_SURFACE_TYPE mask bits */
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400	/* EGL_SURFACE_TYPE mask bits */
-
-#define EGL_OPENGL_ES_BIT		0x0001	/* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENVG_BIT			0x0002	/* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_ES2_BIT		0x0004	/* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_BIT			0x0008	/* EGL_RENDERABLE_TYPE mask bits */
-
-/* QueryString targets */
-#define EGL_VENDOR			0x3053
-#define EGL_VERSION			0x3054
-#define EGL_EXTENSIONS			0x3055
-#define EGL_CLIENT_APIS			0x308D
-
-/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
-#define EGL_HEIGHT			0x3056
-#define EGL_WIDTH			0x3057
-#define EGL_LARGEST_PBUFFER		0x3058
-#define EGL_TEXTURE_FORMAT		0x3080
-#define EGL_TEXTURE_TARGET		0x3081
-#define EGL_MIPMAP_TEXTURE		0x3082
-#define EGL_MIPMAP_LEVEL		0x3083
-#define EGL_RENDER_BUFFER		0x3086
-#define EGL_VG_COLORSPACE		0x3087
-#define EGL_VG_ALPHA_FORMAT		0x3088
-#define EGL_HORIZONTAL_RESOLUTION	0x3090
-#define EGL_VERTICAL_RESOLUTION		0x3091
-#define EGL_PIXEL_ASPECT_RATIO		0x3092
-#define EGL_SWAP_BEHAVIOR		0x3093
-#define EGL_MULTISAMPLE_RESOLVE		0x3099
-
-/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
-#define EGL_BACK_BUFFER			0x3084
-#define EGL_SINGLE_BUFFER		0x3085
-
-/* OpenVG color spaces */
-#define EGL_VG_COLORSPACE_sRGB		0x3089	/* EGL_VG_COLORSPACE value */
-#define EGL_VG_COLORSPACE_LINEAR	0x308A	/* EGL_VG_COLORSPACE value */
-
-/* OpenVG alpha formats */
-#define EGL_VG_ALPHA_FORMAT_NONPRE	0x308B	/* EGL_ALPHA_FORMAT value */
-#define EGL_VG_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */
-
-/* Constant scale factor by which fractional display resolutions &
- * aspect ratio are scaled when queried as integer values.
- */
-#define EGL_DISPLAY_SCALING		10000
-
-/* Unknown display resolution/aspect ratio */
-#define EGL_UNKNOWN			((EGLint)-1)
-
-/* Back buffer swap behaviors */
-#define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */
-#define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */
-
-/* CreatePbufferFromClientBuffer buffer types */
-#define EGL_OPENVG_IMAGE		0x3096
-
-/* QueryContext targets */
-#define EGL_CONTEXT_CLIENT_TYPE		0x3097
-
-/* CreateContext attributes */
-#define EGL_CONTEXT_CLIENT_VERSION	0x3098
-
-/* Multisample resolution behaviors */
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A	/* EGL_MULTISAMPLE_RESOLVE value */
-#define EGL_MULTISAMPLE_RESOLVE_BOX	0x309B	/* EGL_MULTISAMPLE_RESOLVE value */
-
-/* BindAPI/QueryAPI targets */
-#define EGL_OPENGL_ES_API		0x30A0
-#define EGL_OPENVG_API			0x30A1
-#define EGL_OPENGL_API			0x30A2
-
-/* GetCurrentSurface targets */
-#define EGL_DRAW			0x3059
-#define EGL_READ			0x305A
-
-/* WaitNative engines */
-#define EGL_CORE_NATIVE_ENGINE		0x305B
-
-/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
-#define EGL_COLORSPACE			EGL_VG_COLORSPACE
-#define EGL_ALPHA_FORMAT		EGL_VG_ALPHA_FORMAT
-#define EGL_COLORSPACE_sRGB		EGL_VG_COLORSPACE_sRGB
-#define EGL_COLORSPACE_LINEAR		EGL_VG_COLORSPACE_LINEAR
-#define EGL_ALPHA_FORMAT_NONPRE		EGL_VG_ALPHA_FORMAT_NONPRE
-#define EGL_ALPHA_FORMAT_PRE		EGL_VG_ALPHA_FORMAT_PRE
-
-/* EGL extensions must request enum blocks from the Khronos
- * API Registrar, who maintains the enumerant registry. Submit
- * a bug in Khronos Bugzilla against task "Registry".
- */
-
-
-
-/* EGL Functions */
-
-EGLAPI EGLint EGLAPIENTRY eglGetError(void);
-
-EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
-EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
-EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
-
-EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
-			 EGLint config_size, EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
-			   EGLConfig *configs, EGLint config_size,
-			   EGLint *num_config);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
-			      EGLint attribute, EGLint *value);
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
-				  EGLNativeWindowType win,
-				  const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
-				   const EGLint *attrib_list);
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
-				  EGLNativePixmapType pixmap,
-				  const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
-			   EGLint attribute, EGLint *value);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
-EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
-
-EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
-	      EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
-	      EGLConfig config, const EGLint *attrib_list);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
-			    EGLint attribute, EGLint value);
-EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
-
-
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
-
-
-EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
-			    EGLContext share_context,
-			    const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
-EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
-			  EGLSurface read, EGLContext ctx);
-
-EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
-EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
-EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
-EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
-			   EGLint attribute, EGLint *value);
-
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
-EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
-EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
-EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
-			  EGLNativePixmapType target);
-
-/* This is a generic function pointer type, whose name indicates it must
- * be cast to the proper type *and calling convention* before use.
- */
-typedef void (*__eglMustCastToProperFunctionPointerType)(void);
-
-/* Now, define eglGetProcAddress using the generic function ptr. type */
-EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
-       eglGetProcAddress(const char *procname);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __egl_h_ */
diff --git a/tools/emulator/opengl/host/libs/Translator/include/EGL/eglext.h b/tools/emulator/opengl/host/libs/Translator/include/EGL/eglext.h
deleted file mode 100644
index 1ffcd56..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/EGL/eglext.h
+++ /dev/null
@@ -1,244 +0,0 @@
-#ifndef __eglext_h_
-#define __eglext_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2007-2010 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-#include <EGL/eglplatform.h>
-
-/*************************************************************/
-
-/* Header file version number */
-/* Current version at http://www.khronos.org/registry/egl/ */
-/* $Revision: 11249 $ on $Date: 2010-05-05 09:54:28 -0700 (Wed, 05 May 2010) $ */
-#define EGL_EGLEXT_VERSION 5
-
-#ifndef EGL_KHR_config_attribs
-#define EGL_KHR_config_attribs 1
-#define EGL_CONFORMANT_KHR			0x3042	/* EGLConfig attribute */
-#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR	0x0020	/* EGL_SURFACE_TYPE bitfield */
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR		0x0040	/* EGL_SURFACE_TYPE bitfield */
-#endif
-
-#ifndef EGL_KHR_lock_surface
-#define EGL_KHR_lock_surface 1
-#define EGL_READ_SURFACE_BIT_KHR		0x0001	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
-#define EGL_WRITE_SURFACE_BIT_KHR		0x0002	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
-#define EGL_LOCK_SURFACE_BIT_KHR		0x0080	/* EGL_SURFACE_TYPE bitfield */
-#define EGL_OPTIMAL_FORMAT_BIT_KHR		0x0100	/* EGL_SURFACE_TYPE bitfield */
-#define EGL_MATCH_FORMAT_KHR			0x3043	/* EGLConfig attribute */
-#define EGL_FORMAT_RGB_565_EXACT_KHR		0x30C0	/* EGL_MATCH_FORMAT_KHR value */
-#define EGL_FORMAT_RGB_565_KHR			0x30C1	/* EGL_MATCH_FORMAT_KHR value */
-#define EGL_FORMAT_RGBA_8888_EXACT_KHR		0x30C2	/* EGL_MATCH_FORMAT_KHR value */
-#define EGL_FORMAT_RGBA_8888_KHR		0x30C3	/* EGL_MATCH_FORMAT_KHR value */
-#define EGL_MAP_PRESERVE_PIXELS_KHR		0x30C4	/* eglLockSurfaceKHR attribute */
-#define EGL_LOCK_USAGE_HINT_KHR			0x30C5	/* eglLockSurfaceKHR attribute */
-#define EGL_BITMAP_POINTER_KHR			0x30C6	/* eglQuerySurface attribute */
-#define EGL_BITMAP_PITCH_KHR			0x30C7	/* eglQuerySurface attribute */
-#define EGL_BITMAP_ORIGIN_KHR			0x30C8	/* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR		0x30C9	/* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR	0x30CA	/* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR	0x30CB	/* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR	0x30CC	/* eglQuerySurface attribute */
-#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR	0x30CD	/* eglQuerySurface attribute */
-#define EGL_LOWER_LEFT_KHR			0x30CE	/* EGL_BITMAP_ORIGIN_KHR value */
-#define EGL_UPPER_LEFT_KHR			0x30CF	/* EGL_BITMAP_ORIGIN_KHR value */
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR (EGLDisplay display, EGLSurface surface);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface);
-#endif
-
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-#define EGL_NATIVE_PIXMAP_KHR			0x30B0	/* eglCreateImageKHR target */
-typedef void *EGLImageKHR;
-#define EGL_NO_IMAGE_KHR			((EGLImageKHR)0)
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR (EGLDisplay dpy, EGLImageKHR image);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLImageKHR (EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
-#endif
-
-#ifndef EGL_KHR_vg_parent_image
-#define EGL_KHR_vg_parent_image 1
-#define EGL_VG_PARENT_IMAGE_KHR			0x30BA	/* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_KHR_gl_texture_2D_image
-#define EGL_KHR_gl_texture_2D_image 1
-#define EGL_GL_TEXTURE_2D_KHR			0x30B1	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_LEVEL_KHR		0x30BC	/* eglCreateImageKHR attribute */
-#endif
-
-#ifndef EGL_KHR_gl_texture_cubemap_image
-#define EGL_KHR_gl_texture_cubemap_image 1
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR	0x30B3	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR	0x30B4	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR	0x30B5	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR	0x30B6	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR	0x30B7	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR	0x30B8	/* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_KHR_gl_texture_3D_image
-#define EGL_KHR_gl_texture_3D_image 1
-#define EGL_GL_TEXTURE_3D_KHR			0x30B2	/* eglCreateImageKHR target */
-#define EGL_GL_TEXTURE_ZOFFSET_KHR		0x30BD	/* eglCreateImageKHR attribute */
-#endif
-
-#ifndef EGL_KHR_gl_renderbuffer_image
-#define EGL_KHR_gl_renderbuffer_image 1
-#define EGL_GL_RENDERBUFFER_KHR			0x30B9	/* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_KHR_reusable_sync
-#define EGL_KHR_reusable_sync 1
-
-typedef void* EGLSyncKHR;
-typedef khronos_utime_nanoseconds_t EGLTimeKHR;
-
-#define EGL_SYNC_STATUS_KHR			0x30F1
-#define EGL_SIGNALED_KHR			0x30F2
-#define EGL_UNSIGNALED_KHR			0x30F3
-#define EGL_TIMEOUT_EXPIRED_KHR			0x30F5
-#define EGL_CONDITION_SATISFIED_KHR		0x30F6
-#define EGL_SYNC_TYPE_KHR			0x30F7
-#define EGL_SYNC_REUSABLE_KHR			0x30FA
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR		0x0001	/* eglClientWaitSyncKHR <flags> bitfield */
-#define EGL_FOREVER_KHR				0xFFFFFFFFFFFFFFFFull
-#define EGL_NO_SYNC_KHR				((EGLSyncKHR)0)
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
-EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLSyncKHR (EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
-#endif
-
-#ifndef EGL_KHR_image_base
-#define EGL_KHR_image_base 1
-/* Most interfaces defined by EGL_KHR_image_pixmap above */
-#define EGL_IMAGE_PRESERVED_KHR			0x30D2	/* eglCreateImageKHR attribute */
-#endif
-
-#ifndef EGL_KHR_image_pixmap
-#define EGL_KHR_image_pixmap 1
-/* Interfaces defined by EGL_KHR_image above */
-#endif
-
-#ifndef EGL_IMG_context_priority
-#define EGL_IMG_context_priority 1
-#define EGL_CONTEXT_PRIORITY_LEVEL_IMG		0x3100
-#define EGL_CONTEXT_PRIORITY_HIGH_IMG		0x3101
-#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG		0x3102
-#define EGL_CONTEXT_PRIORITY_LOW_IMG		0x3103
-#endif
-
-#ifndef EGL_NV_coverage_sample
-#define EGL_NV_coverage_sample 1
-#define EGL_COVERAGE_BUFFERS_NV 0x30E0
-#define EGL_COVERAGE_SAMPLES_NV 0x30E1
-#endif
-
-#ifndef EGL_NV_depth_nonlinear
-#define EGL_NV_depth_nonlinear 1
-#define EGL_DEPTH_ENCODING_NV 0x30E2
-#define EGL_DEPTH_ENCODING_NONE_NV 0
-#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3
-#endif
-
-#ifndef EGL_NV_sync
-#define EGL_NV_sync 1
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV	0x30E6
-#define EGL_SYNC_STATUS_NV			0x30E7
-#define EGL_SIGNALED_NV				0x30E8
-#define EGL_UNSIGNALED_NV			0x30E9
-#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV		0x0001
-#define EGL_FOREVER_NV				0xFFFFFFFFFFFFFFFFull
-#define EGL_ALREADY_SIGNALED_NV			0x30EA
-#define EGL_TIMEOUT_EXPIRED_NV			0x30EB
-#define EGL_CONDITION_SATISFIED_NV		0x30EC
-#define EGL_SYNC_TYPE_NV			0x30ED
-#define EGL_SYNC_CONDITION_NV			0x30EE
-#define EGL_SYNC_FENCE_NV			0x30EF
-#define EGL_NO_SYNC_NV				((EGLSyncNV)0)
-typedef void* EGLSyncNV;
-typedef unsigned long long EGLTimeNV;
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLSyncNV eglCreateFenceSyncNV (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-EGLBoolean eglDestroySyncNV (EGLSyncNV sync);
-EGLBoolean eglFenceNV (EGLSyncNV sync);
-EGLint eglClientWaitSyncNV (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-EGLBoolean eglSignalSyncNV (EGLSyncNV sync, EGLenum mode);
-EGLBoolean eglGetSyncAttribNV (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLSyncNV (EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
-typedef EGLint (EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
-#endif
-
-#ifndef EGL_KHR_fence_sync
-#define EGL_KHR_fence_sync 1
-/* Reuses most tokens and entry points from EGL_KHR_reusable_sync */
-#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR	0x30F0
-#define EGL_SYNC_CONDITION_KHR			0x30F8
-#define EGL_SYNC_FENCE_KHR			0x30F9
-#endif
-
-#ifndef EGL_ANDROID_image_native_buffer
-#define EGL_ANDROID_image_native_buffer 1
-struct android_native_buffer_t;
-#define EGL_NATIVE_BUFFER_ANDROID       0x3140  /* eglCreateImageKHR target */
-#endif
-
-#ifndef EGL_ANDROID_swap_rectangle
-#define EGL_ANDROID_swap_rectangle 1
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLBoolean EGLAPIENTRY eglSetSwapRectangleANDROID (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
-#endif /* EGL_EGLEXT_PROTOTYPES */
-typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSWAPRECTANGLEANDROIDPROC) (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/EGL/eglinternalplatform.h b/tools/emulator/opengl/host/libs/Translator/include/EGL/eglinternalplatform.h
deleted file mode 100644
index c387043..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/EGL/eglinternalplatform.h
+++ /dev/null
@@ -1,69 +0,0 @@
-#ifndef EGL_INTERNAL_PLATFORM_H
-#define EGL_INTERNAL_PLATFORM_H
-
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-class SrfcInfo; //defined in Egl{$platform}Api.cpp
-typedef SrfcInfo* SURFACE;
-typedef SURFACE EGLNativeSurfaceType;
-
-#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-
-#include <GL/gl.h>
-#define WGL_WGLEXT_PROTOTYPES
-#include <GL/wglext.h>
-
-class WinDisplay; //defined in EglWindows.cpp
-typedef WinDisplay* DISPLAY;
-
-typedef PIXELFORMATDESCRIPTOR  EGLNativePixelFormatType;
-#define PIXEL_FORMAT_INITIALIZER {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-typedef HGLRC                  EGLNativeContextType;
-typedef HPBUFFERARB            EGLNativePbufferType;
-typedef DISPLAY                EGLNativeInternalDisplayType;
-
-#elif defined(__APPLE__)
-
-typedef void*                  EGLNativePixelFormatType;
-#define PIXEL_FORMAT_INITIALIZER NULL
-typedef void*                  EGLNativeContextType;
-typedef void*                  EGLNativePbufferType;
-typedef EGLNativeDisplayType   EGLNativeInternalDisplayType;
-
-
-#elif defined(__unix__)
-
-/* X11 (tentative)  */
-#include <GL/glx.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef GLXFBConfig           EGLNativePixelFormatType;
-#define PIXEL_FORMAT_INITIALIZER 0;
-typedef GLXContext            EGLNativeContextType;
-typedef GLXPbuffer            EGLNativePbufferType;
-typedef EGLNativeDisplayType  EGLNativeInternalDisplayType;
-
-#else
-#error "Platform not recognized"
-#endif
-
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/EGL/eglplatform.h b/tools/emulator/opengl/host/libs/Translator/include/EGL/eglplatform.h
deleted file mode 100644
index b159cd7..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/EGL/eglplatform.h
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef __eglplatform_h_
-#define __eglplatform_h_
-/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Platform-specific types and definitions for egl.h
- * $Revision: 9724 $ on $Date: 2009-12-02 02:05:33 -0800 (Wed, 02 Dec 2009) $
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file.  Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "EGL" component "Registry".
- */
-#include <KHR/khrplatform.h>
-
-/* Macros used in EGL function prototype declarations.
- *
- * EGL functions should be prototyped as:
- *
- * EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
- * typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
- *
- * KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
- */
-
-#ifndef EGLAPI
-#define EGLAPI KHRONOS_APICALL
-#endif
-
-#ifndef EGLAPIENTRY
-#define EGLAPIENTRY  KHRONOS_APIENTRY
-#endif
-#define EGLAPIENTRYP EGLAPIENTRY*
-
-/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
- * are aliases of window-system-dependent types, such as X Display * or
- * Windows Device Context. They must be defined in platform-specific
- * code below. The EGL-prefixed versions of Native*Type are the same
- * types, renamed in EGL 1.3 so all types in the API start with "EGL".
- */
-
-#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN 1
-#endif
-#include <windows.h>
-
-
-
-typedef HDC                    EGLNativeDisplayType;
-typedef HBITMAP                EGLNativePixmapType;
-typedef HWND                   EGLNativeWindowType;
-
-#elif defined(__APPLE__)
-
-typedef unsigned int           EGLNativeDisplayType;
-typedef void*                  EGLNativePixmapType;
-typedef void*                  EGLNativeWindowType;
-
-
-#elif defined(__unix__)
-
-/* X11 (tentative)  */
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef Display *           EGLNativeDisplayType;
-typedef Pixmap              EGLNativePixmapType;
-typedef Window              EGLNativeWindowType;
-
-#else
-#error "Platform not recognized"
-#endif
-
-/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
-typedef EGLNativeDisplayType NativeDisplayType;
-typedef EGLNativePixmapType  NativePixmapType;
-typedef EGLNativeWindowType  NativeWindowType;
-
-
-/* Define EGLint. This must be a signed integral type large enough to contain
- * all legal attribute names and values passed into and out of EGL, whether
- * their type is boolean, bitmask, enumerant (symbolic constant), integer,
- * handle, or other.  While in general a 32-bit integer will suffice, if
- * handles are 64 bit types, then EGLint should be defined as a signed 64-bit
- * integer type.
- */
-typedef khronos_int32_t EGLint;
-
-#endif /* __eglplatform_h */
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GL/wglext.h b/tools/emulator/opengl/host/libs/Translator/include/GL/wglext.h
deleted file mode 100644
index 8e06d93..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GL/wglext.h
+++ /dev/null
@@ -1,901 +0,0 @@
-#ifndef __wglext_h_
-#define __wglext_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** Copyright (c) 2007-2010 The Khronos Group Inc.
-**
-** Permission is hereby granted, free of charge, to any person obtaining a
-** copy of this software and/or associated documentation files (the
-** "Materials"), to deal in the Materials without restriction, including
-** without limitation the rights to use, copy, modify, merge, publish,
-** distribute, sublicense, and/or sell copies of the Materials, and to
-** permit persons to whom the Materials are furnished to do so, subject to
-** the following conditions:
-**
-** The above copyright notice and this permission notice shall be included
-** in all copies or substantial portions of the Materials.
-**
-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-*/
-
-/* Function declaration macros - to move into glplatform.h */
-
-#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
-#define WIN32_LEAN_AND_MEAN 1
-#include <windows.h>
-#endif
-
-#ifndef APIENTRY
-#define APIENTRY
-#endif
-#ifndef APIENTRYP
-#define APIENTRYP APIENTRY *
-#endif
-#ifndef GLAPI
-#define GLAPI extern
-#endif
-
-/*************************************************************/
-
-/* Header file version number */
-/* wglext.h last updated 2010/08/06 */
-/* Current version at http://www.opengl.org/registry/ */
-#define WGL_WGLEXT_VERSION 22
-
-#ifndef WGL_ARB_buffer_region
-#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
-#define WGL_BACK_COLOR_BUFFER_BIT_ARB  0x00000002
-#define WGL_DEPTH_BUFFER_BIT_ARB       0x00000004
-#define WGL_STENCIL_BUFFER_BIT_ARB     0x00000008
-#endif
-
-#ifndef WGL_ARB_multisample
-#define WGL_SAMPLE_BUFFERS_ARB         0x2041
-#define WGL_SAMPLES_ARB                0x2042
-#endif
-
-#ifndef WGL_ARB_extensions_string
-#endif
-
-#ifndef WGL_ARB_pixel_format
-#define WGL_NUMBER_PIXEL_FORMATS_ARB   0x2000
-#define WGL_DRAW_TO_WINDOW_ARB         0x2001
-#define WGL_DRAW_TO_BITMAP_ARB         0x2002
-#define WGL_ACCELERATION_ARB           0x2003
-#define WGL_NEED_PALETTE_ARB           0x2004
-#define WGL_NEED_SYSTEM_PALETTE_ARB    0x2005
-#define WGL_SWAP_LAYER_BUFFERS_ARB     0x2006
-#define WGL_SWAP_METHOD_ARB            0x2007
-#define WGL_NUMBER_OVERLAYS_ARB        0x2008
-#define WGL_NUMBER_UNDERLAYS_ARB       0x2009
-#define WGL_TRANSPARENT_ARB            0x200A
-#define WGL_TRANSPARENT_RED_VALUE_ARB  0x2037
-#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
-#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
-#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
-#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
-#define WGL_SHARE_DEPTH_ARB            0x200C
-#define WGL_SHARE_STENCIL_ARB          0x200D
-#define WGL_SHARE_ACCUM_ARB            0x200E
-#define WGL_SUPPORT_GDI_ARB            0x200F
-#define WGL_SUPPORT_OPENGL_ARB         0x2010
-#define WGL_DOUBLE_BUFFER_ARB          0x2011
-#define WGL_STEREO_ARB                 0x2012
-#define WGL_PIXEL_TYPE_ARB             0x2013
-#define WGL_COLOR_BITS_ARB             0x2014
-#define WGL_RED_BITS_ARB               0x2015
-#define WGL_RED_SHIFT_ARB              0x2016
-#define WGL_GREEN_BITS_ARB             0x2017
-#define WGL_GREEN_SHIFT_ARB            0x2018
-#define WGL_BLUE_BITS_ARB              0x2019
-#define WGL_BLUE_SHIFT_ARB             0x201A
-#define WGL_ALPHA_BITS_ARB             0x201B
-#define WGL_ALPHA_SHIFT_ARB            0x201C
-#define WGL_ACCUM_BITS_ARB             0x201D
-#define WGL_ACCUM_RED_BITS_ARB         0x201E
-#define WGL_ACCUM_GREEN_BITS_ARB       0x201F
-#define WGL_ACCUM_BLUE_BITS_ARB        0x2020
-#define WGL_ACCUM_ALPHA_BITS_ARB       0x2021
-#define WGL_DEPTH_BITS_ARB             0x2022
-#define WGL_STENCIL_BITS_ARB           0x2023
-#define WGL_AUX_BUFFERS_ARB            0x2024
-#define WGL_NO_ACCELERATION_ARB        0x2025
-#define WGL_GENERIC_ACCELERATION_ARB   0x2026
-#define WGL_FULL_ACCELERATION_ARB      0x2027
-#define WGL_SWAP_EXCHANGE_ARB          0x2028
-#define WGL_SWAP_COPY_ARB              0x2029
-#define WGL_SWAP_UNDEFINED_ARB         0x202A
-#define WGL_TYPE_RGBA_ARB              0x202B
-#define WGL_TYPE_COLORINDEX_ARB        0x202C
-#endif
-
-#ifndef WGL_ARB_make_current_read
-#define ERROR_INVALID_PIXEL_TYPE_ARB   0x2043
-#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
-#endif
-
-#ifndef WGL_ARB_pbuffer
-#define WGL_DRAW_TO_PBUFFER_ARB        0x202D
-#define WGL_MAX_PBUFFER_PIXELS_ARB     0x202E
-#define WGL_MAX_PBUFFER_WIDTH_ARB      0x202F
-#define WGL_MAX_PBUFFER_HEIGHT_ARB     0x2030
-#define WGL_PBUFFER_LARGEST_ARB        0x2033
-#define WGL_PBUFFER_WIDTH_ARB          0x2034
-#define WGL_PBUFFER_HEIGHT_ARB         0x2035
-#define WGL_PBUFFER_LOST_ARB           0x2036
-#endif
-
-#ifndef WGL_ARB_render_texture
-#define WGL_BIND_TO_TEXTURE_RGB_ARB    0x2070
-#define WGL_BIND_TO_TEXTURE_RGBA_ARB   0x2071
-#define WGL_TEXTURE_FORMAT_ARB         0x2072
-#define WGL_TEXTURE_TARGET_ARB         0x2073
-#define WGL_MIPMAP_TEXTURE_ARB         0x2074
-#define WGL_TEXTURE_RGB_ARB            0x2075
-#define WGL_TEXTURE_RGBA_ARB           0x2076
-#define WGL_NO_TEXTURE_ARB             0x2077
-#define WGL_TEXTURE_CUBE_MAP_ARB       0x2078
-#define WGL_TEXTURE_1D_ARB             0x2079
-#define WGL_TEXTURE_2D_ARB             0x207A
-#define WGL_MIPMAP_LEVEL_ARB           0x207B
-#define WGL_CUBE_MAP_FACE_ARB          0x207C
-#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
-#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
-#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
-#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
-#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
-#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
-#define WGL_FRONT_LEFT_ARB             0x2083
-#define WGL_FRONT_RIGHT_ARB            0x2084
-#define WGL_BACK_LEFT_ARB              0x2085
-#define WGL_BACK_RIGHT_ARB             0x2086
-#define WGL_AUX0_ARB                   0x2087
-#define WGL_AUX1_ARB                   0x2088
-#define WGL_AUX2_ARB                   0x2089
-#define WGL_AUX3_ARB                   0x208A
-#define WGL_AUX4_ARB                   0x208B
-#define WGL_AUX5_ARB                   0x208C
-#define WGL_AUX6_ARB                   0x208D
-#define WGL_AUX7_ARB                   0x208E
-#define WGL_AUX8_ARB                   0x208F
-#define WGL_AUX9_ARB                   0x2090
-#endif
-
-#ifndef WGL_ARB_pixel_format_float
-#define WGL_TYPE_RGBA_FLOAT_ARB        0x21A0
-#endif
-
-#ifndef WGL_ARB_framebuffer_sRGB
-#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
-#endif
-
-#ifndef WGL_ARB_create_context
-#define WGL_CONTEXT_DEBUG_BIT_ARB      0x00000001
-#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
-#define WGL_CONTEXT_MAJOR_VERSION_ARB  0x2091
-#define WGL_CONTEXT_MINOR_VERSION_ARB  0x2092
-#define WGL_CONTEXT_LAYER_PLANE_ARB    0x2093
-#define WGL_CONTEXT_FLAGS_ARB          0x2094
-#define ERROR_INVALID_VERSION_ARB      0x2095
-#endif
-
-#ifndef WGL_ARB_create_context_profile
-#define WGL_CONTEXT_PROFILE_MASK_ARB   0x9126
-#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
-#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
-#define ERROR_INVALID_PROFILE_ARB      0x2096
-#endif
-
-#ifndef WGL_ARB_create_context_robustness
-#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
-#define WGL_LOSE_CONTEXT_ON_RESET_ARB  0x8252
-#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
-#define WGL_NO_RESET_NOTIFICATION_ARB  0x8261
-#endif
-
-#ifndef WGL_EXT_make_current_read
-#define ERROR_INVALID_PIXEL_TYPE_EXT   0x2043
-#endif
-
-#ifndef WGL_EXT_pixel_format
-#define WGL_NUMBER_PIXEL_FORMATS_EXT   0x2000
-#define WGL_DRAW_TO_WINDOW_EXT         0x2001
-#define WGL_DRAW_TO_BITMAP_EXT         0x2002
-#define WGL_ACCELERATION_EXT           0x2003
-#define WGL_NEED_PALETTE_EXT           0x2004
-#define WGL_NEED_SYSTEM_PALETTE_EXT    0x2005
-#define WGL_SWAP_LAYER_BUFFERS_EXT     0x2006
-#define WGL_SWAP_METHOD_EXT            0x2007
-#define WGL_NUMBER_OVERLAYS_EXT        0x2008
-#define WGL_NUMBER_UNDERLAYS_EXT       0x2009
-#define WGL_TRANSPARENT_EXT            0x200A
-#define WGL_TRANSPARENT_VALUE_EXT      0x200B
-#define WGL_SHARE_DEPTH_EXT            0x200C
-#define WGL_SHARE_STENCIL_EXT          0x200D
-#define WGL_SHARE_ACCUM_EXT            0x200E
-#define WGL_SUPPORT_GDI_EXT            0x200F
-#define WGL_SUPPORT_OPENGL_EXT         0x2010
-#define WGL_DOUBLE_BUFFER_EXT          0x2011
-#define WGL_STEREO_EXT                 0x2012
-#define WGL_PIXEL_TYPE_EXT             0x2013
-#define WGL_COLOR_BITS_EXT             0x2014
-#define WGL_RED_BITS_EXT               0x2015
-#define WGL_RED_SHIFT_EXT              0x2016
-#define WGL_GREEN_BITS_EXT             0x2017
-#define WGL_GREEN_SHIFT_EXT            0x2018
-#define WGL_BLUE_BITS_EXT              0x2019
-#define WGL_BLUE_SHIFT_EXT             0x201A
-#define WGL_ALPHA_BITS_EXT             0x201B
-#define WGL_ALPHA_SHIFT_EXT            0x201C
-#define WGL_ACCUM_BITS_EXT             0x201D
-#define WGL_ACCUM_RED_BITS_EXT         0x201E
-#define WGL_ACCUM_GREEN_BITS_EXT       0x201F
-#define WGL_ACCUM_BLUE_BITS_EXT        0x2020
-#define WGL_ACCUM_ALPHA_BITS_EXT       0x2021
-#define WGL_DEPTH_BITS_EXT             0x2022
-#define WGL_STENCIL_BITS_EXT           0x2023
-#define WGL_AUX_BUFFERS_EXT            0x2024
-#define WGL_NO_ACCELERATION_EXT        0x2025
-#define WGL_GENERIC_ACCELERATION_EXT   0x2026
-#define WGL_FULL_ACCELERATION_EXT      0x2027
-#define WGL_SWAP_EXCHANGE_EXT          0x2028
-#define WGL_SWAP_COPY_EXT              0x2029
-#define WGL_SWAP_UNDEFINED_EXT         0x202A
-#define WGL_TYPE_RGBA_EXT              0x202B
-#define WGL_TYPE_COLORINDEX_EXT        0x202C
-#endif
-
-#ifndef WGL_EXT_pbuffer
-#define WGL_DRAW_TO_PBUFFER_EXT        0x202D
-#define WGL_MAX_PBUFFER_PIXELS_EXT     0x202E
-#define WGL_MAX_PBUFFER_WIDTH_EXT      0x202F
-#define WGL_MAX_PBUFFER_HEIGHT_EXT     0x2030
-#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT  0x2031
-#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
-#define WGL_PBUFFER_LARGEST_EXT        0x2033
-#define WGL_PBUFFER_WIDTH_EXT          0x2034
-#define WGL_PBUFFER_HEIGHT_EXT         0x2035
-#endif
-
-#ifndef WGL_EXT_depth_float
-#define WGL_DEPTH_FLOAT_EXT            0x2040
-#endif
-
-#ifndef WGL_3DFX_multisample
-#define WGL_SAMPLE_BUFFERS_3DFX        0x2060
-#define WGL_SAMPLES_3DFX               0x2061
-#endif
-
-#ifndef WGL_EXT_multisample
-#define WGL_SAMPLE_BUFFERS_EXT         0x2041
-#define WGL_SAMPLES_EXT                0x2042
-#endif
-
-#ifndef WGL_I3D_digital_video_control
-#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
-#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
-#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
-#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
-#endif
-
-#ifndef WGL_I3D_gamma
-#define WGL_GAMMA_TABLE_SIZE_I3D       0x204E
-#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D  0x204F
-#endif
-
-#ifndef WGL_I3D_genlock
-#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
-#define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D 0x2045
-#define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D 0x2046
-#define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D 0x2047
-#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
-#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
-#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
-#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
-#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
-#endif
-
-#ifndef WGL_I3D_image_buffer
-#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
-#define WGL_IMAGE_BUFFER_LOCK_I3D      0x00000002
-#endif
-
-#ifndef WGL_I3D_swap_frame_lock
-#endif
-
-#ifndef WGL_NV_render_depth_texture
-#define WGL_BIND_TO_TEXTURE_DEPTH_NV   0x20A3
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
-#define WGL_DEPTH_TEXTURE_FORMAT_NV    0x20A5
-#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
-#define WGL_DEPTH_COMPONENT_NV         0x20A7
-#endif
-
-#ifndef WGL_NV_render_texture_rectangle
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
-#define WGL_TEXTURE_RECTANGLE_NV       0x20A2
-#endif
-
-#ifndef WGL_ATI_pixel_format_float
-#define WGL_TYPE_RGBA_FLOAT_ATI        0x21A0
-#endif
-
-#ifndef WGL_NV_float_buffer
-#define WGL_FLOAT_COMPONENTS_NV        0x20B0
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
-#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
-#define WGL_TEXTURE_FLOAT_R_NV         0x20B5
-#define WGL_TEXTURE_FLOAT_RG_NV        0x20B6
-#define WGL_TEXTURE_FLOAT_RGB_NV       0x20B7
-#define WGL_TEXTURE_FLOAT_RGBA_NV      0x20B8
-#endif
-
-#ifndef WGL_3DL_stereo_control
-#define WGL_STEREO_EMITTER_ENABLE_3DL  0x2055
-#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
-#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
-#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
-#endif
-
-#ifndef WGL_EXT_pixel_format_packed_float
-#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
-#endif
-
-#ifndef WGL_EXT_framebuffer_sRGB
-#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
-#endif
-
-#ifndef WGL_NV_present_video
-#define WGL_NUM_VIDEO_SLOTS_NV         0x20F0
-#endif
-
-#ifndef WGL_NV_video_out
-#define WGL_BIND_TO_VIDEO_RGB_NV       0x20C0
-#define WGL_BIND_TO_VIDEO_RGBA_NV      0x20C1
-#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
-#define WGL_VIDEO_OUT_COLOR_NV         0x20C3
-#define WGL_VIDEO_OUT_ALPHA_NV         0x20C4
-#define WGL_VIDEO_OUT_DEPTH_NV         0x20C5
-#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
-#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
-#define WGL_VIDEO_OUT_FRAME            0x20C8
-#define WGL_VIDEO_OUT_FIELD_1          0x20C9
-#define WGL_VIDEO_OUT_FIELD_2          0x20CA
-#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
-#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
-#endif
-
-#ifndef WGL_NV_swap_group
-#endif
-
-#ifndef WGL_NV_gpu_affinity
-#define WGL_ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
-#define WGL_ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
-#endif
-
-#ifndef WGL_AMD_gpu_association
-#define WGL_GPU_VENDOR_AMD             0x1F00
-#define WGL_GPU_RENDERER_STRING_AMD    0x1F01
-#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
-#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
-#define WGL_GPU_RAM_AMD                0x21A3
-#define WGL_GPU_CLOCK_AMD              0x21A4
-#define WGL_GPU_NUM_PIPES_AMD          0x21A5
-#define WGL_GPU_NUM_SIMD_AMD           0x21A6
-#define WGL_GPU_NUM_RB_AMD             0x21A7
-#define WGL_GPU_NUM_SPI_AMD            0x21A8
-#endif
-
-#ifndef WGL_NV_video_capture
-#define WGL_UNIQUE_ID_NV               0x20CE
-#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
-#endif
-
-#ifndef WGL_NV_copy_image
-#endif
-
-#ifndef WGL_NV_multisample_coverage
-#define WGL_COVERAGE_SAMPLES_NV        0x2042
-#define WGL_COLOR_SAMPLES_NV           0x20B9
-#endif
-
-#ifndef WGL_EXT_create_context_es2_profile
-#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
-#endif
-
-
-/*************************************************************/
-
-#ifndef WGL_ARB_pbuffer
-DECLARE_HANDLE(HPBUFFERARB);
-#endif
-#ifndef WGL_EXT_pbuffer
-DECLARE_HANDLE(HPBUFFEREXT);
-#endif
-#ifndef WGL_NV_present_video
-DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
-#endif
-#ifndef WGL_NV_video_output
-DECLARE_HANDLE(HPVIDEODEV);
-#endif
-#ifndef WGL_NV_gpu_affinity
-DECLARE_HANDLE(HPGPUNV);
-DECLARE_HANDLE(HGPUNV);
-
-typedef struct _GPU_DEVICE {
-    DWORD  cb;
-    CHAR   DeviceName[32];
-    CHAR   DeviceString[128];
-    DWORD  Flags;
-    RECT   rcVirtualScreen;
-} GPU_DEVICE, *PGPU_DEVICE;
-#endif
-#ifndef WGL_NV_video_capture
-DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
-#endif
-
-#ifndef WGL_ARB_buffer_region
-#define WGL_ARB_buffer_region 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern HANDLE WINAPI wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType);
-extern VOID WINAPI wglDeleteBufferRegionARB (HANDLE hRegion);
-extern BOOL WINAPI wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height);
-extern BOOL WINAPI wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
-typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
-typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
-typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
-#endif
-
-#ifndef WGL_ARB_multisample
-#define WGL_ARB_multisample 1
-#endif
-
-#ifndef WGL_ARB_extensions_string
-#define WGL_ARB_extensions_string 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern const char * WINAPI wglGetExtensionsStringARB (HDC hdc);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
-#endif
-
-#ifndef WGL_ARB_pixel_format
-#define WGL_ARB_pixel_format 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
-extern BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
-extern BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
-typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
-typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
-#endif
-
-#ifndef WGL_ARB_make_current_read
-#define WGL_ARB_make_current_read 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
-extern HDC WINAPI wglGetCurrentReadDCARB (void);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
-typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
-#endif
-
-#ifndef WGL_ARB_pbuffer
-#define WGL_ARB_pbuffer 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern HPBUFFERARB WINAPI wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
-extern HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB hPbuffer);
-extern int WINAPI wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC);
-extern BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB hPbuffer);
-extern BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
-typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
-typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
-typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
-typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
-#endif
-
-#ifndef WGL_ARB_render_texture
-#define WGL_ARB_render_texture 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
-extern BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
-extern BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int *piAttribList);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
-typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
-typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList);
-#endif
-
-#ifndef WGL_ARB_pixel_format_float
-#define WGL_ARB_pixel_format_float 1
-#endif
-
-#ifndef WGL_ARB_framebuffer_sRGB
-#define WGL_ARB_framebuffer_sRGB 1
-#endif
-
-#ifndef WGL_ARB_create_context
-#define WGL_ARB_create_context 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern HGLRC WINAPI wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int *attribList);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList);
-#endif
-
-#ifndef WGL_ARB_create_context_profile
-#define WGL_ARB_create_context_profile 1
-#endif
-
-#ifndef WGL_ARB_create_context_robustness
-#define WGL_ARB_create_context_robustness 1
-#endif
-
-#ifndef WGL_EXT_display_color_table
-#define WGL_EXT_display_color_table 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort id);
-extern GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *table, GLuint length);
-extern GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort id);
-extern VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort id);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
-typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
-typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
-typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
-#endif
-
-#ifndef WGL_EXT_extensions_string
-#define WGL_EXT_extensions_string 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern const char * WINAPI wglGetExtensionsStringEXT (void);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
-#endif
-
-#ifndef WGL_EXT_make_current_read
-#define WGL_EXT_make_current_read 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
-extern HDC WINAPI wglGetCurrentReadDCEXT (void);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
-typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
-#endif
-
-#ifndef WGL_EXT_pbuffer
-#define WGL_EXT_pbuffer 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
-extern HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer);
-extern int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC);
-extern BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer);
-extern BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
-typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
-typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
-typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
-typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
-#endif
-
-#ifndef WGL_EXT_pixel_format
-#define WGL_EXT_pixel_format 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
-extern BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
-extern BOOL WINAPI wglChoosePixelFormatEXT (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
-typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
-typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
-#endif
-
-#ifndef WGL_EXT_swap_control
-#define WGL_EXT_swap_control 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglSwapIntervalEXT (int interval);
-extern int WINAPI wglGetSwapIntervalEXT (void);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
-typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
-#endif
-
-#ifndef WGL_EXT_depth_float
-#define WGL_EXT_depth_float 1
-#endif
-
-#ifndef WGL_NV_vertex_array_range
-#define WGL_NV_vertex_array_range 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern void* WINAPI wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
-extern void WINAPI wglFreeMemoryNV (void *pointer);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef void* (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
-typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer);
-#endif
-
-#ifndef WGL_3DFX_multisample
-#define WGL_3DFX_multisample 1
-#endif
-
-#ifndef WGL_EXT_multisample
-#define WGL_EXT_multisample 1
-#endif
-
-#ifndef WGL_OML_sync_control
-#define WGL_OML_sync_control 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetSyncValuesOML (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
-extern BOOL WINAPI wglGetMscRateOML (HDC hdc, INT32 *numerator, INT32 *denominator);
-extern INT64 WINAPI wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
-extern INT64 WINAPI wglSwapLayerBuffersMscOML (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
-extern BOOL WINAPI wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
-extern BOOL WINAPI wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
-typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator);
-typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
-typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
-typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
-typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
-#endif
-
-#ifndef WGL_I3D_digital_video_control
-#define WGL_I3D_digital_video_control 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int *piValue);
-extern BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int *piValue);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
-typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
-#endif
-
-#ifndef WGL_I3D_gamma
-#define WGL_I3D_gamma 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int *piValue);
-extern BOOL WINAPI wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int *piValue);
-extern BOOL WINAPI wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
-extern BOOL WINAPI wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
-typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
-typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
-typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
-#endif
-
-#ifndef WGL_I3D_genlock
-#define WGL_I3D_genlock 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglEnableGenlockI3D (HDC hDC);
-extern BOOL WINAPI wglDisableGenlockI3D (HDC hDC);
-extern BOOL WINAPI wglIsEnabledGenlockI3D (HDC hDC, BOOL *pFlag);
-extern BOOL WINAPI wglGenlockSourceI3D (HDC hDC, UINT uSource);
-extern BOOL WINAPI wglGetGenlockSourceI3D (HDC hDC, UINT *uSource);
-extern BOOL WINAPI wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge);
-extern BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC hDC, UINT *uEdge);
-extern BOOL WINAPI wglGenlockSampleRateI3D (HDC hDC, UINT uRate);
-extern BOOL WINAPI wglGetGenlockSampleRateI3D (HDC hDC, UINT *uRate);
-extern BOOL WINAPI wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay);
-extern BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC hDC, UINT *uDelay);
-extern BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
-typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
-typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag);
-typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
-typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource);
-typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
-typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge);
-typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
-typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate);
-typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
-typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay);
-typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
-#endif
-
-#ifndef WGL_I3D_image_buffer
-#define WGL_I3D_image_buffer 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern LPVOID WINAPI wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags);
-extern BOOL WINAPI wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress);
-extern BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
-extern BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID *pAddress, UINT count);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
-typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
-typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
-typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count);
-#endif
-
-#ifndef WGL_I3D_swap_frame_lock
-#define WGL_I3D_swap_frame_lock 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglEnableFrameLockI3D (void);
-extern BOOL WINAPI wglDisableFrameLockI3D (void);
-extern BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *pFlag);
-extern BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *pFlag);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
-typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
-typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag);
-typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag);
-#endif
-
-#ifndef WGL_I3D_swap_frame_usage
-#define WGL_I3D_swap_frame_usage 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetFrameUsageI3D (float *pUsage);
-extern BOOL WINAPI wglBeginFrameTrackingI3D (void);
-extern BOOL WINAPI wglEndFrameTrackingI3D (void);
-extern BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage);
-typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
-typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
-typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
-#endif
-
-#ifndef WGL_ATI_pixel_format_float
-#define WGL_ATI_pixel_format_float 1
-#endif
-
-#ifndef WGL_NV_float_buffer
-#define WGL_NV_float_buffer 1
-#endif
-
-#ifndef WGL_3DL_stereo_control
-#define WGL_3DL_stereo_control 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglSetStereoEmitterState3DL (HDC hDC, UINT uState);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
-#endif
-
-#ifndef WGL_EXT_pixel_format_packed_float
-#define WGL_EXT_pixel_format_packed_float 1
-#endif
-
-#ifndef WGL_EXT_framebuffer_sRGB
-#define WGL_EXT_framebuffer_sRGB 1
-#endif
-
-#ifndef WGL_NV_present_video
-#define WGL_NV_present_video 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern int WINAPI wglEnumerateVideoDevicesNV (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList);
-extern BOOL WINAPI wglBindVideoDeviceNV (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
-extern BOOL WINAPI wglQueryCurrentContextNV (int iAttribute, int *piValue);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDC, HVIDEOOUTPUTDEVICENV *phDeviceList);
-typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDC, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
-typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int *piValue);
-#endif
-
-#ifndef WGL_NV_video_output
-#define WGL_NV_video_output 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
-extern BOOL WINAPI wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice);
-extern BOOL WINAPI wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
-extern BOOL WINAPI wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer);
-extern BOOL WINAPI wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
-extern BOOL WINAPI wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
-typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
-typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
-typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
-typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
-typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
-#endif
-
-#ifndef WGL_NV_swap_group
-#define WGL_NV_swap_group 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglJoinSwapGroupNV (HDC hDC, GLuint group);
-extern BOOL WINAPI wglBindSwapBarrierNV (GLuint group, GLuint barrier);
-extern BOOL WINAPI wglQuerySwapGroupNV (HDC hDC, GLuint *group, GLuint *barrier);
-extern BOOL WINAPI wglQueryMaxSwapGroupsNV (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
-extern BOOL WINAPI wglQueryFrameCountNV (HDC hDC, GLuint *count);
-extern BOOL WINAPI wglResetFrameCountNV (HDC hDC);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
-typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
-typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint *group, GLuint *barrier);
-typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
-typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint *count);
-typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
-#endif
-
-#ifndef WGL_NV_gpu_affinity
-#define WGL_NV_gpu_affinity 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu);
-extern BOOL WINAPI wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
-extern HDC WINAPI wglCreateAffinityDCNV (const HGPUNV *phGpuList);
-extern BOOL WINAPI wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
-extern BOOL WINAPI wglDeleteDCNV (HDC hdc);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
-typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
-typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
-typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
-typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
-#endif
-
-#ifndef WGL_AMD_gpu_association
-#define WGL_AMD_gpu_association 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern UINT WINAPI wglGetGPUIDsAMD (UINT maxCount, UINT *ids);
-extern INT WINAPI wglGetGPUInfoAMD (UINT id, int property, GLenum dataType, UINT size, void *data);
-extern UINT WINAPI wglGetContextGPUIDAMD (HGLRC hglrc);
-extern HGLRC WINAPI wglCreateAssociatedContextAMD (UINT id);
-extern HGLRC WINAPI wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int *attribList);
-extern BOOL WINAPI wglDeleteAssociatedContextAMD (HGLRC hglrc);
-extern BOOL WINAPI wglMakeAssociatedContextCurrentAMD (HGLRC hglrc);
-extern HGLRC WINAPI wglGetCurrentAssociatedContextAMD (void);
-extern VOID WINAPI wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT *ids);
-typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, int property, GLenum dataType, UINT size, void *data);
-typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
-typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
-typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int *attribList);
-typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
-typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
-typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
-typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-#ifndef WGL_NV_video_capture
-#define WGL_NV_video_capture 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
-extern UINT WINAPI wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
-extern BOOL WINAPI wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
-extern BOOL WINAPI wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
-extern BOOL WINAPI wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
-typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
-typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
-typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
-typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
-#endif
-
-#ifndef WGL_NV_copy_image
-#define WGL_NV_copy_image 1
-#ifdef WGL_WGLEXT_PROTOTYPES
-extern BOOL WINAPI wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#endif /* WGL_WGLEXT_PROTOTYPES */
-typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
-#endif
-
-#ifndef WGL_NV_multisample_coverage
-#define WGL_NV_multisample_coverage 1
-#endif
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLES/gl.h b/tools/emulator/opengl/host/libs/Translator/include/GLES/gl.h
deleted file mode 100644
index 5b8d85a..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLES/gl.h
+++ /dev/null
@@ -1,770 +0,0 @@
-#ifndef __gl_h_
-#define __gl_h_
-
-/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */
-
-#include <GLES/glplatform.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-typedef void             GLvoid;
-typedef char             GLchar;
-typedef unsigned int     GLenum;
-typedef unsigned char    GLboolean;
-typedef unsigned int     GLbitfield;
-typedef khronos_int8_t   GLbyte;
-typedef short            GLshort;
-typedef int              GLint;
-typedef int              GLsizei;
-typedef khronos_uint8_t  GLubyte;
-typedef unsigned short   GLushort;
-typedef unsigned int     GLuint;
-typedef khronos_float_t  GLfloat;
-typedef khronos_float_t  GLclampf;
-typedef khronos_int32_t  GLfixed;
-typedef khronos_int32_t  GLclampx;
-
-typedef khronos_intptr_t GLintptr;
-typedef khronos_ssize_t  GLsizeiptr;
-
-
-/*************************************************************/
-
-/* OpenGL ES core versions */
-#define GL_VERSION_ES_CM_1_0          1
-#define GL_VERSION_ES_CL_1_0          1
-#define GL_VERSION_ES_CM_1_1          1
-#define GL_VERSION_ES_CL_1_1          1
-
-/* ClearBufferMask */
-#define GL_DEPTH_BUFFER_BIT               0x00000100
-#define GL_STENCIL_BUFFER_BIT             0x00000400
-#define GL_COLOR_BUFFER_BIT               0x00004000
-
-/* Boolean */
-#define GL_FALSE                          0
-#define GL_TRUE                           1
-
-/* BeginMode */
-#define GL_POINTS                         0x0000
-#define GL_LINES                          0x0001
-#define GL_LINE_LOOP                      0x0002
-#define GL_LINE_STRIP                     0x0003
-#define GL_TRIANGLES                      0x0004
-#define GL_TRIANGLE_STRIP                 0x0005
-#define GL_TRIANGLE_FAN                   0x0006
-
-/* AlphaFunction */
-#define GL_NEVER                          0x0200
-#define GL_LESS                           0x0201
-#define GL_EQUAL                          0x0202
-#define GL_LEQUAL                         0x0203
-#define GL_GREATER                        0x0204
-#define GL_NOTEQUAL                       0x0205
-#define GL_GEQUAL                         0x0206
-#define GL_ALWAYS                         0x0207
-
-/* BlendingFactorDest */
-#define GL_ZERO                           0
-#define GL_ONE                            1
-#define GL_SRC_COLOR                      0x0300
-#define GL_ONE_MINUS_SRC_COLOR            0x0301
-#define GL_SRC_ALPHA                      0x0302
-#define GL_ONE_MINUS_SRC_ALPHA            0x0303
-#define GL_DST_ALPHA                      0x0304
-#define GL_ONE_MINUS_DST_ALPHA            0x0305
-
-/* BlendingFactorSrc */
-/*      GL_ZERO */
-/*      GL_ONE */
-#define GL_DST_COLOR                      0x0306
-#define GL_ONE_MINUS_DST_COLOR            0x0307
-#define GL_SRC_ALPHA_SATURATE             0x0308
-/*      GL_SRC_ALPHA */
-/*      GL_ONE_MINUS_SRC_ALPHA */
-/*      GL_DST_ALPHA */
-/*      GL_ONE_MINUS_DST_ALPHA */
-
-/* ClipPlaneName */
-#define GL_CLIP_PLANE0                    0x3000
-#define GL_CLIP_PLANE1                    0x3001
-#define GL_CLIP_PLANE2                    0x3002
-#define GL_CLIP_PLANE3                    0x3003
-#define GL_CLIP_PLANE4                    0x3004
-#define GL_CLIP_PLANE5                    0x3005
-
-/* ColorMaterialFace */
-/*      GL_FRONT_AND_BACK */
-
-/* ColorMaterialParameter */
-/*      GL_AMBIENT_AND_DIFFUSE */
-
-/* ColorPointerType */
-/*      GL_UNSIGNED_BYTE */
-/*      GL_FLOAT */
-/*      GL_FIXED */
-
-/* CullFaceMode */
-#define GL_FRONT                          0x0404
-#define GL_BACK                           0x0405
-#define GL_FRONT_AND_BACK                 0x0408
-
-/* DepthFunction */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* EnableCap */
-#define GL_FOG                            0x0B60
-#define GL_LIGHTING                       0x0B50
-#define GL_TEXTURE_2D                     0x0DE1
-#define GL_CULL_FACE                      0x0B44
-#define GL_ALPHA_TEST                     0x0BC0
-#define GL_BLEND                          0x0BE2
-#define GL_COLOR_LOGIC_OP                 0x0BF2
-#define GL_DITHER                         0x0BD0
-#define GL_STENCIL_TEST                   0x0B90
-#define GL_DEPTH_TEST                     0x0B71
-/*      GL_LIGHT0 */
-/*      GL_LIGHT1 */
-/*      GL_LIGHT2 */
-/*      GL_LIGHT3 */
-/*      GL_LIGHT4 */
-/*      GL_LIGHT5 */
-/*      GL_LIGHT6 */
-/*      GL_LIGHT7 */
-#define GL_POINT_SMOOTH                   0x0B10
-#define GL_LINE_SMOOTH                    0x0B20
-#define GL_SCISSOR_TEST                   0x0C11
-#define GL_COLOR_MATERIAL                 0x0B57
-#define GL_NORMALIZE                      0x0BA1
-#define GL_RESCALE_NORMAL                 0x803A
-#define GL_POLYGON_OFFSET_FILL            0x8037
-#define GL_VERTEX_ARRAY                   0x8074
-#define GL_NORMAL_ARRAY                   0x8075
-#define GL_COLOR_ARRAY                    0x8076
-#define GL_TEXTURE_COORD_ARRAY            0x8078
-#define GL_MULTISAMPLE                    0x809D
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_ALPHA_TO_ONE            0x809F
-#define GL_SAMPLE_COVERAGE                0x80A0
-
-/* ErrorCode */
-#define GL_NO_ERROR                       0
-#define GL_INVALID_ENUM                   0x0500
-#define GL_INVALID_VALUE                  0x0501
-#define GL_INVALID_OPERATION              0x0502
-#define GL_STACK_OVERFLOW                 0x0503
-#define GL_STACK_UNDERFLOW                0x0504
-#define GL_OUT_OF_MEMORY                  0x0505
-
-/* FogMode */
-/*      GL_LINEAR */
-#define GL_EXP                            0x0800
-#define GL_EXP2                           0x0801
-
-/* FogParameter */
-#define GL_FOG_DENSITY                    0x0B62
-#define GL_FOG_START                      0x0B63
-#define GL_FOG_END                        0x0B64
-#define GL_FOG_MODE                       0x0B65
-#define GL_FOG_COLOR                      0x0B66
-
-/* FrontFaceDirection */
-#define GL_CW                             0x0900
-#define GL_CCW                            0x0901
-
-/* GetPName */
-#define GL_CURRENT_COLOR                  0x0B00
-#define GL_CURRENT_NORMAL                 0x0B02
-#define GL_CURRENT_TEXTURE_COORDS         0x0B03
-#define GL_POINT_SIZE                     0x0B11
-#define GL_POINT_SIZE_MIN                 0x8126
-#define GL_POINT_SIZE_MAX                 0x8127
-#define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
-#define GL_POINT_DISTANCE_ATTENUATION     0x8129
-#define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
-#define GL_LINE_WIDTH                     0x0B21
-#define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_CULL_FACE_MODE                 0x0B45
-#define GL_FRONT_FACE                     0x0B46
-#define GL_SHADE_MODEL                    0x0B54
-#define GL_DEPTH_RANGE                    0x0B70
-#define GL_DEPTH_WRITEMASK                0x0B72
-#define GL_DEPTH_CLEAR_VALUE              0x0B73
-#define GL_DEPTH_FUNC                     0x0B74
-#define GL_STENCIL_CLEAR_VALUE            0x0B91
-#define GL_STENCIL_FUNC                   0x0B92
-#define GL_STENCIL_VALUE_MASK             0x0B93
-#define GL_STENCIL_FAIL                   0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
-#define GL_STENCIL_REF                    0x0B97
-#define GL_STENCIL_WRITEMASK              0x0B98
-#define GL_MATRIX_MODE                    0x0BA0
-#define GL_VIEWPORT                       0x0BA2
-#define GL_MODELVIEW_STACK_DEPTH          0x0BA3
-#define GL_PROJECTION_STACK_DEPTH         0x0BA4
-#define GL_TEXTURE_STACK_DEPTH            0x0BA5
-#define GL_MODELVIEW_MATRIX               0x0BA6
-#define GL_PROJECTION_MATRIX              0x0BA7
-#define GL_TEXTURE_MATRIX                 0x0BA8
-#define GL_ALPHA_TEST_FUNC                0x0BC1
-#define GL_ALPHA_TEST_REF                 0x0BC2
-#define GL_BLEND_DST                      0x0BE0
-#define GL_BLEND_SRC                      0x0BE1
-#define GL_LOGIC_OP_MODE                  0x0BF0
-#define GL_SCISSOR_BOX                    0x0C10
-#define GL_SCISSOR_TEST                   0x0C11
-#define GL_COLOR_CLEAR_VALUE              0x0C22
-#define GL_COLOR_WRITEMASK                0x0C23
-#define GL_UNPACK_ALIGNMENT               0x0CF5
-#define GL_PACK_ALIGNMENT                 0x0D05
-#define GL_MAX_LIGHTS                     0x0D31
-#define GL_MAX_CLIP_PLANES                0x0D32
-#define GL_MAX_TEXTURE_SIZE               0x0D33
-#define GL_MAX_MODELVIEW_STACK_DEPTH      0x0D36
-#define GL_MAX_PROJECTION_STACK_DEPTH     0x0D38
-#define GL_MAX_TEXTURE_STACK_DEPTH        0x0D39
-#define GL_MAX_VIEWPORT_DIMS              0x0D3A
-#define GL_MAX_TEXTURE_UNITS              0x84E2
-#define GL_SUBPIXEL_BITS                  0x0D50
-#define GL_RED_BITS                       0x0D52
-#define GL_GREEN_BITS                     0x0D53
-#define GL_BLUE_BITS                      0x0D54
-#define GL_ALPHA_BITS                     0x0D55
-#define GL_DEPTH_BITS                     0x0D56
-#define GL_STENCIL_BITS                   0x0D57
-#define GL_POLYGON_OFFSET_UNITS           0x2A00
-#define GL_POLYGON_OFFSET_FILL            0x8037
-#define GL_POLYGON_OFFSET_FACTOR          0x8038
-#define GL_TEXTURE_BINDING_2D             0x8069
-#define GL_VERTEX_ARRAY_SIZE              0x807A
-#define GL_VERTEX_ARRAY_TYPE              0x807B
-#define GL_VERTEX_ARRAY_STRIDE            0x807C
-#define GL_NORMAL_ARRAY_TYPE              0x807E
-#define GL_NORMAL_ARRAY_STRIDE            0x807F
-#define GL_COLOR_ARRAY_SIZE               0x8081
-#define GL_COLOR_ARRAY_TYPE               0x8082
-#define GL_COLOR_ARRAY_STRIDE             0x8083
-#define GL_TEXTURE_COORD_ARRAY_SIZE       0x8088
-#define GL_TEXTURE_COORD_ARRAY_TYPE       0x8089
-#define GL_TEXTURE_COORD_ARRAY_STRIDE     0x808A
-#define GL_VERTEX_ARRAY_POINTER           0x808E
-#define GL_NORMAL_ARRAY_POINTER           0x808F
-#define GL_COLOR_ARRAY_POINTER            0x8090
-#define GL_TEXTURE_COORD_ARRAY_POINTER    0x8092
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-
-/* GetTextureParameter */
-/*      GL_TEXTURE_MAG_FILTER */
-/*      GL_TEXTURE_MIN_FILTER */
-/*      GL_TEXTURE_WRAP_S */
-/*      GL_TEXTURE_WRAP_T */
-
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-
-/* HintMode */
-#define GL_DONT_CARE                      0x1100
-#define GL_FASTEST                        0x1101
-#define GL_NICEST                         0x1102
-
-/* HintTarget */
-#define GL_PERSPECTIVE_CORRECTION_HINT    0x0C50
-#define GL_POINT_SMOOTH_HINT              0x0C51
-#define GL_LINE_SMOOTH_HINT               0x0C52
-#define GL_FOG_HINT                       0x0C54
-#define GL_GENERATE_MIPMAP_HINT           0x8192
-
-/* LightModelParameter */
-#define GL_LIGHT_MODEL_AMBIENT            0x0B53
-#define GL_LIGHT_MODEL_TWO_SIDE           0x0B52
-
-/* LightParameter */
-#define GL_AMBIENT                        0x1200
-#define GL_DIFFUSE                        0x1201
-#define GL_SPECULAR                       0x1202
-#define GL_POSITION                       0x1203
-#define GL_SPOT_DIRECTION                 0x1204
-#define GL_SPOT_EXPONENT                  0x1205
-#define GL_SPOT_CUTOFF                    0x1206
-#define GL_CONSTANT_ATTENUATION           0x1207
-#define GL_LINEAR_ATTENUATION             0x1208
-#define GL_QUADRATIC_ATTENUATION          0x1209
-
-/* DataType */
-#define GL_BYTE                           0x1400
-#define GL_UNSIGNED_BYTE                  0x1401
-#define GL_SHORT                          0x1402
-#define GL_UNSIGNED_SHORT                 0x1403
-#define GL_FLOAT                          0x1406
-#define GL_FIXED                          0x140C
-
-/* LogicOp */
-#define GL_CLEAR                          0x1500
-#define GL_AND                            0x1501
-#define GL_AND_REVERSE                    0x1502
-#define GL_COPY                           0x1503
-#define GL_AND_INVERTED                   0x1504
-#define GL_NOOP                           0x1505
-#define GL_XOR                            0x1506
-#define GL_OR                             0x1507
-#define GL_NOR                            0x1508
-#define GL_EQUIV                          0x1509
-#define GL_INVERT                         0x150A
-#define GL_OR_REVERSE                     0x150B
-#define GL_COPY_INVERTED                  0x150C
-#define GL_OR_INVERTED                    0x150D
-#define GL_NAND                           0x150E
-#define GL_SET                            0x150F
-
-/* MaterialFace */
-/*      GL_FRONT_AND_BACK */
-
-/* MaterialParameter */
-#define GL_EMISSION                       0x1600
-#define GL_SHININESS                      0x1601
-#define GL_AMBIENT_AND_DIFFUSE            0x1602
-/*      GL_AMBIENT */
-/*      GL_DIFFUSE */
-/*      GL_SPECULAR */
-
-/* MatrixMode */
-#define GL_MODELVIEW                      0x1700
-#define GL_PROJECTION                     0x1701
-#define GL_TEXTURE                        0x1702
-
-/* NormalPointerType */
-/*      GL_BYTE */
-/*      GL_SHORT */
-/*      GL_FLOAT */
-/*      GL_FIXED */
-
-/* PixelFormat */
-#define GL_ALPHA                          0x1906
-#define GL_RGB                            0x1907
-#define GL_RGBA                           0x1908
-#define GL_LUMINANCE                      0x1909
-#define GL_LUMINANCE_ALPHA                0x190A
-
-/* PixelStoreParameter */
-#define GL_UNPACK_ALIGNMENT               0x0CF5
-#define GL_PACK_ALIGNMENT                 0x0D05
-
-/* PixelType */
-/*      GL_UNSIGNED_BYTE */
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-
-/* ShadingModel */
-#define GL_FLAT                           0x1D00
-#define GL_SMOOTH                         0x1D01
-
-/* StencilFunction */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* StencilOp */
-/*      GL_ZERO */
-#define GL_KEEP                           0x1E00
-#define GL_REPLACE                        0x1E01
-#define GL_INCR                           0x1E02
-#define GL_DECR                           0x1E03
-/*      GL_INVERT */
-
-/* StringName */
-#define GL_VENDOR                         0x1F00
-#define GL_RENDERER                       0x1F01
-#define GL_VERSION                        0x1F02
-#define GL_EXTENSIONS                     0x1F03
-
-/* TexCoordPointerType */
-/*      GL_SHORT */
-/*      GL_FLOAT */
-/*      GL_FIXED */
-/*      GL_BYTE */
-
-/* TextureEnvMode */
-#define GL_MODULATE                       0x2100
-#define GL_DECAL                          0x2101
-/*      GL_BLEND */
-#define GL_ADD                            0x0104
-/*      GL_REPLACE */
-
-/* TextureEnvParameter */
-#define GL_TEXTURE_ENV_MODE               0x2200
-#define GL_TEXTURE_ENV_COLOR              0x2201
-
-/* TextureEnvTarget */
-#define GL_TEXTURE_ENV                    0x2300
-
-/* TextureMagFilter */
-#define GL_NEAREST                        0x2600
-#define GL_LINEAR                         0x2601
-
-/* TextureMinFilter */
-/*      GL_NEAREST */
-/*      GL_LINEAR */
-#define GL_NEAREST_MIPMAP_NEAREST         0x2700
-#define GL_LINEAR_MIPMAP_NEAREST          0x2701
-#define GL_NEAREST_MIPMAP_LINEAR          0x2702
-#define GL_LINEAR_MIPMAP_LINEAR           0x2703
-
-/* TextureParameterName */
-#define GL_TEXTURE_MAG_FILTER             0x2800
-#define GL_TEXTURE_MIN_FILTER             0x2801
-#define GL_TEXTURE_WRAP_S                 0x2802
-#define GL_TEXTURE_WRAP_T                 0x2803
-#define GL_GENERATE_MIPMAP                0x8191
-
-/* TextureTarget */
-/*      GL_TEXTURE_2D */
-
-/* TextureUnit */
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-#define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
-
-/* TextureWrapMode */
-#define GL_REPEAT                         0x2901
-#define GL_CLAMP_TO_EDGE                  0x812F
-
-/* VertexPointerType */
-/*      GL_SHORT */
-/*      GL_FLOAT */
-/*      GL_FIXED */
-/*      GL_BYTE */
-
-/* LightName */
-#define GL_LIGHT0                         0x4000
-#define GL_LIGHT1                         0x4001
-#define GL_LIGHT2                         0x4002
-#define GL_LIGHT3                         0x4003
-#define GL_LIGHT4                         0x4004
-#define GL_LIGHT5                         0x4005
-#define GL_LIGHT6                         0x4006
-#define GL_LIGHT7                         0x4007
-
-/* Buffer Objects */
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-
-#define GL_ARRAY_BUFFER_BINDING               0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING       0x8895
-#define GL_VERTEX_ARRAY_BUFFER_BINDING        0x8896
-#define GL_NORMAL_ARRAY_BUFFER_BINDING        0x8897
-#define GL_COLOR_ARRAY_BUFFER_BINDING         0x8898
-#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
-
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_DYNAMIC_DRAW                   0x88E8
-
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-
-/* Texture combine + dot3 */
-#define GL_SUBTRACT                       0x84E7
-#define GL_COMBINE                        0x8570
-#define GL_COMBINE_RGB                    0x8571
-#define GL_COMBINE_ALPHA                  0x8572
-#define GL_RGB_SCALE                      0x8573
-#define GL_ADD_SIGNED                     0x8574
-#define GL_INTERPOLATE                    0x8575
-#define GL_CONSTANT                       0x8576
-#define GL_PRIMARY_COLOR                  0x8577
-#define GL_PREVIOUS                       0x8578
-#define GL_OPERAND0_RGB                   0x8590
-#define GL_OPERAND1_RGB                   0x8591
-#define GL_OPERAND2_RGB                   0x8592
-#define GL_OPERAND0_ALPHA                 0x8598
-#define GL_OPERAND1_ALPHA                 0x8599
-#define GL_OPERAND2_ALPHA                 0x859A
-
-#define GL_ALPHA_SCALE                    0x0D1C
-
-#define GL_SRC0_RGB                       0x8580
-#define GL_SRC1_RGB                       0x8581
-#define GL_SRC2_RGB                       0x8582
-#define GL_SRC0_ALPHA                     0x8588
-#define GL_SRC1_ALPHA                     0x8589
-#define GL_SRC2_ALPHA                     0x858A
-
-#define GL_DOT3_RGB                       0x86AE
-#define GL_DOT3_RGBA                      0x86AF
-
-/*------------------------------------------------------------------------*
- * required OES extension tokens
- *------------------------------------------------------------------------*/
-
-/* OES_read_format */
-#ifndef GL_OES_read_format
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES                   0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES                 0x8B9B
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_PALETTE4_RGB8_OES                                    0x8B90
-#define GL_PALETTE4_RGBA8_OES                                   0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
-#define GL_PALETTE4_RGBA4_OES                                   0x8B93
-#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
-#define GL_PALETTE8_RGB8_OES                                    0x8B95
-#define GL_PALETTE8_RGBA8_OES                                   0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
-#define GL_PALETTE8_RGBA4_OES                                   0x8B98
-#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
-#endif
-
-/* OES_point_size_array */
-#ifndef GL_OES_point_size_array
-#define GL_POINT_SIZE_ARRAY_OES                                 0x8B9C
-#define GL_POINT_SIZE_ARRAY_TYPE_OES                            0x898A
-#define GL_POINT_SIZE_ARRAY_STRIDE_OES                          0x898B
-#define GL_POINT_SIZE_ARRAY_POINTER_OES                         0x898C
-#define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES                  0x8B9F
-#endif
-
-/* GL_OES_point_sprite */
-#ifndef GL_OES_point_sprite
-#define GL_POINT_SPRITE_OES                                     0x8861
-#define GL_COORD_REPLACE_OES                                    0x8862
-#endif
-
-/*************************************************************/
-
-/* Available only in Common profile */
-GL_API void GL_APIENTRY glAlphaFunc (GLenum func, GLclampf ref);
-GL_API void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_API void GL_APIENTRY glClearDepthf (GLclampf depth);
-GL_API void GL_APIENTRY glClipPlanef (GLenum plane, const GLfloat *equation);
-GL_API void GL_APIENTRY glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-GL_API void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
-GL_API void GL_APIENTRY glFogf (GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glFogfv (GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glFrustumf (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-GL_API void GL_APIENTRY glGetClipPlanef (GLenum pname, GLfloat eqn[4]);
-GL_API void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *params);
-GL_API void GL_APIENTRY glGetLightfv (GLenum light, GLenum pname, GLfloat *params);
-GL_API void GL_APIENTRY glGetMaterialfv (GLenum face, GLenum pname, GLfloat *params);
-GL_API void GL_APIENTRY glGetTexEnvfv (GLenum env, GLenum pname, GLfloat *params);
-GL_API void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
-GL_API void GL_APIENTRY glLightModelf (GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glLightModelfv (GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glLightf (GLenum light, GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glLightfv (GLenum light, GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glLineWidth (GLfloat width);
-GL_API void GL_APIENTRY glLoadMatrixf (const GLfloat *m);
-GL_API void GL_APIENTRY glMaterialf (GLenum face, GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glMaterialfv (GLenum face, GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glMultMatrixf (const GLfloat *m);
-GL_API void GL_APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
-GL_API void GL_APIENTRY glNormal3f (GLfloat nx, GLfloat ny, GLfloat nz);
-GL_API void GL_APIENTRY glOrthof (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-GL_API void GL_APIENTRY glPointParameterf (GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glPointSize (GLfloat size);
-GL_API void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
-GL_API void GL_APIENTRY glRotatef (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-GL_API void GL_APIENTRY glScalef (GLfloat x, GLfloat y, GLfloat z);
-GL_API void GL_APIENTRY glTexEnvf (GLenum target, GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glTexEnvfv (GLenum target, GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glTranslatef (GLfloat x, GLfloat y, GLfloat z);
-
-/* Available in both Common and Common-Lite profiles */
-GL_API void GL_APIENTRY glActiveTexture (GLenum texture);
-GL_API void GL_APIENTRY glAlphaFuncx (GLenum func, GLclampx ref);
-GL_API void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GL_API void GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
-GL_API void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
-GL_API void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
-GL_API void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
-GL_API void GL_APIENTRY glClear (GLbitfield mask);
-GL_API void GL_APIENTRY glClearColorx (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
-GL_API void GL_APIENTRY glClearDepthx (GLclampx depth);
-GL_API void GL_APIENTRY glClearStencil (GLint s);
-GL_API void GL_APIENTRY glClientActiveTexture (GLenum texture);
-GL_API void GL_APIENTRY glClipPlanex (GLenum plane, const GLfixed *equation);
-GL_API void GL_APIENTRY glColor4ub (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-GL_API void GL_APIENTRY glColor4x (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GL_API void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-GL_API void GL_APIENTRY glColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-GL_API void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-GL_API void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
-GL_API void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GL_API void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_API void GL_APIENTRY glCullFace (GLenum mode);
-GL_API void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
-GL_API void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
-GL_API void GL_APIENTRY glDepthFunc (GLenum func);
-GL_API void GL_APIENTRY glDepthMask (GLboolean flag);
-GL_API void GL_APIENTRY glDepthRangex (GLclampx zNear, GLclampx zFar);
-GL_API void GL_APIENTRY glDisable (GLenum cap);
-GL_API void GL_APIENTRY glDisableClientState (GLenum array);
-GL_API void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
-GL_API void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
-GL_API void GL_APIENTRY glEnable (GLenum cap);
-GL_API void GL_APIENTRY glEnableClientState (GLenum array);
-GL_API void GL_APIENTRY glFinish (void);
-GL_API void GL_APIENTRY glFlush (void);
-GL_API void GL_APIENTRY glFogx (GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glFogxv (GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glFrontFace (GLenum mode);
-GL_API void GL_APIENTRY glFrustumx (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-GL_API void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *params);
-GL_API void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
-GL_API void GL_APIENTRY glGetClipPlanex (GLenum pname, GLfixed eqn[4]);
-GL_API void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
-GL_API void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures);
-GL_API GLenum GL_APIENTRY glGetError (void);
-GL_API void GL_APIENTRY glGetFixedv (GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *params);
-GL_API void GL_APIENTRY glGetLightxv (GLenum light, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetMaterialxv (GLenum face, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetPointerv (GLenum pname, GLvoid **params);
-GL_API const GLubyte * GL_APIENTRY glGetString (GLenum name);
-GL_API void GL_APIENTRY glGetTexEnviv (GLenum env, GLenum pname, GLint *params);
-GL_API void GL_APIENTRY glGetTexEnvxv (GLenum env, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
-GL_API void GL_APIENTRY glGetTexParameterxv (GLenum target, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glHint (GLenum target, GLenum mode);
-GL_API GLboolean GL_APIENTRY glIsBuffer (GLuint buffer);
-GL_API GLboolean GL_APIENTRY glIsEnabled (GLenum cap);
-GL_API GLboolean GL_APIENTRY glIsTexture (GLuint texture);
-GL_API void GL_APIENTRY glLightModelx (GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glLightModelxv (GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glLightx (GLenum light, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glLightxv (GLenum light, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glLineWidthx (GLfixed width);
-GL_API void GL_APIENTRY glLoadIdentity (void);
-GL_API void GL_APIENTRY glLoadMatrixx (const GLfixed *m);
-GL_API void GL_APIENTRY glLogicOp (GLenum opcode);
-GL_API void GL_APIENTRY glMaterialx (GLenum face, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glMaterialxv (GLenum face, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glMatrixMode (GLenum mode);
-GL_API void GL_APIENTRY glMultMatrixx (const GLfixed *m);
-GL_API void GL_APIENTRY glMultiTexCoord4x (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GL_API void GL_APIENTRY glNormal3x (GLfixed nx, GLfixed ny, GLfixed nz);
-GL_API void GL_APIENTRY glNormalPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
-GL_API void GL_APIENTRY glOrthox (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-GL_API void GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
-GL_API void GL_APIENTRY glPointParameterx (GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glPointParameterxv (GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glPointSizex (GLfixed size);
-GL_API void GL_APIENTRY glPolygonOffsetx (GLfixed factor, GLfixed units);
-GL_API void GL_APIENTRY glPopMatrix (void);
-GL_API void GL_APIENTRY glPushMatrix (void);
-GL_API void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
-GL_API void GL_APIENTRY glRotatex (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-GL_API void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
-GL_API void GL_APIENTRY glSampleCoveragex (GLclampx value, GLboolean invert);
-GL_API void GL_APIENTRY glScalex (GLfixed x, GLfixed y, GLfixed z);
-GL_API void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
-GL_API void GL_APIENTRY glShadeModel (GLenum mode);
-GL_API void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
-GL_API void GL_APIENTRY glStencilMask (GLuint mask);
-GL_API void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
-GL_API void GL_APIENTRY glTexCoordPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-GL_API void GL_APIENTRY glTexEnvi (GLenum target, GLenum pname, GLint param);
-GL_API void GL_APIENTRY glTexEnvx (GLenum target, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glTexEnviv (GLenum target, GLenum pname, const GLint *params);
-GL_API void GL_APIENTRY glTexEnvxv (GLenum target, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-GL_API void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
-GL_API void GL_APIENTRY glTexParameterx (GLenum target, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
-GL_API void GL_APIENTRY glTexParameterxv (GLenum target, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-GL_API void GL_APIENTRY glTranslatex (GLfixed x, GLfixed y, GLfixed z);
-GL_API void GL_APIENTRY glVertexPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-GL_API void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
-
-/*------------------------------------------------------------------------*
- * Required OES extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_OES_read_format */
-#ifndef GL_OES_read_format
-#define GL_OES_read_format 1
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#endif
-
-/* GL_OES_point_size_array */
-#ifndef GL_OES_point_size_array
-#define GL_OES_point_size_array 1
-GL_API void GL_APIENTRY glPointSizePointerOES (GLenum type, GLsizei stride, const GLvoid *pointer);
-#endif
-
-/* GL_OES_point_sprite */
-#ifndef GL_OES_point_sprite
-#define GL_OES_point_sprite 1
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl_h_ */
-
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLES/glext.h b/tools/emulator/opengl/host/libs/Translator/include/GLES/glext.h
deleted file mode 100644
index 130e4b0..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLES/glext.h
+++ /dev/null
@@ -1,1073 +0,0 @@
-#ifndef __glext_h_
-#define __glext_h_
-
-/* $Revision: 13240 $ on $Date:: 2010-12-17 15:16:00 -0800 #$ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-#ifndef GL_APIENTRYP
-#   define GL_APIENTRYP GL_APIENTRY*
-#endif
-
-/*------------------------------------------------------------------------*
- * OES extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_OES_blend_equation_separate */
-#ifndef GL_OES_blend_equation_separate
-/* BLEND_EQUATION_RGB_OES same as BLEND_EQUATION_OES */
-#define GL_BLEND_EQUATION_RGB_OES                               0x8009
-#define GL_BLEND_EQUATION_ALPHA_OES                             0x883D
-#endif
-
-/* GL_OES_blend_func_separate */
-#ifndef GL_OES_blend_func_separate
-#define GL_BLEND_DST_RGB_OES                                    0x80C8
-#define GL_BLEND_SRC_RGB_OES                                    0x80C9
-#define GL_BLEND_DST_ALPHA_OES                                  0x80CA
-#define GL_BLEND_SRC_ALPHA_OES                                  0x80CB
-#endif
-
-/* GL_OES_blend_subtract */
-#ifndef GL_OES_blend_subtract
-#define GL_BLEND_EQUATION_OES                                   0x8009
-#define GL_FUNC_ADD_OES                                         0x8006
-#define GL_FUNC_SUBTRACT_OES                                    0x800A
-#define GL_FUNC_REVERSE_SUBTRACT_OES                            0x800B
-#endif
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_ETC1_RGB8_OES                                        0x8D64
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_DEPTH_COMPONENT24_OES                                0x81A6
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#endif
-
-/* GL_OES_draw_texture */
-#ifndef GL_OES_draw_texture
-#define GL_TEXTURE_CROP_RECT_OES                                0x8B9D
-#endif
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-/* GLeglImageOES defined in GL_OES_EGL_image already. */
-#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
-#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
-#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_UNSIGNED_INT                                         0x1405
-#endif
-
-/* GL_OES_fixed_point */
-#ifndef GL_OES_fixed_point
-#define GL_FIXED_OES                                            0x140C
-#endif
-
-/* GL_OES_framebuffer_object */
-#ifndef GL_OES_framebuffer_object
-#define GL_NONE_OES                                             0
-#define GL_FRAMEBUFFER_OES                                      0x8D40
-#define GL_RENDERBUFFER_OES                                     0x8D41
-#define GL_RGBA4_OES                                            0x8056
-#define GL_RGB5_A1_OES                                          0x8057
-#define GL_RGB565_OES                                           0x8D62
-#define GL_DEPTH_COMPONENT16_OES                                0x81A5
-#define GL_RENDERBUFFER_WIDTH_OES                               0x8D42
-#define GL_RENDERBUFFER_HEIGHT_OES                              0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT_OES                     0x8D44
-#define GL_RENDERBUFFER_RED_SIZE_OES                            0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE_OES                          0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE_OES                           0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE_OES                          0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE_OES                          0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE_OES                        0x8D55
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES               0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES               0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES             0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES     0x8CD3
-#define GL_COLOR_ATTACHMENT0_OES                                0x8CE0
-#define GL_DEPTH_ATTACHMENT_OES                                 0x8D00
-#define GL_STENCIL_ATTACHMENT_OES                               0x8D20
-#define GL_FRAMEBUFFER_COMPLETE_OES                             0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES                0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES        0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES                0x8CD9
-#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES                   0x8CDA
-#define GL_FRAMEBUFFER_UNSUPPORTED_OES                          0x8CDD
-#define GL_FRAMEBUFFER_BINDING_OES                              0x8CA6
-#define GL_RENDERBUFFER_BINDING_OES                             0x8CA7
-#define GL_MAX_RENDERBUFFER_SIZE_OES                            0x84E8
-#define GL_INVALID_FRAMEBUFFER_OPERATION_OES                    0x0506
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_WRITE_ONLY_OES                                       0x88B9
-#define GL_BUFFER_ACCESS_OES                                    0x88BB
-#define GL_BUFFER_MAPPED_OES                                    0x88BC
-#define GL_BUFFER_MAP_POINTER_OES                               0x88BD
-#endif
-
-/* GL_OES_matrix_get */
-#ifndef GL_OES_matrix_get
-#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES               0x898D
-#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES              0x898E
-#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES                 0x898F
-#endif
-
-/* GL_OES_matrix_palette */
-#ifndef GL_OES_matrix_palette
-#define GL_MAX_VERTEX_UNITS_OES                                 0x86A4
-#define GL_MAX_PALETTE_MATRICES_OES                             0x8842
-#define GL_MATRIX_PALETTE_OES                                   0x8840
-#define GL_MATRIX_INDEX_ARRAY_OES                               0x8844
-#define GL_WEIGHT_ARRAY_OES                                     0x86AD
-#define GL_CURRENT_PALETTE_MATRIX_OES                           0x8843
-#define GL_MATRIX_INDEX_ARRAY_SIZE_OES                          0x8846
-#define GL_MATRIX_INDEX_ARRAY_TYPE_OES                          0x8847
-#define GL_MATRIX_INDEX_ARRAY_STRIDE_OES                        0x8848
-#define GL_MATRIX_INDEX_ARRAY_POINTER_OES                       0x8849
-#define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES                0x8B9E
-#define GL_WEIGHT_ARRAY_SIZE_OES                                0x86AB
-#define GL_WEIGHT_ARRAY_TYPE_OES                                0x86A9
-#define GL_WEIGHT_ARRAY_STRIDE_OES                              0x86AA
-#define GL_WEIGHT_ARRAY_POINTER_OES                             0x86AC
-#define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES                      0x889E
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_RGB8_OES                                             0x8051
-#define GL_RGBA8_OES                                            0x8058
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_STENCIL_INDEX1_OES                                   0x8D46
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_STENCIL_INDEX4_OES                                   0x8D47
-#endif
-
-/* GL_OES_stencil8 */
-#ifndef GL_OES_stencil8
-#define GL_STENCIL_INDEX8_OES                                   0x8D48
-#endif
-
-/* GL_OES_stencil_wrap */
-#ifndef GL_OES_stencil_wrap
-#define GL_INCR_WRAP_OES                                        0x8507
-#define GL_DECR_WRAP_OES                                        0x8508
-#endif
-
-/* GL_OES_texture_cube_map */
-#ifndef GL_OES_texture_cube_map
-#define GL_NORMAL_MAP_OES                                       0x8511
-#define GL_REFLECTION_MAP_OES                                   0x8512
-#define GL_TEXTURE_CUBE_MAP_OES                                 0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP_OES                         0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES                      0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES                      0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES                      0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES                      0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES                      0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES                      0x851A
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES                        0x851C
-#define GL_TEXTURE_GEN_MODE_OES                                 0x2500
-#define GL_TEXTURE_GEN_STR_OES                                  0x8D60
-#endif
-
-/* GL_OES_texture_mirrored_repeat */
-#ifndef GL_OES_texture_mirrored_repeat
-#define GL_MIRRORED_REPEAT_OES                                  0x8370
-#endif
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_3DC_X_AMD                                            0x87F9
-#define GL_3DC_XY_AMD                                           0x87FA
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_ATC_RGB_AMD                                          0x8C92
-#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93
-#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_texture_2D_limited_npot */
-/* No new tokens introduced by this extension. */
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56
-#define GL_MAX_SAMPLES_APPLE                                    0x8D57
-#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_rgba8 */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * EXT extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_MIN_EXT                                              0x8007
-#define GL_MAX_EXT                                              0x8008
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_COLOR_EXT                                            0x1800
-#define GL_DEPTH_EXT                                            0x1801
-#define GL_STENCIL_EXT                                          0x1802
-#endif
-
-/* GL_EXT_multi_draw_arrays */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_BGRA_EXT                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_EXT_texture_lod_bias */
-#ifndef GL_EXT_texture_lod_bias
-#define GL_MAX_TEXTURE_LOD_BIAS_EXT                             0x84FD
-#define GL_TEXTURE_FILTER_CONTROL_EXT                           0x8500
-#define GL_TEXTURE_LOD_BIAS_EXT                                 0x8501
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_BGRA_IMG                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00
-#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03
-#endif
-
-/* GL_IMG_texture_env_enhanced_fixed_function */
-#ifndef GL_IMG_texture_env_enhanced_fixed_function
-#define GL_MODULATE_COLOR_IMG                                   0x8C04
-#define GL_RECIP_ADD_SIGNED_ALPHA_IMG                           0x8C05
-#define GL_TEXTURE_ALPHA_MODULATE_IMG                           0x8C06
-#define GL_FACTOR_ALPHA_MODULATE_IMG                            0x8C07
-#define GL_FRAGMENT_ALPHA_MODULATE_IMG                          0x8C08
-#define GL_ADD_BLEND_IMG                                        0x8C09
-#define GL_DOT3_RGBA_IMG                                        0x86AF
-#endif
-
-/* GL_IMG_user_clip_plane */
-#ifndef GL_IMG_user_clip_plane
-#define GL_CLIP_PLANE0_IMG                                      0x3000
-#define GL_CLIP_PLANE1_IMG                                      0x3001
-#define GL_CLIP_PLANE2_IMG                                      0x3002
-#define GL_CLIP_PLANE3_IMG                                      0x3003
-#define GL_CLIP_PLANE4_IMG                                      0x3004
-#define GL_CLIP_PLANE5_IMG                                      0x3005
-#define GL_MAX_CLIP_PLANES_IMG                                  0x0D32
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134
-#define GL_MAX_SAMPLES_IMG                                      0x9135
-#define GL_TEXTURE_SAMPLES_IMG                                  0x9136
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_ALL_COMPLETED_NV                                     0x84F2
-#define GL_FENCE_STATUS_NV                                      0x84F3
-#define GL_FENCE_CONDITION_NV                                   0x84F4
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_driver_control */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2
-#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3
-#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4
-#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5
-#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6
-#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7
-#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8
-#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9
-#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA
-#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB
-#define GL_STATE_RESTORE                                        0x8BDC
-#endif
-
-/* GL_QCOM_extended_get2 */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_WRITEONLY_RENDERING_QCOM                             0x8823
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001
-#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002
-#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004
-#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008
-#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010
-#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020
-#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040
-#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080
-#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100
-#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200
-#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400
-#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800
-#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000
-#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000
-#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000
-#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000
-#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000
-#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000
-#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000
-#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000
-#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000
-#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000
-#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000
-#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000
-#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000
-#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000
-#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000
-#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000
-#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000
-#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000
-#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000
-#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000
-#endif
-
-/*------------------------------------------------------------------------*
- * End of extension tokens, start of corresponding extension functions
- *------------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------------*
- * OES extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_OES_blend_equation_separate */
-#ifndef GL_OES_blend_equation_separate
-#define GL_OES_blend_equation_separate 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glBlendEquationSeparateOES (GLenum modeRGB, GLenum modeAlpha);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEOESPROC) (GLenum modeRGB, GLenum modeAlpha);
-#endif
-
-/* GL_OES_blend_func_separate */
-#ifndef GL_OES_blend_func_separate
-#define GL_OES_blend_func_separate 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glBlendFuncSeparateOES (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEOESPROC) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-#endif
-
-/* GL_OES_blend_subtract */
-#ifndef GL_OES_blend_subtract
-#define GL_OES_blend_subtract 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glBlendEquationOES (GLenum mode);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONOESPROC) (GLenum mode);
-#endif
-
-/* GL_OES_byte_coordinates */
-#ifndef GL_OES_byte_coordinates
-#define GL_OES_byte_coordinates 1
-#endif
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_OES_compressed_ETC1_RGB8_texture 1
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_OES_depth24 1
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_OES_depth32 1
-#endif
-
-/* GL_OES_draw_texture */
-#ifndef GL_OES_draw_texture
-#define GL_OES_draw_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glDrawTexsOES (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
-GL_API void GL_APIENTRY glDrawTexiOES (GLint x, GLint y, GLint z, GLint width, GLint height);
-GL_API void GL_APIENTRY glDrawTexxOES (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
-GL_API void GL_APIENTRY glDrawTexsvOES (const GLshort *coords);
-GL_API void GL_APIENTRY glDrawTexivOES (const GLint *coords);
-GL_API void GL_APIENTRY glDrawTexxvOES (const GLfixed *coords);
-GL_API void GL_APIENTRY glDrawTexfOES (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
-GL_API void GL_APIENTRY glDrawTexfvOES (const GLfloat *coords);
-#endif
-typedef void (GL_APIENTRYP PFNGLDRAWTEXSOESPROC) (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXIOESPROC) (GLint x, GLint y, GLint z, GLint width, GLint height);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXXOESPROC) (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXSVOESPROC) (const GLshort *coords);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXIVOESPROC) (const GLint *coords);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXXVOESPROC) (const GLfixed *coords);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXFOESPROC) (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
-typedef void (GL_APIENTRYP PFNGLDRAWTEXFVOESPROC) (const GLfloat *coords);
-#endif
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GL_API void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-#define GL_OES_EGL_image_external 1
-/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_OES_element_index_uint 1
-#endif
-
-/* GL_OES_extended_matrix_palette */
-#ifndef GL_OES_extended_matrix_palette
-#define GL_OES_extended_matrix_palette 1
-#endif
-
-/* GL_OES_fbo_render_mipmap */
-#ifndef GL_OES_fbo_render_mipmap
-#define GL_OES_fbo_render_mipmap 1
-#endif
-
-/* GL_OES_fixed_point */
-#ifndef GL_OES_fixed_point
-#define GL_OES_fixed_point 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glAlphaFuncxOES (GLenum func, GLclampx ref);
-GL_API void GL_APIENTRY glClearColorxOES (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
-GL_API void GL_APIENTRY glClearDepthxOES (GLclampx depth);
-GL_API void GL_APIENTRY glClipPlanexOES (GLenum plane, const GLfixed *equation);
-GL_API void GL_APIENTRY glColor4xOES (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-GL_API void GL_APIENTRY glDepthRangexOES (GLclampx zNear, GLclampx zFar);
-GL_API void GL_APIENTRY glFogxOES (GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glFogxvOES (GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glFrustumxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-GL_API void GL_APIENTRY glGetClipPlanexOES (GLenum pname, GLfixed eqn[4]);
-GL_API void GL_APIENTRY glGetFixedvOES (GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetLightxvOES (GLenum light, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetMaterialxvOES (GLenum face, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetTexEnvxvOES (GLenum env, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glGetTexParameterxvOES (GLenum target, GLenum pname, GLfixed *params);
-GL_API void GL_APIENTRY glLightModelxOES (GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glLightModelxvOES (GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glLightxOES (GLenum light, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glLightxvOES (GLenum light, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glLineWidthxOES (GLfixed width);
-GL_API void GL_APIENTRY glLoadMatrixxOES (const GLfixed *m);
-GL_API void GL_APIENTRY glMaterialxOES (GLenum face, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glMaterialxvOES (GLenum face, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glMultMatrixxOES (const GLfixed *m);
-GL_API void GL_APIENTRY glMultiTexCoord4xOES (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-GL_API void GL_APIENTRY glNormal3xOES (GLfixed nx, GLfixed ny, GLfixed nz);
-GL_API void GL_APIENTRY glOrthoxOES (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-GL_API void GL_APIENTRY glPointParameterxOES (GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glPointParameterxvOES (GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glPointSizexOES (GLfixed size);
-GL_API void GL_APIENTRY glPolygonOffsetxOES (GLfixed factor, GLfixed units);
-GL_API void GL_APIENTRY glRotatexOES (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-GL_API void GL_APIENTRY glSampleCoveragexOES (GLclampx value, GLboolean invert);
-GL_API void GL_APIENTRY glScalexOES (GLfixed x, GLfixed y, GLfixed z);
-GL_API void GL_APIENTRY glTexEnvxOES (GLenum target, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glTexEnvxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glTexParameterxOES (GLenum target, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glTexParameterxvOES (GLenum target, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glTranslatexOES (GLfixed x, GLfixed y, GLfixed z);
-#endif
-typedef void (GL_APIENTRYP PFNGLALPHAFUNCXOESPROC) (GLenum func, GLclampx ref);
-typedef void (GL_APIENTRYP PFNGLCLEARCOLORXOESPROC) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
-typedef void (GL_APIENTRYP PFNGLCLEARDEPTHXOESPROC) (GLclampx depth);
-typedef void (GL_APIENTRYP PFNGLCLIPPLANEXOESPROC) (GLenum plane, const GLfixed *equation);
-typedef void (GL_APIENTRYP PFNGLCOLOR4XOESPROC) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
-typedef void (GL_APIENTRYP PFNGLDEPTHRANGEXOESPROC) (GLclampx zNear, GLclampx zFar);
-typedef void (GL_APIENTRYP PFNGLFOGXOESPROC) (GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLFOGXVOESPROC) (GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLFRUSTUMXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEXOESPROC) (GLenum pname, GLfixed eqn[4]);
-typedef void (GL_APIENTRYP PFNGLGETFIXEDVOESPROC) (GLenum pname, GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLGETLIGHTXVOESPROC) (GLenum light, GLenum pname, GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLGETMATERIALXVOESPROC) (GLenum face, GLenum pname, GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLGETTEXENVXVOESPROC) (GLenum env, GLenum pname, GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLLIGHTMODELXOESPROC) (GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLLIGHTMODELXVOESPROC) (GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLLIGHTXOESPROC) (GLenum light, GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLLIGHTXVOESPROC) (GLenum light, GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLLINEWIDTHXOESPROC) (GLfixed width);
-typedef void (GL_APIENTRYP PFNGLLOADMATRIXXOESPROC) (const GLfixed *m);
-typedef void (GL_APIENTRYP PFNGLMATERIALXOESPROC) (GLenum face, GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLMATERIALXVOESPROC) (GLenum face, GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLMULTMATRIXXOESPROC) (const GLfixed *m);
-typedef void (GL_APIENTRYP PFNGLMULTITEXCOORD4XOESPROC) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
-typedef void (GL_APIENTRYP PFNGLNORMAL3XOESPROC) (GLfixed nx, GLfixed ny, GLfixed nz);
-typedef void (GL_APIENTRYP PFNGLORTHOXOESPROC) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
-typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXOESPROC) (GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLPOINTPARAMETERXVOESPROC) (GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLPOINTSIZEXOESPROC) (GLfixed size);
-typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETXOESPROC) (GLfixed factor, GLfixed units);
-typedef void (GL_APIENTRYP PFNGLROTATEXOESPROC) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
-typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEXOESPROC) (GLclampx value, GLboolean invert);
-typedef void (GL_APIENTRYP PFNGLSCALEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-typedef void (GL_APIENTRYP PFNGLTEXENVXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLTEXENVXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXOESPROC) (GLenum target, GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLTEXPARAMETERXVOESPROC) (GLenum target, GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLTRANSLATEXOESPROC) (GLfixed x, GLfixed y, GLfixed z);
-#endif
-
-/* GL_OES_framebuffer_object */
-#ifndef GL_OES_framebuffer_object
-#define GL_OES_framebuffer_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API GLboolean GL_APIENTRY glIsRenderbufferOES (GLuint renderbuffer);
-GL_API void GL_APIENTRY glBindRenderbufferOES (GLenum target, GLuint renderbuffer);
-GL_API void GL_APIENTRY glDeleteRenderbuffersOES (GLsizei n, const GLuint* renderbuffers);
-GL_API void GL_APIENTRY glGenRenderbuffersOES (GLsizei n, GLuint* renderbuffers);
-GL_API void GL_APIENTRY glRenderbufferStorageOES (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GL_API void GL_APIENTRY glGetRenderbufferParameterivOES (GLenum target, GLenum pname, GLint* params);
-GL_API GLboolean GL_APIENTRY glIsFramebufferOES (GLuint framebuffer);
-GL_API void GL_APIENTRY glBindFramebufferOES (GLenum target, GLuint framebuffer);
-GL_API void GL_APIENTRY glDeleteFramebuffersOES (GLsizei n, const GLuint* framebuffers);
-GL_API void GL_APIENTRY glGenFramebuffersOES (GLsizei n, GLuint* framebuffers);
-GL_API GLenum GL_APIENTRY glCheckFramebufferStatusOES (GLenum target);
-GL_API void GL_APIENTRY glFramebufferRenderbufferOES (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GL_API void GL_APIENTRY glFramebufferTexture2DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GL_API void GL_APIENTRY glGetFramebufferAttachmentParameterivOES (GLenum target, GLenum attachment, GLenum pname, GLint* params);
-GL_API void GL_APIENTRY glGenerateMipmapOES (GLenum target);
-#endif
-typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer);
-typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer);
-typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers);
-typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers);
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params);
-typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer);
-typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer);
-typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers);
-typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers);
-typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
-typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPOESPROC) (GLenum target);
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_OES_mapbuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
-GL_API GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
-GL_API void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid ** params);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
-typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid ** params);
-#endif
-
-/* GL_OES_matrix_get */
-#ifndef GL_OES_matrix_get
-#define GL_OES_matrix_get 1
-#endif
-
-/* GL_OES_matrix_palette */
-#ifndef GL_OES_matrix_palette
-#define GL_OES_matrix_palette 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glCurrentPaletteMatrixOES (GLuint matrixpaletteindex);
-GL_API void GL_APIENTRY glLoadPaletteFromModelViewMatrixOES (void);
-GL_API void GL_APIENTRY glMatrixIndexPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-GL_API void GL_APIENTRY glWeightPointerOES (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-#endif
-typedef void (GL_APIENTRYP PFNGLCURRENTPALETTEMATRIXOESPROC) (GLuint matrixpaletteindex);
-typedef void (GL_APIENTRYP PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void);
-typedef void (GL_APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-typedef void (GL_APIENTRYP PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_OES_packed_depth_stencil 1
-#endif
-
-/* GL_OES_query_matrix */
-#ifndef GL_OES_query_matrix
-#define GL_OES_query_matrix 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API GLbitfield GL_APIENTRY glQueryMatrixxOES (GLfixed mantissa[16], GLint exponent[16]);
-#endif
-typedef GLbitfield (GL_APIENTRYP PFNGLQUERYMATRIXXOESPROC) (GLfixed mantissa[16], GLint exponent[16]);
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_OES_rgb8_rgba8 1
-#endif
-
-/* GL_OES_single_precision */
-#ifndef GL_OES_single_precision
-#define GL_OES_single_precision 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glDepthRangefOES (GLclampf zNear, GLclampf zFar);
-GL_API void GL_APIENTRY glFrustumfOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-GL_API void GL_APIENTRY glOrthofOES (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-GL_API void GL_APIENTRY glClipPlanefOES (GLenum plane, const GLfloat *equation);
-GL_API void GL_APIENTRY glGetClipPlanefOES (GLenum pname, GLfloat eqn[4]);
-GL_API void GL_APIENTRY glClearDepthfOES (GLclampf depth);
-#endif
-typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFOESPROC) (GLclampf zNear, GLclampf zFar);
-typedef void (GL_APIENTRYP PFNGLFRUSTUMFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-typedef void (GL_APIENTRYP PFNGLORTHOFOESPROC) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
-typedef void (GL_APIENTRYP PFNGLCLIPPLANEFOESPROC) (GLenum plane, const GLfloat *equation);
-typedef void (GL_APIENTRYP PFNGLGETCLIPPLANEFOESPROC) (GLenum pname, GLfloat eqn[4]);
-typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFOESPROC) (GLclampf depth);
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_OES_stencil1 1
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_OES_stencil4 1
-#endif
-
-/* GL_OES_stencil8 */
-#ifndef GL_OES_stencil8
-#define GL_OES_stencil8 1
-#endif
-
-/* GL_OES_stencil_wrap */
-#ifndef GL_OES_stencil_wrap
-#define GL_OES_stencil_wrap 1
-#endif
-
-/* GL_OES_texture_cube_map */
-#ifndef GL_OES_texture_cube_map
-#define GL_OES_texture_cube_map 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glTexGenfOES (GLenum coord, GLenum pname, GLfloat param);
-GL_API void GL_APIENTRY glTexGenfvOES (GLenum coord, GLenum pname, const GLfloat *params);
-GL_API void GL_APIENTRY glTexGeniOES (GLenum coord, GLenum pname, GLint param);
-GL_API void GL_APIENTRY glTexGenivOES (GLenum coord, GLenum pname, const GLint *params);
-GL_API void GL_APIENTRY glTexGenxOES (GLenum coord, GLenum pname, GLfixed param);
-GL_API void GL_APIENTRY glTexGenxvOES (GLenum coord, GLenum pname, const GLfixed *params);
-GL_API void GL_APIENTRY glGetTexGenfvOES (GLenum coord, GLenum pname, GLfloat *params);
-GL_API void GL_APIENTRY glGetTexGenivOES (GLenum coord, GLenum pname, GLint *params);
-GL_API void GL_APIENTRY glGetTexGenxvOES (GLenum coord, GLenum pname, GLfixed *params);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param);
-typedef void (GL_APIENTRYP PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat *params);
-typedef void (GL_APIENTRYP PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param);
-typedef void (GL_APIENTRYP PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint *params);
-typedef void (GL_APIENTRYP PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param);
-typedef void (GL_APIENTRYP PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params);
-typedef void (GL_APIENTRYP PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat *params);
-typedef void (GL_APIENTRYP PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params);
-#endif
-
-/* GL_OES_texture_env_crossbar */
-#ifndef GL_OES_texture_env_crossbar
-#define GL_OES_texture_env_crossbar 1
-#endif
-
-/* GL_OES_texture_mirrored_repeat */
-#ifndef GL_OES_texture_mirrored_repeat
-#define GL_OES_texture_mirrored_repeat 1
-#endif
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_OES_vertex_array_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glBindVertexArrayOES (GLuint array);
-GL_API void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
-GL_API void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
-GL_API GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
-#endif
-typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
-typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
-typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_AMD_compressed_3DC_texture 1
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_AMD_compressed_ATC_texture 1
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_texture_2D_limited_npot */
-#ifndef GL_APPLE_texture_2D_limited_npot
-#define GL_APPLE_texture_2D_limited_npot 1
-#endif
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_APPLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GL_API void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_APPLE_texture_format_BGRA8888 1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_APPLE_texture_max_level 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_rgba8 */
-#ifndef GL_ARM_rgba8
-#define GL_ARM_rgba8 1
-#endif
-
-/*------------------------------------------------------------------------*
- * EXT extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_EXT_discard_framebuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-
-/* GL_EXT_multi_draw_arrays */
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
-GL_API void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_EXT_read_format_bgra 1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_EXT_texture_format_BGRA8888 1
-#endif
-
-/* GL_EXT_texture_lod_bias */
-#ifndef GL_EXT_texture_lod_bias
-#define GL_EXT_texture_lod_bias 1
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_IMG_read_format 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_IMG_texture_compression_pvrtc 1
-#endif
-
-/* GL_IMG_texture_env_enhanced_fixed_function */
-#ifndef GL_IMG_texture_env_enhanced_fixed_function
-#define GL_IMG_texture_env_enhanced_fixed_function 1
-#endif
-
-/* GL_IMG_user_clip_plane */
-#ifndef GL_IMG_user_clip_plane
-#define GL_IMG_user_clip_plane 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glClipPlanefIMG (GLenum, const GLfloat *);
-GL_API void GL_APIENTRY glClipPlanexIMG (GLenum, const GLfixed *);
-#endif
-typedef void (GL_APIENTRYP PFNGLCLIPPLANEFIMGPROC) (GLenum p, const GLfloat *eqn);
-typedef void (GL_APIENTRYP PFNGLCLIPPLANEXIMGPROC) (GLenum p, const GLfixed *eqn);
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_IMG_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GL_API void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension functions
- *------------------------------------------------------------------------*/
-
-/* NV_fence */
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
-GL_API void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *);
-GL_API GLboolean GL_APIENTRY glIsFenceNV (GLuint);
-GL_API GLboolean GL_APIENTRY glTestFenceNV (GLuint);
-GL_API void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
-GL_API void GL_APIENTRY glFinishFenceNV (GLuint);
-GL_API void GL_APIENTRY glSetFenceNV (GLuint, GLenum);
-#endif
-typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_driver_control */
-#ifndef GL_QCOM_driver_control
-#define GL_QCOM_driver_control 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
-GL_API void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-GL_API void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
-GL_API void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-#endif
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_QCOM_extended_get 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
-GL_API void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-GL_API void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-GL_API void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-GL_API void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-GL_API void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
-GL_API void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-GL_API void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
-#endif
-
-/* GL_QCOM_extended_get2 */
-#ifndef GL_QCOM_extended_get2
-#define GL_QCOM_extended_get2 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-GL_API void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-GL_API GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
-GL_API void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_QCOM_perfmon_global_mode 1
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_QCOM_writeonly_rendering 1
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_QCOM_tiled_rendering 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_API void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-GL_API void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
-#endif
-typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __glext_h_ */
-
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLES/glplatform.h b/tools/emulator/opengl/host/libs/Translator/include/GLES/glplatform.h
deleted file mode 100644
index 2db6ee2..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLES/glplatform.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __glplatform_h_
-#define __glplatform_h_
-
-/* $Revision: 10601 $ on $Date:: 2010-03-04 22:15:27 -0800 #$ */
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/* Platform-specific types and definitions for OpenGL ES 1.X  gl.h
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file.  Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "OpenGL-ES" component "Registry".
- */
-
-#include <KHR/khrplatform.h>
-
-#ifndef GL_API
-#define GL_API      KHRONOS_APICALL
-#endif
-
-#ifndef GL_APIENTRY
-#define GL_APIENTRY KHRONOS_APIENTRY
-#endif
-
-#endif /* __glplatform_h_ */
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2.h b/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2.h
deleted file mode 100644
index e1d3b87..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2.h
+++ /dev/null
@@ -1,621 +0,0 @@
-#ifndef __gl2_h_
-#define __gl2_h_
-
-/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
-
-#include <GLES2/gl2platform.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/*-------------------------------------------------------------------------
- * Data type definitions
- *-----------------------------------------------------------------------*/
-
-typedef void             GLvoid;
-typedef char             GLchar;
-typedef unsigned int     GLenum;
-typedef unsigned char    GLboolean;
-typedef unsigned int     GLbitfield;
-typedef khronos_int8_t   GLbyte;
-typedef short            GLshort;
-typedef int              GLint;
-typedef int              GLsizei;
-typedef khronos_uint8_t  GLubyte;
-typedef unsigned short   GLushort;
-typedef unsigned int     GLuint;
-typedef khronos_float_t  GLfloat;
-typedef khronos_float_t  GLclampf;
-typedef khronos_int32_t  GLfixed;
-
-/* GL types for handling large vertex buffer objects */
-typedef khronos_intptr_t GLintptr;
-typedef khronos_ssize_t  GLsizeiptr;
-
-/* OpenGL ES core versions */
-#define GL_ES_VERSION_2_0                 1
-
-/* ClearBufferMask */
-#define GL_DEPTH_BUFFER_BIT               0x00000100
-#define GL_STENCIL_BUFFER_BIT             0x00000400
-#define GL_COLOR_BUFFER_BIT               0x00004000
-
-/* Boolean */
-#define GL_FALSE                          0
-#define GL_TRUE                           1
-
-/* BeginMode */
-#define GL_POINTS                         0x0000
-#define GL_LINES                          0x0001
-#define GL_LINE_LOOP                      0x0002
-#define GL_LINE_STRIP                     0x0003
-#define GL_TRIANGLES                      0x0004
-#define GL_TRIANGLE_STRIP                 0x0005
-#define GL_TRIANGLE_FAN                   0x0006
-
-/* AlphaFunction (not supported in ES20) */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* BlendingFactorDest */
-#define GL_ZERO                           0
-#define GL_ONE                            1
-#define GL_SRC_COLOR                      0x0300
-#define GL_ONE_MINUS_SRC_COLOR            0x0301
-#define GL_SRC_ALPHA                      0x0302
-#define GL_ONE_MINUS_SRC_ALPHA            0x0303
-#define GL_DST_ALPHA                      0x0304
-#define GL_ONE_MINUS_DST_ALPHA            0x0305
-
-/* BlendingFactorSrc */
-/*      GL_ZERO */
-/*      GL_ONE */
-#define GL_DST_COLOR                      0x0306
-#define GL_ONE_MINUS_DST_COLOR            0x0307
-#define GL_SRC_ALPHA_SATURATE             0x0308
-/*      GL_SRC_ALPHA */
-/*      GL_ONE_MINUS_SRC_ALPHA */
-/*      GL_DST_ALPHA */
-/*      GL_ONE_MINUS_DST_ALPHA */
-
-/* BlendEquationSeparate */
-#define GL_FUNC_ADD                       0x8006
-#define GL_BLEND_EQUATION                 0x8009
-#define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
-#define GL_BLEND_EQUATION_ALPHA           0x883D
-
-/* BlendSubtract */
-#define GL_FUNC_SUBTRACT                  0x800A
-#define GL_FUNC_REVERSE_SUBTRACT          0x800B
-
-/* Separate Blend Functions */
-#define GL_BLEND_DST_RGB                  0x80C8
-#define GL_BLEND_SRC_RGB                  0x80C9
-#define GL_BLEND_DST_ALPHA                0x80CA
-#define GL_BLEND_SRC_ALPHA                0x80CB
-#define GL_CONSTANT_COLOR                 0x8001
-#define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
-#define GL_CONSTANT_ALPHA                 0x8003
-#define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
-#define GL_BLEND_COLOR                    0x8005
-
-/* Buffer Objects */
-#define GL_ARRAY_BUFFER                   0x8892
-#define GL_ELEMENT_ARRAY_BUFFER           0x8893
-#define GL_ARRAY_BUFFER_BINDING           0x8894
-#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
-
-#define GL_STREAM_DRAW                    0x88E0
-#define GL_STATIC_DRAW                    0x88E4
-#define GL_DYNAMIC_DRAW                   0x88E8
-
-#define GL_BUFFER_SIZE                    0x8764
-#define GL_BUFFER_USAGE                   0x8765
-
-#define GL_CURRENT_VERTEX_ATTRIB          0x8626
-
-/* CullFaceMode */
-#define GL_FRONT                          0x0404
-#define GL_BACK                           0x0405
-#define GL_FRONT_AND_BACK                 0x0408
-
-/* DepthFunction */
-/*      GL_NEVER */
-/*      GL_LESS */
-/*      GL_EQUAL */
-/*      GL_LEQUAL */
-/*      GL_GREATER */
-/*      GL_NOTEQUAL */
-/*      GL_GEQUAL */
-/*      GL_ALWAYS */
-
-/* EnableCap */
-#define GL_TEXTURE_2D                     0x0DE1
-#define GL_CULL_FACE                      0x0B44
-#define GL_BLEND                          0x0BE2
-#define GL_DITHER                         0x0BD0
-#define GL_STENCIL_TEST                   0x0B90
-#define GL_DEPTH_TEST                     0x0B71
-#define GL_SCISSOR_TEST                   0x0C11
-#define GL_POLYGON_OFFSET_FILL            0x8037
-#define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
-#define GL_SAMPLE_COVERAGE                0x80A0
-
-/* ErrorCode */
-#define GL_NO_ERROR                       0
-#define GL_INVALID_ENUM                   0x0500
-#define GL_INVALID_VALUE                  0x0501
-#define GL_INVALID_OPERATION              0x0502
-#define GL_OUT_OF_MEMORY                  0x0505
-
-/* FrontFaceDirection */
-#define GL_CW                             0x0900
-#define GL_CCW                            0x0901
-
-/* GetPName */
-#define GL_LINE_WIDTH                     0x0B21
-#define GL_ALIASED_POINT_SIZE_RANGE       0x846D
-#define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
-#define GL_CULL_FACE_MODE                 0x0B45
-#define GL_FRONT_FACE                     0x0B46
-#define GL_DEPTH_RANGE                    0x0B70
-#define GL_DEPTH_WRITEMASK                0x0B72
-#define GL_DEPTH_CLEAR_VALUE              0x0B73
-#define GL_DEPTH_FUNC                     0x0B74
-#define GL_STENCIL_CLEAR_VALUE            0x0B91
-#define GL_STENCIL_FUNC                   0x0B92
-#define GL_STENCIL_FAIL                   0x0B94
-#define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
-#define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
-#define GL_STENCIL_REF                    0x0B97
-#define GL_STENCIL_VALUE_MASK             0x0B93
-#define GL_STENCIL_WRITEMASK              0x0B98
-#define GL_STENCIL_BACK_FUNC              0x8800
-#define GL_STENCIL_BACK_FAIL              0x8801
-#define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
-#define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
-#define GL_STENCIL_BACK_REF               0x8CA3
-#define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
-#define GL_STENCIL_BACK_WRITEMASK         0x8CA5
-#define GL_VIEWPORT                       0x0BA2
-#define GL_SCISSOR_BOX                    0x0C10
-/*      GL_SCISSOR_TEST */
-#define GL_COLOR_CLEAR_VALUE              0x0C22
-#define GL_COLOR_WRITEMASK                0x0C23
-#define GL_UNPACK_ALIGNMENT               0x0CF5
-#define GL_PACK_ALIGNMENT                 0x0D05
-#define GL_MAX_TEXTURE_SIZE               0x0D33
-#define GL_MAX_VIEWPORT_DIMS              0x0D3A
-#define GL_SUBPIXEL_BITS                  0x0D50
-#define GL_RED_BITS                       0x0D52
-#define GL_GREEN_BITS                     0x0D53
-#define GL_BLUE_BITS                      0x0D54
-#define GL_ALPHA_BITS                     0x0D55
-#define GL_DEPTH_BITS                     0x0D56
-#define GL_STENCIL_BITS                   0x0D57
-#define GL_POLYGON_OFFSET_UNITS           0x2A00
-/*      GL_POLYGON_OFFSET_FILL */
-#define GL_POLYGON_OFFSET_FACTOR          0x8038
-#define GL_TEXTURE_BINDING_2D             0x8069
-#define GL_SAMPLE_BUFFERS                 0x80A8
-#define GL_SAMPLES                        0x80A9
-#define GL_SAMPLE_COVERAGE_VALUE          0x80AA
-#define GL_SAMPLE_COVERAGE_INVERT         0x80AB
-
-/* GetTextureParameter */
-/*      GL_TEXTURE_MAG_FILTER */
-/*      GL_TEXTURE_MIN_FILTER */
-/*      GL_TEXTURE_WRAP_S */
-/*      GL_TEXTURE_WRAP_T */
-
-#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
-#define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
-
-/* HintMode */
-#define GL_DONT_CARE                      0x1100
-#define GL_FASTEST                        0x1101
-#define GL_NICEST                         0x1102
-
-/* HintTarget */
-#define GL_GENERATE_MIPMAP_HINT            0x8192
-
-/* DataType */
-#define GL_BYTE                           0x1400
-#define GL_UNSIGNED_BYTE                  0x1401
-#define GL_SHORT                          0x1402
-#define GL_UNSIGNED_SHORT                 0x1403
-#define GL_INT                            0x1404
-#define GL_UNSIGNED_INT                   0x1405
-#define GL_FLOAT                          0x1406
-#define GL_FIXED                          0x140C
-
-/* PixelFormat */
-#define GL_DEPTH_COMPONENT                0x1902
-#define GL_ALPHA                          0x1906
-#define GL_RGB                            0x1907
-#define GL_RGBA                           0x1908
-#define GL_LUMINANCE                      0x1909
-#define GL_LUMINANCE_ALPHA                0x190A
-
-/* PixelType */
-/*      GL_UNSIGNED_BYTE */
-#define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
-#define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
-#define GL_UNSIGNED_SHORT_5_6_5           0x8363
-
-/* Shaders */
-#define GL_FRAGMENT_SHADER                  0x8B30
-#define GL_VERTEX_SHADER                    0x8B31
-#define GL_MAX_VERTEX_ATTRIBS               0x8869
-#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
-#define GL_MAX_VARYING_VECTORS              0x8DFC
-#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
-#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C
-#define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
-#define GL_SHADER_TYPE                      0x8B4F
-#define GL_DELETE_STATUS                    0x8B80
-#define GL_LINK_STATUS                      0x8B82
-#define GL_VALIDATE_STATUS                  0x8B83
-#define GL_ATTACHED_SHADERS                 0x8B85
-#define GL_ACTIVE_UNIFORMS                  0x8B86
-#define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87
-#define GL_ACTIVE_ATTRIBUTES                0x8B89
-#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A
-#define GL_SHADING_LANGUAGE_VERSION         0x8B8C
-#define GL_CURRENT_PROGRAM                  0x8B8D
-
-/* StencilFunction */
-#define GL_NEVER                          0x0200
-#define GL_LESS                           0x0201
-#define GL_EQUAL                          0x0202
-#define GL_LEQUAL                         0x0203
-#define GL_GREATER                        0x0204
-#define GL_NOTEQUAL                       0x0205
-#define GL_GEQUAL                         0x0206
-#define GL_ALWAYS                         0x0207
-
-/* StencilOp */
-/*      GL_ZERO */
-#define GL_KEEP                           0x1E00
-#define GL_REPLACE                        0x1E01
-#define GL_INCR                           0x1E02
-#define GL_DECR                           0x1E03
-#define GL_INVERT                         0x150A
-#define GL_INCR_WRAP                      0x8507
-#define GL_DECR_WRAP                      0x8508
-
-/* StringName */
-#define GL_VENDOR                         0x1F00
-#define GL_RENDERER                       0x1F01
-#define GL_VERSION                        0x1F02
-#define GL_EXTENSIONS                     0x1F03
-
-/* TextureMagFilter */
-#define GL_NEAREST                        0x2600
-#define GL_LINEAR                         0x2601
-
-/* TextureMinFilter */
-/*      GL_NEAREST */
-/*      GL_LINEAR */
-#define GL_NEAREST_MIPMAP_NEAREST         0x2700
-#define GL_LINEAR_MIPMAP_NEAREST          0x2701
-#define GL_NEAREST_MIPMAP_LINEAR          0x2702
-#define GL_LINEAR_MIPMAP_LINEAR           0x2703
-
-/* TextureParameterName */
-#define GL_TEXTURE_MAG_FILTER             0x2800
-#define GL_TEXTURE_MIN_FILTER             0x2801
-#define GL_TEXTURE_WRAP_S                 0x2802
-#define GL_TEXTURE_WRAP_T                 0x2803
-
-/* TextureTarget */
-/*      GL_TEXTURE_2D */
-#define GL_TEXTURE                        0x1702
-
-#define GL_TEXTURE_CUBE_MAP               0x8513
-#define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
-#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
-#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
-#define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
-
-/* TextureUnit */
-#define GL_TEXTURE0                       0x84C0
-#define GL_TEXTURE1                       0x84C1
-#define GL_TEXTURE2                       0x84C2
-#define GL_TEXTURE3                       0x84C3
-#define GL_TEXTURE4                       0x84C4
-#define GL_TEXTURE5                       0x84C5
-#define GL_TEXTURE6                       0x84C6
-#define GL_TEXTURE7                       0x84C7
-#define GL_TEXTURE8                       0x84C8
-#define GL_TEXTURE9                       0x84C9
-#define GL_TEXTURE10                      0x84CA
-#define GL_TEXTURE11                      0x84CB
-#define GL_TEXTURE12                      0x84CC
-#define GL_TEXTURE13                      0x84CD
-#define GL_TEXTURE14                      0x84CE
-#define GL_TEXTURE15                      0x84CF
-#define GL_TEXTURE16                      0x84D0
-#define GL_TEXTURE17                      0x84D1
-#define GL_TEXTURE18                      0x84D2
-#define GL_TEXTURE19                      0x84D3
-#define GL_TEXTURE20                      0x84D4
-#define GL_TEXTURE21                      0x84D5
-#define GL_TEXTURE22                      0x84D6
-#define GL_TEXTURE23                      0x84D7
-#define GL_TEXTURE24                      0x84D8
-#define GL_TEXTURE25                      0x84D9
-#define GL_TEXTURE26                      0x84DA
-#define GL_TEXTURE27                      0x84DB
-#define GL_TEXTURE28                      0x84DC
-#define GL_TEXTURE29                      0x84DD
-#define GL_TEXTURE30                      0x84DE
-#define GL_TEXTURE31                      0x84DF
-#define GL_ACTIVE_TEXTURE                 0x84E0
-
-/* TextureWrapMode */
-#define GL_REPEAT                         0x2901
-#define GL_CLAMP_TO_EDGE                  0x812F
-#define GL_MIRRORED_REPEAT                0x8370
-
-/* Uniform Types */
-#define GL_FLOAT_VEC2                     0x8B50
-#define GL_FLOAT_VEC3                     0x8B51
-#define GL_FLOAT_VEC4                     0x8B52
-#define GL_INT_VEC2                       0x8B53
-#define GL_INT_VEC3                       0x8B54
-#define GL_INT_VEC4                       0x8B55
-#define GL_BOOL                           0x8B56
-#define GL_BOOL_VEC2                      0x8B57
-#define GL_BOOL_VEC3                      0x8B58
-#define GL_BOOL_VEC4                      0x8B59
-#define GL_FLOAT_MAT2                     0x8B5A
-#define GL_FLOAT_MAT3                     0x8B5B
-#define GL_FLOAT_MAT4                     0x8B5C
-#define GL_SAMPLER_2D                     0x8B5E
-#define GL_SAMPLER_CUBE                   0x8B60
-
-/* Vertex Arrays */
-#define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622
-#define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623
-#define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624
-#define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625
-#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A
-#define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645
-#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
-
-/* Read Format */
-#define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
-#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
-
-/* Shader Source */
-#define GL_COMPILE_STATUS                 0x8B81
-#define GL_INFO_LOG_LENGTH                0x8B84
-#define GL_SHADER_SOURCE_LENGTH           0x8B88
-#define GL_SHADER_COMPILER                0x8DFA
-
-/* Shader Binary */
-#define GL_SHADER_BINARY_FORMATS          0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
-
-/* Shader Precision-Specified Types */
-#define GL_LOW_FLOAT                      0x8DF0
-#define GL_MEDIUM_FLOAT                   0x8DF1
-#define GL_HIGH_FLOAT                     0x8DF2
-#define GL_LOW_INT                        0x8DF3
-#define GL_MEDIUM_INT                     0x8DF4
-#define GL_HIGH_INT                       0x8DF5
-
-/* Framebuffer Object. */
-#define GL_FRAMEBUFFER                    0x8D40
-#define GL_RENDERBUFFER                   0x8D41
-
-#define GL_RGBA4                          0x8056
-#define GL_RGB5_A1                        0x8057
-#define GL_RGB565                         0x8D62
-#define GL_DEPTH_COMPONENT16              0x81A5
-#define GL_STENCIL_INDEX                  0x1901
-#define GL_STENCIL_INDEX8                 0x8D48
-
-#define GL_RENDERBUFFER_WIDTH             0x8D42
-#define GL_RENDERBUFFER_HEIGHT            0x8D43
-#define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
-#define GL_RENDERBUFFER_RED_SIZE          0x8D50
-#define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
-#define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
-#define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
-#define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
-#define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
-
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0
-#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
-
-#define GL_COLOR_ATTACHMENT0              0x8CE0
-#define GL_DEPTH_ATTACHMENT               0x8D00
-#define GL_STENCIL_ATTACHMENT             0x8D20
-
-#define GL_NONE                           0
-
-#define GL_FRAMEBUFFER_COMPLETE                      0x8CD5
-#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6
-#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
-#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9
-#define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD
-
-#define GL_FRAMEBUFFER_BINDING            0x8CA6
-#define GL_RENDERBUFFER_BINDING           0x8CA7
-#define GL_MAX_RENDERBUFFER_SIZE          0x84E8
-
-#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
-
-/*-------------------------------------------------------------------------
- * GL core functions.
- *-----------------------------------------------------------------------*/
-
-GL_APICALL void         GL_APIENTRY glActiveTexture (GLenum texture);
-GL_APICALL void         GL_APIENTRY glAttachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer);
-GL_APICALL void         GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
-GL_APICALL void         GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glBindTexture (GLenum target, GLuint texture);
-GL_APICALL void         GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glBlendEquation ( GLenum mode );
-GL_APICALL void         GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
-GL_APICALL void         GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor);
-GL_APICALL void         GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-GL_APICALL void         GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
-GL_APICALL void         GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
-GL_APICALL GLenum       GL_APIENTRY glCheckFramebufferStatus (GLenum target);
-GL_APICALL void         GL_APIENTRY glClear (GLbitfield mask);
-GL_APICALL void         GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-GL_APICALL void         GL_APIENTRY glClearDepthf (GLclampf depth);
-GL_APICALL void         GL_APIENTRY glClearStencil (GLint s);
-GL_APICALL void         GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-GL_APICALL void         GL_APIENTRY glCompileShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void         GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-GL_APICALL void         GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL GLuint       GL_APIENTRY glCreateProgram (void);
-GL_APICALL GLuint       GL_APIENTRY glCreateShader (GLenum type);
-GL_APICALL void         GL_APIENTRY glCullFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glDeleteProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glDeleteShader (GLuint shader);
-GL_APICALL void         GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures);
-GL_APICALL void         GL_APIENTRY glDepthFunc (GLenum func);
-GL_APICALL void         GL_APIENTRY glDepthMask (GLboolean flag);
-GL_APICALL void         GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar);
-GL_APICALL void         GL_APIENTRY glDetachShader (GLuint program, GLuint shader);
-GL_APICALL void         GL_APIENTRY glDisable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glDisableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count);
-GL_APICALL void         GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
-GL_APICALL void         GL_APIENTRY glEnable (GLenum cap);
-GL_APICALL void         GL_APIENTRY glEnableVertexAttribArray (GLuint index);
-GL_APICALL void         GL_APIENTRY glFinish (void);
-GL_APICALL void         GL_APIENTRY glFlush (void);
-GL_APICALL void         GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-GL_APICALL void         GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-GL_APICALL void         GL_APIENTRY glFrontFace (GLenum mode);
-GL_APICALL void         GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers);
-GL_APICALL void         GL_APIENTRY glGenerateMipmap (GLenum target);
-GL_APICALL void         GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers);
-GL_APICALL void         GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers);
-GL_APICALL void         GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures);
-GL_APICALL void         GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-GL_APICALL int          GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params);
-GL_APICALL void         GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL GLenum       GL_APIENTRY glGetError (void);
-GL_APICALL void         GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-GL_APICALL void         GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-GL_APICALL void         GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name);
-GL_APICALL void         GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params);
-GL_APICALL int          GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params);
-GL_APICALL void         GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer);
-GL_APICALL void         GL_APIENTRY glHint (GLenum target, GLenum mode);
-GL_APICALL GLboolean    GL_APIENTRY glIsBuffer (GLuint buffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsEnabled (GLenum cap);
-GL_APICALL GLboolean    GL_APIENTRY glIsFramebuffer (GLuint framebuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsProgram (GLuint program);
-GL_APICALL GLboolean    GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer);
-GL_APICALL GLboolean    GL_APIENTRY glIsShader (GLuint shader);
-GL_APICALL GLboolean    GL_APIENTRY glIsTexture (GLuint texture);
-GL_APICALL void         GL_APIENTRY glLineWidth (GLfloat width);
-GL_APICALL void         GL_APIENTRY glLinkProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glPixelStorei (GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units);
-GL_APICALL void         GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glReleaseShaderCompiler (void);
-GL_APICALL void         GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
-GL_APICALL void         GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void         GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-GL_APICALL void         GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
-GL_APICALL void         GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMask (GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
-GL_APICALL void         GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
-GL_APICALL void         GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param);
-GL_APICALL void         GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params);
-GL_APICALL void         GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
-GL_APICALL void         GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params);
-GL_APICALL void         GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void         GL_APIENTRY glUniform1f (GLint location, GLfloat x);
-GL_APICALL void         GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform1i (GLint location, GLint x);
-GL_APICALL void         GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y);
-GL_APICALL void         GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z);
-GL_APICALL void         GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v);
-GL_APICALL void         GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w);
-GL_APICALL void         GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v);
-GL_APICALL void         GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-GL_APICALL void         GL_APIENTRY glUseProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glValidateProgram (GLuint program);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x);
-GL_APICALL void         GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y);
-GL_APICALL void         GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-GL_APICALL void         GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-GL_APICALL void         GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values);
-GL_APICALL void         GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-GL_APICALL void         GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2_h_ */
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2ext.h b/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2ext.h
deleted file mode 100644
index 46f6093..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2ext.h
+++ /dev/null
@@ -1,973 +0,0 @@
-#ifndef __gl2ext_h_
-#define __gl2ext_h_
-
-/* $Revision: 13239 $ on $Date:: 2010-12-17 15:13:56 -0800 #$ */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-#ifndef GL_APIENTRYP
-#   define GL_APIENTRYP GL_APIENTRY*
-#endif
-
-/*------------------------------------------------------------------------*
- * OES extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_ETC1_RGB8_OES                                        0x8D64
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_PALETTE4_RGB8_OES                                    0x8B90
-#define GL_PALETTE4_RGBA8_OES                                   0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
-#define GL_PALETTE4_RGBA4_OES                                   0x8B93
-#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
-#define GL_PALETTE8_RGB8_OES                                    0x8B95
-#define GL_PALETTE8_RGBA8_OES                                   0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
-#define GL_PALETTE8_RGBA4_OES                                   0x8B98
-#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_DEPTH_COMPONENT24_OES                                0x81A6
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_DEPTH_COMPONENT32_OES                                0x81A7
-#endif
-
-/* GL_OES_depth_texture */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-typedef void* GLeglImageOES;
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-/* GLeglImageOES defined in GL_OES_EGL_image already. */
-#define GL_TEXTURE_EXTERNAL_OES                                 0x8D65
-#define GL_SAMPLER_EXTERNAL_OES                                 0x8D66
-#define GL_TEXTURE_BINDING_EXTERNAL_OES                         0x8D67
-#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES                     0x8D68
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_UNSIGNED_INT                                         0x1405
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_PROGRAM_BINARY_LENGTH_OES                            0x8741
-#define GL_NUM_PROGRAM_BINARY_FORMATS_OES                       0x87FE
-#define GL_PROGRAM_BINARY_FORMATS_OES                           0x87FF
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_WRITE_ONLY_OES                                       0x88B9
-#define GL_BUFFER_ACCESS_OES                                    0x88BB
-#define GL_BUFFER_MAPPED_OES                                    0x88BC
-#define GL_BUFFER_MAP_POINTER_OES                               0x88BD
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_DEPTH_STENCIL_OES                                    0x84F9
-#define GL_UNSIGNED_INT_24_8_OES                                0x84FA
-#define GL_DEPTH24_STENCIL8_OES                                 0x88F0
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_RGB8_OES                                             0x8051
-#define GL_RGBA8_OES                                            0x8058
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES                  0x8B8B
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_STENCIL_INDEX1_OES                                   0x8D46
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_STENCIL_INDEX4_OES                                   0x8D47
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_TEXTURE_WRAP_R_OES                                   0x8072
-#define GL_TEXTURE_3D_OES                                       0x806F
-#define GL_TEXTURE_BINDING_3D_OES                               0x806A
-#define GL_MAX_3D_TEXTURE_SIZE_OES                              0x8073
-#define GL_SAMPLER_3D_OES                                       0x8B5F
-#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES        0x8CD4
-#endif
-
-/* GL_OES_texture_float */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_HALF_FLOAT_OES                                       0x8D61
-#endif
-
-/* GL_OES_texture_half_float_linear */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_texture_npot */
-/* No new tokens introduced by this extension. */
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_VERTEX_ARRAY_BINDING_OES                             0x85B5
-#endif
-
-/* GL_OES_vertex_half_float */
-/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_UNSIGNED_INT_10_10_10_2_OES                          0x8DF6
-#define GL_INT_10_10_10_2_OES                                   0x8DF7
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_3DC_X_AMD                                            0x87F9
-#define GL_3DC_XY_AMD                                           0x87FA
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_ATC_RGB_AMD                                          0x8C92
-#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD                          0x8C93
-#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD                      0x87EE
-#endif
-
-/* GL_AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_COUNTER_TYPE_AMD                                     0x8BC0
-#define GL_COUNTER_RANGE_AMD                                    0x8BC1
-#define GL_UNSIGNED_INT64_AMD                                   0x8BC2
-#define GL_PERCENTAGE_AMD                                       0x8BC3
-#define GL_PERFMON_RESULT_AVAILABLE_AMD                         0x8BC4
-#define GL_PERFMON_RESULT_SIZE_AMD                              0x8BC5
-#define GL_PERFMON_RESULT_AMD                                   0x8BC6
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_Z400_BINARY_AMD                                      0x8740
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_READ_FRAMEBUFFER_ANGLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_ANGLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_ANGLE                       0x8CAA
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_ANGLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE             0x8D56
-#define GL_MAX_SAMPLES_ANGLE                                    0x8D57
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_RGB_422_APPLE                                        0x8A1F
-#define GL_UNSIGNED_SHORT_8_8_APPLE                             0x85BA
-#define GL_UNSIGNED_SHORT_8_8_REV_APPLE                         0x85BB
-#endif
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_RENDERBUFFER_SAMPLES_APPLE                           0x8CAB
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE             0x8D56
-#define GL_MAX_SAMPLES_APPLE                                    0x8D57
-#define GL_READ_FRAMEBUFFER_APPLE                               0x8CA8
-#define GL_DRAW_FRAMEBUFFER_APPLE                               0x8CA9
-#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE                       0x8CA6
-#define GL_READ_FRAMEBUFFER_BINDING_APPLE                       0x8CAA
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_TEXTURE_MAX_LEVEL_APPLE                              0x813D
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_MALI_SHADER_BINARY_ARM                               0x8F60
-#endif
-
-/* GL_ARM_rgba8 */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * EXT extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_MIN_EXT                                              0x8007
-#define GL_MAX_EXT                                              0x8008
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_COLOR_EXT                                            0x1800
-#define GL_DEPTH_EXT                                            0x1801
-#define GL_STENCIL_EXT                                          0x1802
-#endif
-
-/* GL_EXT_multi_draw_arrays */
-/* No new tokens introduced by this extension. */
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_BGRA_EXT                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT                       0x8365
-#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT                       0x8366
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_TEXTURE_MAX_ANISOTROPY_EXT                           0x84FE
-#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT                       0x84FF
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_BGRA_EXT                                             0x80E1
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT                      0x8368
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT                         0x83F0
-#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT                        0x83F1
-#endif
-
-/* GL_EXT_shader_texture_lod */
-/* No new tokens introduced by this extension. */
-
-/*------------------------------------------------------------------------*
- * IMG extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_SGX_PROGRAM_BINARY_IMG                               0x9130
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_BGRA_IMG                                             0x80E1
-#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG                       0x8365
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_SGX_BINARY_IMG                                       0x8C0A
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG                      0x8C00
-#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG                      0x8C01
-#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG                     0x8C02
-#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG                     0x8C03
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_RENDERBUFFER_SAMPLES_IMG                             0x9133
-#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG               0x9134
-#define GL_MAX_SAMPLES_IMG                                      0x9135
-#define GL_TEXTURE_SAMPLES_IMG                                  0x9136
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_ALL_COMPLETED_NV                                     0x84F2
-#define GL_FENCE_STATUS_NV                                      0x84F3
-#define GL_FENCE_CONDITION_NV                                   0x84F4
-#endif
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_COVERAGE_COMPONENT_NV                                0x8ED0
-#define GL_COVERAGE_COMPONENT4_NV                               0x8ED1
-#define GL_COVERAGE_ATTACHMENT_NV                               0x8ED2
-#define GL_COVERAGE_BUFFERS_NV                                  0x8ED3
-#define GL_COVERAGE_SAMPLES_NV                                  0x8ED4
-#define GL_COVERAGE_ALL_FRAGMENTS_NV                            0x8ED5
-#define GL_COVERAGE_EDGE_FRAGMENTS_NV                           0x8ED6
-#define GL_COVERAGE_AUTOMATIC_NV                                0x8ED7
-#define GL_COVERAGE_BUFFER_BIT_NV                               0x8000
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_DEPTH_COMPONENT16_NONLINEAR_NV                       0x8E2C
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_driver_control */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_TEXTURE_WIDTH_QCOM                                   0x8BD2
-#define GL_TEXTURE_HEIGHT_QCOM                                  0x8BD3
-#define GL_TEXTURE_DEPTH_QCOM                                   0x8BD4
-#define GL_TEXTURE_INTERNAL_FORMAT_QCOM                         0x8BD5
-#define GL_TEXTURE_FORMAT_QCOM                                  0x8BD6
-#define GL_TEXTURE_TYPE_QCOM                                    0x8BD7
-#define GL_TEXTURE_IMAGE_VALID_QCOM                             0x8BD8
-#define GL_TEXTURE_NUM_LEVELS_QCOM                              0x8BD9
-#define GL_TEXTURE_TARGET_QCOM                                  0x8BDA
-#define GL_TEXTURE_OBJECT_VALID_QCOM                            0x8BDB
-#define GL_STATE_RESTORE                                        0x8BDC
-#endif
-
-/* GL_QCOM_extended_get2 */
-/* No new tokens introduced by this extension. */
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_PERFMON_GLOBAL_MODE_QCOM                             0x8FA0
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_WRITEONLY_RENDERING_QCOM                             0x8823
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_COLOR_BUFFER_BIT0_QCOM                               0x00000001
-#define GL_COLOR_BUFFER_BIT1_QCOM                               0x00000002
-#define GL_COLOR_BUFFER_BIT2_QCOM                               0x00000004
-#define GL_COLOR_BUFFER_BIT3_QCOM                               0x00000008
-#define GL_COLOR_BUFFER_BIT4_QCOM                               0x00000010
-#define GL_COLOR_BUFFER_BIT5_QCOM                               0x00000020
-#define GL_COLOR_BUFFER_BIT6_QCOM                               0x00000040
-#define GL_COLOR_BUFFER_BIT7_QCOM                               0x00000080
-#define GL_DEPTH_BUFFER_BIT0_QCOM                               0x00000100
-#define GL_DEPTH_BUFFER_BIT1_QCOM                               0x00000200
-#define GL_DEPTH_BUFFER_BIT2_QCOM                               0x00000400
-#define GL_DEPTH_BUFFER_BIT3_QCOM                               0x00000800
-#define GL_DEPTH_BUFFER_BIT4_QCOM                               0x00001000
-#define GL_DEPTH_BUFFER_BIT5_QCOM                               0x00002000
-#define GL_DEPTH_BUFFER_BIT6_QCOM                               0x00004000
-#define GL_DEPTH_BUFFER_BIT7_QCOM                               0x00008000
-#define GL_STENCIL_BUFFER_BIT0_QCOM                             0x00010000
-#define GL_STENCIL_BUFFER_BIT1_QCOM                             0x00020000
-#define GL_STENCIL_BUFFER_BIT2_QCOM                             0x00040000
-#define GL_STENCIL_BUFFER_BIT3_QCOM                             0x00080000
-#define GL_STENCIL_BUFFER_BIT4_QCOM                             0x00100000
-#define GL_STENCIL_BUFFER_BIT5_QCOM                             0x00200000
-#define GL_STENCIL_BUFFER_BIT6_QCOM                             0x00400000
-#define GL_STENCIL_BUFFER_BIT7_QCOM                             0x00800000
-#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM                         0x01000000
-#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM                         0x02000000
-#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM                         0x04000000
-#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM                         0x08000000
-#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM                         0x10000000
-#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM                         0x20000000
-#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM                         0x40000000
-#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM                         0x80000000
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_SHADER_BINARY_VIV                                    0x8FC4
-#endif
-
-/*------------------------------------------------------------------------*
- * End of extension tokens, start of corresponding extension functions
- *------------------------------------------------------------------------*/
-
-/*------------------------------------------------------------------------*
- * OES extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_OES_compressed_ETC1_RGB8_texture */
-#ifndef GL_OES_compressed_ETC1_RGB8_texture
-#define GL_OES_compressed_ETC1_RGB8_texture 1
-#endif
-
-/* GL_OES_compressed_paletted_texture */
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_OES_compressed_paletted_texture 1
-#endif
-
-/* GL_OES_depth24 */
-#ifndef GL_OES_depth24
-#define GL_OES_depth24 1
-#endif
-
-/* GL_OES_depth32 */
-#ifndef GL_OES_depth32
-#define GL_OES_depth32 1
-#endif
-
-/* GL_OES_depth_texture */
-#ifndef GL_OES_depth_texture
-#define GL_OES_depth_texture 1
-#endif
-
-/* GL_OES_EGL_image */
-#ifndef GL_OES_EGL_image
-#define GL_OES_EGL_image 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image);
-GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image);
-#endif
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image);
-typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image);
-#endif
-
-/* GL_OES_EGL_image_external */
-#ifndef GL_OES_EGL_image_external
-#define GL_OES_EGL_image_external 1
-/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */
-#endif
-
-/* GL_OES_element_index_uint */
-#ifndef GL_OES_element_index_uint
-#define GL_OES_element_index_uint 1
-#endif
-
-/* GL_OES_fbo_render_mipmap */
-#ifndef GL_OES_fbo_render_mipmap
-#define GL_OES_fbo_render_mipmap 1
-#endif
-
-/* GL_OES_fragment_precision_high */
-#ifndef GL_OES_fragment_precision_high
-#define GL_OES_fragment_precision_high 1
-#endif
-
-/* GL_OES_get_program_binary */
-#ifndef GL_OES_get_program_binary
-#define GL_OES_get_program_binary 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
-typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length);
-#endif
-
-/* GL_OES_mapbuffer */
-#ifndef GL_OES_mapbuffer
-#define GL_OES_mapbuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access);
-GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target);
-GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid** params);
-#endif
-typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access);
-typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target);
-typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params);
-#endif
-
-/* GL_OES_packed_depth_stencil */
-#ifndef GL_OES_packed_depth_stencil
-#define GL_OES_packed_depth_stencil 1
-#endif
-
-/* GL_OES_rgb8_rgba8 */
-#ifndef GL_OES_rgb8_rgba8
-#define GL_OES_rgb8_rgba8 1
-#endif
-
-/* GL_OES_standard_derivatives */
-#ifndef GL_OES_standard_derivatives
-#define GL_OES_standard_derivatives 1
-#endif
-
-/* GL_OES_stencil1 */
-#ifndef GL_OES_stencil1
-#define GL_OES_stencil1 1
-#endif
-
-/* GL_OES_stencil4 */
-#ifndef GL_OES_stencil4
-#define GL_OES_stencil4 1
-#endif
-
-/* GL_OES_texture_3D */
-#ifndef GL_OES_texture_3D
-#define GL_OES_texture_3D 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
-typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-#endif
-
-/* GL_OES_texture_float */
-#ifndef GL_OES_texture_float
-#define GL_OES_texture_float 1
-#endif
-
-/* GL_OES_texture_float_linear */
-#ifndef GL_OES_texture_float_linear
-#define GL_OES_texture_float_linear 1
-#endif
-
-/* GL_OES_texture_half_float */
-#ifndef GL_OES_texture_half_float
-#define GL_OES_texture_half_float 1
-#endif
-
-/* GL_OES_texture_half_float_linear */
-#ifndef GL_OES_texture_half_float_linear
-#define GL_OES_texture_half_float_linear 1
-#endif
-
-/* GL_OES_texture_npot */
-#ifndef GL_OES_texture_npot
-#define GL_OES_texture_npot 1
-#endif
-
-/* GL_OES_vertex_array_object */
-#ifndef GL_OES_vertex_array_object
-#define GL_OES_vertex_array_object 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array);
-GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays);
-GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays);
-GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array);
-#endif
-typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array);
-typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays);
-typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays);
-typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array);
-#endif
-
-/* GL_OES_vertex_half_float */
-#ifndef GL_OES_vertex_half_float
-#define GL_OES_vertex_half_float 1
-#endif
-
-/* GL_OES_vertex_type_10_10_10_2 */
-#ifndef GL_OES_vertex_type_10_10_10_2
-#define GL_OES_vertex_type_10_10_10_2 1
-#endif
-
-/*------------------------------------------------------------------------*
- * AMD extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_AMD_compressed_3DC_texture */
-#ifndef GL_AMD_compressed_3DC_texture
-#define GL_AMD_compressed_3DC_texture 1
-#endif
-
-/* GL_AMD_compressed_ATC_texture */
-#ifndef GL_AMD_compressed_ATC_texture
-#define GL_AMD_compressed_ATC_texture 1
-#endif
-
-/* AMD_performance_monitor */
-#ifndef GL_AMD_performance_monitor
-#define GL_AMD_performance_monitor 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
-GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor);
-GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data);
-typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors);
-typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList);
-typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor);
-typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
-#endif
-
-/* GL_AMD_program_binary_Z400 */
-#ifndef GL_AMD_program_binary_Z400
-#define GL_AMD_program_binary_Z400 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ANGLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ANGLE_framebuffer_blit */
-#ifndef GL_ANGLE_framebuffer_blit
-#define GL_ANGLE_framebuffer_blit 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-#endif
-
-/* GL_ANGLE_framebuffer_multisample */
-#ifndef GL_ANGLE_framebuffer_multisample
-#define GL_ANGLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-#endif
-
-/*------------------------------------------------------------------------*
- * APPLE extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_APPLE_rgb_422 */
-#ifndef GL_APPLE_rgb_422
-#define GL_APPLE_rgb_422 1
-#endif
-
-/* GL_APPLE_framebuffer_multisample */
-#ifndef GL_APPLE_framebuffer_multisample
-#define GL_APPLE_framebuffer_multisample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void);
-#endif
-
-/* GL_APPLE_texture_format_BGRA8888 */
-#ifndef GL_APPLE_texture_format_BGRA8888
-#define GL_APPLE_texture_format_BGRA8888 1
-#endif
-
-/* GL_APPLE_texture_max_level */
-#ifndef GL_APPLE_texture_max_level
-#define GL_APPLE_texture_max_level 1
-#endif
-
-/*------------------------------------------------------------------------*
- * ARM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_ARM_mali_shader_binary */
-#ifndef GL_ARM_mali_shader_binary
-#define GL_ARM_mali_shader_binary 1
-#endif
-
-/* GL_ARM_rgba8 */
-#ifndef GL_ARM_rgba8
-#define GL_ARM_rgba8 1
-#endif
-
-/*------------------------------------------------------------------------*
- * EXT extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_EXT_blend_minmax */
-#ifndef GL_EXT_blend_minmax
-#define GL_EXT_blend_minmax 1
-#endif
-
-/* GL_EXT_discard_framebuffer */
-#ifndef GL_EXT_discard_framebuffer
-#define GL_EXT_discard_framebuffer 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
-#endif
-
-#ifndef GL_EXT_multi_draw_arrays
-#define GL_EXT_multi_draw_arrays 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
-GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-#endif /* GL_GLEXT_PROTOTYPES */
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
-typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
-#endif
-
-/* GL_EXT_read_format_bgra */
-#ifndef GL_EXT_read_format_bgra
-#define GL_EXT_read_format_bgra 1
-#endif
-
-/* GL_EXT_texture_filter_anisotropic */
-#ifndef GL_EXT_texture_filter_anisotropic
-#define GL_EXT_texture_filter_anisotropic 1
-#endif
-
-/* GL_EXT_texture_format_BGRA8888 */
-#ifndef GL_EXT_texture_format_BGRA8888
-#define GL_EXT_texture_format_BGRA8888 1
-#endif
-
-/* GL_EXT_texture_type_2_10_10_10_REV */
-#ifndef GL_EXT_texture_type_2_10_10_10_REV
-#define GL_EXT_texture_type_2_10_10_10_REV 1
-#endif
-
-/* GL_EXT_texture_compression_dxt1 */
-#ifndef GL_EXT_texture_compression_dxt1
-#define GL_EXT_texture_compression_dxt1 1
-#endif
-
-/* GL_EXT_shader_texture_lod */
-#ifndef GL_EXT_shader_texture_lod
-#define GL_EXT_shader_texture_lod 1
-#endif
-
-/*------------------------------------------------------------------------*
- * IMG extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_IMG_program_binary */
-#ifndef GL_IMG_program_binary
-#define GL_IMG_program_binary 1
-#endif
-
-/* GL_IMG_read_format */
-#ifndef GL_IMG_read_format
-#define GL_IMG_read_format 1
-#endif
-
-/* GL_IMG_shader_binary */
-#ifndef GL_IMG_shader_binary
-#define GL_IMG_shader_binary 1
-#endif
-
-/* GL_IMG_texture_compression_pvrtc */
-#ifndef GL_IMG_texture_compression_pvrtc
-#define GL_IMG_texture_compression_pvrtc 1
-#endif
-
-/* GL_IMG_multisampled_render_to_texture */
-#ifndef GL_IMG_multisampled_render_to_texture
-#define GL_IMG_multisampled_render_to_texture 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
-#endif
-typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
-#endif
-
-/*------------------------------------------------------------------------*
- * NV extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_NV_fence */
-#ifndef GL_NV_fence
-#define GL_NV_fence 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
-GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *);
-GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint);
-GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint);
-GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
-GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint);
-GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint, GLenum);
-#endif
-typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
-typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
-typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence);
-typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence);
-typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
-#endif
-
-/* GL_NV_coverage_sample */
-#ifndef GL_NV_coverage_sample
-#define GL_NV_coverage_sample 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask);
-GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation);
-#endif
-typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask);
-typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation);
-#endif
-
-/* GL_NV_depth_nonlinear */
-#ifndef GL_NV_depth_nonlinear
-#define GL_NV_depth_nonlinear 1
-#endif
-
-/*------------------------------------------------------------------------*
- * QCOM extension functions
- *------------------------------------------------------------------------*/
-
-/* GL_QCOM_driver_control */
-#ifndef GL_QCOM_driver_control
-#define GL_QCOM_driver_control 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls);
-GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl);
-GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl);
-#endif
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls);
-typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString);
-typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl);
-#endif
-
-/* GL_QCOM_extended_get */
-#ifndef GL_QCOM_extended_get
-#define GL_QCOM_extended_get 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures);
-GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param);
-GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params);
-typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param);
-typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels);
-typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params);
-#endif
-
-/* GL_QCOM_extended_get2 */
-#ifndef GL_QCOM_extended_get2
-#define GL_QCOM_extended_get2 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program);
-GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms);
-typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program);
-typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length);
-#endif
-
-/* GL_QCOM_perfmon_global_mode */
-#ifndef GL_QCOM_perfmon_global_mode
-#define GL_QCOM_perfmon_global_mode 1
-#endif
-
-/* GL_QCOM_writeonly_rendering */
-#ifndef GL_QCOM_writeonly_rendering
-#define GL_QCOM_writeonly_rendering 1
-#endif
-
-/* GL_QCOM_tiled_rendering */
-#ifndef GL_QCOM_tiled_rendering
-#define GL_QCOM_tiled_rendering 1
-#ifdef GL_GLEXT_PROTOTYPES
-GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask);
-#endif
-typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
-typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask);
-#endif
-
-/*------------------------------------------------------------------------*
- * VIV extension tokens
- *------------------------------------------------------------------------*/
-
-/* GL_VIV_shader_binary */
-#ifndef GL_VIV_shader_binary
-#define GL_VIV_shader_binary 1
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __gl2ext_h_ */
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2platform.h b/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2platform.h
deleted file mode 100644
index c9fa3c4..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLES2/gl2platform.h
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __gl2platform_h_
-#define __gl2platform_h_
-
-/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */
-
-/*
- * This document is licensed under the SGI Free Software B License Version
- * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
- */
-
-/* Platform-specific types and definitions for OpenGL ES 2.X  gl2.h
- *
- * Adopters may modify khrplatform.h and this file to suit their platform.
- * You are encouraged to submit all modifications to the Khronos group so that
- * they can be included in future versions of this file.  Please submit changes
- * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
- * by filing a bug against product "OpenGL-ES" component "Registry".
- */
-
-#include <KHR/khrplatform.h>
-
-#ifndef GL_APICALL
-#define GL_APICALL  KHRONOS_APICALL
-#endif
-
-#ifndef GL_APIENTRY
-#define GL_APIENTRY KHRONOS_APIENTRY
-#endif
-
-#endif /* __gl2platform_h_ */
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/FramebufferData.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/FramebufferData.h
deleted file mode 100644
index 46cb651..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/FramebufferData.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _FRAMEBUFFER_DATA_H
-#define _FRAMEBUFFER_DATA_H
-
-#include "objectNameManager.h"
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-
-class RenderbufferData : public ObjectData
-{
-public:
-    RenderbufferData();
-    ~RenderbufferData();
-
-    unsigned int sourceEGLImage;
-    void (*eglImageDetach)(unsigned int imageId);
-    GLuint attachedFB;
-    GLenum attachedPoint;
-    GLuint eglImageGlobalTexName;
-
-};
-
-const int MAX_ATTACH_POINTS = 3;
-
-class FramebufferData : public ObjectData
-{
-public:
-    explicit FramebufferData(GLuint name);
-    ~FramebufferData();
-
-    void setAttachment(GLenum attachment,
-                       GLenum target,
-                       GLuint name,
-                       ObjectDataPtr obj,
-                       bool takeOwnership = false);
-
-    GLuint getAttachment(GLenum attachment,
-                         GLenum *outTarget,
-                         ObjectDataPtr *outObj);
-
-    void validate(class GLEScontext* ctx);
-
-private:
-    inline int attachmentPointIndex(GLenum attachment);
-    void detachObject(int idx);
-
-private:
-    GLuint m_fbName;
-    struct attachPoint {
-        GLenum target; // OGL if owned, GLES otherwise
-        GLuint name; // OGL if owned, GLES otherwise
-        ObjectDataPtr obj;
-        bool owned;
-    } m_attachPoints[MAX_ATTACH_POINTS+1];
-    bool m_dirty;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLDispatch.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLDispatch.h
deleted file mode 100644
index de7d563..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLDispatch.h
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLDISPATCHH
-#define GLDISPATCHH
-
-#include <GLES/gl.h>
-#include <GLES2/gl2.h>
-#include <utils/threads.h>
-#include "gldefs.h"
-#include "GLutils.h"
-
-#define GLAPIENTRY GL_APIENTRY
-typedef void(*FUNCPTR)();
-
-class GLDispatch
-{
-public:
-
-    GLDispatch();
-    void dispatchFuncs(GLESVersion version);
-
-    /* OpenGL functions which are needed for implementing BOTH GLES 1.1 & GLES 2.0*/
-    static void (GLAPIENTRY *glActiveTexture) ( GLenum texture );
-    static void (GLAPIENTRY *glBindBuffer) (GLenum target, GLuint buffer);
-    static void (GLAPIENTRY *glBindTexture) (GLenum target, GLuint texture);
-    static void (GLAPIENTRY *glBlendFunc) (GLenum sfactor, GLenum dfactor);
-    static void (GLAPIENTRY *glBlendEquation)( GLenum mode );
-    static void (GLAPIENTRY *glBlendEquationSeparate)(GLenum modeRGB, GLenum modeAlpha);
-    static void (GLAPIENTRY *glBlendFuncSeparate)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
-    static void (GLAPIENTRY *glBufferData) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
-    static void (GLAPIENTRY *glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
-    static void (GLAPIENTRY *glClear) (GLbitfield mask);
-    static void (GLAPIENTRY *glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-    static void (GLAPIENTRY *glClearStencil) (GLint s);
-    static void (GLAPIENTRY *glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
-    static void (GLAPIENTRY *glCompressedTexImage2D) ( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data );
-    static void (GLAPIENTRY *glCompressedTexSubImage2D) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data );
-    static void (GLAPIENTRY *glCopyTexImage2D) (GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-    static void (GLAPIENTRY *glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
-    static void (GLAPIENTRY *glCullFace) (GLenum mode);
-    static void (GLAPIENTRY *glDeleteBuffers) (GLsizei n, const GLuint *buffers);
-    static void (GLAPIENTRY *glDeleteTextures) (GLsizei n, const GLuint *textures);
-    static void (GLAPIENTRY *glDepthFunc) (GLenum func);
-    static void (GLAPIENTRY *glDepthMask) (GLboolean flag);
-    static void (GLAPIENTRY *glDepthRange) (GLclampd zNear, GLclampd zFar);
-    static void (GLAPIENTRY *glDisable) (GLenum cap);
-    static void (GLAPIENTRY *glDrawArrays) (GLenum mode, GLint first, GLsizei count);
-    static void (GLAPIENTRY *glDrawElements) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
-    static void (GLAPIENTRY *glEnable) (GLenum cap);
-    static void (GLAPIENTRY *glFinish) (void);
-    static void (GLAPIENTRY *glFlush) (void);
-    static void (GLAPIENTRY *glFrontFace) (GLenum mode);
-    static void (GLAPIENTRY *glGenBuffers) (GLsizei n, GLuint *buffers);
-    static void (GLAPIENTRY *glGenTextures) (GLsizei n, GLuint *textures);
-    static void (GLAPIENTRY *glGetBooleanv) (GLenum pname, GLboolean *params);
-    static void (GLAPIENTRY *glGetBufferParameteriv) (GLenum, GLenum, GLint *);
-    static GLenum (GLAPIENTRY *glGetError) (void);
-    static void (GLAPIENTRY *glGetFloatv) (GLenum pname, GLfloat *params);
-    static void (GLAPIENTRY *glGetIntegerv) (GLenum pname, GLint *params);
-    static const GLubyte * (GLAPIENTRY *glGetString) (GLenum name);
-    static void (GLAPIENTRY *glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat *params);
-    static void (GLAPIENTRY *glGetTexParameteriv) (GLenum target, GLenum pname, GLint *params);
-    static void (GLAPIENTRY *glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint *params);
-    static void (GLAPIENTRY *glHint) (GLenum target, GLenum mode);
-    static GLboolean (GLAPIENTRY *glIsBuffer) (GLuint);
-    static GLboolean (GLAPIENTRY *glIsEnabled) (GLenum cap);
-    static GLboolean (GLAPIENTRY *glIsTexture) (GLuint texture);
-    static void (GLAPIENTRY *glLineWidth) (GLfloat width);
-    static void (GLAPIENTRY *glPolygonOffset) (GLfloat factor, GLfloat units);
-    static void (GLAPIENTRY *glPixelStorei) (GLenum pname, GLint param);
-    static void (GLAPIENTRY *glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
-    static void (GLAPIENTRY *glSampleCoverage) ( GLclampf value, GLboolean invert );
-    static void (GLAPIENTRY *glScissor) (GLint x, GLint y, GLsizei width, GLsizei height);
-    static void (GLAPIENTRY *glStencilFunc) (GLenum func, GLint ref, GLuint mask);
-    static void (GLAPIENTRY *glStencilMask) (GLuint mask);
-    static void (GLAPIENTRY *glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass);
-    static void (GLAPIENTRY *glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-    static void (GLAPIENTRY *glTexParameteri) (GLenum target, GLenum pname, GLint param);
-    static void (GLAPIENTRY *glTexParameteriv) (GLenum target, GLenum pname, const GLint *params);
-    static void (GLAPIENTRY *glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
-    static void (GLAPIENTRY *glViewport) (GLint x, GLint y, GLsizei width, GLsizei height);
-    static void (GLAPIENTRY *glPushAttrib) ( GLbitfield mask );
-    static void (GLAPIENTRY *glPopAttrib) ( void );
-    static void (GLAPIENTRY *glPushClientAttrib) ( GLbitfield mask );
-    static void (GLAPIENTRY *glPopClientAttrib) ( void );
-    static GLboolean (GLAPIENTRY *glIsRenderbufferEXT) (GLuint renderbuffer);
-    static void (GLAPIENTRY *glBindRenderbufferEXT) (GLenum target, GLuint renderbuffer);
-    static void (GLAPIENTRY *glDeleteRenderbuffersEXT) (GLsizei n, const GLuint *renderbuffers);
-    static void (GLAPIENTRY *glGenRenderbuffersEXT) (GLsizei n, GLuint *renderbuffers);
-    static void (GLAPIENTRY *glRenderbufferStorageEXT) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
-    static void (GLAPIENTRY *glGetRenderbufferParameterivEXT) (GLenum target, GLenum pname, GLint *params);
-    static GLboolean (GLAPIENTRY *glIsFramebufferEXT) (GLuint framebuffer);
-    static void (GLAPIENTRY *glBindFramebufferEXT) (GLenum target, GLuint framebuffer);
-    static void (GLAPIENTRY *glDeleteFramebuffersEXT) (GLsizei n, const GLuint *framebuffers);
-    static void (GLAPIENTRY *glGenFramebuffersEXT) (GLsizei n, GLuint *framebuffers);
-    static GLenum (GLAPIENTRY *glCheckFramebufferStatusEXT) (GLenum target);
-    static void (GLAPIENTRY *glFramebufferTexture1DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-    static void (GLAPIENTRY *glFramebufferTexture2DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
-    static void (GLAPIENTRY *glFramebufferTexture3DEXT) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
-    static void (GLAPIENTRY *glFramebufferRenderbufferEXT) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
-    static void (GLAPIENTRY *glGetFramebufferAttachmentParameterivEXT) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
-    static void (GLAPIENTRY *glGenerateMipmapEXT) (GLenum target);
-
-    /* OpenGL functions which are needed ONLY for implementing GLES 1.1*/
-    static void (GLAPIENTRY *glAlphaFunc) (GLenum func, GLclampf ref);
-    static void (GLAPIENTRY *glBegin)( GLenum mode );
-    static void (GLAPIENTRY *glClearDepth) (GLclampd depth);
-    static void (GLAPIENTRY *glClientActiveTexture) ( GLenum texture );
-    static void (GLAPIENTRY *glClipPlane) (GLenum plane, const GLdouble *equation);
-    static void (GLAPIENTRY *glColor4d) (GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
-    static void (GLAPIENTRY *glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
-    static void (GLAPIENTRY *glColor4fv) ( const GLfloat *v );
-    static void (GLAPIENTRY *glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
-    static void (GLAPIENTRY *glColor4ubv) ( const GLubyte *v );
-    static void (GLAPIENTRY *glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    static void (GLAPIENTRY *glDisableClientState) (GLenum array);
-    static void (GLAPIENTRY *glEnableClientState) (GLenum array);
-    static void (GLAPIENTRY *glEnd) (void);
-    static void (GLAPIENTRY *glFogf) (GLenum pname, GLfloat param);
-    static void (GLAPIENTRY *glFogfv) (GLenum pname, const GLfloat *params);
-    static void (GLAPIENTRY *glFrustum) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-    static void (GLAPIENTRY *glGetClipPlane) (GLenum plane, GLdouble *equation);
-    static void (GLAPIENTRY *glGetDoublev) ( GLenum pname, GLdouble *params );
-    static void (GLAPIENTRY *glGetLightfv) (GLenum light, GLenum pname, GLfloat *params);
-    static void (GLAPIENTRY *glGetMaterialfv) (GLenum face, GLenum pname, GLfloat *params);
-    static void (GLAPIENTRY *glGetPointerv) (GLenum pname, GLvoid* *params);
-    static void (GLAPIENTRY *glGetTexEnvfv) (GLenum target, GLenum pname, GLfloat *params);
-    static void (GLAPIENTRY *glGetTexEnviv) (GLenum target, GLenum pname, GLint *params);
-    static void (GLAPIENTRY *glLightf) (GLenum light, GLenum pname, GLfloat param);
-    static void (GLAPIENTRY *glLightfv) (GLenum light, GLenum pname, const GLfloat *params);
-    static void (GLAPIENTRY *glLightModelf) (GLenum pname, GLfloat param);
-    static void (GLAPIENTRY *glLightModelfv) (GLenum pname, const GLfloat *params);
-    static void (GLAPIENTRY *glLoadIdentity) (void);
-    static void (GLAPIENTRY *glLoadMatrixf) (const GLfloat *m);
-    static void (GLAPIENTRY *glLogicOp) (GLenum opcode);
-    static void (GLAPIENTRY *glMaterialf) (GLenum face, GLenum pname, GLfloat param);
-    static void (GLAPIENTRY *glMaterialfv) (GLenum face, GLenum pname, const GLfloat *params);
-    static void (GLAPIENTRY *glMultiTexCoord2fv) ( GLenum target, const GLfloat *v );
-    static void (GLAPIENTRY *glMultiTexCoord2sv) ( GLenum target, const GLshort *v );
-    static void (GLAPIENTRY *glMultiTexCoord3fv) ( GLenum target, const GLfloat *v );
-    static void (GLAPIENTRY *glMultiTexCoord3sv) ( GLenum target, const GLshort *v );
-    static void (GLAPIENTRY *glMultiTexCoord4f) ( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q );
-    static void (GLAPIENTRY *glMultiTexCoord4fv) ( GLenum target, const GLfloat *v );
-    static void (GLAPIENTRY *glMultiTexCoord4sv) ( GLenum target, const GLshort *v );
-    static void (GLAPIENTRY *glMultMatrixf) (const GLfloat *m);
-    static void (GLAPIENTRY *glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz);
-    static void (GLAPIENTRY *glNormal3fv) ( const GLfloat *v );
-    static void (GLAPIENTRY *glNormal3sv) ( const GLshort *v );
-    static void (GLAPIENTRY *glOrtho) (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
-    static void (GLAPIENTRY *glPointParameterf) (GLenum, GLfloat);
-    static void (GLAPIENTRY *glPointParameterfv) (GLenum, const GLfloat *);
-    static void (GLAPIENTRY *glPointSize) (GLfloat size);
-    static void (GLAPIENTRY *glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
-    static void (GLAPIENTRY *glScalef) (GLfloat x, GLfloat y, GLfloat z);
-    static void (GLAPIENTRY *glTexEnvf) (GLenum target, GLenum pname, GLfloat param);
-    static void (GLAPIENTRY *glTexEnvfv) (GLenum target, GLenum pname, const GLfloat *params);
-    static void (GLAPIENTRY *glTexParameterf) (GLenum target, GLenum pname, GLfloat param);
-    static void (GLAPIENTRY *glTexParameterfv) (GLenum target, GLenum pname, const GLfloat *params);
-    static void (GLAPIENTRY *glMatrixMode) (GLenum mode);
-    static void (GLAPIENTRY *glNormalPointer) (GLenum type, GLsizei stride, const GLvoid *pointer);
-    static void (GLAPIENTRY *glPopMatrix) (void);
-    static void (GLAPIENTRY *glPushMatrix) (void);
-    static void (GLAPIENTRY *glShadeModel) (GLenum mode);
-    static void (GLAPIENTRY *glTexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-    static void (GLAPIENTRY *glTexEnvi) (GLenum target, GLenum pname, GLint param);
-    static void (GLAPIENTRY *glTexEnviv) (GLenum target, GLenum pname, const GLint *params);
-    static void (GLAPIENTRY *glTranslatef) (GLfloat x, GLfloat y, GLfloat z);
-    static void (GLAPIENTRY *glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
-
-    /* OpenGL functions which are needed ONLY for implementing GLES 1.1 EXTENSIONS*/
-    static void (GLAPIENTRY *glCurrentPaletteMatrixARB) (GLint index);
-    static void (GLAPIENTRY *glMatrixIndexuivARB) (GLint size, GLuint * indices);
-    static void (GLAPIENTRY *glMatrixIndexPointerARB) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
-    static void (GLAPIENTRY *glWeightPointerARB) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
-    static void (GLAPIENTRY *glTexGenf) (GLenum coord, GLenum pname, GLfloat param );
-    static void (GLAPIENTRY *glTexGeni) (GLenum coord, GLenum pname, GLint param );
-    static void (GLAPIENTRY *glTexGenfv) (GLenum coord, GLenum pname, const GLfloat *params );
-    static void (GLAPIENTRY *glTexGeniv) (GLenum coord, GLenum pname, const GLint *params );
-    static void (GLAPIENTRY *glGetTexGenfv) (GLenum coord, GLenum pname, GLfloat *params );
-    static void (GLAPIENTRY *glGetTexGeniv) (GLenum coord, GLenum pname, GLint *params );
-
-    /* Loading OpenGL functions which are needed ONLY for implementing GLES 2.0*/
-    static void (GL_APIENTRY *glBlendColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
-    static void (GL_APIENTRY *glStencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask);
-    static void (GL_APIENTRY *glStencilMaskSeparate)(GLenum face, GLuint mask);
-    static GLboolean (GL_APIENTRY *glIsProgram)(GLuint program);
-    static GLboolean (GL_APIENTRY *glIsShader)(GLuint shader);
-    static void (GL_APIENTRY *glVertexAttrib1f)(GLuint indx, GLfloat x);
-    static void (GL_APIENTRY *glVertexAttrib1fv)(GLuint indx, const GLfloat* values);
-    static void (GL_APIENTRY *glVertexAttrib2f)(GLuint indx, GLfloat x, GLfloat y);
-    static void (GL_APIENTRY *glVertexAttrib2fv)(GLuint indx, const GLfloat* values);
-    static void (GL_APIENTRY *glVertexAttrib3f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-    static void (GL_APIENTRY *glVertexAttrib3fv)(GLuint indx, const GLfloat* values);
-    static void (GL_APIENTRY *glVertexAttrib4f)(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-    static void (GL_APIENTRY *glVertexAttrib4fv)(GLuint indx, const GLfloat* values);
-    static void (GL_APIENTRY *glVertexAttribPointer)(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
-    static void (GL_APIENTRY *glDisableVertexAttribArray)(GLuint index);
-    static void (GL_APIENTRY *glEnableVertexAttribArray)(GLuint index);
-    static void (GL_APIENTRY *glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params);
-    static void (GL_APIENTRY *glGetVertexAttribiv)(GLuint index, GLenum pname, GLint* params);
-    static void (GL_APIENTRY *glGetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid** pointer);
-    static void (GL_APIENTRY *glUniform1f)(GLint location, GLfloat x);
-    static void (GL_APIENTRY *glUniform1fv)(GLint location, GLsizei count, const GLfloat* v);
-    static void (GL_APIENTRY *glUniform1i)(GLint location, GLint x);
-    static void (GL_APIENTRY *glUniform1iv)(GLint location, GLsizei count, const GLint* v);
-    static void (GL_APIENTRY *glUniform2f)(GLint location, GLfloat x, GLfloat y);
-    static void (GL_APIENTRY *glUniform2fv)(GLint location, GLsizei count, const GLfloat* v);
-    static void (GL_APIENTRY *glUniform2i)(GLint location, GLint x, GLint y);
-    static void (GL_APIENTRY *glUniform2iv)(GLint location, GLsizei count, const GLint* v);
-    static void (GL_APIENTRY *glUniform3f)(GLint location, GLfloat x, GLfloat y, GLfloat z);
-    static void (GL_APIENTRY *glUniform3fv)(GLint location, GLsizei count, const GLfloat* v);
-    static void (GL_APIENTRY *glUniform3i)(GLint location, GLint x, GLint y, GLint z);
-    static void (GL_APIENTRY *glUniform3iv)(GLint location, GLsizei count, const GLint* v);
-    static void (GL_APIENTRY *glUniform4f)(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
-    static void (GL_APIENTRY *glUniform4fv)(GLint location, GLsizei count, const GLfloat* v);
-    static void (GL_APIENTRY *glUniform4i)(GLint location, GLint x, GLint y, GLint z, GLint w);
-    static void (GL_APIENTRY *glUniform4iv)(GLint location, GLsizei count, const GLint* v);
-    static void (GL_APIENTRY *glUniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-    static void (GL_APIENTRY *glUniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-    static void (GL_APIENTRY *glUniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
-    static void (GL_APIENTRY *glAttachShader)(GLuint program, GLuint shader);
-    static void (GL_APIENTRY *glBindAttribLocation)(GLuint program, GLuint index, const GLchar* name);
-    static void (GL_APIENTRY *glCompileShader)(GLuint shader);
-    static GLuint (GL_APIENTRY *glCreateProgram)(void);
-    static GLuint (GL_APIENTRY *glCreateShader)(GLenum type);
-    static void (GL_APIENTRY *glDeleteProgram)(GLuint program);
-    static void (GL_APIENTRY *glDeleteShader)(GLuint shader);
-    static void (GL_APIENTRY *glDetachShader)(GLuint program, GLuint shader);
-    static void (GL_APIENTRY *glLinkProgram)(GLuint program);
-    static void (GL_APIENTRY *glUseProgram)(GLuint program);
-    static void (GL_APIENTRY *glValidateProgram)(GLuint program);
-    static void (GL_APIENTRY *glGetActiveAttrib)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-    static void (GL_APIENTRY *glGetActiveUniform)(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
-    static void (GL_APIENTRY *glGetAttachedShaders)(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
-    static int  (GL_APIENTRY *glGetAttribLocation)(GLuint program, const GLchar* name);
-    static void (GL_APIENTRY *glGetProgramiv)(GLuint program, GLenum pname, GLint* params);
-    static void (GL_APIENTRY *glGetProgramInfoLog)(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-    static void (GL_APIENTRY *glGetShaderiv)(GLuint shader, GLenum pname, GLint* params);
-    static void (GL_APIENTRY *glGetShaderInfoLog)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
-    static void (GL_APIENTRY *glGetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-    static void (GL_APIENTRY *glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
-    static void (GL_APIENTRY *glGetUniformfv)(GLuint program, GLint location, GLfloat* params);
-    static void (GL_APIENTRY *glGetUniformiv)(GLuint program, GLint location, GLint* params);
-    static int  (GL_APIENTRY *glGetUniformLocation)(GLuint program, const GLchar* name);
-    static void (GL_APIENTRY *glReleaseShaderCompiler)(void);
-    static void (GL_APIENTRY *glShaderBinary)(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
-    static void (GL_APIENTRY *glShaderSource)(GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
-
-private:
-    bool                    m_isLoaded;
-    static android::Mutex   s_lock;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESbuffer.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESbuffer.h
deleted file mode 100644
index 3353ec1..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESbuffer.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLES_BUFFER_H
-#define GLES_BUFFER_H
-
-#include <stdio.h>
-#include <GLES/gl.h>
-#include <GLcommon/objectNameManager.h>
-#include <GLcommon/RangeManip.h>
-
-class GLESbuffer: public ObjectData {
-public:
-   GLESbuffer():ObjectData(BUFFER_DATA),m_size(0),m_usage(GL_STATIC_DRAW),m_data(NULL),m_wasBound(false){}
-   GLuint getSize(){return m_size;};
-   GLuint getUsage(){return m_usage;};
-   GLvoid* getData(){ return m_data;}
-   bool  setBuffer(GLuint size,GLuint usage,const GLvoid* data);
-   bool  setSubBuffer(GLint offset,GLuint size,const GLvoid* data);
-   void  getConversions(const RangeList& rIn,RangeList& rOut);
-   bool  fullyConverted(){return m_conversionManager.size() == 0;};
-   void  setBinded(){m_wasBound = true;};
-   bool  wasBinded(){return m_wasBound;};
-   ~GLESbuffer();
-
-private:
-    GLuint         m_size;
-    GLuint         m_usage;
-    unsigned char* m_data;
-    RangeList      m_conversionManager;
-    bool           m_wasBound;
-};
-
-typedef SmartPtr<GLESbuffer> GLESbufferPtr;
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h
deleted file mode 100644
index d266e3d..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLEScontext.h
+++ /dev/null
@@ -1,193 +0,0 @@
-#ifndef GLES_CONTEXT_H
-#define GLES_CONTEXT_H
-
-#include "GLDispatch.h"
-#include "GLESpointer.h"
-#include "objectNameManager.h"
-#include <utils/threads.h>
-#include <string>
-
-typedef std::map<GLenum,GLESpointer*>  ArraysMap;
-
-enum TextureTarget {
-TEXTURE_2D,
-TEXTURE_CUBE_MAP,
-NUM_TEXTURE_TARGETS
-};
-
-typedef struct _textureTargetState {
-    GLuint texture;
-    GLboolean enabled;
-} textureTargetState;
-
-typedef textureTargetState textureUnitState[NUM_TEXTURE_TARGETS];
-
-class Version{
-public:
-    Version();
-    Version(int major,int minor,int release);
-    Version(const char* versionString);
-    Version(const Version& ver);
-    bool operator<(const Version& ver) const;
-    Version& operator=(const Version& ver);
-private:
-    int m_major;
-    int m_minor;
-    int m_release;
-};
-
-struct GLSupport {
-    GLSupport():maxLights(0),maxVertexAttribs(0),maxClipPlane(0),maxTexUnits(0), \
-                maxTexImageUnits(0),maxTexSize(0) , \
-                GL_EXT_TEXTURE_FORMAT_BGRA8888(false), GL_EXT_FRAMEBUFFER_OBJECT(false), \
-                GL_ARB_VERTEX_BLEND(false), GL_ARB_MATRIX_PALETTE(false), \
-                GL_EXT_PACKED_DEPTH_STENCIL(false) , GL_OES_READ_FORMAT(false), \
-                GL_ARB_HALF_FLOAT_PIXEL(false), GL_NV_HALF_FLOAT(false), \
-                GL_ARB_HALF_FLOAT_VERTEX(false),GL_SGIS_GENERATE_MIPMAP(false),
-                GL_ARB_ES2_COMPATIBILITY(false),GL_OES_STANDARD_DERIVATIVES(false) {} ;
-    int  maxLights;
-    int  maxVertexAttribs;
-    int  maxClipPlane;
-    int  maxTexUnits;
-    int  maxTexImageUnits;
-    int  maxTexSize;
-    Version glslVersion;
-    bool GL_EXT_TEXTURE_FORMAT_BGRA8888;
-    bool GL_EXT_FRAMEBUFFER_OBJECT;
-    bool GL_ARB_VERTEX_BLEND;
-    bool GL_ARB_MATRIX_PALETTE;
-    bool GL_EXT_PACKED_DEPTH_STENCIL;
-    bool GL_OES_READ_FORMAT;
-    bool GL_ARB_HALF_FLOAT_PIXEL;
-    bool GL_NV_HALF_FLOAT;
-    bool GL_ARB_HALF_FLOAT_VERTEX;
-    bool GL_SGIS_GENERATE_MIPMAP;
-    bool GL_ARB_ES2_COMPATIBILITY;
-    bool GL_OES_STANDARD_DERIVATIVES;
-
-};
-
-struct ArrayData{
-    ArrayData():data(NULL),
-                type(0),
-                stride(0),
-                allocated(false){};
-
-    void*        data;
-    GLenum       type;
-    unsigned int stride;
-    bool         allocated;
-};
-
-class GLESConversionArrays
-{
-public:
-    GLESConversionArrays():m_current(0){};
-    void setArr(void* data,unsigned int stride,GLenum type);
-    void allocArr(unsigned int size,GLenum type);
-    ArrayData& operator[](int i);
-    void* getCurrentData();
-    ArrayData& getCurrentArray();
-    unsigned int getCurrentIndex();
-    void operator++();
-
-    ~GLESConversionArrays();
-private:
-    std::map<GLenum,ArrayData> m_arrays;
-    unsigned int m_current;
-};
-
-class GLEScontext{
-public:
-    virtual void init();
-    GLEScontext();
-    GLenum getGLerror();
-    void setGLerror(GLenum err);
-    void setShareGroup(ShareGroupPtr grp){m_shareGroup = grp;};
-    ShareGroupPtr shareGroup() const { return m_shareGroup; }
-    virtual void setActiveTexture(GLenum tex);
-    unsigned int getBindedTexture(GLenum target);
-    unsigned int getBindedTexture(GLenum unit,GLenum target);
-    void setBindedTexture(GLenum target,unsigned int tex);
-    bool isTextureUnitEnabled(GLenum unit);
-    void setTextureEnabled(GLenum target, GLenum enable);
-    ObjectLocalName getDefaultTextureName(GLenum target);
-    bool isInitialized() { return m_initialized; };
-    void setUnpackAlignment(GLint param){ m_unpackAlignment = param; };
-    GLint getUnpackAlignment(){ return m_unpackAlignment; };
-
-    bool  isArrEnabled(GLenum);
-    void  enableArr(GLenum arr,bool enable);
-    const GLvoid* setPointer(GLenum arrType,GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize = false);
-    virtual const GLESpointer* getPointer(GLenum arrType);
-    virtual void setupArraysPointers(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct) = 0;
-    void bindBuffer(GLenum target,GLuint buffer);
-    void unbindBuffer(GLuint buffer);
-    bool isBuffer(GLuint buffer);
-    bool isBindedBuffer(GLenum target);
-    GLvoid* getBindedBuffer(GLenum target);
-    void getBufferSize(GLenum target,GLint* param);
-    void getBufferUsage(GLenum target,GLint* param);
-    bool setBufferData(GLenum target,GLsizeiptr size,const GLvoid* data,GLenum usage);
-    bool setBufferSubData(GLenum target,GLintptr offset,GLsizeiptr size,const GLvoid* data);
-    const char * getExtensionString();
-    void getGlobalLock();
-    void releaseGlobalLock();
-    virtual GLSupport*  getCaps(){return &s_glSupport;};
-    virtual ~GLEScontext();
-    virtual int getMaxTexUnits() = 0;
-    virtual void drawValidate(void);
-
-    void setRenderbufferBinding(GLuint rb) { m_renderbuffer = rb; }
-    GLuint getRenderbufferBinding() const { return m_renderbuffer; }
-    void setFramebufferBinding(GLuint fb) { m_framebuffer = fb; }
-    GLuint getFramebufferBinding() const { return m_framebuffer; }
-
-    static GLDispatch& dispatcher(){return s_glDispatch;};
-
-    static int getMaxLights(){return s_glSupport.maxLights;}
-    static int getMaxClipPlanes(){return s_glSupport.maxClipPlane;}
-    static int getMaxTexSize(){return s_glSupport.maxTexSize;}
-    static Version glslVersion(){return s_glSupport.glslVersion;}
-    static bool isAutoMipmapSupported(){return s_glSupport.GL_SGIS_GENERATE_MIPMAP;}
-    static TextureTarget GLTextureTargetToLocal(GLenum target);
-    static int findMaxIndex(GLsizei count,GLenum type,const GLvoid* indices);
-
-    virtual bool glGetIntegerv(GLenum pname, GLint *params);
-    virtual bool glGetBooleanv(GLenum pname, GLboolean *params);
-    virtual bool glGetFloatv(GLenum pname, GLfloat *params);
-    virtual bool glGetFixedv(GLenum pname, GLfixed *params);
-
-protected:
-    virtual bool needConvert(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum type,const GLvoid* indices,bool direct,GLESpointer* p,GLenum array_id) = 0;
-    void convertDirect(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p);
-    void convertDirectVBO(GLESConversionArrays& fArrs,GLint first,GLsizei count,GLenum array_id,GLESpointer* p);
-    void convertIndirect(GLESConversionArrays& fArrs,GLsizei count,GLenum type,const GLvoid* indices,GLenum array_id,GLESpointer* p);
-    void convertIndirectVBO(GLESConversionArrays& fArrs,GLsizei count,GLenum indices_type,const GLvoid* indices,GLenum array_id,GLESpointer* p);
-    void initCapsLocked(const GLubyte * extensionString);
-    virtual void initExtensionString() =0;
-    static android::Mutex s_lock;
-    static GLDispatch     s_glDispatch;
-    bool                  m_initialized;
-    unsigned int          m_activeTexture;
-    GLint                 m_unpackAlignment;
-    ArraysMap             m_map;
-    static std::string*   s_glExtensions;
-    static GLSupport      s_glSupport;
-
-private:
-
-    virtual void setupArr(const GLvoid* arr,GLenum arrayType,GLenum dataType,GLint size,GLsizei stride, GLboolean normalized, int pointsIndex = -1) = 0 ;
-    GLuint getBuffer(GLenum target);
-
-    ShareGroupPtr         m_shareGroup;
-    GLenum                m_glError;
-    textureUnitState*     m_texState;
-    unsigned int          m_arrayBuffer;
-    unsigned int          m_elementBuffer;
-    GLuint                m_renderbuffer;
-    GLuint                m_framebuffer;
-};
-
-#endif
-
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESmacros.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESmacros.h
deleted file mode 100644
index 95ffadb..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESmacros.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef GLES_MACROS_H
-#define GLES_MACROS_H
-
-#define GET_CTX() \
-            if(!s_eglIface) return; \
-            GLEScontext *ctx = s_eglIface->getGLESContext(); \
-
-#define GET_CTX_CM() \
-            if(!s_eglIface) return; \
-            GLEScmContext *ctx = static_cast<GLEScmContext *>(s_eglIface->getGLESContext()); \
-            if(!ctx) return;
-
-#define GET_CTX_V2() \
-            if(!s_eglIface) return; \
-            GLESv2Context *ctx = static_cast<GLESv2Context *>(s_eglIface->getGLESContext()); \
-            if(!ctx) return;
-
-#define GET_CTX_RET(failure_ret) \
-            if(!s_eglIface) return failure_ret; \
-            GLEScontext *ctx = s_eglIface->getGLESContext(); \
-            if(!ctx) return failure_ret;
-
-#define GET_CTX_CM_RET(failure_ret) \
-            if(!s_eglIface) return failure_ret; \
-            GLEScmContext *ctx = static_cast<GLEScmContext *>(s_eglIface->getGLESContext()); \
-            if(!ctx) return failure_ret;
-
-#define GET_CTX_V2_RET(failure_ret) \
-            if(!s_eglIface) return failure_ret; \
-            GLESv2Context *ctx = static_cast<GLESv2Context *>(s_eglIface->getGLESContext()); \
-            if(!ctx) return failure_ret;
-
-
-#define SET_ERROR_IF(condition,err) if((condition)) {                            \
-                        fprintf(stderr, "%s:%s:%d error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
-                        ctx->setGLerror(err);                                    \
-                        return;                                                  \
-                    }
-
-
-#define RET_AND_SET_ERROR_IF(condition,err,ret) if((condition)) {                \
-                        fprintf(stderr, "%s:%s:%d error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
-                        ctx->setGLerror(err);                                    \
-                        return ret;                                              \
-                    }
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESpointer.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESpointer.h
deleted file mode 100644
index 851fe45..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESpointer.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLES_POINTER_H
-#define GLES_POINTER_H
-
-#include <GLES/gl.h>
-#include "GLESbuffer.h"
-
-class GLESpointer
-{
-
-public:
-    GLESpointer();
-    GLenum        getType() const;
-    GLint         getSize() const;
-    GLsizei       getStride() const;
-    const GLvoid* getArrayData() const;
-    GLvoid*       getBufferData() const;
-    GLuint        getBufferName() const;
-    GLboolean     getNormalized() const { return m_normalize ? GL_TRUE : GL_FALSE; }
-    const GLvoid* getData() const;
-    unsigned int  getBufferOffset() const;
-    void          redirectPointerData();
-    void          getBufferConversions(const RangeList& rl,RangeList& rlOut);
-    bool          bufferNeedConversion(){ return !m_buffer->fullyConverted();}
-    void          setArray (GLint size,GLenum type,GLsizei stride,const GLvoid* data,bool normalize = false);
-    void          setBuffer(GLint size,GLenum type,GLsizei stride,GLESbuffer* buf,GLuint bufferName,int offset,bool normalize = false);
-    bool          isEnable() const;
-    bool          isNormalize() const;
-    bool          isVBO() const;
-    void          enable(bool b);
-
-private:
-    GLint         m_size;
-    GLenum        m_type;
-    GLsizei       m_stride;
-    bool          m_enabled;
-    bool          m_normalize;
-    const GLvoid* m_data;
-    GLESbuffer*   m_buffer;
-    GLuint        m_bufferName;
-    unsigned int  m_buffOffset;
-    bool          m_isVBO;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h
deleted file mode 100644
index 3daaa7c..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLESvalidate.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GLES_VALIDATE_H
-#define GLES_VALIDATE_H
-
-#include <GLES/gl.h>
-#include "GLEScontext.h"
-struct GLESvalidate
-{
-static bool textureEnum(GLenum e,unsigned int maxTex);
-static bool pixelType(GLEScontext * ctx,GLenum type);
-static bool pixelOp(GLenum format,GLenum type);
-static bool pixelFrmt(GLEScontext* ctx , GLenum format);
-static bool bufferTarget(GLenum target);
-static bool bufferParam(GLenum param);
-static bool drawMode(GLenum mode);
-static bool drawType(GLenum mode);
-static bool textureTarget(GLenum target);
-static bool textureTargetLimited(GLenum target);
-static bool textureTargetEx(GLenum target);
-static bool texImgDim(GLsizei width,GLsizei height,int maxTexSize);
-static bool blendEquationMode(GLenum mode);
-static bool framebufferTarget(GLenum target);
-static bool framebufferAttachment(GLenum attachment);
-static bool framebufferAttachmentParams(GLenum pname);
-static bool renderbufferTarget(GLenum target);
-static bool renderbufferParams(GLenum pname);
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLconversion_macros.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLconversion_macros.h
deleted file mode 100644
index 83e99b4..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLconversion_macros.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _GL_FIXED_OPS_H
-#define _GL_FIXED_OPS_H
-
-#define X2F(x)        (((float)(x))/65536.0f)
-#define X2D(x)        (((double)(x))/65536.0)
-#define X2I(x)        ((x) /65536)
-#define B2S(x)        ((short)x)
-
-
-#define F2X(d) ((d) > 32767.65535 ? 32767 * 65536 + 65535 :  \
-               (d) < -32768.65535 ? -32768 * 65536 + 65535 : \
-               ((GLfixed) ((d) * 65536)))
-
-#define I2X(d) ((d)*65536)
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLutils.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLutils.h
deleted file mode 100644
index 7e2a038..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/GLutils.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef GL_UTILS_H
-#define GL_UTILS_H
-
-typedef enum{
-             GLES_1_1 = 1,
-             GLES_2_0 = 2,
-             MAX_GLES_VERSION //Must be last
-            }GLESVersion;
-
-template <class T>
-void swap(T& x,T& y) {
-     T temp;
-     temp=x;
-     x=y;
-     y=temp;
-}
-
-bool isPowerOf2(int num);
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/PaletteTexture.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/PaletteTexture.h
deleted file mode 100644
index 90b206d..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/PaletteTexture.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __PALETTE_TEXTURE_H__
-#define __PALETTE_TEXTURE_H__
-
-#include <GLES/gl.h>
-
-#define MAX_SUPPORTED_PALETTE 10
-
-unsigned char* uncompressTexture(GLenum internalformat,GLenum& formatOut,GLsizei width,GLsizei height,GLsizei imageSize, const GLvoid* data,GLint level);
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/RangeManip.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/RangeManip.h
deleted file mode 100644
index e3162b8..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/RangeManip.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef RANGE_H
-#define RANGE_H
-
-#include <vector>
-
-class Range {
-
-public:
-    Range():m_start(0),m_end(0),m_size(0){};
-    Range(int start,int size):m_start(start),m_end(start+size),m_size(size){};
-    Range(const Range& r):m_start(r.m_start),m_end(r.m_end),m_size(r.m_size){};
-    void setRange(int start,int size){m_start = start; m_end = start+size; m_size = size;};
-    inline int getStart() const{return m_start;};
-    inline int getEnd() const{return m_end;};
-    inline int getSize() const{return m_size;};
-    Range& operator=(const Range& r) {
-        m_start = r.m_start;
-        m_end = r.m_end;
-        m_size = r.m_size;
-        return *this;
-    }
-    bool operator ==(const Range& r) const {
-        return m_start == r.m_start && m_size == r.m_size && m_end == r.m_end;
-    }
-    bool operator !=(const Range& r) const {return !((*this) == r);};
-    bool rangeIntersection(const Range& r,Range& rOut) const ;
-    bool rangeUnion(const Range& r,Range& rOut) const ;
-
-private:
-    int m_start;
-    int m_end;
-    int m_size;
-};
-
-class RangeList {
-public:
-      void addRange(const Range& r);
-      void addRanges(const RangeList& rl);
-      void delRange(const Range& r,RangeList& deleted);
-      void delRanges(const RangeList& rl,RangeList& deleted);
-      bool empty() const;
-      void merge();
-      int  size() const;
-      void clear();
-      Range& operator[](unsigned int i){return list[i];};
-private:
-  void erase(unsigned int i);
-  std::vector<Range> list;
-};
-
-
-
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/SmartPtr.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/SmartPtr.h
deleted file mode 100644
index 8ac93fb..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/SmartPtr.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __SMART_PTR_H
-#define __SMART_PTR_H
-
-#include <cutils/threads.h>
-#include <cutils/atomic.h>
-
-template <class T, bool threadSafe = false>
-class SmartPtr
-{
-public:
-    explicit SmartPtr(T* ptr = (T*)NULL) {
-        if (threadSafe) {
-            m_lock = new mutex_t;
-            mutex_init(m_lock);
-        }
-        else m_lock = NULL;
-
-        m_ptr = ptr;
-        if (ptr)
-           m_pRefCount = new int32_t(1);
-        else
-           m_pRefCount = NULL;
-    }
-
-    SmartPtr<T,threadSafe>(const SmartPtr<T,false>& rhs) {
-        if (threadSafe) {
-            m_lock = new mutex_t;
-            mutex_init(m_lock);
-        }
-        else m_lock = NULL;
-
-        m_pRefCount = rhs.m_pRefCount;
-        m_ptr       = rhs.m_ptr;
-        use();
-    }
-
-    SmartPtr<T,threadSafe>(SmartPtr<T,true>& rhs) {
-        if (threadSafe) {
-            m_lock = new mutex_t;
-            mutex_init(m_lock);
-        }
-        else m_lock = NULL;
-
-        if (rhs.m_lock) mutex_lock(rhs.m_lock);
-        m_pRefCount = rhs.m_pRefCount;
-        m_ptr       = rhs.m_ptr;
-        use();
-        if (rhs.m_lock) mutex_unlock(rhs.m_lock);
-    }
-
-    ~SmartPtr() {
-        if (m_lock) mutex_lock(m_lock);
-        release();
-        if (m_lock)
-        {
-            mutex_unlock(m_lock);
-            mutex_destroy(m_lock);
-            delete m_lock;
-        }
-    }
-
-    T* Ptr() const {
-        return m_ptr;
-    }
-
-    const T* constPtr() const
-    {
-        return m_ptr;
-    }
-
-    T* operator->() const {
-        return m_ptr;
-    }
-
-    T& operator*() const {
-        return *m_ptr;
-    }
-
-    // This gives STL lists something to compare.
-    bool operator <(const SmartPtr<T>& t1) const {
-        return m_ptr < t1.m_ptr;
-    }
-
-    SmartPtr<T,threadSafe>& operator=(const SmartPtr<T,false>& rhs)
-    {
-        if (m_ptr == rhs.m_ptr)
-            return *this;
-
-        if (m_lock) mutex_lock(m_lock);
-        release();
-        m_pRefCount = rhs.m_pRefCount;
-        m_ptr       = rhs.m_ptr;
-        use();
-        if (m_lock) mutex_unlock(m_lock);
-
-        return *this;
-    }
-
-    SmartPtr<T,threadSafe>& operator=(SmartPtr<T,true>& rhs)
-    {
-        if (m_ptr == rhs.m_ptr)
-            return *this;
-
-        if (m_lock) mutex_lock(m_lock);
-        release();
-        if (rhs.m_lock) mutex_lock(rhs.m_lock);
-        m_pRefCount = rhs.m_pRefCount;
-        m_ptr       = rhs.m_ptr;
-        use();
-        if (rhs.m_lock) mutex_unlock(rhs.m_lock);
-        if (m_lock) mutex_unlock(m_lock);
-
-        return *this;
-    }
-
-private:
-    int32_t  *m_pRefCount;
-    mutex_t  *m_lock;
-    T* m_ptr;
-
-    // Increment the reference count on this pointer by 1.
-    int use() {
-        if (!m_pRefCount) return 0;
-        return android_atomic_inc(m_pRefCount) + 1;
-    }
-
-    // Decrement the reference count on the pointer by 1.
-    // If the reference count goes to (or below) 0, the pointer is deleted.
-    int release() {
-        if (!m_pRefCount) return 0;
-
-        int iVal = android_atomic_dec(m_pRefCount);
-        if (iVal > 1)
-            return iVal - 1;
-
-        delete m_pRefCount;
-        m_pRefCount = NULL;
-
-        if (m_ptr) {
-            delete m_ptr;
-            m_ptr = NULL;
-        }
-        return 0;
-    }
-
-};
-
-#endif // of  __SMART_PTR_H
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/TextureUtils.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/TextureUtils.h
deleted file mode 100644
index 9b0c4ea..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/TextureUtils.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _TEXTURE_UTILS_H
-#define _TEXTURE_UTILS_H
-
-#include <GLES/gl.h>
-#include <GLES/glext.h>
-#include "GLEScontext.h"
-#include "PaletteTexture.h"
-#include "etc1.h"
-
-int getCompressedFormats(int* formats);
-void  doCompressedTexImage2D(GLEScontext * ctx, GLenum target, GLint level, 
-                                          GLenum internalformat, GLsizei width, 
-                                          GLsizei height, GLint border, 
-                                          GLsizei imageSize, const GLvoid* data, void * funcPtr);
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h
deleted file mode 100644
index 3c5e15a..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/TranslatorIfaces.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef TRANSLATOR_IFACES_H
-#define TRANSLATOR_IFACES_H
-#include <GLES/gl.h>
-#include <string.h>
-#include "objectNameManager.h"
-
-extern "C" {
-
-/* This is a generic function pointer type, whose name indicates it must
- * be cast to the proper type *and calling convention* before use.
- */
-typedef void (*__translatorMustCastToProperFunctionPointerType)(void);
-
-typedef struct {
-  const char*                                     name;
-  __translatorMustCastToProperFunctionPointerType address;
-}ExtentionDescriptor;
-
-class TextureData : public ObjectData
-{
-public:
-    ~TextureData() {
-        if (sourceEGLImage && eglImageDetach) (*eglImageDetach)(sourceEGLImage);
-    }
-    TextureData():  ObjectData(TEXTURE_DATA),
-                    width(0),
-                    height(0),
-                    border(0),
-                    internalFormat(GL_RGBA),
-                    sourceEGLImage(0),
-                    wasBound(false),
-                    requiresAutoMipmap(false),
-                    target(0),
-                    oldGlobal(0) {
-        memset(crop_rect,0,4*sizeof(int));
-    };
-
-    unsigned int width;
-    unsigned int height;
-    unsigned int border;
-    unsigned int internalFormat;
-    unsigned int sourceEGLImage;
-    bool wasBound;
-    bool requiresAutoMipmap;
-    int          crop_rect[4];
-    void (*eglImageDetach)(unsigned int imageId);
-    GLenum target;
-    GLuint oldGlobal;
-};
-
-struct EglImage
-{
-    ~EglImage(){};
-    unsigned int imageId;
-    unsigned int globalTexName;
-    unsigned int width;
-    unsigned int height;
-    unsigned int internalFormat;
-    unsigned int border;
-};
-
-typedef SmartPtr<EglImage> ImagePtr;
-typedef  std::map< unsigned int, ImagePtr>       ImagesHndlMap;
-
-class GLEScontext;
-
-typedef struct {
-    GLEScontext*                                    (*createGLESContext)();
-    void                                            (*initContext)(GLEScontext*,ShareGroupPtr);
-    void                                            (*deleteGLESContext)(GLEScontext*);
-    void                                            (*flush)();
-    void                                            (*finish)();
-    void                                            (*setShareGroup)(GLEScontext*,ShareGroupPtr);
-    __translatorMustCastToProperFunctionPointerType (*getProcAddress)(const char*);
-}GLESiface;
-
-
-typedef struct {
-    GLEScontext* (*getGLESContext)();
-    EglImage* (*eglAttachEGLImage)(unsigned int imageId);
-    void        (*eglDetachEGLImage)(unsigned int imageId);
-}EGLiface;
-
-typedef GLESiface* (*__translator_getGLESIfaceFunc)(EGLiface*);
-
-}
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/etc1.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/etc1.h
deleted file mode 100644
index 15ee9ac..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/etc1.h
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef __etc1_h__
-#define __etc1_h__
-
-#define MAX_ETC_SUPPORTED 1
-
-#define ETC1_ENCODED_BLOCK_SIZE 8
-#define ETC1_DECODED_BLOCK_SIZE 48
-
-#ifndef ETC1_RGB8_OES
-#define ETC1_RGB8_OES 0x8D64
-#endif
-
-typedef unsigned char etc1_byte;
-typedef int etc1_bool;
-typedef unsigned int etc1_uint32;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Encode a block of pixels.
-//
-// pIn is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a
-// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R
-// value of pixel (x, y).
-//
-// validPixelMask is a 16-bit mask where bit (1 << (x + y * 4)) indicates whether
-// the corresponding (x,y) pixel is valid. Invalid pixel color values are ignored when compressing.
-//
-// pOut is an ETC1 compressed version of the data.
-
-void etc1_encode_block(const etc1_byte* pIn, etc1_uint32 validPixelMask, etc1_byte* pOut);
-
-// Decode a block of pixels.
-//
-// pIn is an ETC1 compressed version of the data.
-//
-// pOut is a pointer to a ETC_DECODED_BLOCK_SIZE array of bytes that represent a
-// 4 x 4 square of 3-byte pixels in form R, G, B. Byte (3 * (x + 4 * y) is the R
-// value of pixel (x, y).
-
-void etc1_decode_block(const etc1_byte* pIn, etc1_byte* pOut);
-
-// Return the size of the encoded image data (does not include size of PKM header).
-
-etc1_uint32 etc1_get_encoded_data_size(etc1_uint32 width, etc1_uint32 height);
-
-// Encode an entire image.
-// pIn - pointer to the image data. Formatted such that
-//       pixel (x,y) is at pIn + pixelSize * x + stride * y;
-// pOut - pointer to encoded data. Must be large enough to store entire encoded image.
-// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image.
-// returns non-zero if there is an error.
-
-int etc1_encode_image(const etc1_byte* pIn, etc1_uint32 width, etc1_uint32 height,
-        etc1_uint32 pixelSize, etc1_uint32 stride, etc1_byte* pOut);
-
-// Decode an entire image.
-// pIn - pointer to encoded data.
-// pOut - pointer to the image data. Will be written such that
-//        pixel (x,y) is at pIn + pixelSize * x + stride * y. Must be
-//        large enough to store entire image.
-// pixelSize can be 2 or 3. 2 is an GL_UNSIGNED_SHORT_5_6_5 image, 3 is a GL_BYTE RGB image.
-// returns non-zero if there is an error.
-
-int etc1_decode_image(const etc1_byte* pIn, etc1_byte* pOut,
-        etc1_uint32 width, etc1_uint32 height,
-        etc1_uint32 pixelSize, etc1_uint32 stride);
-
-// Size of a PKM header, in bytes.
-
-#define ETC_PKM_HEADER_SIZE 16
-
-// Format a PKM header
-
-void etc1_pkm_format_header(etc1_byte* pHeader, etc1_uint32 width, etc1_uint32 height);
-
-// Check if a PKM header is correctly formatted.
-
-etc1_bool etc1_pkm_is_valid(const etc1_byte* pHeader);
-
-// Read the image width from a PKM header
-
-etc1_uint32 etc1_pkm_get_width(const etc1_byte* pHeader);
-
-// Read the image height from a PKM header
-
-etc1_uint32 etc1_pkm_get_height(const etc1_byte* pHeader);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/gldefs.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/gldefs.h
deleted file mode 100644
index 1f0c7ef..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/gldefs.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-typedef double      GLclampd;   /* double precision float in [0,1] */
-typedef double      GLdouble;   /* double precision float */
-
-#define GL_S                    0x2000
-#define GL_T                    0x2001
-#define GL_R                    0x2002
-#define GL_Q                    0x2003
-#define GL_TEXTURE_GEN_S            0x0C60
-#define GL_TEXTURE_GEN_T            0x0C61
-#define GL_TEXTURE_GEN_R            0x0C62
-#define GL_CLIENT_VERTEX_ARRAY_BIT    0x00000002
-#define GL_TRANSFORM_BIT      0x00001000
-#define GL_INT                0x1404
-#define GL_HALF_FLOAT_NV      0x140B
-#define GL_HALF_FLOAT         0x140B
-#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642
-#define GL_POINT_SPRITE       0x8861
-#define GL_FRAMEBUFFER_EXT                0x8D40
-#define GL_TEXTURE_WIDTH			0x1000
-#define GL_TEXTURE_HEIGHT			0x1001
-#define GL_TEXTURE_RED_SIZE			0x805C
-#define GL_TEXTURE_GREEN_SIZE			0x805D
-#define GL_TEXTURE_BLUE_SIZE			0x805E
-#define GL_TEXTURE_ALPHA_SIZE			0x805F
-#define GL_TEXTURE_DEPTH_SIZE             0x884A
-#define GL_TEXTURE_INTERNAL_FORMAT		0x1003
diff --git a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h b/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h
deleted file mode 100644
index 605fd29..0000000
--- a/tools/emulator/opengl/host/libs/Translator/include/GLcommon/objectNameManager.h
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _OBJECT_NAME_MANAGER_H
-#define _OBJECT_NAME_MANAGER_H
-
-#include <cutils/threads.h>
-#include <map>
-#include "SmartPtr.h"
-
-enum NamedObjectType {
-    VERTEXBUFFER = 0,
-    TEXTURE = 1,
-    RENDERBUFFER = 2,
-    FRAMEBUFFER = 3,
-    SHADER = 4,
-    NUM_OBJECT_TYPES = 5  // Must be last
-};
-
-enum ObjectDataType {
-    SHADER_DATA,
-    PROGRAM_DATA,
-    TEXTURE_DATA,
-    BUFFER_DATA,
-    UNDEFINED_DATA
-};
-
-class ObjectData
-{
-public:
-    ObjectData() : m_dataType(UNDEFINED_DATA) {};
-    ObjectData(ObjectDataType type): m_dataType(type) {};
-    ObjectDataType getDataType() { return m_dataType; };
-    virtual ~ObjectData() {};
-private:
-    ObjectDataType m_dataType;
-};
-typedef SmartPtr<ObjectData> ObjectDataPtr;
-typedef unsigned long long ObjectLocalName;
-typedef std::map<ObjectLocalName, unsigned int> NamesMap;
-
-//
-// Class NameSpace - this class manages allocations and deletions of objects
-//                   from a single "local" namespace (private to context group).
-//                   For each allocated object name, a "global" name is
-//                   generated as well to be used in the space where all
-//                   contexts are shared.
-//
-//   NOTE: this class does not used by the EGL/GLES layer directly,
-//         the EGL/GLES layer creates objects using the ShareGroup class
-//         interface (see below).
-class GlobalNameSpace;
-class NameSpace
-{
-    friend class ShareGroup;
-    friend class GlobalNameSpace;
-
-private:
-    NameSpace(NamedObjectType p_type, GlobalNameSpace *globalNameSpace);
-    ~NameSpace();
-
-    //
-    // genName - creates new object in the namespace and  returns its name.
-    //           if genLocal is false then the specified p_localName will be used.
-    //           This function also generate a global name for the object,
-    //           the value of the global name can be retrieved using the
-    //           getGlobalName function.
-    //
-    ObjectLocalName genName(ObjectLocalName p_localName, bool genGlobal, bool genLocal);
-
-    // genGlobalName() - This function creates a global name
-    //                   with no associated local name, for the
-    //                   translator internal use.
-    unsigned int genGlobalName(void);
-
-    //
-    // getGlobalName - returns the global name of an object or 0 if the object
-    //                 does not exist.
-    //
-    unsigned int getGlobalName(ObjectLocalName p_localName);
-
-    //
-    // getLocaalName - returns the local name of an object or 0 if the object
-    //                 does not exist.
-    //
-    ObjectLocalName getLocalName(unsigned int p_globalName);
-
-    //
-    // deleteName - deletes and object from the namespace as well as its
-    //              global name from the global name space.
-    //
-    void deleteName(ObjectLocalName p_localName);
-
-    //
-    // isObject - returns true if the named object exist.
-    //
-    bool isObject(ObjectLocalName p_localName);
-
-    //
-    // replaces an object to map to an existing global object
-    //
-    void replaceGlobalName(ObjectLocalName p_localName, unsigned int p_globalName);
-
-private:
-    ObjectLocalName m_nextName;
-    NamesMap m_localToGlobalMap;
-    const NamedObjectType m_type;
-    GlobalNameSpace *m_globalNameSpace;
-};
-
-class GlobalNameSpace
-{
-public:
-    GlobalNameSpace();
-    ~GlobalNameSpace();
-    unsigned int genName(NamedObjectType p_type);
-    void deleteName(NamedObjectType p_type, unsigned int p_name);
-
-private:
-    mutex_t m_lock;
-};
-
-//
-// class ShareGroup -
-//   That class manages objects of one "local" context share group, typically
-//   there will be one inctance of ShareGroup for each user OpenGL context
-//   unless the user context share with another user context. In that case they
-//   both will share the same ShareGroup instance.
-//   calls into that class gets serialized through a lock so it is thread safe.
-//
-class ShareGroup
-{
-    friend class ObjectNameManager;
-    friend class SmartPtr<ShareGroup>;  // to allow destructing when ShareGroupPtr refcount reaches zero
-
-public:
-
-    //
-    // genName - generates new object name and returns its name value.
-    //           if genLocal is false, p_localName will be used as the name.
-    //           This function also generates a "global" name for the object
-    //           which can be queried using the getGlobalName function.
-    //
-    ObjectLocalName genName(NamedObjectType p_type, ObjectLocalName p_localName = 0, bool genLocal= false);
-
-    // genGlobalName() - This function creates a global name
-    //                   with no associated local name, for the
-    //                   translator internal use.
-    unsigned int genGlobalName(NamedObjectType p_type);
-
-    //
-    // getGlobalName - retrieves the "global" name of an object or 0 if the
-    //                 object does not exist.
-    //
-    unsigned int getGlobalName(NamedObjectType p_type, ObjectLocalName p_localName);
-
-    //
-    // getLocalName - retrieves the "local" name of an object or 0 if the
-    //                 object does not exist.
-    //
-    ObjectLocalName getLocalName(NamedObjectType p_type, unsigned int p_globalName);
-
-    //
-    // deleteName - deletes and object from the namespace as well as its
-    //              global name from the global name space.
-    //
-    void deleteName(NamedObjectType p_type, ObjectLocalName p_localName);
-
-    //
-    // replaceGlobalName - replaces an object to map to an existing global
-    //        named object. (used when creating EGLImage siblings)
-    //
-    void replaceGlobalName(NamedObjectType p_type, ObjectLocalName p_localName, unsigned int p_globalName);
-
-    //
-    // isObject - returns true if the named object exist.
-    //
-    bool isObject(NamedObjectType p_type, ObjectLocalName p_localName);
-
-    //
-    // Assign object global data to a names object
-    //
-    void setObjectData(NamedObjectType p_type, ObjectLocalName p_localName, ObjectDataPtr data);
-
-    //
-    // Retrieve object global data
-    //
-    ObjectDataPtr getObjectData(NamedObjectType p_type, ObjectLocalName p_localName);
-
-private:
-    explicit ShareGroup(GlobalNameSpace *globalNameSpace);
-    ~ShareGroup();
-
-private:
-    mutex_t m_lock;
-    NameSpace *m_nameSpace[NUM_OBJECT_TYPES];
-    void *m_objectsData;
-};
-
-typedef SmartPtr<ShareGroup> ShareGroupPtr;
-typedef std::multimap<void *, ShareGroupPtr> ShareGroupsMap;
-
-//
-// ObjectNameManager -
-//   This class manages the set of all ShareGroups instances,
-//   each ShareGroup instance can be accessed through one or more 'groupName'
-//   values. the type of 'groupName' is void *, the intent is that the EGL
-//   layer will use the user context handle as the name for its ShareGroup
-//   object. Multiple names can be attached to a ShareGroup object to support
-//   user context sharing.
-//
-class ObjectNameManager
-{
-public:
-    explicit ObjectNameManager(GlobalNameSpace *globalNameSpace);
-    ~ObjectNameManager();
-
-    //
-    // createShareGroup - create a new ShareGroup object and attach it with
-    //                    the "name" specified by p_groupName.
-    //
-    ShareGroupPtr createShareGroup(void *p_groupName);
-
-    //
-    // attachShareGroup - find the ShareGroup object attached to the name
-    //    specified in p_existingGroupName and attach p_groupName to the same
-    //    ShareGroup instance.
-    //
-    ShareGroupPtr attachShareGroup(void *p_groupName, void *p_existingGroupName);
-
-    //
-    // getShareGroup - retreive a ShareGroup object based on its "name"
-    //
-    ShareGroupPtr getShareGroup(void *p_groupName);
-
-    //
-    // deleteShareGroup - deletes the attachment of the p_groupName to its
-    //           attached ShareGroup. When the last name of ShareGroup is
-    //           deleted the ShareGroup object is destroyed.
-    //
-    void deleteShareGroup(void *p_groupName);
-
-    //
-    //  getGlobalContext() - this function returns a name of an existing
-    //                       ShareGroup. The intent is that the EGL layer will
-    //                       use that function to get the GL context which each
-    //                       new context needs to share with.
-    //
-    void *getGlobalContext();
-
-private:
-    ShareGroupsMap m_groups;
-    mutex_t m_lock;
-    GlobalNameSpace *m_globalNameSpace;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/Android.mk b/tools/emulator/opengl/host/libs/libOpenglRender/Android.mk
deleted file mode 100644
index 3beee95..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/Android.mk
+++ /dev/null
@@ -1,52 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-### libOpenglRender #################################################
-$(call emugl-begin-host-shared-library,libOpenglRender)
-
-$(call emugl-import,libGLESv1_dec libGLESv2_dec lib_renderControl_dec libOpenglCodecCommon libOpenglOsUtils)
-
-OS_SRCS:=
-
-ifeq ($(HOST_OS),linux)
-    OS_SRCS = NativeLinuxSubWindow.cpp
-    LOCAL_LDLIBS += -lX11
-endif
-
-ifeq ($(HOST_OS),darwin)
-    OS_SRCS = NativeMacSubWindow.m
-    LOCAL_LDLIBS += -Wl,-framework,AppKit
-endif
-
-ifeq ($(HOST_OS),windows)
-    OS_SRCS = NativeWindowsSubWindow.cpp
-endif
-
-LOCAL_SRC_FILES := \
-    $(OS_SRCS)      \
-    render_api.cpp \
-    ColorBuffer.cpp \
-    EGLDispatch.cpp \
-    FBConfig.cpp \
-    FrameBuffer.cpp \
-    GLDispatch.cpp \
-    GL2Dispatch.cpp \
-    RenderContext.cpp \
-    WindowSurface.cpp \
-    RenderControl.cpp \
-    ThreadInfo.cpp \
-    RenderThread.cpp \
-    ReadBuffer.cpp \
-    RenderServer.cpp
-
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/host/include)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-# use Translator's egl/gles headers
-LOCAL_C_INCLUDES += $(EMUGL_PATH)/host/libs/Translator/include
-
-LOCAL_STATIC_LIBRARIES += libutils liblog
-
-#For gl debbuging
-#$(call emugl-export,CFLAGS,-DCHECK_GL_ERROR)
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp
deleted file mode 100644
index 950abab..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.cpp
+++ /dev/null
@@ -1,383 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "ColorBuffer.h"
-#include "FrameBuffer.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "ThreadInfo.h"
-#ifdef WITH_GLES2
-#include "GL2Dispatch.h"
-#endif
-#include <stdio.h>
-
-ColorBuffer *ColorBuffer::create(int p_width, int p_height,
-                                 GLenum p_internalFormat)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-
-    GLenum texInternalFormat = 0;
-
-    switch(p_internalFormat) {
-        case GL_RGB:
-        case GL_RGB565_OES:
-            texInternalFormat = GL_RGB;
-            break;
-
-        case GL_RGBA:
-        case GL_RGB5_A1_OES:
-        case GL_RGBA4_OES:
-            texInternalFormat = GL_RGBA;
-            break;
-
-        default:
-            return NULL;
-            break;
-    }
-
-    if (!fb->bind_locked()) {
-        return NULL;
-    }
-
-    ColorBuffer *cb = new ColorBuffer();
-
-
-    s_gl.glGenTextures(1, &cb->m_tex);
-    s_gl.glBindTexture(GL_TEXTURE_2D, cb->m_tex);
-    int nComp = (texInternalFormat == GL_RGB ? 3 : 4);
-    char *zBuff = new char[nComp*p_width*p_height];
-    if (zBuff) {
-        memset(zBuff, 0, nComp*p_width*p_height);
-    }
-    s_gl.glTexImage2D(GL_TEXTURE_2D, 0, texInternalFormat,
-                      p_width, p_height, 0,
-                      texInternalFormat,
-                      GL_UNSIGNED_BYTE, zBuff);
-    delete [] zBuff;
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-    s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
-    //
-    // create another texture for that colorbuffer for blit
-    //
-    s_gl.glGenTextures(1, &cb->m_blitTex);
-    s_gl.glBindTexture(GL_TEXTURE_2D, cb->m_blitTex);
-    s_gl.glTexImage2D(GL_TEXTURE_2D, 0, texInternalFormat,
-                      p_width, p_height, 0,
-                      texInternalFormat,
-                      GL_UNSIGNED_BYTE, NULL);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-    s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
-    cb->m_width = p_width;
-    cb->m_height = p_height;
-    cb->m_internalFormat = texInternalFormat;
-
-    if (fb->getCaps().has_eglimage_texture_2d) {
-        cb->m_eglImage = s_egl.eglCreateImageKHR(fb->getDisplay(),
-                                                 s_egl.eglGetCurrentContext(),
-                                                 EGL_GL_TEXTURE_2D_KHR,
-                                                 (EGLClientBuffer)cb->m_tex,
-                                                 NULL);
-
-        cb->m_blitEGLImage = s_egl.eglCreateImageKHR(fb->getDisplay(),
-                                                 s_egl.eglGetCurrentContext(),
-                                                 EGL_GL_TEXTURE_2D_KHR,
-                                                 (EGLClientBuffer)cb->m_blitTex,
-                                                 NULL);
-    }
-
-    fb->unbind_locked();
-    return cb;
-}
-
-ColorBuffer::ColorBuffer() :
-    m_tex(0),
-    m_eglImage(NULL),
-    m_fbo(0),
-    m_internalFormat(0)
-{
-}
-
-ColorBuffer::~ColorBuffer()
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    fb->bind_locked();
-    s_gl.glDeleteTextures(1, &m_tex);
-    if (m_eglImage) {
-        s_egl.eglDestroyImageKHR(fb->getDisplay(), m_eglImage);
-    }
-    if (m_fbo) {
-        s_gl.glDeleteFramebuffersOES(1, &m_fbo);
-    }
-    fb->unbind_locked();
-}
-
-void ColorBuffer::update(GLenum p_format, GLenum p_type, void *pixels)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb->bind_locked()) return;
-    s_gl.glBindTexture(GL_TEXTURE_2D, m_tex);
-    s_gl.glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-    s_gl.glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,
-                         m_width, m_height, p_format, p_type, pixels);
-    fb->unbind_locked();
-}
-
-void ColorBuffer::subUpdate(int x, int y, int width, int height, GLenum p_format, GLenum p_type, void *pixels)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb->bind_locked()) return;
-    s_gl.glBindTexture(GL_TEXTURE_2D, m_tex);
-    s_gl.glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-    s_gl.glTexSubImage2D(GL_TEXTURE_2D, 0, x, y,
-                         width, height, p_format, p_type, pixels);
-    fb->unbind_locked();
-}
-
-bool ColorBuffer::blitFromPbuffer(EGLSurface p_pbufSurface)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb->bind_locked()) return false;
-
-    //
-    // bind FBO object which has this colorbuffer as render target
-    //
-    if (!bind_fbo()) {
-        fb->unbind_locked();
-        return false;
-    }
-
-    //
-    // bind the pbuffer to a temporary texture object
-    //
-    GLuint tempTex;
-    s_gl.glGenTextures(1, &tempTex);
-    s_gl.glBindTexture(GL_TEXTURE_2D, tempTex);
-    if (!s_egl.eglBindTexImage(fb->getDisplay(), p_pbufSurface, EGL_BACK_BUFFER)) {
-        printf("eglBindTexImage failed 0x%x\n", s_egl.eglGetError());
-        s_gl.glDeleteTextures(1, &tempTex);
-        fb->unbind_locked();
-        return false;
-    }
-
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
-    s_gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-    s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-    s_gl.glEnable(GL_TEXTURE_2D);
-
-    drawTexQuad();
-
-    //
-    // unbind FBO, release the pbuffer and delete the temp texture object
-    //
-    s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
-    s_egl.eglReleaseTexImage(fb->getDisplay(), p_pbufSurface, EGL_BACK_BUFFER);
-    s_gl.glDeleteTextures(1, &tempTex);
-
-    fb->unbind_locked();
-    return true;
-}
-
-bool ColorBuffer::blitFromCurrentReadBuffer()
-{
-    RenderThreadInfo *tInfo = getRenderThreadInfo();
-    if (!tInfo->currContext.Ptr()) {
-        // no Current context
-        return false;
-    }
-
-    //
-    // Create a temporary texture inside the current context
-    // from the blit_texture EGLImage and copy the pixels
-    // from the current read buffer to that texture
-    //
-    GLuint tmpTex;
-    GLint currTexBind;
-    if (tInfo->currContext->isGL2()) {
-        s_gl2.glGetIntegerv(GL_TEXTURE_BINDING_2D, &currTexBind);
-        s_gl2.glGenTextures(1,&tmpTex);
-        s_gl2.glBindTexture(GL_TEXTURE_2D, tmpTex);
-        s_gl2.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_blitEGLImage);
-        s_gl2.glCopyTexImage2D(GL_TEXTURE_2D, 0, m_internalFormat,
-                               0, 0, m_width, m_height, 0);
-    }
-    else {
-        s_gl.glGetIntegerv(GL_TEXTURE_BINDING_2D, &currTexBind);
-        s_gl.glGenTextures(1,&tmpTex);
-        s_gl.glBindTexture(GL_TEXTURE_2D, tmpTex);
-        s_gl.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_blitEGLImage);
-        s_gl.glCopyTexImage2D(GL_TEXTURE_2D, 0, m_internalFormat,
-                              0, 0, m_width, m_height, 0);
-    }
-
-
-    //
-    // Now bind the frame buffer context and blit from
-    // m_blitTex into m_tex
-    //
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (fb->bind_locked()) {
-
-        //
-        // bind FBO object which has this colorbuffer as render target
-        //
-        if (bind_fbo()) {
-
-            //
-            // save current viewport and match it to the current
-            // colorbuffer size
-            //
-            GLint vport[4];
-            s_gl.glGetIntegerv(GL_VIEWPORT, vport);
-            s_gl.glViewport(0, 0, m_width, m_height);
-
-            // render m_blitTex
-            s_gl.glBindTexture(GL_TEXTURE_2D, m_blitTex);
-            s_gl.glEnable(GL_TEXTURE_2D);
-            s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-            drawTexQuad();  // this will render the texture flipped
-
-            // unbind the fbo
-            s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
-
-            // restrore previous viewport
-            s_gl.glViewport(vport[0], vport[1], vport[2], vport[3]);
-        }
-
-        // unbind from the FrameBuffer context
-        fb->unbind_locked();
-    }
-
-    //
-    // delete the temporary texture and restore the texture binding
-    // inside the current context
-    //
-    if (tInfo->currContext->isGL2()) {
-        s_gl2.glDeleteTextures(1, &tmpTex);
-        s_gl2.glBindTexture(GL_TEXTURE_2D, currTexBind);
-    }
-    else {
-        s_gl.glDeleteTextures(1, &tmpTex);
-        s_gl.glBindTexture(GL_TEXTURE_2D, currTexBind);
-    }
-
-    return true;
-}
-
-bool ColorBuffer::bindToTexture()
-{
-    if (m_eglImage) {
-        RenderThreadInfo *tInfo = getRenderThreadInfo();
-        if (tInfo->currContext.Ptr()) {
-#ifdef WITH_GLES2
-            if (tInfo->currContext->isGL2()) {
-                s_gl2.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
-            }
-            else {
-                s_gl.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
-            }
-#else
-            s_gl.glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, m_eglImage);
-#endif
-            return true;
-        }
-    }
-    return false;
-}
-
-bool ColorBuffer::bindToRenderbuffer()
-{
-    if (m_eglImage) {
-        RenderThreadInfo *tInfo = getRenderThreadInfo();
-        if (tInfo->currContext.Ptr()) {
-#ifdef WITH_GLES2
-            if (tInfo->currContext->isGL2()) {
-                s_gl2.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES, m_eglImage);
-            }
-            else {
-                s_gl.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES, m_eglImage);
-            }
-#else
-            s_gl.glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_OES, m_eglImage);
-#endif
-            return true;
-        }
-    }
-    return false;
-}
-
-bool ColorBuffer::bind_fbo()
-{
-    if (m_fbo) {
-        // fbo already exist - just bind
-        s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_fbo);
-        return true;
-    }
-
-    s_gl.glGenFramebuffersOES(1, &m_fbo);
-    s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, m_fbo);
-    s_gl.glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES,
-                                   GL_COLOR_ATTACHMENT0_OES,
-                                   GL_TEXTURE_2D, m_tex, 0);
-    GLenum status = s_gl.glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES);
-    if (status != GL_FRAMEBUFFER_COMPLETE_OES) {
-        s_gl.glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);
-        s_gl.glDeleteFramebuffersOES(1, &m_fbo);
-        m_fbo = 0;
-        return false;
-    }
-
-    return true;
-}
-
-bool ColorBuffer::post()
-{
-    s_gl.glBindTexture(GL_TEXTURE_2D, m_tex);
-    s_gl.glEnable(GL_TEXTURE_2D);
-    s_gl.glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-    drawTexQuad();
-
-    return true;
-}
-
-void ColorBuffer::drawTexQuad()
-{
-    GLfloat verts[] = { -1.0f, -1.0f, 0.0f,
-                         -1.0f, +1.0f, 0.0f,
-                         +1.0f, -1.0f, 0.0f,
-                         +1.0f, +1.0f, 0.0f };
-
-    GLfloat tcoords[] = { 0.0f, 1.0f,
-                           0.0f, 0.0f,
-                           1.0f, 1.0f,
-                           1.0f, 0.0f };
-
-    s_gl.glClientActiveTexture(GL_TEXTURE0);
-    s_gl.glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    s_gl.glTexCoordPointer(2, GL_FLOAT, 0, tcoords);
-
-    s_gl.glEnableClientState(GL_VERTEX_ARRAY);
-    s_gl.glVertexPointer(3, GL_FLOAT, 0, verts);
-    s_gl.glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h b/tools/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h
deleted file mode 100644
index 5e01dcc..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/ColorBuffer.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIBRENDER_COLORBUFFER_H
-#define _LIBRENDER_COLORBUFFER_H
-
-#include <EGL/egl.h>
-#include <EGL/eglext.h>
-#include <GLES/gl.h>
-#include <SmartPtr.h>
-
-class ColorBuffer
-{
-public:
-    static ColorBuffer *create(int p_width, int p_height,
-                               GLenum p_internalFormat);
-    ~ColorBuffer();
-
-    GLuint getGLTextureName() const { return m_tex; }
-    GLuint getWidth() const { return m_width; }
-    GLuint getHeight() const { return m_height; }
-
-    void update(GLenum p_format, GLenum p_type, void *pixels);
-    void subUpdate(int x, int y, int width, int height, GLenum p_format, GLenum p_type, void *pixels);
-    bool blitFromPbuffer(EGLSurface p_pbufSurface);
-    bool post();
-    bool bindToTexture();
-    bool bindToRenderbuffer();
-    bool blitFromCurrentReadBuffer();
-
-private:
-    ColorBuffer();
-    void drawTexQuad();
-    bool bind_fbo();  // binds a fbo which have this texture as render target
-
-private:
-    GLuint m_tex;
-    GLuint m_blitTex;
-    EGLImageKHR m_eglImage;
-    EGLImageKHR m_blitEGLImage;
-    GLuint m_width;
-    GLuint m_height;
-    GLuint m_fbo;
-    GLenum m_internalFormat;
-};
-
-typedef SmartPtr<ColorBuffer> ColorBufferPtr;
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp
deleted file mode 100644
index 5f05caf..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EGLDispatch.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "osDynLibrary.h"
-
-EGLDispatch s_egl;
-
-#ifdef _WIN32
-#define DEFAULT_EGL_LIB "libEGL_translator"
-#elif defined(__APPLE__)
-#define DEFAULT_EGL_LIB "libEGL_translator.dylib"
-#else
-#define DEFAULT_EGL_LIB "libEGL_translator.so"
-#endif
-
-bool init_egl_dispatch()
-{
-
-    const char *libName = getenv("ANDROID_EGL_LIB");
-    if (!libName) libName = DEFAULT_EGL_LIB;
-
-    osUtils::dynLibrary *lib = osUtils::dynLibrary::open(libName);
-    if (!lib) {
-        printf("Failed to open %s\n", libName);
-        return NULL;
-    }
-    s_egl.eglGetError = (eglGetError_t) lib->findSymbol("eglGetError");
-    s_egl.eglGetDisplay = (eglGetDisplay_t) lib->findSymbol("eglGetDisplay");
-    s_egl.eglInitialize = (eglInitialize_t) lib->findSymbol("eglInitialize");
-    s_egl.eglTerminate = (eglTerminate_t) lib->findSymbol("eglTerminate");
-    s_egl.eglQueryString = (eglQueryString_t) lib->findSymbol("eglQueryString");
-    s_egl.eglGetConfigs = (eglGetConfigs_t) lib->findSymbol("eglGetConfigs");
-    s_egl.eglChooseConfig = (eglChooseConfig_t) lib->findSymbol("eglChooseConfig");
-    s_egl.eglGetConfigAttrib = (eglGetConfigAttrib_t) lib->findSymbol("eglGetConfigAttrib");
-    s_egl.eglCreateWindowSurface = (eglCreateWindowSurface_t) lib->findSymbol("eglCreateWindowSurface");
-    s_egl.eglCreatePbufferSurface = (eglCreatePbufferSurface_t) lib->findSymbol("eglCreatePbufferSurface");
-    s_egl.eglCreatePixmapSurface = (eglCreatePixmapSurface_t) lib->findSymbol("eglCreatePixmapSurface");
-    s_egl.eglDestroySurface = (eglDestroySurface_t) lib->findSymbol("eglDestroySurface");
-    s_egl.eglQuerySurface = (eglQuerySurface_t) lib->findSymbol("eglQuerySurface");
-    s_egl.eglBindAPI = (eglBindAPI_t) lib->findSymbol("eglBindAPI");
-    s_egl.eglQueryAPI = (eglQueryAPI_t) lib->findSymbol("eglQueryAPI");
-    s_egl.eglWaitClient = (eglWaitClient_t) lib->findSymbol("eglWaitClient");
-    s_egl.eglReleaseThread = (eglReleaseThread_t) lib->findSymbol("eglReleaseThread");
-    s_egl.eglCreatePbufferFromClientBuffer = (eglCreatePbufferFromClientBuffer_t) lib->findSymbol("eglCreatePbufferFromClientBuffer");
-    s_egl.eglSurfaceAttrib = (eglSurfaceAttrib_t) lib->findSymbol("eglSurfaceAttrib");
-    s_egl.eglBindTexImage = (eglBindTexImage_t) lib->findSymbol("eglBindTexImage");
-    s_egl.eglReleaseTexImage = (eglReleaseTexImage_t) lib->findSymbol("eglReleaseTexImage");
-    s_egl.eglSwapInterval = (eglSwapInterval_t) lib->findSymbol("eglSwapInterval");
-    s_egl.eglCreateContext = (eglCreateContext_t) lib->findSymbol("eglCreateContext");
-    s_egl.eglDestroyContext = (eglDestroyContext_t) lib->findSymbol("eglDestroyContext");
-    s_egl.eglMakeCurrent = (eglMakeCurrent_t) lib->findSymbol("eglMakeCurrent");
-    s_egl.eglGetCurrentContext = (eglGetCurrentContext_t) lib->findSymbol("eglGetCurrentContext");
-    s_egl.eglGetCurrentSurface = (eglGetCurrentSurface_t) lib->findSymbol("eglGetCurrentSurface");
-    s_egl.eglGetCurrentDisplay = (eglGetCurrentDisplay_t) lib->findSymbol("eglGetCurrentDisplay");
-    s_egl.eglQueryContext = (eglQueryContext_t) lib->findSymbol("eglQueryContext");
-    s_egl.eglWaitGL = (eglWaitGL_t) lib->findSymbol("eglWaitGL");
-    s_egl.eglWaitNative = (eglWaitNative_t) lib->findSymbol("eglWaitNative");
-    s_egl.eglSwapBuffers = (eglSwapBuffers_t) lib->findSymbol("eglSwapBuffers");
-    s_egl.eglCopyBuffers = (eglCopyBuffers_t) lib->findSymbol("eglCopyBuffers");
-    s_egl.eglGetProcAddress = (eglGetProcAddress_t) lib->findSymbol("eglGetProcAddress");
-
-#define INIT_EGL_EXT_FUNC(name) \
-    if (s_egl.eglGetProcAddress) s_egl.name = (name ## _t) s_egl.eglGetProcAddress(#name); \
-    if (!s_egl.name || !s_egl.eglGetProcAddress) s_egl.name = (name ## _t) lib->findSymbol(#name)
-
-    INIT_EGL_EXT_FUNC(eglLockSurfaceKHR);
-    INIT_EGL_EXT_FUNC(eglUnlockSurfaceKHR);
-    INIT_EGL_EXT_FUNC(eglCreateImageKHR);
-    INIT_EGL_EXT_FUNC(eglDestroyImageKHR);
-    INIT_EGL_EXT_FUNC(eglCreateSyncKHR);
-    INIT_EGL_EXT_FUNC(eglDestroySyncKHR);
-    INIT_EGL_EXT_FUNC(eglClientWaitSyncKHR);
-    INIT_EGL_EXT_FUNC(eglSignalSyncKHR);
-    INIT_EGL_EXT_FUNC(eglGetSyncAttribKHR);
-    INIT_EGL_EXT_FUNC(eglSetSwapRectangleANDROID);
-
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h b/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h
deleted file mode 100644
index f74acba..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/EGLDispatch.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _EGL_DISPATCH_H
-#define _EGL_DISPATCH_H
-
-#include "egl_proc.h"
-
-struct EGLDispatch {
-    eglGetError_t eglGetError;
-    eglGetDisplay_t eglGetDisplay;
-    eglInitialize_t eglInitialize;
-    eglTerminate_t eglTerminate;
-    eglQueryString_t eglQueryString;
-    eglGetConfigs_t eglGetConfigs;
-    eglChooseConfig_t eglChooseConfig;
-    eglGetConfigAttrib_t eglGetConfigAttrib;
-    eglCreateWindowSurface_t eglCreateWindowSurface;
-    eglCreatePbufferSurface_t eglCreatePbufferSurface;
-    eglCreatePixmapSurface_t eglCreatePixmapSurface;
-    eglDestroySurface_t eglDestroySurface;
-    eglQuerySurface_t eglQuerySurface;
-    eglBindAPI_t eglBindAPI;
-    eglQueryAPI_t eglQueryAPI;
-    eglWaitClient_t eglWaitClient;
-    eglReleaseThread_t eglReleaseThread;
-    eglCreatePbufferFromClientBuffer_t eglCreatePbufferFromClientBuffer;
-    eglSurfaceAttrib_t eglSurfaceAttrib;
-    eglBindTexImage_t eglBindTexImage;
-    eglReleaseTexImage_t eglReleaseTexImage;
-    eglSwapInterval_t eglSwapInterval;
-    eglCreateContext_t eglCreateContext;
-    eglDestroyContext_t eglDestroyContext;
-    eglMakeCurrent_t eglMakeCurrent;
-    eglGetCurrentContext_t eglGetCurrentContext;
-    eglGetCurrentSurface_t eglGetCurrentSurface;
-    eglGetCurrentDisplay_t eglGetCurrentDisplay;
-    eglQueryContext_t eglQueryContext;
-    eglWaitGL_t eglWaitGL;
-    eglWaitNative_t eglWaitNative;
-    eglSwapBuffers_t eglSwapBuffers;
-    eglCopyBuffers_t eglCopyBuffers;
-    eglGetProcAddress_t eglGetProcAddress;
-    eglLockSurfaceKHR_t eglLockSurfaceKHR;
-    eglUnlockSurfaceKHR_t eglUnlockSurfaceKHR;
-    eglCreateImageKHR_t eglCreateImageKHR;
-    eglDestroyImageKHR_t eglDestroyImageKHR;
-    eglCreateSyncKHR_t eglCreateSyncKHR;
-    eglDestroySyncKHR_t eglDestroySyncKHR;
-    eglClientWaitSyncKHR_t eglClientWaitSyncKHR;
-    eglSignalSyncKHR_t eglSignalSyncKHR;
-    eglGetSyncAttribKHR_t eglGetSyncAttribKHR;
-    eglSetSwapRectangleANDROID_t eglSetSwapRectangleANDROID;
-};
-
-bool init_egl_dispatch();
-
-extern EGLDispatch s_egl;
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp
deleted file mode 100644
index 089f1da..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/FBConfig.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "FBConfig.h"
-#include "FrameBuffer.h"
-#include "EGLDispatch.h"
-#include <stdio.h>
-
-FBConfig **FBConfig::s_fbConfigs = NULL;
-int FBConfig::s_numConfigs = 0;
-
-const GLuint FBConfig::s_configAttribs[] = {
-    EGL_DEPTH_SIZE,     // must be first - see getDepthSize()
-    EGL_STENCIL_SIZE,   // must be second - see getStencilSize()
-    EGL_RENDERABLE_TYPE,// must be third - see getRenderableType()
-    EGL_SURFACE_TYPE,   // must be fourth - see getSurfaceType()
-    EGL_CONFIG_ID,      // must be fifth  - see chooseConfig()
-    EGL_BUFFER_SIZE,
-    EGL_ALPHA_SIZE,
-    EGL_BLUE_SIZE,
-    EGL_GREEN_SIZE,
-    EGL_RED_SIZE,
-    EGL_CONFIG_CAVEAT,
-    EGL_LEVEL,
-    EGL_MAX_PBUFFER_HEIGHT,
-    EGL_MAX_PBUFFER_PIXELS,
-    EGL_MAX_PBUFFER_WIDTH,
-    EGL_NATIVE_RENDERABLE,
-    EGL_NATIVE_VISUAL_ID,
-    EGL_NATIVE_VISUAL_TYPE,
-    EGL_SAMPLES,
-    EGL_SAMPLE_BUFFERS,
-    EGL_TRANSPARENT_TYPE,
-    EGL_TRANSPARENT_BLUE_VALUE,
-    EGL_TRANSPARENT_GREEN_VALUE,
-    EGL_TRANSPARENT_RED_VALUE,
-    EGL_BIND_TO_TEXTURE_RGB,
-    EGL_BIND_TO_TEXTURE_RGBA,
-    EGL_MIN_SWAP_INTERVAL,
-    EGL_MAX_SWAP_INTERVAL,
-    EGL_LUMINANCE_SIZE,
-    EGL_ALPHA_MASK_SIZE,
-    EGL_COLOR_BUFFER_TYPE,
-    //EGL_MATCH_NATIVE_PIXMAP,
-    EGL_CONFORMANT
-};
-
-const int FBConfig::s_numConfigAttribs = sizeof(FBConfig::s_configAttribs) / sizeof(GLuint);
-
-InitConfigStatus FBConfig::initConfigList(FrameBuffer *fb)
-{
-    InitConfigStatus ret = INIT_CONFIG_FAILED;
-
-    if (!fb) {
-        return ret;
-    }
-
-    const FrameBufferCaps &caps = fb->getCaps();
-    EGLDisplay dpy = fb->getDisplay();
-
-    if (dpy == EGL_NO_DISPLAY) {
-        fprintf(stderr,"Could not get EGL Display\n");
-        return ret;
-    }
-
-    //
-    // Query the set of configs in the EGL backend
-    //
-    EGLint nConfigs;
-    if (!s_egl.eglGetConfigs(dpy, NULL, 0, &nConfigs)) {
-        fprintf(stderr, "Could not get number of available configs\n");
-        return ret;
-    }
-    EGLConfig *configs = new EGLConfig[nConfigs];
-    s_egl.eglGetConfigs(dpy, configs, nConfigs, &nConfigs);
-
-    //
-    // copy the config attributes, filter out
-    // configs we do not want to support.
-    //
-    int j = 0;
-    s_fbConfigs = new FBConfig*[nConfigs];
-    for (int i=0; i<nConfigs; i++) {
-
-        //
-        // filter out configs which does not support pbuffers.
-        // we only support pbuffer configs since we use a pbuffer
-        // handle to bind a guest created window object.
-        //
-        EGLint surfaceType;
-        s_egl.eglGetConfigAttrib(dpy, configs[i],
-                                 EGL_SURFACE_TYPE, &surfaceType);
-        if (!(surfaceType & EGL_PBUFFER_BIT)) continue;
-
-        //
-        // Filter out not RGB configs
-        //
-        EGLint redSize, greenSize, blueSize;
-        s_egl.eglGetConfigAttrib(dpy, configs[i], EGL_RED_SIZE, &redSize);
-        s_egl.eglGetConfigAttrib(dpy, configs[i], EGL_BLUE_SIZE, &blueSize);
-        s_egl.eglGetConfigAttrib(dpy, configs[i], EGL_GREEN_SIZE, &greenSize);
-        if (redSize==0 || greenSize==0 || blueSize==0) continue;
-
-        s_fbConfigs[j++] = new FBConfig(dpy, configs[i]);
-    }
-    s_numConfigs = j;
-
-    delete[] configs;
-
-    return s_numConfigs > 0 ? INIT_CONFIG_PASSED : INIT_CONFIG_FAILED;
-}
-
-const FBConfig *FBConfig::get(int p_config)
-{
-    if (p_config >= 0 && p_config < s_numConfigs) {
-        return s_fbConfigs[p_config];
-    }
-    return NULL;
-}
-
-int FBConfig::getNumConfigs()
-{
-    return s_numConfigs;
-}
-
-void FBConfig::packConfigsInfo(GLuint *buffer)
-{
-    memcpy(buffer, s_configAttribs, s_numConfigAttribs * sizeof(GLuint));
-    for (int i=0; i<s_numConfigs; i++) {
-        memcpy(buffer+(i+1)*s_numConfigAttribs,
-               s_fbConfigs[i]->m_attribValues,
-               s_numConfigAttribs * sizeof(GLuint));
-    }
-}
-
-int FBConfig::chooseConfig(FrameBuffer *fb, EGLint * attribs, uint32_t * configs, uint32_t configs_size)
-{
-    EGLDisplay dpy = fb->getDisplay();
-    int ret = 0;
-
-    if (dpy == EGL_NO_DISPLAY) {
-        fprintf(stderr,"Could not get EGL Display\n");
-        return ret;
-    }
-    //
-    // Query the num of configs in the EGL backend
-    //
-    EGLint nConfigs;
-    if (!s_egl.eglGetConfigs(dpy, NULL, 0, &nConfigs)) {
-        fprintf(stderr, "Could not get number of available configs\n");
-        return ret;
-    }
-    //
-    // Query the max matching configs in the backend
-    //
-    EGLConfig *matchedConfigs = new EGLConfig[nConfigs];
-
-    //
-    //Until we have EGLImage implementation, we force pbuf configs
-    //
-    bool needToAddPbufAttr = true;
-    int attribCnt = 0;
-    EGLint * attrib_p = attribs;
-    if (attribs) {
-        while (attrib_p[0] != EGL_NONE) {
-            if (attrib_p[0] == EGL_SURFACE_TYPE) {
-                attrib_p[1] = EGL_PBUFFER_BIT; //replace whatever was there before
-                needToAddPbufAttr = false;
-            }
-            attrib_p += 2;
-            attribCnt += 2;
-        }
-    }
-    EGLint * newAttribs = new EGLint[attribCnt + 1 + ((needToAddPbufAttr) ? 2 : 0)];
-    attrib_p = newAttribs;
-    if (needToAddPbufAttr) {
-        *(attrib_p++) = EGL_SURFACE_TYPE;
-        *(attrib_p++) = EGL_PBUFFER_BIT;
-    }
-    memcpy(attrib_p, attribs, attribCnt*sizeof(EGLint));
-    attrib_p += attribCnt;
-    *attrib_p = EGL_NONE;
-
-#if 0
-    if (newAttribs) {
-        EGLint * attrib_p = newAttribs;
-        while (attrib_p[0] != EGL_NONE) {
-            DBG("attr: 0x%x %d, ", attrib_p[0], attrib_p[1]);
-            attrib_p += 2;
-        }
-    }
-#endif
-
-    s_egl.eglChooseConfig(dpy, newAttribs, matchedConfigs, nConfigs, &nConfigs);
-
-    delete[] newAttribs;
-
-    //
-    // From all matchedConfigs we need only config_size FBConfigs, so we intersect both lists compating the CONFIG_ID attribute
-    //
-    uint32_t nVerifiedCfgs = 0;
-    for (int matchedIdx=0; matchedIdx<nConfigs; matchedIdx++) {
-        if ((configs != NULL) && (configs_size > 0) && (nVerifiedCfgs >= configs_size)) break; //We have enouhgt configs
-        int sCfgId;
-        s_egl.eglGetConfigAttrib(dpy, matchedConfigs[matchedIdx], EGL_CONFIG_ID, &sCfgId);
-        for (int fbIdx=0; fbIdx<s_numConfigs; fbIdx++) {
-            int dCfgId = s_fbConfigs[fbIdx]->m_attribValues[4]; //CONFIG_ID
-            if (sCfgId == dCfgId) {
-                //This config matches the requested attributes and filtered into fbConfigs, so we're happy with it
-                if (configs && nVerifiedCfgs < configs_size) {
-                    configs[nVerifiedCfgs] = fbIdx;
-                }
-                nVerifiedCfgs++;
-                break;
-            }
-        }
-    }
-
-    delete[] matchedConfigs;
-
-    return nVerifiedCfgs;
-}
-
-FBConfig::FBConfig(EGLDisplay p_eglDpy, EGLConfig p_eglCfg)
-{
-    m_eglConfig = p_eglCfg;
-    m_attribValues = new GLint[s_numConfigAttribs];
-    for (int i=0; i<s_numConfigAttribs; i++) {
-        m_attribValues[i] = 0;
-        s_egl.eglGetConfigAttrib(p_eglDpy, p_eglCfg, s_configAttribs[i], &m_attribValues[i]);
-
-        //
-        // All exported configs supports android native window rendering
-        //
-        if (s_configAttribs[i] == EGL_SURFACE_TYPE) {
-            m_attribValues[i] |= EGL_WINDOW_BIT;
-        }
-    }
-}
-
-FBConfig::~FBConfig()
-{
-    if (m_attribValues) {
-        delete[] m_attribValues;
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/FBConfig.h b/tools/emulator/opengl/host/libs/libOpenglRender/FBConfig.h
deleted file mode 100644
index 6388549..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/FBConfig.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIBRENDER_FBCONFIG_H
-#define _LIBRENDER_FBCONFIG_H
-
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-class FrameBuffer;
-
-enum InitConfigStatus {
-    INIT_CONFIG_FAILED = 0,
-    INIT_CONFIG_PASSED = 1
-};
-
-class FBConfig
-{
-public:
-    static InitConfigStatus initConfigList(FrameBuffer *fb);
-    static const FBConfig *get(int p_config);
-    static int getNumConfigs();
-    static int getNumAttribs() { return s_numConfigAttribs; }
-    static void packConfigsInfo(GLuint *buffer);
-    static int chooseConfig(FrameBuffer *fb, EGLint * attribs, uint32_t * configs, uint32_t configs_size);
-    ~FBConfig();
-
-    EGLConfig getEGLConfig() const { return m_eglConfig; }
-    GLuint  getDepthSize() const { return (m_attribValues ? m_attribValues[0] : 0); }
-    GLuint  getStencilSize() const { return (m_attribValues ? m_attribValues[1] : 0); }
-    GLuint  getRenderableType() const { return (m_attribValues ? m_attribValues[2] : 0); }
-    GLuint getSurfaceType() const { return (m_attribValues ? m_attribValues[3] : 0); }
-
-private:
-    FBConfig(EGLDisplay p_eglDpy, EGLConfig p_eglCfg);
-
-private:
-    static FBConfig **s_fbConfigs;
-    static int s_numConfigs;
-    static const int s_numConfigAttribs;
-    static const GLuint s_configAttribs[];
-
-private:
-    EGLConfig m_eglConfig;
-    GLint *m_attribValues;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp
deleted file mode 100644
index ef38bec..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.cpp
+++ /dev/null
@@ -1,824 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "FrameBuffer.h"
-#include "NativeSubWindow.h"
-#include "FBConfig.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include "ThreadInfo.h"
-#include <stdio.h>
-#include "TimeUtils.h"
-
-FrameBuffer *FrameBuffer::s_theFrameBuffer = NULL;
-HandleType FrameBuffer::s_nextHandle = 0;
-
-#ifdef WITH_GLES2
-static const char *getGLES2ExtensionString(EGLDisplay p_dpy)
-{
-    EGLConfig config;
-    EGLSurface surface;
-
-    GLint configAttribs[] = {
-        EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PBUFFER_BIT,
-        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
-        EGL_NONE
-    };
-
-    int n;
-    if (!s_egl.eglChooseConfig(p_dpy, configAttribs,
-                               &config, 1, &n)) {
-        return NULL;
-    }
-
-    EGLint pbufAttribs[] = {
-        EGL_WIDTH, 1,
-        EGL_HEIGHT, 1,
-        EGL_NONE
-    };
-
-    surface = s_egl.eglCreatePbufferSurface(p_dpy, config, pbufAttribs);
-    if (surface == EGL_NO_SURFACE) {
-        return NULL;
-    }
-
-    GLint gl2ContextAttribs[] = {
-        EGL_CONTEXT_CLIENT_VERSION, 2,
-        EGL_NONE
-    };
-
-    EGLContext ctx = s_egl.eglCreateContext(p_dpy, config,
-                                            EGL_NO_CONTEXT,
-                                            gl2ContextAttribs);
-    if (ctx == EGL_NO_CONTEXT) {
-        s_egl.eglDestroySurface(p_dpy, surface);
-        return NULL;
-    }
-
-    if (!s_egl.eglMakeCurrent(p_dpy, surface, surface, ctx)) {
-        s_egl.eglDestroySurface(p_dpy, surface);
-        s_egl.eglDestroyContext(p_dpy, ctx);
-        return NULL;
-    }
-
-    const char *extString = (const char *)s_gl2.glGetString(GL_EXTENSIONS);
-    if (!extString) {
-        extString = "";
-    }
-
-    s_egl.eglMakeCurrent(p_dpy, NULL, NULL, NULL);
-    s_egl.eglDestroyContext(p_dpy, ctx);
-    s_egl.eglDestroySurface(p_dpy, surface);
-
-    return extString;
-}
-#endif
-
-void FrameBuffer::finalize(){
-    if(s_theFrameBuffer){
-        s_theFrameBuffer->removeSubWindow();
-        s_theFrameBuffer->m_colorbuffers.clear();
-        s_theFrameBuffer->m_windows.clear();
-        s_theFrameBuffer->m_contexts.clear();
-        s_egl.eglMakeCurrent(s_theFrameBuffer->m_eglDisplay, NULL, NULL, NULL);
-        s_egl.eglDestroyContext(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_eglContext);
-        s_egl.eglDestroyContext(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_pbufContext);
-        s_egl.eglDestroySurface(s_theFrameBuffer->m_eglDisplay,s_theFrameBuffer->m_pbufSurface);
-        s_theFrameBuffer = NULL;
-    }
-}
-
-bool FrameBuffer::initialize(int width, int height)
-{
-    if (s_theFrameBuffer != NULL) {
-        return true;
-    }
-
-    //
-    // allocate space for the FrameBuffer object
-    //
-    FrameBuffer *fb = new FrameBuffer(width, height);
-    if (!fb) {
-        ERR("Failed to create fb\n");
-        return false;
-    }
-
-#ifdef WITH_GLES2
-    //
-    // Try to load GLES2 Plugin, not mandatory
-    //
-    if (getenv("ANDROID_NO_GLES2")) {
-        fb->m_caps.hasGL2 = false;
-    }
-    else {
-        fb->m_caps.hasGL2 = s_gl2_enabled;
-    }
-#else
-    fb->m_caps.hasGL2 = false;
-#endif
-
-    //
-    // Initialize backend EGL display
-    //
-    fb->m_eglDisplay = s_egl.eglGetDisplay(EGL_DEFAULT_DISPLAY);
-    if (fb->m_eglDisplay == EGL_NO_DISPLAY) {
-        ERR("Failed to Initialize backend EGL display\n");
-        delete fb;
-        return false;
-    }
-
-    if (!s_egl.eglInitialize(fb->m_eglDisplay, &fb->m_caps.eglMajor, &fb->m_caps.eglMinor)) {
-        ERR("Failed to eglInitialize\n");
-        delete fb;
-        return false;
-    }
-
-    DBG("egl: %d %d\n", fb->m_caps.eglMajor, fb->m_caps.eglMinor);
-    s_egl.eglBindAPI(EGL_OPENGL_ES_API);
-
-    //
-    // if GLES2 plugin has loaded - try to make GLES2 context and
-    // get GLES2 extension string
-    //
-    const char *gl2Extensions = NULL;
-#ifdef WITH_GLES2
-    if (fb->m_caps.hasGL2) {
-        gl2Extensions = getGLES2ExtensionString(fb->m_eglDisplay);
-        if (!gl2Extensions) {
-            // Could not create GLES2 context - drop GL2 capability
-            fb->m_caps.hasGL2 = false;
-        }
-    }
-#endif
-
-    //
-    // Create EGL context for framebuffer post rendering.
-    //
-#if 0
-    GLint configAttribs[] = {
-        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES_BIT,
-        EGL_NONE
-    };
-#else
-    GLint configAttribs[] = {
-        EGL_RED_SIZE, 1,
-        EGL_GREEN_SIZE, 1,
-        EGL_BLUE_SIZE, 1,
-        EGL_SURFACE_TYPE, EGL_WINDOW_BIT | EGL_PBUFFER_BIT,
-        EGL_NONE
-    };
-#endif
-
-    int n;
-    if (!s_egl.eglChooseConfig(fb->m_eglDisplay, configAttribs,
-                               &fb->m_eglConfig, 1, &n)) {
-        ERR("Failed on eglChooseConfig\n");
-        delete fb;
-        return false;
-    }
-
-    GLint glContextAttribs[] = {
-        EGL_CONTEXT_CLIENT_VERSION, 1,
-        EGL_NONE
-    };
-
-    fb->m_eglContext = s_egl.eglCreateContext(fb->m_eglDisplay, fb->m_eglConfig,
-                                              EGL_NO_CONTEXT,
-                                              glContextAttribs);
-    if (fb->m_eglContext == EGL_NO_CONTEXT) {
-        printf("Failed to create Context 0x%x\n", s_egl.eglGetError());
-        delete fb;
-        return false;
-    }
-
-    //
-    // Create another context which shares with the eglContext to be used
-    // when we bind the pbuffer. That prevent switching drawable binding
-    // back and forth on framebuffer context.
-    // The main purpose of it is to solve a "blanking" behaviour we see on
-    // on Mac platform when switching binded drawable for a context however
-    // it is more efficient on other platforms as well.
-    //
-    fb->m_pbufContext = s_egl.eglCreateContext(fb->m_eglDisplay, fb->m_eglConfig,
-                                               fb->m_eglContext,
-                                               glContextAttribs);
-    if (fb->m_pbufContext == EGL_NO_CONTEXT) {
-        printf("Failed to create Pbuffer Context 0x%x\n", s_egl.eglGetError());
-        delete fb;
-        return false;
-    }
-
-    //
-    // create a 1x1 pbuffer surface which will be used for binding
-    // the FB context.
-    // The FB output will go to a subwindow, if one exist.
-    //
-    EGLint pbufAttribs[] = {
-        EGL_WIDTH, 1,
-        EGL_HEIGHT, 1,
-        EGL_NONE
-    };
-
-    fb->m_pbufSurface = s_egl.eglCreatePbufferSurface(fb->m_eglDisplay,
-                                                  fb->m_eglConfig,
-                                                  pbufAttribs);
-    if (fb->m_pbufSurface == EGL_NO_SURFACE) {
-        printf("Failed to create pbuf surface for FB 0x%x\n", s_egl.eglGetError());
-        delete fb;
-        return false;
-    }
-
-    // Make the context current
-    if (!fb->bind_locked()) {
-        ERR("Failed to make current\n");
-        delete fb;
-        return false;
-    }
-
-    //
-    // Initilize framebuffer capabilities
-    //
-    const char *glExtensions = (const char *)s_gl.glGetString(GL_EXTENSIONS);
-    bool has_gl_oes_image = false;
-    if (glExtensions) {
-        has_gl_oes_image = strstr(glExtensions, "GL_OES_EGL_image") != NULL;
-    }
-
-    if (fb->m_caps.hasGL2 && has_gl_oes_image) {
-        has_gl_oes_image &= (strstr(gl2Extensions, "GL_OES_EGL_image") != NULL);
-    }
-
-    const char *eglExtensions = s_egl.eglQueryString(fb->m_eglDisplay,
-                                                     EGL_EXTENSIONS);
-
-    if (eglExtensions && has_gl_oes_image) {
-        fb->m_caps.has_eglimage_texture_2d =
-             strstr(eglExtensions, "EGL_KHR_gl_texture_2D_image") != NULL;
-        fb->m_caps.has_eglimage_renderbuffer =
-             strstr(eglExtensions, "EGL_KHR_gl_renderbuffer_image") != NULL;
-    }
-    else {
-        fb->m_caps.has_eglimage_texture_2d = false;
-        fb->m_caps.has_eglimage_renderbuffer = false;
-    }
-
-    //
-    // Fail initialization if not all of the following extensions
-    // exist:
-    //     EGL_KHR_gl_texture_2d_image
-    //     GL_OES_EGL_IMAGE (by both GLES implementations [1 and 2])
-    //
-    if (!fb->m_caps.has_eglimage_texture_2d) {
-        ERR("Failed: Missing egl_image related extension(s)\n");
-        delete fb;
-        return false;
-    }
-
-    //
-    // Initialize set of configs
-    //
-    InitConfigStatus configStatus = FBConfig::initConfigList(fb);
-    if (configStatus == INIT_CONFIG_FAILED) {
-        ERR("Failed: Initialize set of configs\n");
-        delete fb;
-        return false;
-    }
-
-    //
-    // Check that we have config for each GLES and GLES2
-    //
-    int nConfigs = FBConfig::getNumConfigs();
-    int nGLConfigs = 0;
-    int nGL2Configs = 0;
-    for (int i=0; i<nConfigs; i++) {
-        GLint rtype = FBConfig::get(i)->getRenderableType();
-        if (0 != (rtype & EGL_OPENGL_ES_BIT)) {
-            nGLConfigs++;
-        }
-        if (0 != (rtype & EGL_OPENGL_ES2_BIT)) {
-            nGL2Configs++;
-        }
-    }
-
-    //
-    // Fail initialization if no GLES configs exist
-    //
-    if (nGLConfigs == 0) {
-        delete fb;
-        return false;
-    }
-
-    //
-    // If no GLES2 configs exist - not GLES2 capability
-    //
-    if (nGL2Configs == 0) {
-        fb->m_caps.hasGL2 = false;
-    }
-
-    //
-    // Initialize some GL state in the pbuffer context
-    //
-    fb->initGLState();
-
-    // release the FB context
-    fb->unbind_locked();
-
-    //
-    // Keep the singleton framebuffer pointer
-    //
-    s_theFrameBuffer = fb;
-    return true;
-}
-
-FrameBuffer::FrameBuffer(int p_width, int p_height) :
-    m_width(p_width),
-    m_height(p_height),
-    m_eglDisplay(EGL_NO_DISPLAY),
-    m_eglSurface(EGL_NO_SURFACE),
-    m_eglContext(EGL_NO_CONTEXT),
-    m_pbufContext(EGL_NO_CONTEXT),
-    m_prevContext(EGL_NO_CONTEXT),
-    m_prevReadSurf(EGL_NO_SURFACE),
-    m_prevDrawSurf(EGL_NO_SURFACE),
-    m_subWin(NULL),
-    m_subWinDisplay(NULL),
-    m_lastPostedColorBuffer(0),
-    m_zRot(0.0f),
-    m_eglContextInitialized(false),
-    m_statsNumFrames(0),
-    m_statsStartTime(0LL)
-{
-    m_fpsStats = getenv("SHOW_FPS_STATS") != NULL;
-}
-
-FrameBuffer::~FrameBuffer()
-{
-}
-
-bool FrameBuffer::setupSubWindow(FBNativeWindowType p_window,
-                                  int p_x, int p_y,
-                                  int p_width, int p_height, float zRot)
-{
-    bool success = false;
-
-    if (s_theFrameBuffer) {
-        s_theFrameBuffer->m_lock.lock();
-        FrameBuffer *fb = s_theFrameBuffer;
-        if (!fb->m_subWin) {
-
-            // create native subwindow for FB display output
-            fb->m_subWin = createSubWindow(p_window,
-                                           &fb->m_subWinDisplay,
-                                           p_x,p_y,p_width,p_height);
-            if (fb->m_subWin) {
-                fb->m_nativeWindow = p_window;
-
-                // create EGLSurface from the generated subwindow
-                fb->m_eglSurface = s_egl.eglCreateWindowSurface(fb->m_eglDisplay, 
-                                                    fb->m_eglConfig,
-                                                    fb->m_subWin,
-                                                    NULL);
-
-                if (fb->m_eglSurface == EGL_NO_SURFACE) {
-                    ERR("Failed to create surface\n");
-                    destroySubWindow(fb->m_subWinDisplay, fb->m_subWin);
-                    fb->m_subWin = NULL;
-                }
-                else if (fb->bindSubwin_locked()) {
-                    // Subwin creation was successfull,
-                    // update viewport and z rotation and draw
-                    // the last posted color buffer.
-                    s_gl.glViewport(0, 0, p_width, p_height);
-                    fb->m_zRot = zRot;
-                    fb->post( fb->m_lastPostedColorBuffer, false );
-                    fb->unbind_locked();
-                    success = true;
-                }
-             }
-        }
-        s_theFrameBuffer->m_lock.unlock();
-     }
-
-    return success;
-}
-
-bool FrameBuffer::removeSubWindow()
-{
-    bool removed = false;
-    if (s_theFrameBuffer) {
-        s_theFrameBuffer->m_lock.lock();
-        if (s_theFrameBuffer->m_subWin) {
-            s_egl.eglMakeCurrent(s_theFrameBuffer->m_eglDisplay, NULL, NULL, NULL);
-            s_egl.eglDestroySurface(s_theFrameBuffer->m_eglDisplay,
-                                    s_theFrameBuffer->m_eglSurface);
-            destroySubWindow(s_theFrameBuffer->m_subWinDisplay,
-                             s_theFrameBuffer->m_subWin);
-
-            s_theFrameBuffer->m_eglSurface = EGL_NO_SURFACE;
-            s_theFrameBuffer->m_subWin = NULL;
-            removed = true;
-        }
-        s_theFrameBuffer->m_lock.unlock();
-    }
-    return removed;
-}
-
-HandleType FrameBuffer::genHandle()
-{
-    HandleType id;
-    do {
-        id = ++s_nextHandle;
-    } while( id == 0 ||
-             m_contexts.find(id) != m_contexts.end() ||
-             m_windows.find(id) != m_windows.end() );
-
-    return id;
-}
-
-HandleType FrameBuffer::createColorBuffer(int p_width, int p_height,
-                                          GLenum p_internalFormat)
-{
-    android::Mutex::Autolock mutex(m_lock);
-    HandleType ret = 0;
-
-    ColorBufferPtr cb( ColorBuffer::create(p_width, p_height, p_internalFormat) );
-    if (cb.Ptr() != NULL) {
-        ret = genHandle();
-        m_colorbuffers[ret] = cb;
-    }
-    return ret;
-}
-
-HandleType FrameBuffer::createRenderContext(int p_config, HandleType p_share,
-                                            bool p_isGL2)
-{
-    android::Mutex::Autolock mutex(m_lock);
-    HandleType ret = 0;
-
-    RenderContextPtr share(NULL);
-    if (p_share != 0) {
-        RenderContextMap::iterator s( m_contexts.find(p_share) );
-        if (s == m_contexts.end()) {
-            return 0;
-        }
-        share = (*s).second;
-    }
-
-    RenderContextPtr rctx( RenderContext::create(p_config, share, p_isGL2) );
-    if (rctx.Ptr() != NULL) {
-        ret = genHandle();
-        m_contexts[ret] = rctx;
-    }
-    return ret;
-}
-
-HandleType FrameBuffer::createWindowSurface(int p_config, int p_width, int p_height)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    HandleType ret = 0;
-    WindowSurfacePtr win( WindowSurface::create(p_config, p_width, p_height) );
-    if (win.Ptr() != NULL) {
-        ret = genHandle();
-        m_windows[ret] = win;
-    }
-
-    return ret;
-}
-
-void FrameBuffer::DestroyRenderContext(HandleType p_context)
-{
-    android::Mutex::Autolock mutex(m_lock);
-    m_contexts.erase(p_context);
-}
-
-void FrameBuffer::DestroyWindowSurface(HandleType p_surface)
-{
-    android::Mutex::Autolock mutex(m_lock);
-    m_windows.erase(p_surface);
-}
-
-void FrameBuffer::DestroyColorBuffer(HandleType p_colorbuffer)
-{
-    android::Mutex::Autolock mutex(m_lock);
-    m_colorbuffers.erase(p_colorbuffer);
-}
-
-bool FrameBuffer::flushWindowSurfaceColorBuffer(HandleType p_surface)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    WindowSurfaceMap::iterator w( m_windows.find(p_surface) );
-    if (w == m_windows.end()) {
-        // bad surface handle
-        return false;
-    }
-
-    (*w).second->flushColorBuffer();
-
-    return true;
-}
-
-bool FrameBuffer::setWindowSurfaceColorBuffer(HandleType p_surface,
-                                              HandleType p_colorbuffer)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    WindowSurfaceMap::iterator w( m_windows.find(p_surface) );
-    if (w == m_windows.end()) {
-        // bad surface handle
-        return false;
-    }
-
-    ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
-    if (c == m_colorbuffers.end()) {
-        // bad colorbuffer handle
-        return false;
-    }
-
-    (*w).second->setColorBuffer( (*c).second );
-
-    return true;
-}
-
-bool FrameBuffer::updateColorBuffer(HandleType p_colorbuffer,
-                                    int x, int y, int width, int height,
-                                    GLenum format, GLenum type, void *pixels)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
-    if (c == m_colorbuffers.end()) {
-        // bad colorbuffer handle
-        return false;
-    }
-
-    (*c).second->subUpdate(x, y, width, height, format, type, pixels);
-
-    return true;
-}
-
-bool FrameBuffer::bindColorBufferToTexture(HandleType p_colorbuffer)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
-    if (c == m_colorbuffers.end()) {
-        // bad colorbuffer handle
-        return false;
-    }
-
-    return (*c).second->bindToTexture();
-}
-
-bool FrameBuffer::bindColorBufferToRenderbuffer(HandleType p_colorbuffer)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
-    if (c == m_colorbuffers.end()) {
-        // bad colorbuffer handle
-        return false;
-    }
-
-    return (*c).second->bindToRenderbuffer();
-}
-
-bool FrameBuffer::bindContext(HandleType p_context,
-                              HandleType p_drawSurface,
-                              HandleType p_readSurface)
-{
-    android::Mutex::Autolock mutex(m_lock);
-
-    WindowSurfacePtr draw(NULL), read(NULL);
-    RenderContextPtr ctx(NULL);
-
-    //
-    // if this is not an unbind operation - make sure all handles are good
-    //
-    if (p_context || p_drawSurface || p_readSurface) {
-        RenderContextMap::iterator r( m_contexts.find(p_context) );
-        if (r == m_contexts.end()) {
-            // bad context handle
-            return false;
-        }
-
-        ctx = (*r).second;
-        WindowSurfaceMap::iterator w( m_windows.find(p_drawSurface) );
-        if (w == m_windows.end()) {
-            // bad surface handle
-            return false;
-        }
-        draw = (*w).second;
-
-        if (p_readSurface != p_drawSurface) {
-            WindowSurfaceMap::iterator w( m_windows.find(p_readSurface) );
-            if (w == m_windows.end()) {
-                // bad surface handle
-                return false;
-            }
-            read = (*w).second;
-        }
-        else {
-            read = draw;
-        }
-    }
-
-    if (!s_egl.eglMakeCurrent(m_eglDisplay,
-                              draw ? draw->getEGLSurface() : EGL_NO_SURFACE,
-                              read ? read->getEGLSurface() : EGL_NO_SURFACE,
-                              ctx ? ctx->getEGLContext() : EGL_NO_CONTEXT)) {
-        // MakeCurrent failed
-        return false;
-    }
-
-    //
-    // Bind the surface(s) to the context
-    //
-    RenderThreadInfo *tinfo = getRenderThreadInfo();
-    if (draw.Ptr() == NULL && read.Ptr() == NULL) {
-        // if this is an unbind operation - make sure the current bound
-        // surfaces get unbound from the context.
-        draw = tinfo->currDrawSurf;
-        read = tinfo->currReadSurf;
-    }
-
-    if (draw.Ptr() != NULL && read.Ptr() != NULL) {
-        if (p_readSurface != p_drawSurface) {
-            draw->bind( ctx, SURFACE_BIND_DRAW );
-            read->bind( ctx, SURFACE_BIND_READ );
-        }
-        else {
-            draw->bind( ctx, SURFACE_BIND_READDRAW );
-        }
-    }
-
-    //
-    // update thread info with current bound context
-    //
-    tinfo->currContext = ctx;
-    tinfo->currDrawSurf = draw;
-    tinfo->currReadSurf = read;
-    if (ctx) {
-        if (ctx->isGL2()) tinfo->m_gl2Dec.setContextData(&ctx->decoderContextData());
-        else tinfo->m_glDec.setContextData(&ctx->decoderContextData());
-    }
-    else {
-        tinfo->m_glDec.setContextData(NULL);
-        tinfo->m_gl2Dec.setContextData(NULL);
-    }
-    return true;
-}
-
-//
-// The framebuffer lock should be held when calling this function !
-//
-bool FrameBuffer::bind_locked()
-{
-    EGLContext prevContext = s_egl.eglGetCurrentContext();
-    EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
-    EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-
-    if (!s_egl.eglMakeCurrent(m_eglDisplay, m_pbufSurface,
-                              m_pbufSurface, m_pbufContext)) {
-        ERR("eglMakeCurrent failed\n");
-        return false;
-    }
-
-    m_prevContext = prevContext;
-    m_prevReadSurf = prevReadSurf;
-    m_prevDrawSurf = prevDrawSurf;
-    return true;
-}
-
-bool FrameBuffer::bindSubwin_locked()
-{
-    EGLContext prevContext = s_egl.eglGetCurrentContext();
-    EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
-    EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-
-    if (!s_egl.eglMakeCurrent(m_eglDisplay, m_eglSurface,
-                              m_eglSurface, m_eglContext)) {
-        ERR("eglMakeCurrent failed\n");
-        return false;
-    }
-
-    //
-    // initialize GL state in eglContext if not yet initilaized
-    //
-    if (!m_eglContextInitialized) {
-        initGLState();
-        m_eglContextInitialized = true;
-    }
-
-    m_prevContext = prevContext;
-    m_prevReadSurf = prevReadSurf;
-    m_prevDrawSurf = prevDrawSurf;
-    return true;
-}
-
-bool FrameBuffer::unbind_locked()
-{
-    if (!s_egl.eglMakeCurrent(m_eglDisplay, m_prevDrawSurf,
-                              m_prevReadSurf, m_prevContext)) {
-        return false;
-    }
-
-    m_prevContext = EGL_NO_CONTEXT;
-    m_prevReadSurf = EGL_NO_SURFACE;
-    m_prevDrawSurf = EGL_NO_SURFACE;
-    return true;
-}
-
-bool FrameBuffer::post(HandleType p_colorbuffer, bool needLock)
-{
-    if (needLock) m_lock.lock();
-    bool ret = false;
-
-    ColorBufferMap::iterator c( m_colorbuffers.find(p_colorbuffer) );
-    if (c != m_colorbuffers.end()) {
-
-        m_lastPostedColorBuffer = p_colorbuffer;
-        if (!m_subWin) {
-            // no subwindow created for the FB output
-            // cannot post the colorbuffer
-            if (needLock) m_lock.unlock();
-            return ret;
-        }
-
-
-        // bind the subwindow eglSurface
-        if (!bindSubwin_locked()) {
-            ERR("FrameBuffer::post eglMakeCurrent failed\n");
-            if (needLock) m_lock.unlock();
-            return false;
-        }
-
-        //
-        // render the color buffer to the window
-        //
-        s_gl.glPushMatrix();
-        s_gl.glRotatef(m_zRot, 0.0f, 0.0f, 1.0f);
-        if (m_zRot != 0.0f) {
-            s_gl.glClear(GL_COLOR_BUFFER_BIT);
-        }
-        ret = (*c).second->post();
-        s_gl.glPopMatrix();
-
-        if (ret) {
-
-            //
-            // output FPS statistics
-            //
-            if (m_fpsStats) {
-                long long currTime = GetCurrentTimeMS();
-                m_statsNumFrames++;
-                if (currTime - m_statsStartTime >= 1000) {
-                    float dt = (float)(currTime - m_statsStartTime) / 1000.0f;
-                    printf("FPS: %5.3f\n", (float)m_statsNumFrames / dt);
-                    m_statsStartTime = currTime;
-                    m_statsNumFrames = 0;
-                }
-            }
-
-            s_egl.eglSwapBuffers(m_eglDisplay, m_eglSurface);
-        }
- 
-        // restore previous binding
-        unbind_locked();
-    }
-
-    if (needLock) m_lock.unlock();
-    return ret;
-}
-
-bool FrameBuffer::repost()
-{
-    if (m_lastPostedColorBuffer) {
-        return post( m_lastPostedColorBuffer );
-    }
-    return false;
-}
-
-void FrameBuffer::initGLState()
-{
-    s_gl.glMatrixMode(GL_PROJECTION);
-    s_gl.glLoadIdentity();
-    s_gl.glOrthof(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
-    s_gl.glMatrixMode(GL_MODELVIEW);
-    s_gl.glLoadIdentity();
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h b/tools/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h
deleted file mode 100644
index 4725317..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/FrameBuffer.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIBRENDER_FRAMEBUFFER_H
-#define _LIBRENDER_FRAMEBUFFER_H
-
-#include "libOpenglRender/render_api.h"
-#include "ColorBuffer.h"
-#include "RenderContext.h"
-#include "WindowSurface.h"
-#include <utils/threads.h>
-#include <map>
-#include <EGL/egl.h>
-#include <stdint.h>
-
-typedef uint32_t HandleType;
-typedef std::map<HandleType, RenderContextPtr> RenderContextMap;
-typedef std::map<HandleType, WindowSurfacePtr> WindowSurfaceMap;
-typedef std::map<HandleType, ColorBufferPtr> ColorBufferMap;
-
-struct FrameBufferCaps
-{
-    bool hasGL2;
-    bool has_eglimage_texture_2d;
-    bool has_eglimage_renderbuffer;
-    EGLint eglMajor;
-    EGLint eglMinor;
-};
-
-class FrameBuffer
-{
-public:
-    static bool initialize(int width, int height);
-    static bool setupSubWindow(FBNativeWindowType p_window,
-                                int x, int y,
-                                int width, int height, float zRot);
-    static bool removeSubWindow();
-    static void finalize();
-    static FrameBuffer *getFB() { return s_theFrameBuffer; }
-
-    const FrameBufferCaps &getCaps() const { return m_caps; }
-
-    int getWidth() const { return m_width; }
-    int getHeight() const { return m_height; }
-
-    HandleType createRenderContext(int p_config, HandleType p_share, bool p_isGL2 = false);
-    HandleType createWindowSurface(int p_config, int p_width, int p_height);
-    HandleType createColorBuffer(int p_width, int p_height, GLenum p_internalFormat);
-    void DestroyRenderContext(HandleType p_context);
-    void DestroyWindowSurface(HandleType p_surface);
-    void DestroyColorBuffer(HandleType p_colorbuffer);
-
-    bool  bindContext(HandleType p_context, HandleType p_drawSurface, HandleType p_readSurface);
-    bool  setWindowSurfaceColorBuffer(HandleType p_surface, HandleType p_colorbuffer);
-    bool  flushWindowSurfaceColorBuffer(HandleType p_surface);
-    bool  bindColorBufferToTexture(HandleType p_colorbuffer);
-    bool  bindColorBufferToRenderbuffer(HandleType p_colorbuffer);
-    bool updateColorBuffer(HandleType p_colorbuffer,
-                           int x, int y, int width, int height,
-                           GLenum format, GLenum type, void *pixels);
-
-    bool post(HandleType p_colorbuffer, bool needLock = true);
-    bool repost();
-
-    EGLDisplay getDisplay() const { return m_eglDisplay; }
-    EGLNativeWindowType getSubWindow() const { return m_subWin; }
-    bool bind_locked();
-    bool unbind_locked();
-
-    void setDisplayRotation(float zRot) {
-        m_zRot = zRot;
-        repost();
-    }
-
-private:
-    FrameBuffer(int p_width, int p_height);
-    ~FrameBuffer();
-    HandleType genHandle();
-    bool bindSubwin_locked();
-    void initGLState();
-
-private:
-    static FrameBuffer *s_theFrameBuffer;
-    static HandleType s_nextHandle;
-    int m_x;
-    int m_y;
-    int m_width;
-    int m_height;
-    android::Mutex m_lock;
-    FBNativeWindowType m_nativeWindow;
-    FrameBufferCaps m_caps;
-    EGLDisplay m_eglDisplay;
-    RenderContextMap m_contexts;
-    WindowSurfaceMap m_windows;
-    ColorBufferMap m_colorbuffers;
-
-    EGLSurface m_eglSurface;
-    EGLContext m_eglContext;
-    EGLSurface m_pbufSurface;
-    EGLContext m_pbufContext;
-
-    EGLContext m_prevContext;
-    EGLSurface m_prevReadSurf;
-    EGLSurface m_prevDrawSurf;
-    EGLNativeWindowType m_subWin;
-    EGLNativeDisplayType m_subWinDisplay;
-    EGLConfig  m_eglConfig;
-    HandleType m_lastPostedColorBuffer;
-    float      m_zRot;
-    bool       m_eglContextInitialized;
-
-    int m_statsNumFrames;
-    long long m_statsStartTime;
-    bool m_fpsStats;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp
deleted file mode 100644
index b461807..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifdef WITH_GLES2
-#include "GL2Dispatch.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "osDynLibrary.h"
-
-gl2_decoder_context_t s_gl2;
-int                   s_gl2_enabled;
-
-static osUtils::dynLibrary *s_gles2_lib = NULL;
-
-#ifdef _WIN32
-#define DEFAULT_GLES_V2_LIB "libGLES_V2_translator"
-#elif defined(__APPLE__)
-#define DEFAULT_GLES_V2_LIB "libGLES_V2_translator.dylib"
-#else
-#define DEFAULT_GLES_V2_LIB "libGLES_V2_translator.so"
-#endif
-
-//
-// This function is called only once during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-bool init_gl2_dispatch()
-{
-    const char *libName = getenv("ANDROID_GLESv2_LIB");
-    if (!libName) libName = DEFAULT_GLES_V2_LIB;
-
-    //
-    // Load the GLES library
-    //
-    s_gles2_lib = osUtils::dynLibrary::open(libName);
-    if (!s_gles2_lib) return false;
-
-    //
-    // init the GLES dispatch table
-    //
-    s_gl2.initDispatchByName( gl2_dispatch_get_proc_func, NULL );
-    s_gl2_enabled = true;
-    return true;
-}
-
-//
-// This function is called only during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-void *gl2_dispatch_get_proc_func(const char *name, void *userData)
-{
-    if (!s_gles2_lib) {
-        return NULL;
-    }
-    return (void *)s_gles2_lib->findSymbol(name);
-}
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h b/tools/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h
deleted file mode 100644
index 89f3651..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/GL2Dispatch.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _GLES2_DISPATCH_H
-#define _GLES2_DISPATCH_H
-
-#ifdef WITH_GLES2
-
-#include "gl2_dec.h"
-
-bool init_gl2_dispatch();
-void *gl2_dispatch_get_proc_func(const char *name, void *userData);
-
-extern gl2_decoder_context_t s_gl2;
-extern int                   s_gl2_enabled;
-
-#endif
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp
deleted file mode 100644
index c8e53cd..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/GLDispatch.cpp
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "GLDispatch.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "osDynLibrary.h"
-
-GLDispatch s_gl;
-
-static osUtils::dynLibrary *s_gles_lib = NULL;
-
-//
-// This function is called only once during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-
-#ifdef _WIN32
-#define DEFAULT_GLES_CM_LIB "libGLES_CM_translator"
-#elif defined(__APPLE__)
-#define DEFAULT_GLES_CM_LIB "libGLES_CM_translator.dylib"
-#else
-#define DEFAULT_GLES_CM_LIB "libGLES_CM_translator.so"
-#endif
-
-bool init_gl_dispatch()
-{
-    const char *libName = getenv("ANDROID_GLESv1_LIB");
-    if (!libName) libName = DEFAULT_GLES_CM_LIB;
-
-    s_gles_lib = osUtils::dynLibrary::open(libName);
-    if (!s_gles_lib) return false;
-
-    s_gl.glAlphaFunc = (glAlphaFunc_t) s_gles_lib->findSymbol("glAlphaFunc");
-    s_gl.glClearColor = (glClearColor_t) s_gles_lib->findSymbol("glClearColor");
-    s_gl.glClearDepthf = (glClearDepthf_t) s_gles_lib->findSymbol("glClearDepthf");
-    s_gl.glClipPlanef = (glClipPlanef_t) s_gles_lib->findSymbol("glClipPlanef");
-    s_gl.glColor4f = (glColor4f_t) s_gles_lib->findSymbol("glColor4f");
-    s_gl.glDepthRangef = (glDepthRangef_t) s_gles_lib->findSymbol("glDepthRangef");
-    s_gl.glFogf = (glFogf_t) s_gles_lib->findSymbol("glFogf");
-    s_gl.glFogfv = (glFogfv_t) s_gles_lib->findSymbol("glFogfv");
-    s_gl.glFrustumf = (glFrustumf_t) s_gles_lib->findSymbol("glFrustumf");
-    s_gl.glGetClipPlanef = (glGetClipPlanef_t) s_gles_lib->findSymbol("glGetClipPlanef");
-    s_gl.glGetFloatv = (glGetFloatv_t) s_gles_lib->findSymbol("glGetFloatv");
-    s_gl.glGetLightfv = (glGetLightfv_t) s_gles_lib->findSymbol("glGetLightfv");
-    s_gl.glGetMaterialfv = (glGetMaterialfv_t) s_gles_lib->findSymbol("glGetMaterialfv");
-    s_gl.glGetTexEnvfv = (glGetTexEnvfv_t) s_gles_lib->findSymbol("glGetTexEnvfv");
-    s_gl.glGetTexParameterfv = (glGetTexParameterfv_t) s_gles_lib->findSymbol("glGetTexParameterfv");
-    s_gl.glLightModelf = (glLightModelf_t) s_gles_lib->findSymbol("glLightModelf");
-    s_gl.glLightModelfv = (glLightModelfv_t) s_gles_lib->findSymbol("glLightModelfv");
-    s_gl.glLightf = (glLightf_t) s_gles_lib->findSymbol("glLightf");
-    s_gl.glLightfv = (glLightfv_t) s_gles_lib->findSymbol("glLightfv");
-    s_gl.glLineWidth = (glLineWidth_t) s_gles_lib->findSymbol("glLineWidth");
-    s_gl.glLoadMatrixf = (glLoadMatrixf_t) s_gles_lib->findSymbol("glLoadMatrixf");
-    s_gl.glMaterialf = (glMaterialf_t) s_gles_lib->findSymbol("glMaterialf");
-    s_gl.glMaterialfv = (glMaterialfv_t) s_gles_lib->findSymbol("glMaterialfv");
-    s_gl.glMultMatrixf = (glMultMatrixf_t) s_gles_lib->findSymbol("glMultMatrixf");
-    s_gl.glMultiTexCoord4f = (glMultiTexCoord4f_t) s_gles_lib->findSymbol("glMultiTexCoord4f");
-    s_gl.glNormal3f = (glNormal3f_t) s_gles_lib->findSymbol("glNormal3f");
-    s_gl.glOrthof = (glOrthof_t) s_gles_lib->findSymbol("glOrthof");
-    s_gl.glPointParameterf = (glPointParameterf_t) s_gles_lib->findSymbol("glPointParameterf");
-    s_gl.glPointParameterfv = (glPointParameterfv_t) s_gles_lib->findSymbol("glPointParameterfv");
-    s_gl.glPointSize = (glPointSize_t) s_gles_lib->findSymbol("glPointSize");
-    s_gl.glPolygonOffset = (glPolygonOffset_t) s_gles_lib->findSymbol("glPolygonOffset");
-    s_gl.glRotatef = (glRotatef_t) s_gles_lib->findSymbol("glRotatef");
-    s_gl.glScalef = (glScalef_t) s_gles_lib->findSymbol("glScalef");
-    s_gl.glTexEnvf = (glTexEnvf_t) s_gles_lib->findSymbol("glTexEnvf");
-    s_gl.glTexEnvfv = (glTexEnvfv_t) s_gles_lib->findSymbol("glTexEnvfv");
-    s_gl.glTexParameterf = (glTexParameterf_t) s_gles_lib->findSymbol("glTexParameterf");
-    s_gl.glTexParameterfv = (glTexParameterfv_t) s_gles_lib->findSymbol("glTexParameterfv");
-    s_gl.glTranslatef = (glTranslatef_t) s_gles_lib->findSymbol("glTranslatef");
-    s_gl.glActiveTexture = (glActiveTexture_t) s_gles_lib->findSymbol("glActiveTexture");
-    s_gl.glAlphaFuncx = (glAlphaFuncx_t) s_gles_lib->findSymbol("glAlphaFuncx");
-    s_gl.glBindBuffer = (glBindBuffer_t) s_gles_lib->findSymbol("glBindBuffer");
-    s_gl.glBindTexture = (glBindTexture_t) s_gles_lib->findSymbol("glBindTexture");
-    s_gl.glBlendFunc = (glBlendFunc_t) s_gles_lib->findSymbol("glBlendFunc");
-    s_gl.glBufferData = (glBufferData_t) s_gles_lib->findSymbol("glBufferData");
-    s_gl.glBufferSubData = (glBufferSubData_t) s_gles_lib->findSymbol("glBufferSubData");
-    s_gl.glClear = (glClear_t) s_gles_lib->findSymbol("glClear");
-    s_gl.glClearColorx = (glClearColorx_t) s_gles_lib->findSymbol("glClearColorx");
-    s_gl.glClearDepthx = (glClearDepthx_t) s_gles_lib->findSymbol("glClearDepthx");
-    s_gl.glClearStencil = (glClearStencil_t) s_gles_lib->findSymbol("glClearStencil");
-    s_gl.glClientActiveTexture = (glClientActiveTexture_t) s_gles_lib->findSymbol("glClientActiveTexture");
-    s_gl.glClipPlanex = (glClipPlanex_t) s_gles_lib->findSymbol("glClipPlanex");
-    s_gl.glColor4ub = (glColor4ub_t) s_gles_lib->findSymbol("glColor4ub");
-    s_gl.glColor4x = (glColor4x_t) s_gles_lib->findSymbol("glColor4x");
-    s_gl.glColorMask = (glColorMask_t) s_gles_lib->findSymbol("glColorMask");
-    s_gl.glColorPointer = (glColorPointer_t) s_gles_lib->findSymbol("glColorPointer");
-    s_gl.glCompressedTexImage2D = (glCompressedTexImage2D_t) s_gles_lib->findSymbol("glCompressedTexImage2D");
-    s_gl.glCompressedTexSubImage2D = (glCompressedTexSubImage2D_t) s_gles_lib->findSymbol("glCompressedTexSubImage2D");
-    s_gl.glCopyTexImage2D = (glCopyTexImage2D_t) s_gles_lib->findSymbol("glCopyTexImage2D");
-    s_gl.glCopyTexSubImage2D = (glCopyTexSubImage2D_t) s_gles_lib->findSymbol("glCopyTexSubImage2D");
-    s_gl.glCullFace = (glCullFace_t) s_gles_lib->findSymbol("glCullFace");
-    s_gl.glDeleteBuffers = (glDeleteBuffers_t) s_gles_lib->findSymbol("glDeleteBuffers");
-    s_gl.glDeleteTextures = (glDeleteTextures_t) s_gles_lib->findSymbol("glDeleteTextures");
-    s_gl.glDepthFunc = (glDepthFunc_t) s_gles_lib->findSymbol("glDepthFunc");
-    s_gl.glDepthMask = (glDepthMask_t) s_gles_lib->findSymbol("glDepthMask");
-    s_gl.glDepthRangex = (glDepthRangex_t) s_gles_lib->findSymbol("glDepthRangex");
-    s_gl.glDisable = (glDisable_t) s_gles_lib->findSymbol("glDisable");
-    s_gl.glDisableClientState = (glDisableClientState_t) s_gles_lib->findSymbol("glDisableClientState");
-    s_gl.glDrawArrays = (glDrawArrays_t) s_gles_lib->findSymbol("glDrawArrays");
-    s_gl.glDrawElements = (glDrawElements_t) s_gles_lib->findSymbol("glDrawElements");
-    s_gl.glEnable = (glEnable_t) s_gles_lib->findSymbol("glEnable");
-    s_gl.glEnableClientState = (glEnableClientState_t) s_gles_lib->findSymbol("glEnableClientState");
-    s_gl.glFinish = (glFinish_t) s_gles_lib->findSymbol("glFinish");
-    s_gl.glFlush = (glFlush_t) s_gles_lib->findSymbol("glFlush");
-    s_gl.glFogx = (glFogx_t) s_gles_lib->findSymbol("glFogx");
-    s_gl.glFogxv = (glFogxv_t) s_gles_lib->findSymbol("glFogxv");
-    s_gl.glFrontFace = (glFrontFace_t) s_gles_lib->findSymbol("glFrontFace");
-    s_gl.glFrustumx = (glFrustumx_t) s_gles_lib->findSymbol("glFrustumx");
-    s_gl.glGetBooleanv = (glGetBooleanv_t) s_gles_lib->findSymbol("glGetBooleanv");
-    s_gl.glGetBufferParameteriv = (glGetBufferParameteriv_t) s_gles_lib->findSymbol("glGetBufferParameteriv");
-    s_gl.glGetClipPlanex = (glGetClipPlanex_t) s_gles_lib->findSymbol("glGetClipPlanex");
-    s_gl.glGenBuffers = (glGenBuffers_t) s_gles_lib->findSymbol("glGenBuffers");
-    s_gl.glGenTextures = (glGenTextures_t) s_gles_lib->findSymbol("glGenTextures");
-    s_gl.glGetError = (glGetError_t) s_gles_lib->findSymbol("glGetError");
-    s_gl.glGetFixedv = (glGetFixedv_t) s_gles_lib->findSymbol("glGetFixedv");
-    s_gl.glGetIntegerv = (glGetIntegerv_t) s_gles_lib->findSymbol("glGetIntegerv");
-    s_gl.glGetLightxv = (glGetLightxv_t) s_gles_lib->findSymbol("glGetLightxv");
-    s_gl.glGetMaterialxv = (glGetMaterialxv_t) s_gles_lib->findSymbol("glGetMaterialxv");
-    s_gl.glGetPointerv = (glGetPointerv_t) s_gles_lib->findSymbol("glGetPointerv");
-    s_gl.glGetString = (glGetString_t) s_gles_lib->findSymbol("glGetString");
-    s_gl.glGetTexEnviv = (glGetTexEnviv_t) s_gles_lib->findSymbol("glGetTexEnviv");
-    s_gl.glGetTexEnvxv = (glGetTexEnvxv_t) s_gles_lib->findSymbol("glGetTexEnvxv");
-    s_gl.glGetTexParameteriv = (glGetTexParameteriv_t) s_gles_lib->findSymbol("glGetTexParameteriv");
-    s_gl.glGetTexParameterxv = (glGetTexParameterxv_t) s_gles_lib->findSymbol("glGetTexParameterxv");
-    s_gl.glHint = (glHint_t) s_gles_lib->findSymbol("glHint");
-    s_gl.glIsBuffer = (glIsBuffer_t) s_gles_lib->findSymbol("glIsBuffer");
-    s_gl.glIsEnabled = (glIsEnabled_t) s_gles_lib->findSymbol("glIsEnabled");
-    s_gl.glIsTexture = (glIsTexture_t) s_gles_lib->findSymbol("glIsTexture");
-    s_gl.glLightModelx = (glLightModelx_t) s_gles_lib->findSymbol("glLightModelx");
-    s_gl.glLightModelxv = (glLightModelxv_t) s_gles_lib->findSymbol("glLightModelxv");
-    s_gl.glLightx = (glLightx_t) s_gles_lib->findSymbol("glLightx");
-    s_gl.glLightxv = (glLightxv_t) s_gles_lib->findSymbol("glLightxv");
-    s_gl.glLineWidthx = (glLineWidthx_t) s_gles_lib->findSymbol("glLineWidthx");
-    s_gl.glLoadIdentity = (glLoadIdentity_t) s_gles_lib->findSymbol("glLoadIdentity");
-    s_gl.glLoadMatrixx = (glLoadMatrixx_t) s_gles_lib->findSymbol("glLoadMatrixx");
-    s_gl.glLogicOp = (glLogicOp_t) s_gles_lib->findSymbol("glLogicOp");
-    s_gl.glMaterialx = (glMaterialx_t) s_gles_lib->findSymbol("glMaterialx");
-    s_gl.glMaterialxv = (glMaterialxv_t) s_gles_lib->findSymbol("glMaterialxv");
-    s_gl.glMatrixMode = (glMatrixMode_t) s_gles_lib->findSymbol("glMatrixMode");
-    s_gl.glMultMatrixx = (glMultMatrixx_t) s_gles_lib->findSymbol("glMultMatrixx");
-    s_gl.glMultiTexCoord4x = (glMultiTexCoord4x_t) s_gles_lib->findSymbol("glMultiTexCoord4x");
-    s_gl.glNormal3x = (glNormal3x_t) s_gles_lib->findSymbol("glNormal3x");
-    s_gl.glNormalPointer = (glNormalPointer_t) s_gles_lib->findSymbol("glNormalPointer");
-    s_gl.glOrthox = (glOrthox_t) s_gles_lib->findSymbol("glOrthox");
-    s_gl.glPixelStorei = (glPixelStorei_t) s_gles_lib->findSymbol("glPixelStorei");
-    s_gl.glPointParameterx = (glPointParameterx_t) s_gles_lib->findSymbol("glPointParameterx");
-    s_gl.glPointParameterxv = (glPointParameterxv_t) s_gles_lib->findSymbol("glPointParameterxv");
-    s_gl.glPointSizex = (glPointSizex_t) s_gles_lib->findSymbol("glPointSizex");
-    s_gl.glPolygonOffsetx = (glPolygonOffsetx_t) s_gles_lib->findSymbol("glPolygonOffsetx");
-    s_gl.glPopMatrix = (glPopMatrix_t) s_gles_lib->findSymbol("glPopMatrix");
-    s_gl.glPushMatrix = (glPushMatrix_t) s_gles_lib->findSymbol("glPushMatrix");
-    s_gl.glReadPixels = (glReadPixels_t) s_gles_lib->findSymbol("glReadPixels");
-    s_gl.glRotatex = (glRotatex_t) s_gles_lib->findSymbol("glRotatex");
-    s_gl.glSampleCoverage = (glSampleCoverage_t) s_gles_lib->findSymbol("glSampleCoverage");
-    s_gl.glSampleCoveragex = (glSampleCoveragex_t) s_gles_lib->findSymbol("glSampleCoveragex");
-    s_gl.glScalex = (glScalex_t) s_gles_lib->findSymbol("glScalex");
-    s_gl.glScissor = (glScissor_t) s_gles_lib->findSymbol("glScissor");
-    s_gl.glShadeModel = (glShadeModel_t) s_gles_lib->findSymbol("glShadeModel");
-    s_gl.glStencilFunc = (glStencilFunc_t) s_gles_lib->findSymbol("glStencilFunc");
-    s_gl.glStencilMask = (glStencilMask_t) s_gles_lib->findSymbol("glStencilMask");
-    s_gl.glStencilOp = (glStencilOp_t) s_gles_lib->findSymbol("glStencilOp");
-    s_gl.glTexCoordPointer = (glTexCoordPointer_t) s_gles_lib->findSymbol("glTexCoordPointer");
-    s_gl.glTexEnvi = (glTexEnvi_t) s_gles_lib->findSymbol("glTexEnvi");
-    s_gl.glTexEnvx = (glTexEnvx_t) s_gles_lib->findSymbol("glTexEnvx");
-    s_gl.glTexEnviv = (glTexEnviv_t) s_gles_lib->findSymbol("glTexEnviv");
-    s_gl.glTexEnvxv = (glTexEnvxv_t) s_gles_lib->findSymbol("glTexEnvxv");
-    s_gl.glTexImage2D = (glTexImage2D_t) s_gles_lib->findSymbol("glTexImage2D");
-    s_gl.glTexParameteri = (glTexParameteri_t) s_gles_lib->findSymbol("glTexParameteri");
-    s_gl.glTexParameterx = (glTexParameterx_t) s_gles_lib->findSymbol("glTexParameterx");
-    s_gl.glTexParameteriv = (glTexParameteriv_t) s_gles_lib->findSymbol("glTexParameteriv");
-    s_gl.glTexParameterxv = (glTexParameterxv_t) s_gles_lib->findSymbol("glTexParameterxv");
-    s_gl.glTexSubImage2D = (glTexSubImage2D_t) s_gles_lib->findSymbol("glTexSubImage2D");
-    s_gl.glTranslatex = (glTranslatex_t) s_gles_lib->findSymbol("glTranslatex");
-    s_gl.glVertexPointer = (glVertexPointer_t) s_gles_lib->findSymbol("glVertexPointer");
-    s_gl.glViewport = (glViewport_t) s_gles_lib->findSymbol("glViewport");
-    s_gl.glPointSizePointerOES = (glPointSizePointerOES_t) s_gles_lib->findSymbol("glPointSizePointerOES");
-    s_gl.glBlendEquationSeparateOES = (glBlendEquationSeparateOES_t) s_gles_lib->findSymbol("glBlendEquationSeparateOES");
-    s_gl.glBlendFuncSeparateOES = (glBlendFuncSeparateOES_t) s_gles_lib->findSymbol("glBlendFuncSeparateOES");
-    s_gl.glBlendEquationOES = (glBlendEquationOES_t) s_gles_lib->findSymbol("glBlendEquationOES");
-    s_gl.glDrawTexsOES = (glDrawTexsOES_t) s_gles_lib->findSymbol("glDrawTexsOES");
-    s_gl.glDrawTexiOES = (glDrawTexiOES_t) s_gles_lib->findSymbol("glDrawTexiOES");
-    s_gl.glDrawTexxOES = (glDrawTexxOES_t) s_gles_lib->findSymbol("glDrawTexxOES");
-    s_gl.glDrawTexsvOES = (glDrawTexsvOES_t) s_gles_lib->findSymbol("glDrawTexsvOES");
-    s_gl.glDrawTexivOES = (glDrawTexivOES_t) s_gles_lib->findSymbol("glDrawTexivOES");
-    s_gl.glDrawTexxvOES = (glDrawTexxvOES_t) s_gles_lib->findSymbol("glDrawTexxvOES");
-    s_gl.glDrawTexfOES = (glDrawTexfOES_t) s_gles_lib->findSymbol("glDrawTexfOES");
-    s_gl.glDrawTexfvOES = (glDrawTexfvOES_t) s_gles_lib->findSymbol("glDrawTexfvOES");
-    s_gl.glEGLImageTargetTexture2DOES = (glEGLImageTargetTexture2DOES_t) s_gles_lib->findSymbol("glEGLImageTargetTexture2DOES");
-    s_gl.glEGLImageTargetRenderbufferStorageOES = (glEGLImageTargetRenderbufferStorageOES_t) s_gles_lib->findSymbol("glEGLImageTargetRenderbufferStorageOES");
-    s_gl.glAlphaFuncxOES = (glAlphaFuncxOES_t) s_gles_lib->findSymbol("glAlphaFuncxOES");
-    s_gl.glClearColorxOES = (glClearColorxOES_t) s_gles_lib->findSymbol("glClearColorxOES");
-    s_gl.glClearDepthxOES = (glClearDepthxOES_t) s_gles_lib->findSymbol("glClearDepthxOES");
-    s_gl.glClipPlanexOES = (glClipPlanexOES_t) s_gles_lib->findSymbol("glClipPlanexOES");
-    s_gl.glColor4xOES = (glColor4xOES_t) s_gles_lib->findSymbol("glColor4xOES");
-    s_gl.glDepthRangexOES = (glDepthRangexOES_t) s_gles_lib->findSymbol("glDepthRangexOES");
-    s_gl.glFogxOES = (glFogxOES_t) s_gles_lib->findSymbol("glFogxOES");
-    s_gl.glFogxvOES = (glFogxvOES_t) s_gles_lib->findSymbol("glFogxvOES");
-    s_gl.glFrustumxOES = (glFrustumxOES_t) s_gles_lib->findSymbol("glFrustumxOES");
-    s_gl.glGetClipPlanexOES = (glGetClipPlanexOES_t) s_gles_lib->findSymbol("glGetClipPlanexOES");
-    s_gl.glGetFixedvOES = (glGetFixedvOES_t) s_gles_lib->findSymbol("glGetFixedvOES");
-    s_gl.glGetLightxvOES = (glGetLightxvOES_t) s_gles_lib->findSymbol("glGetLightxvOES");
-    s_gl.glGetMaterialxvOES = (glGetMaterialxvOES_t) s_gles_lib->findSymbol("glGetMaterialxvOES");
-    s_gl.glGetTexEnvxvOES = (glGetTexEnvxvOES_t) s_gles_lib->findSymbol("glGetTexEnvxvOES");
-    s_gl.glGetTexParameterxvOES = (glGetTexParameterxvOES_t) s_gles_lib->findSymbol("glGetTexParameterxvOES");
-    s_gl.glLightModelxOES = (glLightModelxOES_t) s_gles_lib->findSymbol("glLightModelxOES");
-    s_gl.glLightModelxvOES = (glLightModelxvOES_t) s_gles_lib->findSymbol("glLightModelxvOES");
-    s_gl.glLightxOES = (glLightxOES_t) s_gles_lib->findSymbol("glLightxOES");
-    s_gl.glLightxvOES = (glLightxvOES_t) s_gles_lib->findSymbol("glLightxvOES");
-    s_gl.glLineWidthxOES = (glLineWidthxOES_t) s_gles_lib->findSymbol("glLineWidthxOES");
-    s_gl.glLoadMatrixxOES = (glLoadMatrixxOES_t) s_gles_lib->findSymbol("glLoadMatrixxOES");
-    s_gl.glMaterialxOES = (glMaterialxOES_t) s_gles_lib->findSymbol("glMaterialxOES");
-    s_gl.glMaterialxvOES = (glMaterialxvOES_t) s_gles_lib->findSymbol("glMaterialxvOES");
-    s_gl.glMultMatrixxOES = (glMultMatrixxOES_t) s_gles_lib->findSymbol("glMultMatrixxOES");
-    s_gl.glMultiTexCoord4xOES = (glMultiTexCoord4xOES_t) s_gles_lib->findSymbol("glMultiTexCoord4xOES");
-    s_gl.glNormal3xOES = (glNormal3xOES_t) s_gles_lib->findSymbol("glNormal3xOES");
-    s_gl.glOrthoxOES = (glOrthoxOES_t) s_gles_lib->findSymbol("glOrthoxOES");
-    s_gl.glPointParameterxOES = (glPointParameterxOES_t) s_gles_lib->findSymbol("glPointParameterxOES");
-    s_gl.glPointParameterxvOES = (glPointParameterxvOES_t) s_gles_lib->findSymbol("glPointParameterxvOES");
-    s_gl.glPointSizexOES = (glPointSizexOES_t) s_gles_lib->findSymbol("glPointSizexOES");
-    s_gl.glPolygonOffsetxOES = (glPolygonOffsetxOES_t) s_gles_lib->findSymbol("glPolygonOffsetxOES");
-    s_gl.glRotatexOES = (glRotatexOES_t) s_gles_lib->findSymbol("glRotatexOES");
-    s_gl.glSampleCoveragexOES = (glSampleCoveragexOES_t) s_gles_lib->findSymbol("glSampleCoveragexOES");
-    s_gl.glScalexOES = (glScalexOES_t) s_gles_lib->findSymbol("glScalexOES");
-    s_gl.glTexEnvxOES = (glTexEnvxOES_t) s_gles_lib->findSymbol("glTexEnvxOES");
-    s_gl.glTexEnvxvOES = (glTexEnvxvOES_t) s_gles_lib->findSymbol("glTexEnvxvOES");
-    s_gl.glTexParameterxOES = (glTexParameterxOES_t) s_gles_lib->findSymbol("glTexParameterxOES");
-    s_gl.glTexParameterxvOES = (glTexParameterxvOES_t) s_gles_lib->findSymbol("glTexParameterxvOES");
-    s_gl.glTranslatexOES = (glTranslatexOES_t) s_gles_lib->findSymbol("glTranslatexOES");
-    s_gl.glIsRenderbufferOES = (glIsRenderbufferOES_t) s_gles_lib->findSymbol("glIsRenderbufferOES");
-    s_gl.glBindRenderbufferOES = (glBindRenderbufferOES_t) s_gles_lib->findSymbol("glBindRenderbufferOES");
-    s_gl.glDeleteRenderbuffersOES = (glDeleteRenderbuffersOES_t) s_gles_lib->findSymbol("glDeleteRenderbuffersOES");
-    s_gl.glGenRenderbuffersOES = (glGenRenderbuffersOES_t) s_gles_lib->findSymbol("glGenRenderbuffersOES");
-    s_gl.glRenderbufferStorageOES = (glRenderbufferStorageOES_t) s_gles_lib->findSymbol("glRenderbufferStorageOES");
-    s_gl.glGetRenderbufferParameterivOES = (glGetRenderbufferParameterivOES_t) s_gles_lib->findSymbol("glGetRenderbufferParameterivOES");
-    s_gl.glIsFramebufferOES = (glIsFramebufferOES_t) s_gles_lib->findSymbol("glIsFramebufferOES");
-    s_gl.glBindFramebufferOES = (glBindFramebufferOES_t) s_gles_lib->findSymbol("glBindFramebufferOES");
-    s_gl.glDeleteFramebuffersOES = (glDeleteFramebuffersOES_t) s_gles_lib->findSymbol("glDeleteFramebuffersOES");
-    s_gl.glGenFramebuffersOES = (glGenFramebuffersOES_t) s_gles_lib->findSymbol("glGenFramebuffersOES");
-    s_gl.glCheckFramebufferStatusOES = (glCheckFramebufferStatusOES_t) s_gles_lib->findSymbol("glCheckFramebufferStatusOES");
-    s_gl.glFramebufferRenderbufferOES = (glFramebufferRenderbufferOES_t) s_gles_lib->findSymbol("glFramebufferRenderbufferOES");
-    s_gl.glFramebufferTexture2DOES = (glFramebufferTexture2DOES_t) s_gles_lib->findSymbol("glFramebufferTexture2DOES");
-    s_gl.glGetFramebufferAttachmentParameterivOES = (glGetFramebufferAttachmentParameterivOES_t) s_gles_lib->findSymbol("glGetFramebufferAttachmentParameterivOES");
-    s_gl.glGenerateMipmapOES = (glGenerateMipmapOES_t) s_gles_lib->findSymbol("glGenerateMipmapOES");
-    s_gl.glMapBufferOES = (glMapBufferOES_t) s_gles_lib->findSymbol("glMapBufferOES");
-    s_gl.glUnmapBufferOES = (glUnmapBufferOES_t) s_gles_lib->findSymbol("glUnmapBufferOES");
-    s_gl.glGetBufferPointervOES = (glGetBufferPointervOES_t) s_gles_lib->findSymbol("glGetBufferPointervOES");
-    s_gl.glCurrentPaletteMatrixOES = (glCurrentPaletteMatrixOES_t) s_gles_lib->findSymbol("glCurrentPaletteMatrixOES");
-    s_gl.glLoadPaletteFromModelViewMatrixOES = (glLoadPaletteFromModelViewMatrixOES_t) s_gles_lib->findSymbol("glLoadPaletteFromModelViewMatrixOES");
-    s_gl.glMatrixIndexPointerOES = (glMatrixIndexPointerOES_t) s_gles_lib->findSymbol("glMatrixIndexPointerOES");
-    s_gl.glWeightPointerOES = (glWeightPointerOES_t) s_gles_lib->findSymbol("glWeightPointerOES");
-    s_gl.glQueryMatrixxOES = (glQueryMatrixxOES_t) s_gles_lib->findSymbol("glQueryMatrixxOES");
-    s_gl.glDepthRangefOES = (glDepthRangefOES_t) s_gles_lib->findSymbol("glDepthRangefOES");
-    s_gl.glFrustumfOES = (glFrustumfOES_t) s_gles_lib->findSymbol("glFrustumfOES");
-    s_gl.glOrthofOES = (glOrthofOES_t) s_gles_lib->findSymbol("glOrthofOES");
-    s_gl.glClipPlanefOES = (glClipPlanefOES_t) s_gles_lib->findSymbol("glClipPlanefOES");
-    s_gl.glGetClipPlanefOES = (glGetClipPlanefOES_t) s_gles_lib->findSymbol("glGetClipPlanefOES");
-    s_gl.glClearDepthfOES = (glClearDepthfOES_t) s_gles_lib->findSymbol("glClearDepthfOES");
-    s_gl.glTexGenfOES = (glTexGenfOES_t) s_gles_lib->findSymbol("glTexGenfOES");
-    s_gl.glTexGenfvOES = (glTexGenfvOES_t) s_gles_lib->findSymbol("glTexGenfvOES");
-    s_gl.glTexGeniOES = (glTexGeniOES_t) s_gles_lib->findSymbol("glTexGeniOES");
-    s_gl.glTexGenivOES = (glTexGenivOES_t) s_gles_lib->findSymbol("glTexGenivOES");
-    s_gl.glTexGenxOES = (glTexGenxOES_t) s_gles_lib->findSymbol("glTexGenxOES");
-    s_gl.glTexGenxvOES = (glTexGenxvOES_t) s_gles_lib->findSymbol("glTexGenxvOES");
-    s_gl.glGetTexGenfvOES = (glGetTexGenfvOES_t) s_gles_lib->findSymbol("glGetTexGenfvOES");
-    s_gl.glGetTexGenivOES = (glGetTexGenivOES_t) s_gles_lib->findSymbol("glGetTexGenivOES");
-    s_gl.glGetTexGenxvOES = (glGetTexGenxvOES_t) s_gles_lib->findSymbol("glGetTexGenxvOES");
-    s_gl.glBindVertexArrayOES = (glBindVertexArrayOES_t) s_gles_lib->findSymbol("glBindVertexArrayOES");
-    s_gl.glDeleteVertexArraysOES = (glDeleteVertexArraysOES_t) s_gles_lib->findSymbol("glDeleteVertexArraysOES");
-    s_gl.glGenVertexArraysOES = (glGenVertexArraysOES_t) s_gles_lib->findSymbol("glGenVertexArraysOES");
-    s_gl.glIsVertexArrayOES = (glIsVertexArrayOES_t) s_gles_lib->findSymbol("glIsVertexArrayOES");
-    s_gl.glDiscardFramebufferEXT = (glDiscardFramebufferEXT_t) s_gles_lib->findSymbol("glDiscardFramebufferEXT");
-    s_gl.glMultiDrawArraysEXT = (glMultiDrawArraysEXT_t) s_gles_lib->findSymbol("glMultiDrawArraysEXT");
-    s_gl.glMultiDrawElementsEXT = (glMultiDrawElementsEXT_t) s_gles_lib->findSymbol("glMultiDrawElementsEXT");
-    s_gl.glClipPlanefIMG = (glClipPlanefIMG_t) s_gles_lib->findSymbol("glClipPlanefIMG");
-    s_gl.glClipPlanexIMG = (glClipPlanexIMG_t) s_gles_lib->findSymbol("glClipPlanexIMG");
-    s_gl.glRenderbufferStorageMultisampleIMG = (glRenderbufferStorageMultisampleIMG_t) s_gles_lib->findSymbol("glRenderbufferStorageMultisampleIMG");
-    s_gl.glFramebufferTexture2DMultisampleIMG = (glFramebufferTexture2DMultisampleIMG_t) s_gles_lib->findSymbol("glFramebufferTexture2DMultisampleIMG");
-    s_gl.glDeleteFencesNV = (glDeleteFencesNV_t) s_gles_lib->findSymbol("glDeleteFencesNV");
-    s_gl.glGenFencesNV = (glGenFencesNV_t) s_gles_lib->findSymbol("glGenFencesNV");
-    s_gl.glIsFenceNV = (glIsFenceNV_t) s_gles_lib->findSymbol("glIsFenceNV");
-    s_gl.glTestFenceNV = (glTestFenceNV_t) s_gles_lib->findSymbol("glTestFenceNV");
-    s_gl.glGetFenceivNV = (glGetFenceivNV_t) s_gles_lib->findSymbol("glGetFenceivNV");
-    s_gl.glFinishFenceNV = (glFinishFenceNV_t) s_gles_lib->findSymbol("glFinishFenceNV");
-    s_gl.glSetFenceNV = (glSetFenceNV_t) s_gles_lib->findSymbol("glSetFenceNV");
-    s_gl.glGetDriverControlsQCOM = (glGetDriverControlsQCOM_t) s_gles_lib->findSymbol("glGetDriverControlsQCOM");
-    s_gl.glGetDriverControlStringQCOM = (glGetDriverControlStringQCOM_t) s_gles_lib->findSymbol("glGetDriverControlStringQCOM");
-    s_gl.glEnableDriverControlQCOM = (glEnableDriverControlQCOM_t) s_gles_lib->findSymbol("glEnableDriverControlQCOM");
-    s_gl.glDisableDriverControlQCOM = (glDisableDriverControlQCOM_t) s_gles_lib->findSymbol("glDisableDriverControlQCOM");
-    s_gl.glExtGetTexturesQCOM = (glExtGetTexturesQCOM_t) s_gles_lib->findSymbol("glExtGetTexturesQCOM");
-    s_gl.glExtGetBuffersQCOM = (glExtGetBuffersQCOM_t) s_gles_lib->findSymbol("glExtGetBuffersQCOM");
-    s_gl.glExtGetRenderbuffersQCOM = (glExtGetRenderbuffersQCOM_t) s_gles_lib->findSymbol("glExtGetRenderbuffersQCOM");
-    s_gl.glExtGetFramebuffersQCOM = (glExtGetFramebuffersQCOM_t) s_gles_lib->findSymbol("glExtGetFramebuffersQCOM");
-    s_gl.glExtGetTexLevelParameterivQCOM = (glExtGetTexLevelParameterivQCOM_t) s_gles_lib->findSymbol("glExtGetTexLevelParameterivQCOM");
-    s_gl.glExtTexObjectStateOverrideiQCOM = (glExtTexObjectStateOverrideiQCOM_t) s_gles_lib->findSymbol("glExtTexObjectStateOverrideiQCOM");
-    s_gl.glExtGetTexSubImageQCOM = (glExtGetTexSubImageQCOM_t) s_gles_lib->findSymbol("glExtGetTexSubImageQCOM");
-    s_gl.glExtGetBufferPointervQCOM = (glExtGetBufferPointervQCOM_t) s_gles_lib->findSymbol("glExtGetBufferPointervQCOM");
-    s_gl.glExtGetShadersQCOM = (glExtGetShadersQCOM_t) s_gles_lib->findSymbol("glExtGetShadersQCOM");
-    s_gl.glExtGetProgramsQCOM = (glExtGetProgramsQCOM_t) s_gles_lib->findSymbol("glExtGetProgramsQCOM");
-    s_gl.glExtIsProgramBinaryQCOM = (glExtIsProgramBinaryQCOM_t) s_gles_lib->findSymbol("glExtIsProgramBinaryQCOM");
-    s_gl.glExtGetProgramBinarySourceQCOM = (glExtGetProgramBinarySourceQCOM_t) s_gles_lib->findSymbol("glExtGetProgramBinarySourceQCOM");
-    s_gl.glStartTilingQCOM = (glStartTilingQCOM_t) s_gles_lib->findSymbol("glStartTilingQCOM");
-    s_gl.glEndTilingQCOM = (glEndTilingQCOM_t) s_gles_lib->findSymbol("glEndTilingQCOM");
-
-    return true;
-}
-
-//
-// This function is called only during initialiation before
-// any thread has been created - hence it should NOT be thread safe.
-//
-void *gl_dispatch_get_proc_func(const char *name, void *userData)
-{
-    if (!s_gles_lib) {
-        return NULL;
-    }
-    return (void *)s_gles_lib->findSymbol(name);
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/GLDispatch.h b/tools/emulator/opengl/host/libs/libOpenglRender/GLDispatch.h
deleted file mode 100644
index 5fe98f1..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/GLDispatch.h
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _GLES_DISPATCH_H
-#define _GLES_DISPATCH_H
-
-#include "gl_proc.h"
-
-
-struct GLDispatch {
-    glAlphaFunc_t glAlphaFunc;
-    glClearColor_t glClearColor;
-    glClearDepthf_t glClearDepthf;
-    glClipPlanef_t glClipPlanef;
-    glColor4f_t glColor4f;
-    glDepthRangef_t glDepthRangef;
-    glFogf_t glFogf;
-    glFogfv_t glFogfv;
-    glFrustumf_t glFrustumf;
-    glGetClipPlanef_t glGetClipPlanef;
-    glGetFloatv_t glGetFloatv;
-    glGetLightfv_t glGetLightfv;
-    glGetMaterialfv_t glGetMaterialfv;
-    glGetTexEnvfv_t glGetTexEnvfv;
-    glGetTexParameterfv_t glGetTexParameterfv;
-    glLightModelf_t glLightModelf;
-    glLightModelfv_t glLightModelfv;
-    glLightf_t glLightf;
-    glLightfv_t glLightfv;
-    glLineWidth_t glLineWidth;
-    glLoadMatrixf_t glLoadMatrixf;
-    glMaterialf_t glMaterialf;
-    glMaterialfv_t glMaterialfv;
-    glMultMatrixf_t glMultMatrixf;
-    glMultiTexCoord4f_t glMultiTexCoord4f;
-    glNormal3f_t glNormal3f;
-    glOrthof_t glOrthof;
-    glPointParameterf_t glPointParameterf;
-    glPointParameterfv_t glPointParameterfv;
-    glPointSize_t glPointSize;
-    glPolygonOffset_t glPolygonOffset;
-    glRotatef_t glRotatef;
-    glScalef_t glScalef;
-    glTexEnvf_t glTexEnvf;
-    glTexEnvfv_t glTexEnvfv;
-    glTexParameterf_t glTexParameterf;
-    glTexParameterfv_t glTexParameterfv;
-    glTranslatef_t glTranslatef;
-    glActiveTexture_t glActiveTexture;
-    glAlphaFuncx_t glAlphaFuncx;
-    glBindBuffer_t glBindBuffer;
-    glBindTexture_t glBindTexture;
-    glBlendFunc_t glBlendFunc;
-    glBufferData_t glBufferData;
-    glBufferSubData_t glBufferSubData;
-    glClear_t glClear;
-    glClearColorx_t glClearColorx;
-    glClearDepthx_t glClearDepthx;
-    glClearStencil_t glClearStencil;
-    glClientActiveTexture_t glClientActiveTexture;
-    glClipPlanex_t glClipPlanex;
-    glColor4ub_t glColor4ub;
-    glColor4x_t glColor4x;
-    glColorMask_t glColorMask;
-    glColorPointer_t glColorPointer;
-    glCompressedTexImage2D_t glCompressedTexImage2D;
-    glCompressedTexSubImage2D_t glCompressedTexSubImage2D;
-    glCopyTexImage2D_t glCopyTexImage2D;
-    glCopyTexSubImage2D_t glCopyTexSubImage2D;
-    glCullFace_t glCullFace;
-    glDeleteBuffers_t glDeleteBuffers;
-    glDeleteTextures_t glDeleteTextures;
-    glDepthFunc_t glDepthFunc;
-    glDepthMask_t glDepthMask;
-    glDepthRangex_t glDepthRangex;
-    glDisable_t glDisable;
-    glDisableClientState_t glDisableClientState;
-    glDrawArrays_t glDrawArrays;
-    glDrawElements_t glDrawElements;
-    glEnable_t glEnable;
-    glEnableClientState_t glEnableClientState;
-    glFinish_t glFinish;
-    glFlush_t glFlush;
-    glFogx_t glFogx;
-    glFogxv_t glFogxv;
-    glFrontFace_t glFrontFace;
-    glFrustumx_t glFrustumx;
-    glGetBooleanv_t glGetBooleanv;
-    glGetBufferParameteriv_t glGetBufferParameteriv;
-    glGetClipPlanex_t glGetClipPlanex;
-    glGenBuffers_t glGenBuffers;
-    glGenTextures_t glGenTextures;
-    glGetError_t glGetError;
-    glGetFixedv_t glGetFixedv;
-    glGetIntegerv_t glGetIntegerv;
-    glGetLightxv_t glGetLightxv;
-    glGetMaterialxv_t glGetMaterialxv;
-    glGetPointerv_t glGetPointerv;
-    glGetString_t glGetString;
-    glGetTexEnviv_t glGetTexEnviv;
-    glGetTexEnvxv_t glGetTexEnvxv;
-    glGetTexParameteriv_t glGetTexParameteriv;
-    glGetTexParameterxv_t glGetTexParameterxv;
-    glHint_t glHint;
-    glIsBuffer_t glIsBuffer;
-    glIsEnabled_t glIsEnabled;
-    glIsTexture_t glIsTexture;
-    glLightModelx_t glLightModelx;
-    glLightModelxv_t glLightModelxv;
-    glLightx_t glLightx;
-    glLightxv_t glLightxv;
-    glLineWidthx_t glLineWidthx;
-    glLoadIdentity_t glLoadIdentity;
-    glLoadMatrixx_t glLoadMatrixx;
-    glLogicOp_t glLogicOp;
-    glMaterialx_t glMaterialx;
-    glMaterialxv_t glMaterialxv;
-    glMatrixMode_t glMatrixMode;
-    glMultMatrixx_t glMultMatrixx;
-    glMultiTexCoord4x_t glMultiTexCoord4x;
-    glNormal3x_t glNormal3x;
-    glNormalPointer_t glNormalPointer;
-    glOrthox_t glOrthox;
-    glPixelStorei_t glPixelStorei;
-    glPointParameterx_t glPointParameterx;
-    glPointParameterxv_t glPointParameterxv;
-    glPointSizex_t glPointSizex;
-    glPolygonOffsetx_t glPolygonOffsetx;
-    glPopMatrix_t glPopMatrix;
-    glPushMatrix_t glPushMatrix;
-    glReadPixels_t glReadPixels;
-    glRotatex_t glRotatex;
-    glSampleCoverage_t glSampleCoverage;
-    glSampleCoveragex_t glSampleCoveragex;
-    glScalex_t glScalex;
-    glScissor_t glScissor;
-    glShadeModel_t glShadeModel;
-    glStencilFunc_t glStencilFunc;
-    glStencilMask_t glStencilMask;
-    glStencilOp_t glStencilOp;
-    glTexCoordPointer_t glTexCoordPointer;
-    glTexEnvi_t glTexEnvi;
-    glTexEnvx_t glTexEnvx;
-    glTexEnviv_t glTexEnviv;
-    glTexEnvxv_t glTexEnvxv;
-    glTexImage2D_t glTexImage2D;
-    glTexParameteri_t glTexParameteri;
-    glTexParameterx_t glTexParameterx;
-    glTexParameteriv_t glTexParameteriv;
-    glTexParameterxv_t glTexParameterxv;
-    glTexSubImage2D_t glTexSubImage2D;
-    glTranslatex_t glTranslatex;
-    glVertexPointer_t glVertexPointer;
-    glViewport_t glViewport;
-    glPointSizePointerOES_t glPointSizePointerOES;
-    glBlendEquationSeparateOES_t glBlendEquationSeparateOES;
-    glBlendFuncSeparateOES_t glBlendFuncSeparateOES;
-    glBlendEquationOES_t glBlendEquationOES;
-    glDrawTexsOES_t glDrawTexsOES;
-    glDrawTexiOES_t glDrawTexiOES;
-    glDrawTexxOES_t glDrawTexxOES;
-    glDrawTexsvOES_t glDrawTexsvOES;
-    glDrawTexivOES_t glDrawTexivOES;
-    glDrawTexxvOES_t glDrawTexxvOES;
-    glDrawTexfOES_t glDrawTexfOES;
-    glDrawTexfvOES_t glDrawTexfvOES;
-    glEGLImageTargetTexture2DOES_t glEGLImageTargetTexture2DOES;
-    glEGLImageTargetRenderbufferStorageOES_t glEGLImageTargetRenderbufferStorageOES;
-    glAlphaFuncxOES_t glAlphaFuncxOES;
-    glClearColorxOES_t glClearColorxOES;
-    glClearDepthxOES_t glClearDepthxOES;
-    glClipPlanexOES_t glClipPlanexOES;
-    glColor4xOES_t glColor4xOES;
-    glDepthRangexOES_t glDepthRangexOES;
-    glFogxOES_t glFogxOES;
-    glFogxvOES_t glFogxvOES;
-    glFrustumxOES_t glFrustumxOES;
-    glGetClipPlanexOES_t glGetClipPlanexOES;
-    glGetFixedvOES_t glGetFixedvOES;
-    glGetLightxvOES_t glGetLightxvOES;
-    glGetMaterialxvOES_t glGetMaterialxvOES;
-    glGetTexEnvxvOES_t glGetTexEnvxvOES;
-    glGetTexParameterxvOES_t glGetTexParameterxvOES;
-    glLightModelxOES_t glLightModelxOES;
-    glLightModelxvOES_t glLightModelxvOES;
-    glLightxOES_t glLightxOES;
-    glLightxvOES_t glLightxvOES;
-    glLineWidthxOES_t glLineWidthxOES;
-    glLoadMatrixxOES_t glLoadMatrixxOES;
-    glMaterialxOES_t glMaterialxOES;
-    glMaterialxvOES_t glMaterialxvOES;
-    glMultMatrixxOES_t glMultMatrixxOES;
-    glMultiTexCoord4xOES_t glMultiTexCoord4xOES;
-    glNormal3xOES_t glNormal3xOES;
-    glOrthoxOES_t glOrthoxOES;
-    glPointParameterxOES_t glPointParameterxOES;
-    glPointParameterxvOES_t glPointParameterxvOES;
-    glPointSizexOES_t glPointSizexOES;
-    glPolygonOffsetxOES_t glPolygonOffsetxOES;
-    glRotatexOES_t glRotatexOES;
-    glSampleCoveragexOES_t glSampleCoveragexOES;
-    glScalexOES_t glScalexOES;
-    glTexEnvxOES_t glTexEnvxOES;
-    glTexEnvxvOES_t glTexEnvxvOES;
-    glTexParameterxOES_t glTexParameterxOES;
-    glTexParameterxvOES_t glTexParameterxvOES;
-    glTranslatexOES_t glTranslatexOES;
-    glIsRenderbufferOES_t glIsRenderbufferOES;
-    glBindRenderbufferOES_t glBindRenderbufferOES;
-    glDeleteRenderbuffersOES_t glDeleteRenderbuffersOES;
-    glGenRenderbuffersOES_t glGenRenderbuffersOES;
-    glRenderbufferStorageOES_t glRenderbufferStorageOES;
-    glGetRenderbufferParameterivOES_t glGetRenderbufferParameterivOES;
-    glIsFramebufferOES_t glIsFramebufferOES;
-    glBindFramebufferOES_t glBindFramebufferOES;
-    glDeleteFramebuffersOES_t glDeleteFramebuffersOES;
-    glGenFramebuffersOES_t glGenFramebuffersOES;
-    glCheckFramebufferStatusOES_t glCheckFramebufferStatusOES;
-    glFramebufferRenderbufferOES_t glFramebufferRenderbufferOES;
-    glFramebufferTexture2DOES_t glFramebufferTexture2DOES;
-    glGetFramebufferAttachmentParameterivOES_t glGetFramebufferAttachmentParameterivOES;
-    glGenerateMipmapOES_t glGenerateMipmapOES;
-    glMapBufferOES_t glMapBufferOES;
-    glUnmapBufferOES_t glUnmapBufferOES;
-    glGetBufferPointervOES_t glGetBufferPointervOES;
-    glCurrentPaletteMatrixOES_t glCurrentPaletteMatrixOES;
-    glLoadPaletteFromModelViewMatrixOES_t glLoadPaletteFromModelViewMatrixOES;
-    glMatrixIndexPointerOES_t glMatrixIndexPointerOES;
-    glWeightPointerOES_t glWeightPointerOES;
-    glQueryMatrixxOES_t glQueryMatrixxOES;
-    glDepthRangefOES_t glDepthRangefOES;
-    glFrustumfOES_t glFrustumfOES;
-    glOrthofOES_t glOrthofOES;
-    glClipPlanefOES_t glClipPlanefOES;
-    glGetClipPlanefOES_t glGetClipPlanefOES;
-    glClearDepthfOES_t glClearDepthfOES;
-    glTexGenfOES_t glTexGenfOES;
-    glTexGenfvOES_t glTexGenfvOES;
-    glTexGeniOES_t glTexGeniOES;
-    glTexGenivOES_t glTexGenivOES;
-    glTexGenxOES_t glTexGenxOES;
-    glTexGenxvOES_t glTexGenxvOES;
-    glGetTexGenfvOES_t glGetTexGenfvOES;
-    glGetTexGenivOES_t glGetTexGenivOES;
-    glGetTexGenxvOES_t glGetTexGenxvOES;
-    glBindVertexArrayOES_t glBindVertexArrayOES;
-    glDeleteVertexArraysOES_t glDeleteVertexArraysOES;
-    glGenVertexArraysOES_t glGenVertexArraysOES;
-    glIsVertexArrayOES_t glIsVertexArrayOES;
-    glDiscardFramebufferEXT_t glDiscardFramebufferEXT;
-    glMultiDrawArraysEXT_t glMultiDrawArraysEXT;
-    glMultiDrawElementsEXT_t glMultiDrawElementsEXT;
-    glClipPlanefIMG_t glClipPlanefIMG;
-    glClipPlanexIMG_t glClipPlanexIMG;
-    glRenderbufferStorageMultisampleIMG_t glRenderbufferStorageMultisampleIMG;
-    glFramebufferTexture2DMultisampleIMG_t glFramebufferTexture2DMultisampleIMG;
-    glDeleteFencesNV_t glDeleteFencesNV;
-    glGenFencesNV_t glGenFencesNV;
-    glIsFenceNV_t glIsFenceNV;
-    glTestFenceNV_t glTestFenceNV;
-    glGetFenceivNV_t glGetFenceivNV;
-    glFinishFenceNV_t glFinishFenceNV;
-    glSetFenceNV_t glSetFenceNV;
-    glGetDriverControlsQCOM_t glGetDriverControlsQCOM;
-    glGetDriverControlStringQCOM_t glGetDriverControlStringQCOM;
-    glEnableDriverControlQCOM_t glEnableDriverControlQCOM;
-    glDisableDriverControlQCOM_t glDisableDriverControlQCOM;
-    glExtGetTexturesQCOM_t glExtGetTexturesQCOM;
-    glExtGetBuffersQCOM_t glExtGetBuffersQCOM;
-    glExtGetRenderbuffersQCOM_t glExtGetRenderbuffersQCOM;
-    glExtGetFramebuffersQCOM_t glExtGetFramebuffersQCOM;
-    glExtGetTexLevelParameterivQCOM_t glExtGetTexLevelParameterivQCOM;
-    glExtTexObjectStateOverrideiQCOM_t glExtTexObjectStateOverrideiQCOM;
-    glExtGetTexSubImageQCOM_t glExtGetTexSubImageQCOM;
-    glExtGetBufferPointervQCOM_t glExtGetBufferPointervQCOM;
-    glExtGetShadersQCOM_t glExtGetShadersQCOM;
-    glExtGetProgramsQCOM_t glExtGetProgramsQCOM;
-    glExtIsProgramBinaryQCOM_t glExtIsProgramBinaryQCOM;
-    glExtGetProgramBinarySourceQCOM_t glExtGetProgramBinarySourceQCOM;
-    glStartTilingQCOM_t glStartTilingQCOM;
-    glEndTilingQCOM_t glEndTilingQCOM;
-};
-
-bool init_gl_dispatch();
-void *gl_dispatch_get_proc_func(const char *name, void *userData);
-
-extern GLDispatch s_gl;
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp
deleted file mode 100644
index ff335df..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/NativeLinuxSubWindow.cpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "NativeSubWindow.h"
-
-static Bool WaitForMapNotify(Display *d, XEvent *e, char *arg)
-{
-    if (e->type == MapNotify && e->xmap.window == (Window)arg) {
-	    return 1;
-    }
-    return 0;
-}
-
-static Display *s_display = NULL;
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
-                                    EGLNativeDisplayType* display_out,
-                                    int x, int y,int width, int height){
-
-   // The call to this function is protected by a lock
-   // in FrameBuffer so it is safe to check and initialize s_display here
-   if (!s_display) s_display = XOpenDisplay(NULL);
-   *display_out = s_display;
-
-    XSetWindowAttributes wa;
-    wa.event_mask = StructureNotifyMask;
-    Window win = XCreateWindow(*display_out,p_window,x,y, width,height,0,CopyFromParent,CopyFromParent,CopyFromParent,CWEventMask,&wa);
-    XMapWindow(*display_out,win);
-    XEvent e;
-    XIfEvent(*display_out, &e, WaitForMapNotify, (char *)win);
-    return win;
-}
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
-    XDestroyWindow(dis, win);
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m b/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
deleted file mode 100644
index 2ac39e8..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/NativeMacSubWindow.m
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "NativeSubWindow.h"
-#include <Cocoa/Cocoa.h>
-
-/*
- * EmuGLView inherit from NSView and override the isOpaque
- * method to return YES. That prevents drawing of underlying window/view
- * when the view needs to be redrawn.
- */
-@interface EmuGLView : NSView {
-} @end
-
-@implementation EmuGLView
-
-  - (BOOL)isOpaque {
-      return YES;
-  }
-
-@end
-
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
-                                    EGLNativeDisplayType* display_out,
-                                    int x, int y,int width, int height){
-    NSRect contentRect = NSMakeRect(x, y, width, height);
-    NSView *glView = [[EmuGLView alloc] initWithFrame:contentRect];
-    if (glView) {
-        NSWindow *win = (NSWindow *)p_window;
-        [[win contentView] addSubview:glView];
-        [win makeKeyAndOrderFront:nil];
-    }
-
-    return (EGLNativeWindowType)glView;
-}
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
-    if(win){
-        NSView *glView = (NSView *)win;
-        [glView removeFromSuperview];
-        [glView release];
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h b/tools/emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h
deleted file mode 100644
index 1965978..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/NativeSubWindow.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef NATIVE_SUB_WINDOW_H
-#define NATIVE_SUB_WINDOW_H
-
-#include <EGL/egl.h>
-#include "libOpenglRender/render_api_platform_types.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
-                                    EGLNativeDisplayType* display_out,
-                                    int x, int y,int width, int height);
-
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp
deleted file mode 100644
index e519b68..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/NativeWindowsSubWindow.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "NativeSubWindow.h"
-#include <stdio.h>
-
-LRESULT CALLBACK myWndProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
-{
-    return DefWindowProc(hwnd, uMsg, wParam, lParam);
-}
-
-EGLNativeWindowType createSubWindow(FBNativeWindowType p_window,
-                                    EGLNativeDisplayType* display_out,
-                                    int x, int y,int width, int height){
-    WNDCLASS wc;
-    wc.style =  CS_OWNDC |CS_HREDRAW |CS_VREDRAW;  // redraw if size changes
-    wc.lpfnWndProc = myWndProc;                 // points to window procedure
-    wc.cbClsExtra = 0;                             // no extra class memory
-    wc.cbWndExtra = sizeof(void*);                 // save extra window memory, to store VasWindow instance
-    wc.hInstance = NULL;                           // handle to instance
-    wc.hIcon = NULL;                               // predefined app. icon
-    wc.hCursor = NULL;
-    wc.hbrBackground = NULL;                       // no background brush
-    wc.lpszMenuName =  NULL;                       // name of menu resource
-    wc.lpszClassName = "subWin";                 // name of window class
-
-    RegisterClass(&wc);
-    printf("creating window %d %d %d %d\n",x,y,width,height);
-    EGLNativeWindowType ret = CreateWindowEx(
-                        WS_EX_NOPARENTNOTIFY,  // do not bother our parent window
-                        "subWin",
-                        "sub",
-                        WS_CHILD|WS_DISABLED,
-                        x,y,width,height,
-                        p_window,
-                        NULL,
-                        NULL,
-                        NULL);
-    ShowWindow(ret,SW_SHOW);
-    return ret;
-}
-
-void destroySubWindow(EGLNativeDisplayType dis,EGLNativeWindowType win){
-    PostMessage(win, WM_CLOSE, 0, 0);
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp
deleted file mode 100644
index 0949c46..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "ReadBuffer.h"
-#include <string.h>
-#include <assert.h>
-#include <limits.h>
-#include "ErrorLog.h"
-
-ReadBuffer::ReadBuffer(IOStream *stream, size_t bufsize)
-{
-    m_size = bufsize;
-    m_stream = stream;
-    m_buf = (unsigned char*)malloc(m_size*sizeof(unsigned char));
-    m_validData = 0;
-    m_readPtr = m_buf;
-}
-
-ReadBuffer::~ReadBuffer()
-{
-    free(m_buf);
-}
-
-int ReadBuffer::getData()
-{
-    if ((m_validData > 0) && (m_readPtr > m_buf)) {
-        memmove(m_buf, m_readPtr, m_validData);
-    }
-    // get fresh data into the buffer;
-    size_t len = m_size - m_validData;
-    if (len==0) {
-        //we need to inc our buffer
-        size_t new_size = m_size*2;
-        unsigned char* new_buf;
-        if (new_size < m_size) { // overflow check
-            new_size = INT_MAX;
-        }
-
-        new_buf = (unsigned char*)realloc(m_buf, new_size);
-        if (!new_buf) {
-            ERR("Failed to alloc %d bytes for ReadBuffer\n", new_size);
-            return -1;
-        }
-        m_size = new_size;
-        m_buf  = new_buf;
-        len    = m_size - m_validData;
-    }
-    m_readPtr = m_buf;
-    if (NULL != m_stream->read(m_buf + m_validData, &len)) {
-        m_validData += len;
-        return len;
-    }
-    return -1;
-}
-
-void ReadBuffer::consume(size_t amount)
-{
-    assert(amount <= m_validData);
-    m_validData -= amount;
-    m_readPtr += amount;
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h b/tools/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h
deleted file mode 100644
index f2dfbce..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/ReadBuffer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _READ_BUFFER_H
-#define _READ_BUFFER_H
-
-#include "IOStream.h"
-
-class ReadBuffer {
-public:
-    ReadBuffer(IOStream *stream, size_t bufSize);
-    ~ReadBuffer();
-    int getData(); // get fresh data from the stream
-    unsigned char *buf() { return m_readPtr; } // return the next read location
-    size_t validData() { return m_validData; } // return the amount of valid data in readptr
-    void consume(size_t amount); // notify that 'amount' data has been consumed;
-private:
-    unsigned char *m_buf;
-    unsigned char *m_readPtr;
-    size_t m_size;
-    size_t m_validData;
-    IOStream *m_stream;
-};
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp
deleted file mode 100644
index f5cbd67..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderContext.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RenderContext.h"
-#include "FBConfig.h"
-#include "FrameBuffer.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-
-RenderContext *RenderContext::create(int p_config,
-                                     RenderContextPtr p_shareContext,
-                                     bool p_isGL2)
-{
-    const FBConfig *fbconf = FBConfig::get(p_config);
-    if (!fbconf) {
-        return NULL;
-    }
-
-    RenderContext *c = new RenderContext();
-    if (!c) {
-        return NULL;
-    }
-
-    EGLContext share = EGL_NO_CONTEXT;
-    if (p_shareContext.Ptr() != NULL) {
-        share = p_shareContext->getEGLContext();
-    }
-
-    GLint glContextAttribs[] = {
-        EGL_CONTEXT_CLIENT_VERSION, 1,
-        EGL_NONE
-    };
-
-    if (p_isGL2) {
-        glContextAttribs[1] = 2;
-        c->m_isGL2 = true;
-    }
-
-    c->m_ctx = s_egl.eglCreateContext(FrameBuffer::getFB()->getDisplay(),
-                                      fbconf->getEGLConfig(), share,
-                                      glContextAttribs);
-
-    if (c->m_ctx == EGL_NO_CONTEXT) {
-        delete c;
-        return NULL;
-    }
-
-    c->m_config = p_config;
-    return c;
-}
-
-RenderContext::RenderContext() :
-    m_ctx(EGL_NO_CONTEXT),
-    m_config(0),
-    m_isGL2(false)
-{
-}
-
-RenderContext::~RenderContext()
-{
-    if (m_ctx != EGL_NO_CONTEXT) {
-        s_egl.eglDestroyContext(FrameBuffer::getFB()->getDisplay(), m_ctx);
-    }
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderContext.h b/tools/emulator/opengl/host/libs/libOpenglRender/RenderContext.h
deleted file mode 100644
index 9cbb5fc..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderContext.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIBRENDER_RENDERCONTEXT_H
-#define _LIBRENDER_RENDERCONTEXT_H
-
-#include "SmartPtr.h"
-#include <EGL/egl.h>
-#include "GLDecoderContextData.h"
-
-class RenderContext;
-typedef SmartPtr<RenderContext> RenderContextPtr;
-
-class RenderContext
-{
-public:
-    static RenderContext *create(int p_config, RenderContextPtr p_shareContext,
-                                 bool p_isGL2 = false);
-    ~RenderContext();
-    int getConfig() const { return m_config; }
-
-    EGLContext getEGLContext() const { return m_ctx; }
-    bool isGL2() const { return m_isGL2; }
-
-    GLDecoderContextData & decoderContextData() { return m_contextData; }
-
-private:
-    RenderContext();
-
-private:
-    EGLContext m_ctx;
-    int        m_config;
-    bool       m_isGL2;
-    GLDecoderContextData    m_contextData;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp
deleted file mode 100644
index 14c3423..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderControl.cpp
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "renderControl_dec.h"
-#include "FrameBuffer.h"
-#include "FBConfig.h"
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include "ThreadInfo.h"
-
-static const GLint rendererVersion = 1;
-
-static GLint rcGetRendererVersion()
-{
-    return rendererVersion;
-}
-
-static EGLint rcGetEGLVersion(EGLint* major, EGLint* minor)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return EGL_FALSE;
-    }
-    *major = (EGLint)fb->getCaps().eglMajor;
-    *minor = (EGLint)fb->getCaps().eglMinor;
-
-    return EGL_TRUE;
-}
-
-static EGLint rcQueryEGLString(EGLenum name, void* buffer, EGLint bufferSize)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return 0;
-    }
-
-    const char *str = s_egl.eglQueryString(fb->getDisplay(), name);
-    if (!str) {
-        return 0;
-    }
-
-    int len = strlen(str) + 1;
-    if (!buffer || len > bufferSize) {
-        return -len;
-    }
-
-    strcpy((char *)buffer, str);
-    return len;
-}
-
-static EGLint rcGetGLString(EGLenum name, void* buffer, EGLint bufferSize)
-{
-    RenderThreadInfo *tInfo = getRenderThreadInfo();
-    if (!tInfo || !tInfo->currContext.Ptr()) {
-        return 0;
-    }
-
-    const char *str = NULL;
-#ifdef WITH_GLES2
-    if (tInfo->currContext->isGL2()) {
-        str = (const char *)s_gl2.glGetString(name);
-    }
-    else {
-#endif
-        str = (const char *)s_gl.glGetString(name);
-#ifdef WITH_GLES2
-    }
-#endif
-
-    if (!str) {
-        return 0;
-    }
-
-    int len = strlen(str) + 1;
-    if (!buffer || len > bufferSize) {
-        return -len;
-    }
-
-    strcpy((char *)buffer, str);
-    return len;
-}
-
-static EGLint rcGetNumConfigs(uint32_t* numAttribs)
-{
-    if (numAttribs) {
-        *numAttribs = FBConfig::getNumAttribs();
-    }
-    return FBConfig::getNumConfigs();
-}
-
-static EGLint rcGetConfigs(uint32_t bufSize, GLuint* buffer)
-{
-    int configSize = FBConfig::getNumAttribs();
-    int nConfigs = FBConfig::getNumConfigs();
-    uint32_t neededSize = (nConfigs + 1) * configSize * sizeof(GLuint);
-    if (!buffer || bufSize < neededSize) {
-        return -neededSize;
-    }
-    FBConfig::packConfigsInfo(buffer);
-    return nConfigs;
-}
-
-static EGLint rcChooseConfig(EGLint *attribs, uint32_t attribs_size, uint32_t *configs, uint32_t configs_size)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return 0;
-    }
-
-    return FBConfig::chooseConfig(fb, attribs, configs, configs_size);
-}
-
-static EGLint rcGetFBParam(EGLint param)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return 0;
-    }
-
-    EGLint ret = 0;
-
-    switch(param) {
-        case FB_WIDTH:
-            ret = fb->getWidth();
-            break;
-        case FB_HEIGHT:
-            ret = fb->getHeight();
-            break;
-        case FB_XDPI:
-            ret = 72; // XXX: should be implemented
-            break;
-        case FB_YDPI:
-            ret = 72; // XXX: should be implemented
-            break;
-        case FB_FPS:
-            ret = 60;
-            break;
-        case FB_MIN_SWAP_INTERVAL:
-            ret = 1; // XXX: should be implemented
-            break;
-        case FB_MAX_SWAP_INTERVAL:
-            ret = 1; // XXX: should be implemented
-            break;
-        default:
-            break;
-    }
-
-    return ret;
-}
-
-static uint32_t rcCreateContext(uint32_t config,
-                                uint32_t share, uint32_t glVersion)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return 0;
-    }
-
-    HandleType ret = fb->createRenderContext(config, share, glVersion == 2);
-    return ret;
-}
-
-static void rcDestroyContext(uint32_t context)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-
-    fb->DestroyRenderContext(context);
-}
-
-static uint32_t rcCreateWindowSurface(uint32_t config,
-                                      uint32_t width, uint32_t height)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return 0;
-    }
-
-    return fb->createWindowSurface(config, width, height);
-}
-
-static void rcDestroyWindowSurface(uint32_t windowSurface)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-
-    fb->DestroyWindowSurface( windowSurface );
-}
-
-static uint32_t rcCreateColorBuffer(uint32_t width,
-                                    uint32_t height, GLenum internalFormat)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return 0;
-    }
-
-    return fb->createColorBuffer(width, height, internalFormat);
-}
-
-static void rcDestroyColorBuffer(uint32_t colorbuffer)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-    fb->DestroyColorBuffer( colorbuffer );
-}
-
-static int rcFlushWindowColorBuffer(uint32_t windowSurface)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return -1;
-    }
-    fb->flushWindowSurfaceColorBuffer(windowSurface);
-    return 0;
-}
-
-static void rcSetWindowColorBuffer(uint32_t windowSurface,
-                                   uint32_t colorBuffer)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-    fb->setWindowSurfaceColorBuffer(windowSurface, colorBuffer);
-}
-
-static EGLint rcMakeCurrent(uint32_t context,
-                            uint32_t drawSurf, uint32_t readSurf)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return EGL_FALSE;
-    }
-
-    bool ret = fb->bindContext(context, drawSurf, readSurf);
-
-    return (ret ? EGL_TRUE : EGL_FALSE);
-}
-
-static void rcFBPost(uint32_t colorBuffer)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-
-    fb->post(colorBuffer);
-}
-
-static void rcFBSetSwapInterval(EGLint interval)
-{
-   // XXX: TBD - should be implemented
-}
-
-static void rcBindTexture(uint32_t colorBuffer)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-
-    fb->bindColorBufferToTexture(colorBuffer);
-}
-
-static void rcBindRenderbuffer(uint32_t colorBuffer)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return;
-    }
-
-    fb->bindColorBufferToRenderbuffer(colorBuffer);
-}
-
-static EGLint rcColorBufferCacheFlush(uint32_t colorBuffer,
-                                      EGLint postCount, int forRead)
-{
-   // XXX: TBD - should be implemented
-   return 0;
-}
-
-static void rcReadColorBuffer(uint32_t colorBuffer,
-                              GLint x, GLint y,
-                              GLint width, GLint height,
-                              GLenum format, GLenum type, void* pixels)
-{
-   // XXX: TBD - should be implemented
-}
-
-static int rcUpdateColorBuffer(uint32_t colorBuffer,
-                                GLint x, GLint y,
-                                GLint width, GLint height,
-                                GLenum format, GLenum type, void* pixels)
-{
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!fb) {
-        return -1;
-    }
-
-    fb->updateColorBuffer(colorBuffer, x, y, width, height, format, type, pixels);
-    return 0;
-}
-
-void initRenderControlContext(renderControl_decoder_context_t *dec)
-{
-    dec->set_rcGetRendererVersion(rcGetRendererVersion);
-    dec->set_rcGetEGLVersion(rcGetEGLVersion);
-    dec->set_rcQueryEGLString(rcQueryEGLString);
-    dec->set_rcGetGLString(rcGetGLString);
-    dec->set_rcGetNumConfigs(rcGetNumConfigs);
-    dec->set_rcGetConfigs(rcGetConfigs);
-    dec->set_rcChooseConfig(rcChooseConfig);
-    dec->set_rcGetFBParam(rcGetFBParam);
-    dec->set_rcCreateContext(rcCreateContext);
-    dec->set_rcDestroyContext(rcDestroyContext);
-    dec->set_rcCreateWindowSurface(rcCreateWindowSurface);
-    dec->set_rcDestroyWindowSurface(rcDestroyWindowSurface);
-    dec->set_rcCreateColorBuffer(rcCreateColorBuffer);
-    dec->set_rcDestroyColorBuffer(rcDestroyColorBuffer);
-    dec->set_rcSetWindowColorBuffer(rcSetWindowColorBuffer);
-    dec->set_rcFlushWindowColorBuffer(rcFlushWindowColorBuffer);
-    dec->set_rcMakeCurrent(rcMakeCurrent);
-    dec->set_rcFBPost(rcFBPost);
-    dec->set_rcFBSetSwapInterval(rcFBSetSwapInterval);
-    dec->set_rcBindTexture(rcBindTexture);
-    dec->set_rcBindRenderbuffer(rcBindRenderbuffer);
-    dec->set_rcColorBufferCacheFlush(rcColorBufferCacheFlush);
-    dec->set_rcReadColorBuffer(rcReadColorBuffer);
-    dec->set_rcUpdateColorBuffer(rcUpdateColorBuffer);
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderControl.h b/tools/emulator/opengl/host/libs/libOpenglRender/RenderControl.h
deleted file mode 100644
index 233e809..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderControl.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _RENDER_CONTROL_H
-#define _RENDER_CONTROL_H
-
-void initRenderControlContext(renderControl_decoder_context_t *dec);
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp
deleted file mode 100644
index 78f305c..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderServer.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RenderServer.h"
-#include "TcpStream.h"
-#ifdef _WIN32
-#include "Win32PipeStream.h"
-#else
-#include "UnixStream.h"
-#endif
-#include "RenderThread.h"
-#include "FrameBuffer.h"
-#include <set>
-
-typedef std::set<RenderThread *> RenderThreadsSet;
-
-RenderServer::RenderServer() :
-    m_listenSock(NULL),
-    m_exiting(false)
-{
-}
-
-extern "C" int gRendererStreamMode;
-
-RenderServer *RenderServer::create(int port)
-{
-    RenderServer *server = new RenderServer();
-    if (!server) {
-        return NULL;
-    }
-
-    if (gRendererStreamMode == STREAM_MODE_TCP) {
-        server->m_listenSock = new TcpStream();
-    } else {
-#ifdef _WIN32
-        server->m_listenSock = new Win32PipeStream();
-#else
-        server->m_listenSock = new UnixStream();
-#endif
-    }
-
-    if (server->m_listenSock->listen(port) < 0) {
-        ERR("RenderServer::create failed to listen on port %d\n", port);
-        delete server;
-        return NULL;
-    }
-
-    return server;
-}
-
-int RenderServer::Main()
-{
-    RenderThreadsSet threads;
-
-    while(1) {
-        SocketStream *stream = m_listenSock->accept();
-        if (!stream) {
-            fprintf(stderr,"Error accepting connection, aborting\n");
-            break;
-        }
-
-        unsigned int clientFlags;
-        if (!stream->readFully(&clientFlags, sizeof(unsigned int))) {
-            fprintf(stderr,"Error reading clientFlags\n");
-            delete stream;
-            continue;
-        }
-
-        DBG("\n\n\n\n Got new stream!!!! \n\n\n\n\n");
-        // check if we have been requested to exit while waiting on accept
-        if ((clientFlags & IOSTREAM_CLIENT_EXIT_SERVER) != 0) {
-            m_exiting = true;
-            break;
-        }
-
-        RenderThread *rt = RenderThread::create(stream);
-        if (!rt) {
-            fprintf(stderr,"Failed to create RenderThread\n");
-            delete stream;
-        }
-
-        if (!rt->start()) {
-            fprintf(stderr,"Failed to start RenderThread\n");
-            delete stream;
-            delete rt;
-        }
-
-        //
-        // remove from the threads list threads which are
-        // no longer running
-        //
-        for (RenderThreadsSet::iterator n,t = threads.begin();
-             t != threads.end();
-             t = n) {
-            // first find next iterator
-            n = t;
-            n++;
-
-            // delete and erase the current iterator
-            // if thread is no longer running
-            if ((*t)->isFinished()) {
-                delete (*t);
-                threads.erase(t);
-            }
-        }
-
-        // insert the added thread to the list
-        threads.insert(rt);
-
-        DBG("Started new RenderThread\n");
-    }
-
-    //
-    // Wait for all threads to finish
-    //
-    for (RenderThreadsSet::iterator t = threads.begin();
-         t != threads.end();
-         t++) {
-        int exitStatus;
-        (*t)->wait(&exitStatus);
-        delete (*t);
-    }
-    threads.clear();
-
-    //
-    // de-initialize the FrameBuffer object
-    //
-    FrameBuffer::finalize();
-    return 0;
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderServer.h b/tools/emulator/opengl/host/libs/libOpenglRender/RenderServer.h
deleted file mode 100644
index 98e9890..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderServer.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIB_OPENGL_RENDER_RENDER_SERVER_H
-#define _LIB_OPENGL_RENDER_RENDER_SERVER_H
-
-#include "SocketStream.h"
-#include "osThread.h"
-
-class RenderServer : public osUtils::Thread
-{
-public:
-    static RenderServer *create(int port);
-    virtual int Main();
-
-    bool isExiting() const { return m_exiting; }
-
-private:
-    RenderServer();
-
-private:
-    SocketStream *m_listenSock;
-    bool m_exiting;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
deleted file mode 100644
index 2e68c33..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderThread.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RenderThread.h"
-#include "RenderControl.h"
-#include "ThreadInfo.h"
-#include "ReadBuffer.h"
-#include "TimeUtils.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include "EGLDispatch.h"
-
-#define STREAM_BUFFER_SIZE 4*1024*1024
-
-RenderThread::RenderThread() :
-    osUtils::Thread(),
-    m_stream(NULL),
-    m_finished(false)
-{
-}
-
-RenderThread *RenderThread::create(IOStream *p_stream)
-{
-    RenderThread *rt = new RenderThread();
-    if (!rt) {
-        return NULL;
-    }
-
-    rt->m_stream = p_stream;
-
-    return rt;
-}
-
-int RenderThread::Main()
-{
-    RenderThreadInfo * tInfo = getRenderThreadInfo();
-    //
-    // initialize decoders
-    //
-    tInfo->m_glDec.initGL( gl_dispatch_get_proc_func, NULL );
-    tInfo->m_gl2Dec.initGL( gl2_dispatch_get_proc_func, NULL );
-    initRenderControlContext( &m_rcDec );
-
-    ReadBuffer readBuf(m_stream, STREAM_BUFFER_SIZE);
-
-    int stats_totalBytes = 0;
-    long long stats_t0 = GetCurrentTimeMS();
-
-    //
-    // open dump file if RENDER_DUMP_DIR is defined
-    //
-    const char *dump_dir = getenv("RENDERER_DUMP_DIR");
-    FILE *dumpFP = NULL;
-    if (dump_dir) {
-        size_t bsize = strlen(dump_dir) + 32;
-        char *fname = new char[bsize];
-        snprintf(fname,bsize,"%s/stream_%p", dump_dir, this);
-        dumpFP = fopen(fname, "wb");
-        if (!dumpFP) {
-            fprintf(stderr,"Warning: stream dump failed to open file %s\n",fname);
-        }
-        delete [] fname;
-    }
-
-    while (1) {
-
-        int stat = readBuf.getData();
-        if (stat <= 0) {
-            fprintf(stderr, "client shutdown\n");
-            break;
-        }
-
-        //
-        // log received bandwidth statistics
-        //
-        stats_totalBytes += readBuf.validData();
-        long long dt = GetCurrentTimeMS() - stats_t0;
-        if (dt > 1000) {
-            float dts = (float)dt / 1000.0f;
-            //printf("Used Bandwidth %5.3f MB/s\n", ((float)stats_totalBytes / dts) / (1024.0f*1024.0f));
-            stats_totalBytes = 0;
-            stats_t0 = GetCurrentTimeMS();
-        }
-
-        //
-        // dump stream to file if needed
-        //
-        if (dumpFP) {
-            int skip = readBuf.validData() - stat;
-            fwrite(readBuf.buf()+skip, 1, readBuf.validData()-skip, dumpFP);
-            fflush(dumpFP);
-        }
-
-        bool progress;
-        do {
-            progress = false;
-
-            //
-            // try to process some of the command buffer using the GLESv1 decoder
-            //
-            size_t last = tInfo->m_glDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
-            if (last > 0) {
-                progress = true;
-                readBuf.consume(last);
-            }
-
-            //
-            // try to process some of the command buffer using the GLESv2 decoder
-            //
-            last = tInfo->m_gl2Dec.decode(readBuf.buf(), readBuf.validData(), m_stream);
-            if (last > 0) {
-                progress = true;
-                readBuf.consume(last);
-            }
-
-            //
-            // try to process some of the command buffer using the
-            // renderControl decoder
-            //
-            last = m_rcDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
-            if (last > 0) {
-                readBuf.consume(last);
-                progress = true;
-            }
-
-        } while( progress );
-
-    }
-
-    if (dumpFP) {
-        fclose(dumpFP);
-    }
-
-    //
-    // release the thread from any EGL context
-    // if bound to context.
-    //
-    EGLDisplay eglDpy = s_egl.eglGetCurrentDisplay();
-    if (eglDpy != EGL_NO_DISPLAY) {
-        s_egl.eglMakeCurrent(eglDpy, 
-                             EGL_NO_SURFACE,
-                             EGL_NO_SURFACE,
-                             EGL_NO_CONTEXT);
-    }
-
-    //
-    // flag that this thread has finished execution
-    m_finished = true;
-
-    return 0;
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/RenderThread.h b/tools/emulator/opengl/host/libs/libOpenglRender/RenderThread.h
deleted file mode 100644
index 67d423f..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/RenderThread.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIB_OPENGL_RENDER_RENDER_THREAD_H
-#define _LIB_OPENGL_RENDER_RENDER_THREAD_H
-
-#include "IOStream.h"
-#include "GLDecoder.h"
-#include "renderControl_dec.h"
-#include "osThread.h"
-
-class RenderThread : public osUtils::Thread
-{
-public:
-    static RenderThread *create(IOStream *p_stream);
-
-    bool isFinished() const { return m_finished; }
-
-private:
-    RenderThread();
-    virtual int Main();
-
-private:
-    IOStream *m_stream;
-    renderControl_decoder_context_t m_rcDec;
-    bool m_finished;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp
deleted file mode 100644
index 2f2a962..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "ThreadInfo.h"
-
-#ifdef __linux__
-
-static __thread RenderThreadInfo *tinfo = NULL;
-
-RenderThreadInfo *getRenderThreadInfo()
-{
-    if (!tinfo) {
-        tinfo = new RenderThreadInfo();
-    }
-    return tinfo;
-}
-
-#else
-
-#include <cutils/threads.h>
-static thread_store_t s_tls = THREAD_STORE_INITIALIZER;
-
-static void tlsDestruct(void *ptr)
-{
-    if (ptr) {
-        RenderThreadInfo *ti = (RenderThreadInfo *)ptr;
-        delete ti;
-    }
-}
-
-RenderThreadInfo *getRenderThreadInfo()
-{
-    RenderThreadInfo *ti = (RenderThreadInfo *)thread_store_get(&s_tls);
-    if (!ti) {
-        ti = new RenderThreadInfo();
-        thread_store_set(&s_tls, ti, tlsDestruct);
-    }
-    return ti;
-}
-#endif
-
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h b/tools/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h
deleted file mode 100644
index b147290..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/ThreadInfo.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIB_OPENGL_RENDER_THREAD_INFO_H
-#define _LIB_OPENGL_RENDER_THREAD_INFO_H
-
-#include "RenderContext.h"
-#include "WindowSurface.h"
-#include "GLDecoder.h"
-#include "GL2Decoder.h"
-
-struct RenderThreadInfo
-{
-    RenderContextPtr currContext;
-    WindowSurfacePtr currDrawSurf;
-    WindowSurfacePtr currReadSurf;
-    GLDecoder        m_glDec;
-    GL2Decoder       m_gl2Dec;
-};
-
-RenderThreadInfo *getRenderThreadInfo();
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp
deleted file mode 100644
index b8d1bd2..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/WindowSurface.cpp
+++ /dev/null
@@ -1,316 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "WindowSurface.h"
-#include "FBConfig.h"
-#include "FrameBuffer.h"
-#include <GLES/glext.h>
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-#include <stdio.h>
-#include <string.h>
-#include "GLErrorLog.h"
-
-WindowSurface::WindowSurface() :
-    m_fbObj(0),
-    m_depthRB(0),
-    m_stencilRB(0),
-    m_eglSurface(NULL),
-    m_attachedColorBuffer(NULL),
-    m_readContext(NULL),
-    m_drawContext(NULL),
-    m_width(0),
-    m_height(0),
-    m_pbufWidth(0),
-    m_pbufHeight(0)
-{
-}
-
-WindowSurface::~WindowSurface()
-{
-    s_egl.eglDestroySurface(FrameBuffer::getFB()->getDisplay(), m_eglSurface);
-}
-
-WindowSurface *WindowSurface::create(int p_config, int p_width, int p_height)
-{
-    const FBConfig *fbconf = FBConfig::get(p_config);
-    if (!fbconf) {
-        return NULL;
-    }
-
-    // allocate space for the WindowSurface object
-    WindowSurface *win = new WindowSurface();
-    if (!win) {
-        return NULL;
-    }
-    win->m_fbconf = fbconf;
-
-    FrameBuffer *fb = FrameBuffer::getFB();
-    const FrameBufferCaps &caps = fb->getCaps();
-
-    //
-    // Create a pbuffer to be used as the egl surface
-    // for that window.
-    //
-    if (!win->resizePbuffer(p_width, p_height)) {
-        delete win;
-        return NULL;
-    }
-
-    win->m_width = p_width;
-    win->m_height = p_height;
-
-    return win;
-}
-
-//
-// flushColorBuffer - The function makes sure that the
-//    previous attached color buffer is updated, if copy or blit should be done
-//    in order to update it - it is being done here.
-//
-void WindowSurface::flushColorBuffer()
-{
-    if (m_attachedColorBuffer.Ptr() != NULL) {
-
-        //copyToColorBuffer();
-        blitToColorBuffer();
-    }
-}
-
-//
-// setColorBuffer - this function is called when a new color buffer needs to
-//    be attached to the surface. The function doesn't make sure that the
-//    previous attached color buffer is updated, this is done by flushColorBuffer
-//
-void WindowSurface::setColorBuffer(ColorBufferPtr p_colorBuffer)
-{
-    m_attachedColorBuffer = p_colorBuffer;
-
-    //
-    // resize the window if the attached color buffer is of different
-    // size
-    //
-    unsigned int cbWidth = m_attachedColorBuffer->getWidth();
-    unsigned int cbHeight = m_attachedColorBuffer->getHeight();
-
-    if (cbWidth != m_width || cbHeight != m_height) {
-
-        if (m_pbufWidth && m_pbufHeight) {
-            // if we use pbuffer, need to resize it
-            resizePbuffer(cbWidth, cbHeight);
-        }
-
-        m_width = cbWidth;
-        m_height = cbHeight;
-    }
-}
-
-//
-// This function is called after the context and eglSurface is already
-// bound in the current thread (eglMakeCurrent has been called).
-// This function should take actions required on the other surface objects
-// when being bind/unbound
-//
-void WindowSurface::bind(RenderContextPtr p_ctx, SurfaceBindType p_bindType)
-{
-    if (p_bindType == SURFACE_BIND_READ) {
-        m_readContext = p_ctx;
-    }
-    else if (p_bindType == SURFACE_BIND_DRAW) {
-        m_drawContext = p_ctx;
-    }
-    else if (p_bindType == SURFACE_BIND_READDRAW) {
-        m_readContext = p_ctx;
-        m_drawContext = p_ctx;
-    }
-    else {
-        return;  // bad param
-    }
-
-}
-
-void WindowSurface::copyToColorBuffer()
-{
-    if (!m_width && !m_height) return;
-
-    if (m_attachedColorBuffer->getWidth() != m_width ||
-        m_attachedColorBuffer->getHeight() != m_height) {
-        // XXX: should never happen - how this needs to be handled?
-        return;
-    }
-
-    void *data = m_xferBuffer.alloc(m_width * m_height * 4);
-    if (!data) {
-        fprintf(stderr,"WARNING: Failed to copy buffer data - OutOfMemory\n");
-        return;
-    }
-
-    //
-    // Make the surface current
-    //
-    EGLContext prevContext = s_egl.eglGetCurrentContext();
-    EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
-    EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!s_egl.eglMakeCurrent(fb->getDisplay(), m_eglSurface,
-                              m_eglSurface, m_drawContext->getEGLContext())) {
-        return;
-    }
-
-    if (m_drawContext->isGL2()) {
-#ifdef WITH_GLES2
-        s_gl2.glPixelStorei(GL_PACK_ALIGNMENT, 1);
-        s_gl2.glReadPixels(0, 0, m_width, m_height,
-                          GL_RGBA, GL_UNSIGNED_BYTE, data);
-#else
-        return; // should never happen, context cannot be GL2 in this case.
-#endif
-    }
-    else {
-        s_gl.glPixelStorei(GL_PACK_ALIGNMENT, 1);
-        s_gl.glReadPixels(0, 0, m_width, m_height,
-                          GL_RGBA, GL_UNSIGNED_BYTE, data);
-    }
-
-//
-// XXX: for some reason flipping the image is not required on
-//      Mac. Need to find the reason, currently unkbown.
-//
-#ifndef __APPLE__
-#define FLIP_BUFFER 1
-#endif
-
-#if FLIP_BUFFER
-    //We need to flip the pixels
-    int bpp = 4;
-    void *tmpBuf = m_xUpdateBuf.alloc(m_width * m_height * bpp);
-
-    int dst_line_len = m_width * bpp;
-    int src_line_len = m_width * bpp;
-    char *src = (char *)data;
-    char *dst = (char*)tmpBuf + (m_height-1)*dst_line_len;
-    for (uint32_t  y=0; y<m_height; y++) {
-        memcpy(dst, src, dst_line_len);
-        src += src_line_len;
-        dst -= dst_line_len;
-    }
-    // update the attached color buffer with the fliped readback pixels
-    m_attachedColorBuffer->update(GL_RGBA, GL_UNSIGNED_BYTE, tmpBuf);
-#else
-    // update the attached color buffer with the readback pixels
-    m_attachedColorBuffer->update(GL_RGBA, GL_UNSIGNED_BYTE, data);
-#endif
-
-    // restore current context/surface
-    s_egl.eglMakeCurrent(fb->getDisplay(), prevDrawSurf,
-                         prevReadSurf, prevContext);
-
-}
-
-void WindowSurface::blitToColorBuffer()
-{
-    if (!m_width && !m_height) return;
-
-    if (m_attachedColorBuffer->getWidth() != m_width ||
-        m_attachedColorBuffer->getHeight() != m_height) {
-        // XXX: should never happen - how this needs to be handled?
-        return;
-    }
-
-    //
-    // Make the surface current
-    //
-    EGLContext prevContext = s_egl.eglGetCurrentContext();
-    EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
-    EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-    FrameBuffer *fb = FrameBuffer::getFB();
-    if (!s_egl.eglMakeCurrent(fb->getDisplay(), m_eglSurface,
-                              m_eglSurface, m_drawContext->getEGLContext())) {
-        return;
-    }
-
-    m_attachedColorBuffer->blitFromCurrentReadBuffer();
-
-    // restore current context/surface
-    s_egl.eglMakeCurrent(fb->getDisplay(), prevDrawSurf,
-                         prevReadSurf, prevContext);
-
-}
-
-bool WindowSurface::resizePbuffer(unsigned int p_width, unsigned int p_height)
-{
-    if (m_eglSurface && 
-        m_pbufWidth == p_width &&
-        m_pbufHeight == p_height) {
-        // no need to resize
-        return true;
-    }
-
-    FrameBuffer *fb = FrameBuffer::getFB();
-
-    EGLContext prevContext = s_egl.eglGetCurrentContext();
-    EGLSurface prevReadSurf = s_egl.eglGetCurrentSurface(EGL_READ);
-    EGLSurface prevDrawSurf = s_egl.eglGetCurrentSurface(EGL_DRAW);
-    EGLSurface prevPbuf = m_eglSurface;
-    bool needRebindContext = m_eglSurface &&
-                             (prevReadSurf == m_eglSurface ||
-                              prevDrawSurf == m_eglSurface);
-
-    if (needRebindContext) {
-        s_egl.eglMakeCurrent(fb->getDisplay(), EGL_NO_SURFACE,
-                              EGL_NO_SURFACE, EGL_NO_CONTEXT);
-    }
-
-    //
-    // Destroy previous surface
-    //
-    if (m_eglSurface) {
-        s_egl.eglDestroySurface(fb->getDisplay(), m_eglSurface);
-        m_eglSurface = NULL;
-    }
-
-    const FrameBufferCaps &caps = fb->getCaps();
-
-    //
-    // Create pbuffer surface.
-    //
-    EGLint pbufAttribs[5];
-    pbufAttribs[0] = EGL_WIDTH;
-    pbufAttribs[1] = p_width;
-    pbufAttribs[2] = EGL_HEIGHT;
-    pbufAttribs[3] = p_height;
-    pbufAttribs[4] = EGL_NONE;
-
-    m_eglSurface = s_egl.eglCreatePbufferSurface(fb->getDisplay(),
-                                                 m_fbconf->getEGLConfig(),
-                                                 pbufAttribs);
-    if (m_eglSurface == EGL_NO_SURFACE) {
-        fprintf(stderr, "Renderer error: failed to create/resize pbuffer!!\n");
-        return false;
-    }
-
-    m_pbufWidth = p_width;
-    m_pbufHeight = p_height;
-
-    if (needRebindContext) {
-        s_egl.eglMakeCurrent(fb->getDisplay(), 
-                     (prevDrawSurf==prevPbuf) ? m_eglSurface : prevDrawSurf,
-                     (prevReadSurf==prevPbuf) ? m_eglSurface : prevReadSurf,
-                     prevContext);
-    }
-
-    return true;
-}
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/WindowSurface.h b/tools/emulator/opengl/host/libs/libOpenglRender/WindowSurface.h
deleted file mode 100644
index 6c08954..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/WindowSurface.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _LIBRENDER_WINDOWSURFACE_H
-#define _LIBRENDER_WINDOWSURFACE_H
-
-#include "ColorBuffer.h"
-#include "RenderContext.h"
-#include "FBConfig.h"
-#include "SmartPtr.h"
-#include "FixedBuffer.h"
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-enum SurfaceBindType {
-    SURFACE_BIND_READ,
-    SURFACE_BIND_DRAW,
-    SURFACE_BIND_READDRAW
-};
-
-class WindowSurface
-{
-public:
-    static WindowSurface *create(int p_config, int p_width, int p_height);
-    ~WindowSurface();
-    EGLSurface getEGLSurface() const { return m_eglSurface; }
-
-    void setColorBuffer(ColorBufferPtr p_colorBuffer);
-    void flushColorBuffer();
-    void bind(RenderContextPtr p_ctx, SurfaceBindType p_bindType);
-
-private:
-    WindowSurface();
-
-    void copyToColorBuffer();  // copy pbuffer content with readback+download
-    void blitToColorBuffer();  // copy pbuffer content with texload and blit
-    bool resizePbuffer(unsigned int p_width, unsigned int p_height);
-
-private:
-    GLuint m_fbObj;   // GLES Framebuffer object (when EGLimage is used)
-    GLuint m_depthRB;
-    GLuint m_stencilRB;
-    EGLSurface m_eglSurface;
-    ColorBufferPtr m_attachedColorBuffer;
-    RenderContextPtr m_readContext;
-    RenderContextPtr m_drawContext;
-    GLuint m_width;
-    GLuint m_height;
-    GLuint m_pbufWidth;
-    GLuint m_pbufHeight;
-    bool m_useEGLImage;
-    bool m_useBindToTexture;
-    FixedBuffer m_xferBuffer;
-    FixedBuffer m_xUpdateBuf;
-    const FBConfig *m_fbconf;
-};
-
-typedef SmartPtr<WindowSurface> WindowSurfacePtr;
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/egl_proc.h b/tools/emulator/opengl/host/libs/libOpenglRender/egl_proc.h
deleted file mode 100644
index 01dc4ae..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/egl_proc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _EGL_PROC_H
-#define _EGL_PROC_H
-
-#include <EGL/egl.h>
-#define EGL_EGLEXT_PROTOTYPES
-#include <EGL/eglext.h>
-
-typedef EGLint (EGLAPIENTRY *eglGetError_t) ();
-typedef EGLDisplay (EGLAPIENTRY *eglGetDisplay_t) (EGLNativeDisplayType);
-typedef EGLBoolean (EGLAPIENTRY *eglInitialize_t) (EGLDisplay, EGLint*, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglTerminate_t) (EGLDisplay);
-typedef char* (EGLAPIENTRY *eglQueryString_t) (EGLDisplay, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglGetConfigs_t) (EGLDisplay, EGLConfig*, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglChooseConfig_t) (EGLDisplay, const EGLint*, EGLConfig*, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglGetConfigAttrib_t) (EGLDisplay, EGLConfig, EGLint, EGLint*);
-typedef EGLSurface (EGLAPIENTRY *eglCreateWindowSurface_t) (EGLDisplay, EGLConfig, EGLNativeWindowType, const EGLint*);
-typedef EGLSurface (EGLAPIENTRY *eglCreatePbufferSurface_t) (EGLDisplay, EGLConfig, const EGLint*);
-typedef EGLSurface (EGLAPIENTRY *eglCreatePixmapSurface_t) (EGLDisplay, EGLConfig, EGLNativePixmapType, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroySurface_t) (EGLDisplay, EGLSurface);
-typedef EGLBoolean (EGLAPIENTRY *eglQuerySurface_t) (EGLDisplay, EGLSurface, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglBindAPI_t) (EGLenum);
-typedef EGLenum (* eglQueryAPI_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglWaitClient_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglReleaseThread_t) ();
-typedef EGLSurface (EGLAPIENTRY *eglCreatePbufferFromClientBuffer_t) (EGLDisplay, EGLenum, EGLClientBuffer, EGLConfig, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglSurfaceAttrib_t) (EGLDisplay, EGLSurface, EGLint, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglBindTexImage_t) (EGLDisplay, EGLSurface, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglReleaseTexImage_t) (EGLDisplay, EGLSurface, EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglSwapInterval_t) (EGLDisplay, EGLint);
-typedef EGLContext (EGLAPIENTRY *eglCreateContext_t) (EGLDisplay, EGLConfig, EGLContext, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroyContext_t) (EGLDisplay, EGLContext);
-typedef EGLBoolean (EGLAPIENTRY *eglMakeCurrent_t) (EGLDisplay, EGLSurface, EGLSurface, EGLContext);
-typedef EGLContext (EGLAPIENTRY *eglGetCurrentContext_t) ();
-typedef EGLSurface (EGLAPIENTRY *eglGetCurrentSurface_t) (EGLint);
-typedef EGLDisplay (EGLAPIENTRY *eglGetCurrentDisplay_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglQueryContext_t) (EGLDisplay, EGLContext, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglWaitGL_t) ();
-typedef EGLBoolean (EGLAPIENTRY *eglWaitNative_t) (EGLint);
-typedef EGLBoolean (EGLAPIENTRY *eglSwapBuffers_t) (EGLDisplay, EGLSurface);
-typedef EGLBoolean (EGLAPIENTRY *eglCopyBuffers_t) (EGLDisplay, EGLSurface, EGLNativePixmapType);
-typedef __eglMustCastToProperFunctionPointerType (EGLAPIENTRY *eglGetProcAddress_t) (const char*);
-typedef EGLBoolean (EGLAPIENTRY *eglLockSurfaceKHR_t) (EGLDisplay, EGLSurface, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglUnlockSurfaceKHR_t) (EGLDisplay, EGLSurface);
-typedef EGLImageKHR (EGLAPIENTRY *eglCreateImageKHR_t) (EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroyImageKHR_t) (EGLDisplay, EGLImageKHR image);
-typedef EGLSyncKHR (EGLAPIENTRY *eglCreateSyncKHR_t) (EGLDisplay, EGLenum, const EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglDestroySyncKHR_t) (EGLDisplay, EGLSyncKHR sync);
-typedef EGLint (EGLAPIENTRY *eglClientWaitSyncKHR_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLTimeKHR timeout);
-typedef EGLBoolean (EGLAPIENTRY *eglSignalSyncKHR_t) (EGLDisplay, EGLSyncKHR, EGLenum);
-typedef EGLBoolean (EGLAPIENTRY *eglGetSyncAttribKHR_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLint*);
-typedef EGLBoolean (EGLAPIENTRY *eglSetSwapRectangleANDROID_t) (EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint);
-
-#endif // of  _EGL_PROC_H
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/gl_proc.h b/tools/emulator/opengl/host/libs/libOpenglRender/gl_proc.h
deleted file mode 100644
index 465a10d..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/gl_proc.h
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _GLES_PROC_H
-#define _GLES_PROC_H
-
-#include <GLES/gl.h>
-#define GL_GLEXT_PROTOTYPES
-#include <GLES/glext.h>
-
-typedef void (GL_APIENTRY *glAlphaFunc_t) (GLenum, GLclampf);
-typedef void (GL_APIENTRY *glClearColor_t) (GLclampf, GLclampf, GLclampf, GLclampf);
-typedef void (GL_APIENTRY *glClearDepthf_t) (GLclampf);
-typedef void (GL_APIENTRY *glClipPlanef_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glColor4f_t) (GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glDepthRangef_t) (GLclampf, GLclampf);
-typedef void (GL_APIENTRY *glFogf_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glFogfv_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glFrustumf_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glGetClipPlanef_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glGetFloatv_t) (GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetLightfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetMaterialfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetTexEnvfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetTexParameterfv_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glLightModelf_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glLightModelfv_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glLightf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glLightfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glLineWidth_t) (GLfloat);
-typedef void (GL_APIENTRY *glLoadMatrixf_t) (const GLfloat*);
-typedef void (GL_APIENTRY *glMaterialf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glMaterialfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glMultMatrixf_t) (const GLfloat*);
-typedef void (GL_APIENTRY *glMultiTexCoord4f_t) (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glNormal3f_t) (GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glOrthof_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glPointParameterf_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glPointParameterfv_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glPointSize_t) (GLfloat);
-typedef void (GL_APIENTRY *glPolygonOffset_t) (GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glRotatef_t) (GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glScalef_t) (GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glTexEnvf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glTexEnvfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glTexParameterf_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glTexParameterfv_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glTranslatef_t) (GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glActiveTexture_t) (GLenum);
-typedef void (GL_APIENTRY *glAlphaFuncx_t) (GLenum, GLclampx);
-typedef void (GL_APIENTRY *glBindBuffer_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glBindTexture_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glBlendFunc_t) (GLenum, GLenum);
-typedef void (GL_APIENTRY *glBufferData_t) (GLenum, GLsizeiptr, const GLvoid*, GLenum);
-typedef void (GL_APIENTRY *glBufferSubData_t) (GLenum, GLintptr, GLsizeiptr, const GLvoid*);
-typedef void (GL_APIENTRY *glClear_t) (GLbitfield);
-typedef void (GL_APIENTRY *glClearColorx_t) (GLclampx, GLclampx, GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glClearDepthx_t) (GLclampx);
-typedef void (GL_APIENTRY *glClearStencil_t) (GLint);
-typedef void (GL_APIENTRY *glClientActiveTexture_t) (GLenum);
-typedef void (GL_APIENTRY *glClipPlanex_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glColor4ub_t) (GLubyte, GLubyte, GLubyte, GLubyte);
-typedef void (GL_APIENTRY *glColor4x_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glColorMask_t) (GLboolean, GLboolean, GLboolean, GLboolean);
-typedef void (GL_APIENTRY *glColorPointer_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glCompressedTexImage2D_t) (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glCompressedTexSubImage2D_t) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glCopyTexImage2D_t) (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-typedef void (GL_APIENTRY *glCopyTexSubImage2D_t) (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glCullFace_t) (GLenum);
-typedef void (GL_APIENTRY *glDeleteBuffers_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glDeleteTextures_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glDepthFunc_t) (GLenum);
-typedef void (GL_APIENTRY *glDepthMask_t) (GLboolean);
-typedef void (GL_APIENTRY *glDepthRangex_t) (GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glDisable_t) (GLenum);
-typedef void (GL_APIENTRY *glDisableClientState_t) (GLenum);
-typedef void (GL_APIENTRY *glDrawArrays_t) (GLenum, GLint, GLsizei);
-typedef void (GL_APIENTRY *glDrawElements_t) (GLenum, GLsizei, GLenum, const GLvoid*);
-typedef void (GL_APIENTRY *glEnable_t) (GLenum);
-typedef void (GL_APIENTRY *glEnableClientState_t) (GLenum);
-typedef void (GL_APIENTRY *glFinish_t) ();
-typedef void (GL_APIENTRY *glFlush_t) ();
-typedef void (GL_APIENTRY *glFogx_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glFogxv_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glFrontFace_t) (GLenum);
-typedef void (GL_APIENTRY *glFrustumx_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glGetBooleanv_t) (GLenum, GLboolean*);
-typedef void (GL_APIENTRY *glGetBufferParameteriv_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetClipPlanex_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glGenBuffers_t) (GLsizei, GLuint*);
-typedef void (GL_APIENTRY *glGenTextures_t) (GLsizei, GLuint*);
-typedef GLenum (GL_APIENTRY *glGetError_t) ();
-typedef void (GL_APIENTRY *glGetFixedv_t) (GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetIntegerv_t) (GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetLightxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetMaterialxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetPointerv_t) (GLenum, GLvoid*);
-typedef const GLubyte* (GL_APIENTRY *glGetString_t) (GLenum);
-typedef void (GL_APIENTRY *glGetTexEnviv_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetTexEnvxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetTexParameteriv_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetTexParameterxv_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glHint_t) (GLenum, GLenum);
-typedef GLboolean (GL_APIENTRY *glIsBuffer_t) (GLuint);
-typedef GLboolean (GL_APIENTRY *glIsEnabled_t) (GLenum);
-typedef GLboolean (GL_APIENTRY *glIsTexture_t) (GLuint);
-typedef void (GL_APIENTRY *glLightModelx_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightModelxv_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLightx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLineWidthx_t) (GLfixed);
-typedef void (GL_APIENTRY *glLoadIdentity_t) ();
-typedef void (GL_APIENTRY *glLoadMatrixx_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glLogicOp_t) (GLenum);
-typedef void (GL_APIENTRY *glMaterialx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glMaterialxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glMatrixMode_t) (GLenum);
-typedef void (GL_APIENTRY *glMultMatrixx_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glMultiTexCoord4x_t) (GLenum, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glNormal3x_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glNormalPointer_t) (GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glOrthox_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glPixelStorei_t) (GLenum, GLint);
-typedef void (GL_APIENTRY *glPointParameterx_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glPointParameterxv_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glPointSizex_t) (GLfixed);
-typedef void (GL_APIENTRY *glPolygonOffsetx_t) (GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glPopMatrix_t) ();
-typedef void (GL_APIENTRY *glPushMatrix_t) ();
-typedef void (GL_APIENTRY *glReadPixels_t) (GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glRotatex_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glSampleCoverage_t) (GLclampf, GLboolean);
-typedef void (GL_APIENTRY *glSampleCoveragex_t) (GLclampx, GLboolean);
-typedef void (GL_APIENTRY *glScalex_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glScissor_t) (GLint, GLint, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glShadeModel_t) (GLenum);
-typedef void (GL_APIENTRY *glStencilFunc_t) (GLenum, GLint, GLuint);
-typedef void (GL_APIENTRY *glStencilMask_t) (GLuint);
-typedef void (GL_APIENTRY *glStencilOp_t) (GLenum, GLenum, GLenum);
-typedef void (GL_APIENTRY *glTexCoordPointer_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glTexEnvi_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glTexEnvx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexEnviv_t) (GLenum, GLenum, const GLint*);
-typedef void (GL_APIENTRY *glTexEnvxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTexImage2D_t) (GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*);
-typedef void (GL_APIENTRY *glTexParameteri_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glTexParameterx_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexParameteriv_t) (GLenum, GLenum, const GLint*);
-typedef void (GL_APIENTRY *glTexParameterxv_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTexSubImage2D_t) (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*);
-typedef void (GL_APIENTRY *glTranslatex_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glVertexPointer_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glViewport_t) (GLint, GLint, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glPointSizePointerOES_t) (GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glBlendEquationSeparateOES_t) (GLenum, GLenum);
-typedef void (GL_APIENTRY *glBlendFuncSeparateOES_t) (GLenum, GLenum, GLenum, GLenum);
-typedef void (GL_APIENTRY *glBlendEquationOES_t) (GLenum);
-typedef void (GL_APIENTRY *glDrawTexsOES_t) (GLshort, GLshort, GLshort, GLshort, GLshort);
-typedef void (GL_APIENTRY *glDrawTexiOES_t) (GLint, GLint, GLint, GLint, GLint);
-typedef void (GL_APIENTRY *glDrawTexxOES_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glDrawTexsvOES_t) (const GLshort*);
-typedef void (GL_APIENTRY *glDrawTexivOES_t) (const GLint*);
-typedef void (GL_APIENTRY *glDrawTexxvOES_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glDrawTexfOES_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glDrawTexfvOES_t) (const GLfloat*);
-typedef void (GL_APIENTRY *glEGLImageTargetTexture2DOES_t) (GLenum, GLeglImageOES);
-typedef void (GL_APIENTRY *glEGLImageTargetRenderbufferStorageOES_t) (GLenum, GLeglImageOES);
-typedef void (GL_APIENTRY *glAlphaFuncxOES_t) (GLenum, GLclampx);
-typedef void (GL_APIENTRY *glClearColorxOES_t) (GLclampx, GLclampx, GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glClearDepthxOES_t) (GLclampx);
-typedef void (GL_APIENTRY *glClipPlanexOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glColor4xOES_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glDepthRangexOES_t) (GLclampx, GLclampx);
-typedef void (GL_APIENTRY *glFogxOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glFogxvOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glFrustumxOES_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glGetClipPlanexOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glGetFixedvOES_t) (GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetLightxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetMaterialxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetTexEnvxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glGetTexParameterxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glLightModelxOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightModelxvOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLightxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glLightxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glLineWidthxOES_t) (GLfixed);
-typedef void (GL_APIENTRY *glLoadMatrixxOES_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glMaterialxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glMaterialxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glMultMatrixxOES_t) (const GLfixed*);
-typedef void (GL_APIENTRY *glMultiTexCoord4xOES_t) (GLenum, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glNormal3xOES_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glOrthoxOES_t) (GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glPointParameterxOES_t) (GLenum, GLfixed);
-typedef void (GL_APIENTRY *glPointParameterxvOES_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glPointSizexOES_t) (GLfixed);
-typedef void (GL_APIENTRY *glPolygonOffsetxOES_t) (GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glRotatexOES_t) (GLfixed, GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glSampleCoveragexOES_t) (GLclampx, GLboolean);
-typedef void (GL_APIENTRY *glScalexOES_t) (GLfixed, GLfixed, GLfixed);
-typedef void (GL_APIENTRY *glTexEnvxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexEnvxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTexParameterxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexParameterxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glTranslatexOES_t) (GLfixed, GLfixed, GLfixed);
-typedef GLboolean (GL_APIENTRY *glIsRenderbufferOES_t) (GLuint);
-typedef void (GL_APIENTRY *glBindRenderbufferOES_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glDeleteRenderbuffersOES_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenRenderbuffersOES_t) (GLsizei, GLuint*);
-typedef void (GL_APIENTRY *glRenderbufferStorageOES_t) (GLenum, GLenum, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glGetRenderbufferParameterivOES_t) (GLenum, GLenum, GLint*);
-typedef GLboolean (GL_APIENTRY *glIsFramebufferOES_t) (GLuint);
-typedef void (GL_APIENTRY *glBindFramebufferOES_t) (GLenum, GLuint);
-typedef void (GL_APIENTRY *glDeleteFramebuffersOES_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenFramebuffersOES_t) (GLsizei, GLuint*);
-typedef GLenum (GL_APIENTRY *glCheckFramebufferStatusOES_t) (GLenum);
-typedef void (GL_APIENTRY *glFramebufferRenderbufferOES_t) (GLenum, GLenum, GLenum, GLuint);
-typedef void (GL_APIENTRY *glFramebufferTexture2DOES_t) (GLenum, GLenum, GLenum, GLuint, GLint);
-typedef void (GL_APIENTRY *glGetFramebufferAttachmentParameterivOES_t) (GLenum, GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGenerateMipmapOES_t) (GLenum);
-typedef void* (GL_APIENTRY *glMapBufferOES_t) (GLenum, GLenum);
-typedef GLboolean (GL_APIENTRY *glUnmapBufferOES_t) (GLenum);
-typedef void (GL_APIENTRY *glGetBufferPointervOES_t) (GLenum, GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glCurrentPaletteMatrixOES_t) (GLuint);
-typedef void (GL_APIENTRY *glLoadPaletteFromModelViewMatrixOES_t) ();
-typedef void (GL_APIENTRY *glMatrixIndexPointerOES_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef void (GL_APIENTRY *glWeightPointerOES_t) (GLint, GLenum, GLsizei, const GLvoid*);
-typedef GLbitfield (GL_APIENTRY *glQueryMatrixxOES_t) (GLfixed, GLint);
-typedef void (GL_APIENTRY *glDepthRangefOES_t) (GLclampf, GLclampf);
-typedef void (GL_APIENTRY *glFrustumfOES_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glOrthofOES_t) (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-typedef void (GL_APIENTRY *glClipPlanefOES_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glGetClipPlanefOES_t) (GLenum, GLfloat);
-typedef void (GL_APIENTRY *glClearDepthfOES_t) (GLclampf);
-typedef void (GL_APIENTRY *glTexGenfOES_t) (GLenum, GLenum, GLfloat);
-typedef void (GL_APIENTRY *glTexGenfvOES_t) (GLenum, GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glTexGeniOES_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glTexGenivOES_t) (GLenum, GLenum, const GLint*);
-typedef void (GL_APIENTRY *glTexGenxOES_t) (GLenum, GLenum, GLfixed);
-typedef void (GL_APIENTRY *glTexGenxvOES_t) (GLenum, GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glGetTexGenfvOES_t) (GLenum, GLenum, GLfloat*);
-typedef void (GL_APIENTRY *glGetTexGenivOES_t) (GLenum, GLenum, GLint*);
-typedef void (GL_APIENTRY *glGetTexGenxvOES_t) (GLenum, GLenum, GLfixed*);
-typedef void (GL_APIENTRY *glBindVertexArrayOES_t) (GLuint);
-typedef void (GL_APIENTRY *glDeleteVertexArraysOES_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenVertexArraysOES_t) (GLsizei, GLuint*);
-typedef GLboolean (GL_APIENTRY *glIsVertexArrayOES_t) (GLuint);
-typedef void (GL_APIENTRY *glDiscardFramebufferEXT_t) (GLenum, GLsizei, const GLenum*);
-typedef void (GL_APIENTRY *glMultiDrawArraysEXT_t) (GLenum, GLint*, GLsizei*, GLsizei);
-typedef void (GL_APIENTRY *glMultiDrawElementsEXT_t) (GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei);
-typedef void (GL_APIENTRY *glClipPlanefIMG_t) (GLenum, const GLfloat*);
-typedef void (GL_APIENTRY *glClipPlanexIMG_t) (GLenum, const GLfixed*);
-typedef void (GL_APIENTRY *glRenderbufferStorageMultisampleIMG_t) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-typedef void (GL_APIENTRY *glFramebufferTexture2DMultisampleIMG_t) (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
-typedef void (GL_APIENTRY *glDeleteFencesNV_t) (GLsizei, const GLuint*);
-typedef void (GL_APIENTRY *glGenFencesNV_t) (GLsizei, GLuint*);
-typedef GLboolean (GL_APIENTRY *glIsFenceNV_t) (GLuint);
-typedef GLboolean (GL_APIENTRY *glTestFenceNV_t) (GLuint);
-typedef void (GL_APIENTRY *glGetFenceivNV_t) (GLuint, GLenum, GLint*);
-typedef void (GL_APIENTRY *glFinishFenceNV_t) (GLuint);
-typedef void (GL_APIENTRY *glSetFenceNV_t) (GLuint, GLenum);
-typedef void (GL_APIENTRY *glGetDriverControlsQCOM_t) (GLint*, GLsizei, GLuint*);
-typedef void (GL_APIENTRY *glGetDriverControlStringQCOM_t) (GLuint, GLsizei, GLsizei*, GLchar*);
-typedef void (GL_APIENTRY *glEnableDriverControlQCOM_t) (GLuint);
-typedef void (GL_APIENTRY *glDisableDriverControlQCOM_t) (GLuint);
-typedef void (GL_APIENTRY *glExtGetTexturesQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetBuffersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetRenderbuffersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetFramebuffersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetTexLevelParameterivQCOM_t) (GLuint, GLenum, GLint, GLenum, GLint*);
-typedef void (GL_APIENTRY *glExtTexObjectStateOverrideiQCOM_t) (GLenum, GLenum, GLint);
-typedef void (GL_APIENTRY *glExtGetTexSubImageQCOM_t) (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glExtGetBufferPointervQCOM_t) (GLenum, GLvoid*);
-typedef void (GL_APIENTRY *glExtGetShadersQCOM_t) (GLuint*, GLint, GLint*);
-typedef void (GL_APIENTRY *glExtGetProgramsQCOM_t) (GLuint*, GLint, GLint*);
-typedef GLboolean (GL_APIENTRY *glExtIsProgramBinaryQCOM_t) (GLuint);
-typedef void (GL_APIENTRY *glExtGetProgramBinarySourceQCOM_t) (GLuint, GLenum, GLchar*, GLint*);
-typedef void (GL_APIENTRY *glStartTilingQCOM_t) (GLuint, GLuint, GLuint, GLuint, GLbitfield);
-typedef void (GL_APIENTRY *glEndTilingQCOM_t) (GLbitfield);
-
-
-#endif
diff --git a/tools/emulator/opengl/host/libs/libOpenglRender/render_api.cpp b/tools/emulator/opengl/host/libs/libOpenglRender/render_api.cpp
deleted file mode 100644
index 8a5f464..0000000
--- a/tools/emulator/opengl/host/libs/libOpenglRender/render_api.cpp
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "libOpenglRender/render_api.h"
-#include "IOStream.h"
-#include "FrameBuffer.h"
-#include "RenderServer.h"
-#include "osProcess.h"
-#include "TimeUtils.h"
-
-#include "TcpStream.h"
-#ifdef _WIN32
-#include "Win32PipeStream.h"
-#else
-#include "UnixStream.h"
-#endif
-
-#include "EGLDispatch.h"
-#include "GLDispatch.h"
-#include "GL2Dispatch.h"
-
-static osUtils::childProcess *s_renderProc = NULL;
-static RenderServer *s_renderThread = NULL;
-static int s_renderPort = 0;
-
-static IOStream *createRenderThread(int p_stream_buffer_size,
-                                    unsigned int clientFlags);
-
-//
-// For now run the renderer as a thread inside the calling
-// process instead as running it in a separate process for all
-// platforms.
-// at the future we want it to run as a seperate process except for
-// Mac OS X since it is imposibble on this platform to make one process
-// render to a window created by another process.
-//
-//#ifdef __APPLE__
-#define  RENDER_API_USE_THREAD
-//#endif
-
-bool initLibrary(void)
-{
-    //
-    // Load EGL Plugin
-    //
-    if (!init_egl_dispatch()) {
-        // Failed to load EGL
-        printf("Failed to init_egl_dispatch\n");
-        return false;
-    }
-
-    //
-    // Load GLES Plugin
-    //
-    if (!init_gl_dispatch()) {
-        // Failed to load GLES
-        ERR("Failed to init_gl_dispatch\n");
-        return false;
-    }
-
-    /* failure to init the GLES2 dispatch table is not fatal */
-    init_gl2_dispatch();
-
-    return true;
-}
-
-bool initOpenGLRenderer(int width, int height, int portNum)
-{
-
-    //
-    // Fail if renderer is already initialized
-    //
-    if (s_renderProc || s_renderThread) {
-        return false;
-    }
-
-    s_renderPort = portNum;
-
-#ifdef RENDER_API_USE_THREAD  // should be defined for mac
-    //
-    // initialize the renderer and listen to connections
-    // on a thread in the current process.
-    //
-    bool inited = FrameBuffer::initialize(width, height);
-    if (!inited) {
-        return false;
-    }
-
-    s_renderThread = RenderServer::create(portNum);
-    if (!s_renderThread) {
-        return false;
-    }
-
-    s_renderThread->start();
-
-#else
-    //
-    // Launch emulator_renderer
-    //
-    char cmdLine[128];
-    snprintf(cmdLine, 128, "emulator_renderer -windowid %d -port %d -x %d -y %d -width %d -height %d",
-             (int)window, portNum, x, y, width, height);
-
-    s_renderProc = osUtils::childProcess::create(cmdLine, NULL);
-    if (!s_renderProc) {
-        return false;
-    }
-
-    //
-    // try to connect to the renderer in order to check it
-    // was successfully initialized.
-    //
-    int nTrys = 0;
-    IOStream *dummy = NULL;
-    do {
-        ++nTrys;
-
-        //
-        // Wait a bit to make the renderer process a chance to be
-        // initialized.
-        // On Windows we need during this time to handle windows
-        // events since the renderer generates a subwindow of this
-        // process's window, we need to be responsive for windows
-        // during this time to let the renderer generates this subwindow.
-        //
-#ifndef _WIN32
-        TimeSleepMS(300);
-#else
-        long long t0 = GetCurrentTimeMS();
-        while( (GetCurrentTimeMS() - t0) < 300 ) {
-            MSG msg;
-            int n = 0;
-            while( PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) )
-            {
-                n++;
-                TranslateMessage( &msg );
-                DispatchMessage( &msg );
-            }
-            if (n == 0) TimeSleepMS(10);
-        }
-#endif
-
-        dummy = createRenderThread(8, 0);
-
-        if (!dummy) {
-            // stop if the process is no longer running
-            if (!osUtils::isProcessRunning(s_renderProc->getPID())) {
-                break;
-            }
-        }
-    } while(!dummy && nTrys < 10); // give up after 3 seconds, XXX: ???
-
-    if (!dummy) {
-        //
-        // Failed - make sure the process is killed
-        //
-        osUtils::KillProcess(s_renderProc->getPID(), true);
-        delete s_renderProc;
-        s_renderProc = NULL;
-        return false;
-    }
-
-    // destroy the dummy connection
-    delete dummy;
-#endif
-
-    return true;
-}
-
-bool stopOpenGLRenderer()
-{
-    bool ret = false;
-
-    // open a dummy connection to the renderer to make it
-    // realize the exit request.
-    // (send the exit request in clientFlags)
-    IOStream *dummy = createRenderThread(8, IOSTREAM_CLIENT_EXIT_SERVER);
-    if (!dummy) return false;
-
-    if (s_renderProc) {
-        //
-        // wait for the process to exit
-        //
-        int exitStatus;
-        ret = s_renderProc->wait(&exitStatus);
-
-        delete s_renderProc;
-        s_renderProc = NULL;
-    }
-    else if (s_renderThread) {
-
-        // wait for the thread to exit
-        int status;
-        ret = s_renderThread->wait(&status);
-
-        delete s_renderThread;
-        s_renderThread = NULL;
-    }
-
-    return ret;
-}
-
-bool createOpenGLSubwindow(FBNativeWindowType window,
-                           int x, int y, int width, int height, float zRot)
-{
-    if (s_renderThread) {
-        return FrameBuffer::setupSubWindow(window,x,y,width,height, zRot);
-    }
-    else {
-        //
-        // XXX: should be implemented by sending the renderer process
-        //      a request
-        ERR("%s not implemented for separate renderer process !!!\n",
-            __FUNCTION__);
-    }
-    return false;
-}
-
-bool destroyOpenGLSubwindow()
-{
-    if (s_renderThread) {
-        return FrameBuffer::removeSubWindow();
-    }
-    else {
-        //
-        // XXX: should be implemented by sending the renderer process
-        //      a request
-        ERR("%s not implemented for separate renderer process !!!\n",
-                __FUNCTION__);
-        return false;
-    }
-}
-
-void setOpenGLDisplayRotation(float zRot)
-{
-    if (s_renderThread) {
-        FrameBuffer *fb = FrameBuffer::getFB();
-        if (fb) {
-            fb->setDisplayRotation(zRot);
-        }
-    }
-    else {
-        //
-        // XXX: should be implemented by sending the renderer process
-        //      a request
-        ERR("%s not implemented for separate renderer process !!!\n",
-                __FUNCTION__);
-    }
-}
-
-void repaintOpenGLDisplay()
-{
-    if (s_renderThread) {
-        FrameBuffer *fb = FrameBuffer::getFB();
-        if (fb) {
-            fb->repost();
-        }
-    }
-    else {
-        //
-        // XXX: should be implemented by sending the renderer process
-        //      a request
-        ERR("%s not implemented for separate renderer process !!!\n",
-                __FUNCTION__);
-    }
-}
-
-
-/* NOTE: For now, always use TCP mode by default, until the emulator
- *        has been updated to support Unix and Win32 pipes
- */
-#define  DEFAULT_STREAM_MODE  STREAM_MODE_TCP
-
-int gRendererStreamMode = DEFAULT_STREAM_MODE;
-
-IOStream *createRenderThread(int p_stream_buffer_size, unsigned int clientFlags)
-{
-    SocketStream*  stream = NULL;
-
-    if (gRendererStreamMode == STREAM_MODE_TCP) {
-        stream = new TcpStream(p_stream_buffer_size);
-    } else {
-#ifdef _WIN32
-        stream = new Win32PipeStream(p_stream_buffer_size);
-#else /* !_WIN32 */
-        stream = new UnixStream(p_stream_buffer_size);
-#endif
-    }
-
-    if (!stream) {
-        ERR("createRenderThread failed to create stream\n");
-        return NULL;
-    }
-    if (stream->connect(s_renderPort) < 0) {
-        ERR("createRenderThread failed to connect\n");
-        delete stream;
-        return NULL;
-    }
-
-    //
-    // send clientFlags to the renderer
-    //
-    unsigned int *pClientFlags =
-                (unsigned int *)stream->allocBuffer(sizeof(unsigned int));
-    *pClientFlags = clientFlags;
-    stream->commitBuffer(sizeof(unsigned int));
-
-    return stream;
-}
-
-int
-setStreamMode(int mode)
-{
-    switch (mode) {
-        case STREAM_MODE_DEFAULT:
-            mode = DEFAULT_STREAM_MODE;
-            break;
-
-        case STREAM_MODE_TCP:
-            break;
-
-#ifndef _WIN32
-        case STREAM_MODE_UNIX:
-            break;
-#else /* _WIN32 */
-        case STREAM_MODE_PIPE:
-            break;
-#endif /* _WIN32 */
-        default:
-            // Invalid stream mode
-            return -1;
-    }
-    gRendererStreamMode = mode;
-    return 0;
-}
diff --git a/tools/emulator/opengl/host/libs/renderControl_dec/Android.mk b/tools/emulator/opengl/host/libs/renderControl_dec/Android.mk
deleted file mode 100644
index 4d07938..0000000
--- a/tools/emulator/opengl/host/libs/renderControl_dec/Android.mk
+++ /dev/null
@@ -1,8 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-host-static-library,lib_renderControl_dec)
-$(call emugl-import,libOpenglCodecCommon)
-$(call emugl-gen-decoder,$(EMUGL_PATH)/system/renderControl_enc,renderControl)
-# For renderControl_types.h
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/system/renderControl_enc)
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/host/renderer/Android.mk b/tools/emulator/opengl/host/renderer/Android.mk
deleted file mode 100644
index 55fcb80..0000000
--- a/tools/emulator/opengl/host/renderer/Android.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-LOCAL_PATH:=$(call my-dir)
-
-# host renderer process ###########################
-$(call emugl-begin-host-executable,emulator_renderer)
-$(call emugl-import,libOpenglRender)
-LOCAL_SRC_FILES := main.cpp
-LOCAL_CFLAGS    += -O0 -g
-
-#ifeq ($(HOST_OS),windows)
-#LOCAL_LDLIBS += -lws2_32
-#endif
-
-$(call emugl-end-module)
-
diff --git a/tools/emulator/opengl/host/renderer/main.cpp b/tools/emulator/opengl/host/renderer/main.cpp
deleted file mode 100644
index 4549c56..0000000
--- a/tools/emulator/opengl/host/renderer/main.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RenderServer.h"
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "FrameBuffer.h"
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <codec_defs.h>
-#ifdef _WIN32
-#include <winsock2.h>
-#endif
-
-#ifdef __linux__
-#include <X11/Xlib.h>
-#endif
-
-static void printUsage(const char *progName)
-{
-    fprintf(stderr, "Usage: %s -windowid <windowid> [options]\n", progName);
-    fprintf(stderr, "    -windowid <windowid>   - window id to render into\n");
-    fprintf(stderr, "    -port <portNum>        - listening TCP port number\n");
-    fprintf(stderr, "    -x <num>               - render subwindow x position\n");
-    fprintf(stderr, "    -y <num>               - render subwindow y position\n");
-    fprintf(stderr, "    -width <num>           - render subwindow width\n");
-    fprintf(stderr, "    -height <num>          - render subwindow height\n");
-    exit(-1);
-}
-
-int main(int argc, char *argv[])
-{
-    int portNum = CODEC_SERVER_PORT;
-    int winX = 0;
-    int winY = 0;
-    int winWidth = 320;
-    int winHeight = 480;
-    FBNativeWindowType windowId = NULL;
-    int iWindowId  = 0;
-
-    //
-    // Parse command line arguments
-    //
-    for (int i=1; i<argc; i++) {
-        if (!strcmp(argv[i], "-windowid")) {
-            if (++i >= argc || sscanf(argv[i],"%d", &iWindowId) != 1) {
-                printUsage(argv[0]);
-            }
-        }
-        else if (!strncmp(argv[i], "-port", 5)) {
-            if (++i >= argc || sscanf(argv[i],"%d", &portNum) != 1) {
-                printUsage(argv[0]);
-            }
-        }
-        else if (!strncmp(argv[i], "-x", 2)) {
-            if (++i >= argc || sscanf(argv[i],"%d", &winX) != 1) {
-                printUsage(argv[0]);
-            }
-        }
-        else if (!strncmp(argv[i], "-y", 2)) {
-            if (++i >= argc || sscanf(argv[i],"%d", &winY) != 1) {
-                printUsage(argv[0]);
-            }
-        }
-        else if (!strncmp(argv[i], "-width", 6)) {
-            if (++i >= argc || sscanf(argv[i],"%d", &winWidth) != 1) {
-                printUsage(argv[0]);
-            }
-        }
-        else if (!strncmp(argv[i], "-height", 7)) {
-            if (++i >= argc || sscanf(argv[i],"%d", &winHeight) != 1) {
-                printUsage(argv[0]);
-            }
-        }
-    }
-
-    windowId = (FBNativeWindowType)iWindowId;
-    if (!windowId) {
-        // window id must be provided
-        printUsage(argv[0]);
-    }
-
-#if 0 //Enable to attach gdb to renderer on startup
-    fprintf(stderr, "renderer pid %d , press any key to continue...\n", getpid());
-    getchar();
-#else
-    fprintf(stderr, "renderer pid %d \n", getpid());
-#endif
-
-#ifdef _WIN32
-    WSADATA  wsaData;
-    int      rc = WSAStartup( MAKEWORD(2,2), &wsaData);
-    if (rc != 0) {
-            printf( "could not initialize Winsock\n" );
-    }
-#endif
-
-#ifdef __linux__
-    // some OpenGL implementations may call X functions
-    // it is safer to synchronize all X calls made by all the
-    // rendering threads. (although the calls we do are locked
-    // in the FrameBuffer singleton object).
-    XInitThreads();
-#endif
-
-    //
-    // initialize Framebuffer
-    //
-    bool inited = FrameBuffer::initialize(winWidth, winHeight);
-    if (!inited) {
-        fprintf(stderr,"Failed to initialize Framebuffer\n");
-        return -1;
-    }
-
-    inited = FrameBuffer::setupSubWindow(windowId,
-                                         winX, winY, winWidth, winHeight, 0.0);
-    if (!inited) {
-        fprintf(stderr,"Failed to create subwindow Framebuffer\n");
-        return -1;
-    }
-
-    //
-    // Create and run a render server listening to the given port number
-    //
-    RenderServer *server = RenderServer::create(portNum);
-    if (!server) {
-        fprintf(stderr,"Cannot initialize render server\n");
-        return -1;
-    }
-
-#ifndef _WIN32
-    //
-    // run the server listener loop
-    //
-    server->Main();
-#else
-    //
-    // on windows we need to handle messages for the
-    // created subwindow. So we run the server on a seperate
-    // thread and running the windows message pump loop
-    // in this main thread.
-    //
-    server->start();
-
-    //
-    // Dispatch events for the subwindow
-    // During termination of the render server, the FrameBuffer
-    // will be finalized, the Framebuffer subwindow will
-    // get destroyed and the following loop will exit.
-    //
-    MSG msg;
-    HWND hWnd = FrameBuffer::getFB()->getSubWindow();
-    while( GetMessage(&msg, hWnd, 0, 0) > 0 ) {
-        TranslateMessage(&msg);
-        DispatchMessage(&msg);
-    }
-#endif
-
-    return 0;
-}
diff --git a/tools/emulator/opengl/host/tools/emugen/Android.mk b/tools/emulator/opengl/host/tools/emugen/Android.mk
deleted file mode 100644
index ad9ab06..0000000
--- a/tools/emulator/opengl/host/tools/emugen/Android.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-ifneq ($(HOST_OS),windows)
-
-LOCAL_PATH:=$(call my-dir)
-
-$(call emugl-begin-host-executable,emugen)
-
-    LOCAL_SRC_FILES := \
-        ApiGen.cpp \
-        EntryPoint.cpp \
-        main.cpp \
-        strUtils.cpp \
-        TypeFactory.cpp
-
-$(call emugl-end-module)
-
-# The location of the emugen host tool that is used to generate wire
-# protocol encoders/ decoders. This variable is used by other emugl modules.
-EMUGL_EMUGEN := $(LOCAL_BUILT_MODULE)
-
-else # windows build
-
-# on windows use the build host emugen executable
-# (that will be the linux exeutable when using mingw build)
-EMUGL_EMUGEN := $(BUILD_OUT_EXECUTABLES)/emugen
-
-endif
diff --git a/tools/emulator/opengl/host/tools/emugen/ApiGen.cpp b/tools/emulator/opengl/host/tools/emugen/ApiGen.cpp
deleted file mode 100644
index 4265301..0000000
--- a/tools/emulator/opengl/host/tools/emugen/ApiGen.cpp
+++ /dev/null
@@ -1,1079 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "ApiGen.h"
-#include "EntryPoint.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include "strUtils.h"
-#include <errno.h>
-#include <sys/types.h>
-
-/* Define this to 1 to enable support for the 'isLarge' variable flag
- * that instructs the encoder to send large data buffers by a direct
- * write through the pipe (i.e. without copying it into a temporary
- * buffer. This has definite performance benefits when using a QEMU Pipe.
- *
- * Set to 0 otherwise.
- */
-#define WITH_LARGE_SUPPORT  1
-
-EntryPoint * ApiGen::findEntryByName(const std::string & name)
-{
-    EntryPoint * entry = NULL;
-
-    size_t n = this->size();
-    for (size_t i = 0; i < n; i++) {
-        if (at(i).name() == name) {
-            entry = &(at(i));
-            break;
-        }
-    }
-    return entry;
-}
-
-void ApiGen::printHeader(FILE *fp) const
-{
-    fprintf(fp, "// Generated Code - DO NOT EDIT !!\n");
-    fprintf(fp, "// generated by 'emugen'\n");
-}
-
-int ApiGen::genProcTypes(const std::string &filename, SideType side)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-    printHeader(fp);
-
-    const char* basename = m_basename.c_str();
-
-    fprintf(fp, "#ifndef __%s_%s_proc_t_h\n", basename, sideString(side));
-    fprintf(fp, "#define __%s_%s_proc_t_h\n", basename, sideString(side));
-    fprintf(fp, "\n\n");
-    fprintf(fp, "\n#include \"%s_types.h\"\n",basename);
-    fprintf(fp, "#ifndef %s_APIENTRY\n",basename);
-    fprintf(fp, "#define %s_APIENTRY \n",basename);
-    fprintf(fp, "#endif\n");
-
-
-    for (size_t i = 0; i < size(); i++) {
-        EntryPoint *e = &at(i);
-
-        fprintf(fp, "typedef ");
-        e->retval().printType(fp);
-        fprintf(fp, " (%s_APIENTRY *%s_%s_proc_t) (", basename, e->name().c_str(), sideString(side));
-        if (side == CLIENT_SIDE) { fprintf(fp, "void * ctx"); }
-        if (e->customDecoder() && side == SERVER_SIDE) { fprintf(fp, "void *ctx"); }
-
-        VarsArray & evars = e->vars();
-        size_t n = evars.size();
-
-        for (size_t j = 0; j < n; j++) {
-            if (!evars[j].isVoid()) {
-                if (j != 0 || side == CLIENT_SIDE || (side == SERVER_SIDE && e->customDecoder())) fprintf(fp, ", ");
-                evars[j].printType(fp);
-            }
-        }
-        fprintf(fp, ");\n");
-    }
-    fprintf(fp, "\n\n#endif\n");
-    return 0;
-}
-
-int ApiGen::genFuncTable(const std::string &filename, SideType side)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-    printHeader(fp);
-
-    fprintf(fp, "#ifndef __%s_%s_ftable_t_h\n", m_basename.c_str(), sideString(side));
-    fprintf(fp, "#define __%s_%s_ftable_t_h\n", m_basename.c_str(), sideString(side));
-    fprintf(fp, "\n\n");
-    fprintf(fp, "static struct _%s_funcs_by_name {\n", m_basename.c_str());
-    fprintf(fp,
-            "\tconst char *name;\n" \
-            "\tvoid *proc;\n" \
-            "} %s_funcs_by_name[] = {\n", m_basename.c_str());
-
-
-    for (size_t i = 0; i < size(); i++) {
-        EntryPoint *e = &at(i);
-        if (e->notApi()) continue;
-        fprintf(fp, "\t{\"%s\", (void*)%s},\n", e->name().c_str(), e->name().c_str());
-    }
-    fprintf(fp, "};\n");
-    fprintf(fp, "static int %s_num_funcs = sizeof(%s_funcs_by_name) / sizeof(struct _%s_funcs_by_name);\n",
-            m_basename.c_str(), m_basename.c_str(), m_basename.c_str());
-    fprintf(fp, "\n\n#endif\n");
-    return 0;
-}
-
-
-int ApiGen::genContext(const std::string & filename, SideType side)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-    printHeader(fp);
-
-    fprintf(fp, "#ifndef __%s_%s_context_t_h\n", m_basename.c_str(), sideString(side));
-    fprintf(fp, "#define __%s_%s_context_t_h\n", m_basename.c_str(), sideString(side));
-
-    //  fprintf(fp, "\n#include \"%s_types.h\"\n", m_basename.c_str());
-    fprintf(fp, "\n#include \"%s_%s_proc.h\"\n", m_basename.c_str(), sideString(side));
-
-    StringVec & contextHeaders = side == CLIENT_SIDE ? m_clientContextHeaders : m_serverContextHeaders;
-    for (size_t i = 0; i < contextHeaders.size(); i++) {
-        fprintf(fp, "#include %s\n", contextHeaders[i].c_str());
-    }
-    fprintf(fp, "\n");
-
-    fprintf(fp, "\nstruct %s_%s_context_t {\n\n", m_basename.c_str(), sideString(side));
-    for (size_t i = 0; i < size(); i++) {
-        EntryPoint *e = &at(i);
-        fprintf(fp, "\t%s_%s_proc_t %s;\n", e->name().c_str(), sideString(side), e->name().c_str());
-    }
-    // accessors
-    fprintf(fp, "\t//Accessors \n");
-
-    for (size_t i = 0; i < size(); i++) {
-        EntryPoint *e = &at(i);
-        const char *n = e->name().c_str();
-        const char *s = sideString(side);
-        fprintf(fp, "\tvirtual %s_%s_proc_t set_%s(%s_%s_proc_t f) { %s_%s_proc_t retval = %s; %s = f; return retval;}\n", n, s, n, n, s, n, s,  n, n);
-    }
-
-    // virtual destructor
-    fprintf(fp, "\t virtual ~%s_%s_context_t() {}\n", m_basename.c_str(), sideString(side));
-    // accessor
-    if (side == CLIENT_SIDE || side == WRAPPER_SIDE) {
-        fprintf(fp, "\n\ttypedef %s_%s_context_t *CONTEXT_ACCESSOR_TYPE(void);\n",
-                m_basename.c_str(), sideString(side));
-        fprintf(fp, "\tstatic void setContextAccessor(CONTEXT_ACCESSOR_TYPE *f);\n");
-    }
-
-    // init function
-    fprintf(fp, "\tint initDispatchByName( void *(*getProc)(const char *name, void *userData), void *userData);\n");
-
-    //client site set error virtual func
-    if (side == CLIENT_SIDE) {
-        fprintf(fp, "\tvirtual void setError(unsigned int  error){};\n");
-        fprintf(fp, "\tvirtual unsigned int getError(){ return 0; };\n");
-    }
-
-    fprintf(fp, "};\n");
-
-    fprintf(fp, "\n#endif\n");
-    fclose(fp);
-    return 0;
-}
-
-int ApiGen::genEntryPoints(const std::string & filename, SideType side)
-{
-
-    if (side != CLIENT_SIDE && side != WRAPPER_SIDE) {
-        fprintf(stderr, "Entry points are only defined for Client and Wrapper components\n");
-        return -999;
-    }
-
-
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return errno;
-    }
-
-    printHeader(fp);
-    fprintf(fp, "#include <stdio.h>\n");
-    fprintf(fp, "#include <stdlib.h>\n");
-    fprintf(fp, "#include \"%s_%s_context.h\"\n", m_basename.c_str(), sideString(side));
-    fprintf(fp, "\n");
-
-    fprintf(fp, "#ifndef GL_TRUE\n");
-    fprintf(fp, "extern \"C\" {\n");
-
-    for (size_t i = 0; i < size(); i++) {
-        fprintf(fp, "\t"); at(i).print(fp, false); fprintf(fp, ";\n");
-    }
-    fprintf(fp, "};\n\n");
-    fprintf(fp, "#endif\n");
-
-    fprintf(fp, "#ifndef GET_CONTEXT\n");
-    fprintf(fp, "static %s_%s_context_t::CONTEXT_ACCESSOR_TYPE *getCurrentContext = NULL;\n",
-            m_basename.c_str(), sideString(side));
-
-    fprintf(fp,
-            "void %s_%s_context_t::setContextAccessor(CONTEXT_ACCESSOR_TYPE *f) { getCurrentContext = f; }\n",
-            m_basename.c_str(), sideString(side));
-    fprintf(fp, "#define GET_CONTEXT %s_%s_context_t * ctx = getCurrentContext() \n",
-                m_basename.c_str(), sideString(side));
-    fprintf(fp, "#endif\n\n");
-
-
-    for (size_t i = 0; i < size(); i++) {
-        EntryPoint *e = &at(i);
-        e->print(fp);
-        fprintf(fp, "{\n");
-        fprintf(fp, "\tGET_CONTEXT; \n");
-
-        bool shouldReturn = !e->retval().isVoid();
-        bool shouldCallWithContext = (side == CLIENT_SIDE);
-        //param check
-        if (shouldCallWithContext) {
-            for (size_t j=0; j<e->vars().size(); j++) {
-                if (e->vars()[j].paramCheckExpression() != "") 
-                    fprintf(fp, "\t%s\n", e->vars()[j].paramCheckExpression().c_str());
-            }
-        }
-        fprintf(fp, "\t %sctx->%s(%s",
-                shouldReturn ? "return " : "",
-                e->name().c_str(),
-                shouldCallWithContext ? "ctx" : "");
-        size_t nvars = e->vars().size();
-
-        for (size_t j = 0; j < nvars; j++) {
-            if (!e->vars()[j].isVoid()) {
-                fprintf(fp, "%s %s",
-                        j != 0 || shouldCallWithContext ? "," : "",
-                        e->vars()[j].name().c_str());
-            }
-        }
-        fprintf(fp, ");\n");
-        fprintf(fp, "}\n\n");
-    }
-    fclose(fp);
-    return 0;
-}
-
-
-int ApiGen::genOpcodes(const std::string &filename)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return errno;
-    }
-
-    printHeader(fp);
-    fprintf(fp, "#ifndef __GUARD_%s_opcodes_h_\n", m_basename.c_str());
-    fprintf(fp, "#define __GUARD_%s_opcodes_h_\n\n", m_basename.c_str());
-    for (size_t i = 0; i < size(); i++) {
-        fprintf(fp, "#define OP_%s \t\t\t\t\t%u\n", at(i).name().c_str(), (unsigned int)i + m_baseOpcode);
-    }
-    fprintf(fp, "#define OP_last \t\t\t\t\t%u\n", (unsigned int)size() + m_baseOpcode);
-    fprintf(fp,"\n\n#endif\n");
-    fclose(fp);
-    return 0;
-
-}
-int ApiGen::genAttributesTemplate(const std::string &filename )
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-
-    for (size_t i = 0; i < size(); i++) {
-        if (at(i).hasPointers()) {
-            fprintf(fp, "#");
-            at(i).print(fp);
-            fprintf(fp, "%s\n\n", at(i).name().c_str());
-        }
-    }
-    fclose(fp);
-    return 0;
-}
-
-int ApiGen::genEncoderHeader(const std::string &filename)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-
-    printHeader(fp);
-    std::string classname = m_basename + "_encoder_context_t";
-
-    fprintf(fp, "\n#ifndef GUARD_%s\n", classname.c_str());
-    fprintf(fp, "#define GUARD_%s\n\n", classname.c_str());
-
-    fprintf(fp, "#include \"IOStream.h\"\n");
-    fprintf(fp, "#include \"%s_%s_context.h\"\n\n\n", m_basename.c_str(), sideString(CLIENT_SIDE));
-
-    for (size_t i = 0; i < m_encoderHeaders.size(); i++) {
-        fprintf(fp, "#include %s\n", m_encoderHeaders[i].c_str());
-    }
-    fprintf(fp, "\n");
-
-    fprintf(fp, "struct %s : public %s_%s_context_t {\n\n",
-            classname.c_str(), m_basename.c_str(), sideString(CLIENT_SIDE));
-    fprintf(fp, "\tIOStream *m_stream;\n\n");
-
-    fprintf(fp, "\t%s(IOStream *stream);\n\n", classname.c_str());
-    fprintf(fp, "\n};\n\n");
-
-    fprintf(fp,"extern \"C\" {\n");
-
-    for (size_t i = 0; i < size(); i++) {
-        fprintf(fp, "\t");
-        at(i).print(fp, false, "_enc", /* classname + "::" */"", "void *self");
-        fprintf(fp, ";\n");
-    }
-    fprintf(fp, "};\n");
-    fprintf(fp, "#endif");
-
-    fclose(fp);
-    return 0;
-}
-
-// Format the byte length expression for a given variable into a user-provided buffer
-// If the variable type is not a pointer, this is simply its size as a decimal constant
-// If the variable is a pointer, this will be an expression provided by the .attrib file
-// through the 'len' attribute.
-//
-// Returns 1 if the variable is a pointer, 0 otherwise
-//
-static int getVarEncodingSizeExpression(Var&  var, EntryPoint* e, char* buff, size_t bufflen)
-{
-    int ret = 0;
-    if (!var.isPointer()) {
-        snprintf(buff, bufflen, "%u", (unsigned int) var.type()->bytes());
-    } else {
-        ret = 1;
-        const char* lenExpr = var.lenExpression().c_str();
-        const char* varname = var.name().c_str();
-        if (e != NULL && lenExpr[0] == '\0') {
-            fprintf(stderr, "%s: data len is undefined for '%s'\n",
-                    e->name().c_str(), varname);
-        }
-        if (var.nullAllowed()) {
-            snprintf(buff, bufflen, "((%s != NULL) ? %s : 0)", varname, lenExpr);
-        } else {
-            snprintf(buff, bufflen, "%s", lenExpr);
-        }
-    }
-    return ret;
-}
-
-static int writeVarEncodingSize(Var& var, FILE* fp)
-{
-    int ret = 0;
-    if (!var.isPointer()) {
-        fprintf(fp, "%u", (unsigned int) var.type()->bytes());
-    } else {
-        ret = 1;
-        fprintf(fp, "__size_%s", var.name().c_str());
-    }
-    return ret;
-}
-
-
-
-static void writeVarEncodingExpression(Var& var, FILE* fp)
-{
-    const char* varname = var.name().c_str();
-
-    if (var.isPointer()) {
-        // encode a pointer header
-        fprintf(fp, "\t*(unsigned int *)(ptr) = __size_%s; ptr += 4;\n", varname);
-
-        Var::PointerDir dir = var.pointerDir();
-        if (dir == Var::POINTER_INOUT || dir == Var::POINTER_IN) {
-            if (var.nullAllowed()) {
-                fprintf(fp, "\tif (%s != NULL) ", varname);
-            } else {
-                fprintf(fp, "\t");
-            }
-
-            if (var.packExpression().size() != 0) {
-                fprintf(fp, "%s;", var.packExpression().c_str());
-            } else {
-                fprintf(fp, "memcpy(ptr, %s, __size_%s);",
-                        varname, varname);
-            }
-
-            fprintf(fp, "ptr += __size_%s;\n", varname);
-        }
-    } else {
-        // encode a non pointer variable
-        if (!var.isVoid()) {
-            fprintf(fp, "\t*(%s *) (ptr) = %s; ptr += %u;\n",
-                    var.type()->name().c_str(), varname,
-                    (uint) var.type()->bytes());
-        }
-    }
-}
-
-#if WITH_LARGE_SUPPORT
-static void writeVarLargeEncodingExpression(Var& var, FILE* fp)
-{
-    const char* varname = var.name().c_str();
-
-    fprintf(fp, "\tstream->writeFully(&__size_%s,4);\n", varname);
-    if (var.nullAllowed()) {
-        fprintf(fp, "\tif (%s != NULL) ", varname);
-    } else {
-        fprintf(fp, "\t");
-    }
-    if (var.writeExpression() != "") {
-        fprintf(fp, "%s", var.writeExpression().c_str());
-    } else {
-        fprintf(fp, "stream->writeFully(%s, __size_%s)", varname, varname);
-    }
-    fprintf(fp, ";\n");
-}
-#endif /* WITH_LARGE_SUPPORT */
-
-int ApiGen::genEncoderImpl(const std::string &filename)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-
-    printHeader(fp);
-    fprintf(fp, "\n\n#include <string.h>\n");
-    fprintf(fp, "#include \"%s_opcodes.h\"\n\n", m_basename.c_str());
-    fprintf(fp, "#include \"%s_enc.h\"\n\n\n", m_basename.c_str());
-    fprintf(fp, "#include <stdio.h>\n");
-    std::string classname = m_basename + "_encoder_context_t";
-    size_t n = size();
-
-    // unsupport printout
-    fprintf(fp, "static void enc_unsupported()\n{\n\tLOGE(\"Function is unsupported\\n\");\n}\n\n");
-
-    // entry points;
-    for (size_t i = 0; i < n; i++) {
-        EntryPoint *e = &at(i);
-
-        if (e->unsupported()) continue;
-
-
-        e->print(fp, true, "_enc", /* classname + "::" */"", "void *self");
-        fprintf(fp, "{\n");
-
-//      fprintf(fp, "\n\tDBG(\">>>> %s\\n\");\n", e->name().c_str());
-        fprintf(fp, "\n\t%s *ctx = (%s *)self;\n",
-                classname.c_str(),
-                classname.c_str());
-        fprintf(fp, "\tIOStream *stream = ctx->m_stream;\n\n");
-        VarsArray & evars = e->vars();
-        size_t  maxvars = evars.size();
-        size_t  j;
-
-        char    buff[256];
-
-        // Define the __size_XXX variables that contain the size of data
-        // associated with pointers.
-        for (j = 0; j < maxvars; j++) {
-            Var& var = evars[j];
-
-            if (!var.isPointer())
-                continue;
-
-            const char* varname = var.name().c_str();
-            fprintf(fp, "\tconst unsigned int __size_%s = ", varname);
-
-            getVarEncodingSizeExpression(var, e, buff, sizeof(buff));
-            fprintf(fp, "%s;\n", buff);
-        }
-
-#if WITH_LARGE_SUPPORT
-        // We need to take care of 'isLarge' variable in a special way
-        // Anything before an isLarge variable can be packed into a single
-        // buffer, which is then commited. Each isLarge variable is a pointer
-        // to data that can be written to directly through the pipe, which
-        // will be instant when using a QEMU pipe
-
-        size_t  nvars   = 0;
-        size_t  npointers = 0;
-
-        // First, compute the total size, 8 bytes for the opcode + payload size
-        fprintf(fp, "\t unsigned char *ptr;\n");
-        fprintf(fp, "\t const size_t packetSize = 8");
-
-        for (j = 0; j < maxvars; j++) {
-            fprintf(fp, " + ");
-            npointers += writeVarEncodingSize(evars[j], fp);
-        }
-        if (npointers > 0) {
-            fprintf(fp, " + %u*4", npointers);
-        }
-        fprintf(fp, ";\n");
-
-        // We need to divide the packet into fragments. Each fragment contains
-        // either copied arguments to a temporary buffer, or direct writes for
-        // large variables.
-        //
-        // The first fragment must also contain the opcode+payload_size
-        //
-        nvars = 0;
-        while (nvars < maxvars || maxvars == 0) {
-
-            // Skip over non-large fields
-            for (j = nvars; j < maxvars; j++) {
-                if (evars[j].isLarge())
-                    break;
-            }
-
-            // Write a fragment if needed.
-            if (nvars == 0 || j > nvars) {
-                const char* plus = "";
-
-                if (nvars == 0 && j == maxvars) {
-                    // Simple shortcut for the common case where we don't have large variables;
-                    fprintf(fp, "\tptr = stream->alloc(packetSize);\n");
-
-                } else {
-                    // allocate buffer from the stream until the first large variable
-                    fprintf(fp, "\tptr = stream->alloc(");
-                    plus = "";
-
-                    if (nvars == 0) {
-                        fprintf(fp,"8"); plus = " + ";
-                    }
-                    if (j > nvars) {
-                        npointers = 0;
-                        for (j = nvars; j < maxvars && !evars[j].isLarge(); j++) {
-                            fprintf(fp, "%s", plus); plus = " + ";
-                            npointers += writeVarEncodingSize(evars[j], fp);
-                        }
-                        if (npointers > 0) {
-                            fprintf(fp, "%s%u*4", plus, npointers); plus = " + ";
-                        }
-                    }
-                    fprintf(fp,");\n");
-                }
-
-                // encode packet header if needed.
-                if (nvars == 0) {
-                    fprintf(fp, "\t*(unsigned int *)(ptr) = OP_%s; ptr += 4;\n", e->name().c_str());
-                    fprintf(fp, "\t*(unsigned int *)(ptr) = (unsigned int) packetSize; ptr += 4;\n");
-                }
-
-                if (maxvars == 0)
-                    break;
-
-                // encode non-large fields in this fragment
-                for (j = nvars; j < maxvars && !evars[j].isLarge(); j++) {
-                    writeVarEncodingExpression(evars[j],fp);
-                }
-
-                // Ensure the fragment is commited if it is followed by a large variable
-                if (j < maxvars) {
-                    fprintf(fp, "\tstream->flush();\n");
-                }
-            }
-
-            // If we have one or more large variables, write them directly.
-            // As size + data
-            for ( ; j < maxvars && evars[j].isLarge(); j++) {
-                writeVarLargeEncodingExpression(evars[j], fp);
-            }
-
-            nvars = j;
-        }
-
-#else /* !WITH_LARGE_SUPPORT */
-        size_t nvars = evars.size();
-        size_t npointers = 0;
-        fprintf(fp, "\t const size_t packetSize = 8");
-        for (size_t j = 0; j < nvars; j++) {
-            npointers += getVarEncodingSizeExpression(evars[j],e,buff,sizeof(buff));
-            fprintf(fp, " + %s", buff);
-        }
-        fprintf(fp, " + %u * 4;\n", (unsigned int) npointers);
-
-        // allocate buffer from the stream;
-        fprintf(fp, "\t unsigned char *ptr = stream->alloc(packetSize);\n\n");
-
-        // encode into the stream;
-        fprintf(fp, "\t*(unsigned int *)(ptr) = OP_%s; ptr += 4;\n",  e->name().c_str());
-        fprintf(fp, "\t*(unsigned int *)(ptr) = (unsigned int) packetSize;  ptr += 4;\n\n");
-
-        // out variables
-        for (size_t j = 0; j < nvars; j++) {
-            writeVarEncodingExpression(evars[j], fp);
-        }
-#endif /* !WITH_LARGE_SUPPORT */
-
-        // in variables;
-        for (size_t j = 0; j < nvars; j++) {
-            if (evars[j].isPointer()) {
-                Var::PointerDir dir = evars[j].pointerDir();
-                if (dir == Var::POINTER_INOUT || dir == Var::POINTER_OUT) {
-                    const char* varname = evars[j].name().c_str();
-                    if (evars[j].nullAllowed()) {
-                        fprintf(fp, "\tif (%s != NULL) ",varname);
-                    } else {
-                        fprintf(fp, "\t");
-                    }
-                    fprintf(fp, "stream->readback(%s, __size_%s);\n",
-                            varname, varname);
-                }
-            }
-        }
-//XXX       fprintf(fp, "\n\tDBG(\"<<<< %s\\n\");\n", e->name().c_str());
-        // todo - return value for pointers
-        if (e->retval().isPointer()) {
-            fprintf(stderr, "WARNING: %s : return value of pointer is unsupported\n",
-                    e->name().c_str());
-            fprintf(fp, "\t return NULL;\n");
-        } else if (e->retval().type()->name() != "void") {
-            fprintf(fp, "\n\t%s retval;\n", e->retval().type()->name().c_str());
-            fprintf(fp, "\tstream->readback(&retval, %u);\n",(uint) e->retval().type()->bytes());
-            fprintf(fp, "\treturn retval;\n");
-        }
-        fprintf(fp, "}\n\n");
-    }
-
-    // constructor
-    fprintf(fp, "%s::%s(IOStream *stream)\n{\n", classname.c_str(), classname.c_str());
-    fprintf(fp, "\tm_stream = stream;\n\n");
-
-    for (size_t i = 0; i < n; i++) {
-        EntryPoint *e = &at(i);
-        if (e->unsupported()) {
-            fprintf(fp, "\tset_%s((%s_%s_proc_t)(enc_unsupported));\n", e->name().c_str(), e->name().c_str(), sideString(CLIENT_SIDE));
-        } else {
-            fprintf(fp, "\tset_%s(%s_enc);\n", e->name().c_str(), e->name().c_str());
-        }
-        /**
-           if (e->unsupsported()) {
-           fprintf(fp, "\tmemcpy((void *)(&%s), (const void *)(&enc_unsupported), sizeof(%s));\n",
-           e->name().c_str(),
-           e->name().c_str());
-           } else {
-           fprintf(fp, "\t%s = %s_enc;\n", e->name().c_str(), e->name().c_str());
-           }
-        **/
-    }
-    fprintf(fp, "}\n\n");
-
-    fclose(fp);
-    return 0;
-}
-
-
-int ApiGen::genDecoderHeader(const std::string &filename)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-
-    printHeader(fp);
-    std::string classname = m_basename + "_decoder_context_t";
-
-    fprintf(fp, "\n#ifndef GUARD_%s\n", classname.c_str());
-    fprintf(fp, "#define GUARD_%s\n\n", classname.c_str());
-
-    fprintf(fp, "#include \"IOStream.h\" \n");
-    fprintf(fp, "#include \"%s_%s_context.h\"\n\n\n", m_basename.c_str(), sideString(SERVER_SIDE));
-
-    for (size_t i = 0; i < m_decoderHeaders.size(); i++) {
-        fprintf(fp, "#include %s\n", m_decoderHeaders[i].c_str());
-    }
-    fprintf(fp, "\n");
-
-    fprintf(fp, "struct %s : public %s_%s_context_t {\n\n",
-            classname.c_str(), m_basename.c_str(), sideString(SERVER_SIDE));
-    fprintf(fp, "\tsize_t decode(void *buf, size_t bufsize, IOStream *stream);\n");
-    fprintf(fp, "\n};\n\n");
-    fprintf(fp, "#endif\n");
-
-    fclose(fp);
-    return 0;
-}
-
-int ApiGen::genContextImpl(const std::string &filename, SideType side)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-    printHeader(fp);
-
-    std::string classname = m_basename + "_" + sideString(side) + "_context_t";
-    size_t n = size();
-    fprintf(fp, "\n\n#include <string.h>\n");
-    fprintf(fp, "#include \"%s_%s_context.h\"\n\n\n", m_basename.c_str(), sideString(side));
-    fprintf(fp, "#include <stdio.h>\n\n");
-
-    // init function;
-    fprintf(fp, "int %s::initDispatchByName(void *(*getProc)(const char *, void *userData), void *userData)\n{\n", classname.c_str());
-    fprintf(fp, "\tvoid *ptr;\n\n");
-    for (size_t i = 0; i < n; i++) {
-        EntryPoint *e = &at(i);
-        fprintf(fp, "\tptr = getProc(\"%s\", userData); set_%s((%s_%s_proc_t)ptr);\n",
-                e->name().c_str(),
-                e->name().c_str(),
-                e->name().c_str(),
-                sideString(side));
-
-    }
-    fprintf(fp, "\treturn 0;\n");
-    fprintf(fp, "}\n\n");
-    fclose(fp);
-    return 0;
-}
-
-int ApiGen::genDecoderImpl(const std::string &filename)
-{
-    FILE *fp = fopen(filename.c_str(), "wt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-
-    printHeader(fp);
-
-    std::string classname = m_basename + "_decoder_context_t";
-
-    size_t n = size();
-
-    fprintf(fp, "\n\n#include <string.h>\n");
-    fprintf(fp, "#include \"%s_opcodes.h\"\n\n", m_basename.c_str());
-    fprintf(fp, "#include \"%s_dec.h\"\n\n\n", m_basename.c_str());
-    fprintf(fp, "#include <stdio.h>\n\n");
-
-    // decoder switch;
-    fprintf(fp, "size_t %s::decode(void *buf, size_t len, IOStream *stream)\n{\n", classname.c_str());
-    fprintf(fp,
-            "                           \n\
-\tsize_t pos = 0;\n\
-\tif (len < 8) return pos; \n\
-\tunsigned char *ptr = (unsigned char *)buf;\n\
-\tbool unknownOpcode = false;  \n\
-#ifdef CHECK_GL_ERROR \n\
-\tchar lastCall[256] = {0}; \n\
-#endif \n\
-\twhile ((len - pos >= 8) && !unknownOpcode) {   \n\
-\t\tvoid *params[%u]; \n\
-\t\tint opcode = *(int *)ptr;   \n\
-\t\tunsigned int packetLen = *(int *)(ptr + 4);\n\
-\t\tif (len - pos < packetLen)  return pos; \n\
-\t\tswitch(opcode) {\n",
-            (uint) m_maxEntryPointsParams);
-
-    for (size_t f = 0; f < n; f++) {
-        enum Pass_t { PASS_TmpBuffAlloc = 0, PASS_MemAlloc, PASS_DebugPrint, PASS_FunctionCall, PASS_Epilog, PASS_LAST };
-        EntryPoint *e = &at(f);
-
-        // construct a printout string;
-        std::string printString = "";
-        for (size_t i = 0; i < e->vars().size(); i++) {
-            Var *v = &e->vars()[i];
-            if (!v->isVoid())  printString += (v->isPointer() ? "%p(%u)" : v->type()->printFormat()) + " ";
-        }
-        printString += "";
-        // TODO - add for return value;
-
-        fprintf(fp, "\t\t\tcase OP_%s:\n", e->name().c_str());
-        fprintf(fp, "\t\t\t{\n");
-
-        bool totalTmpBuffExist = false;
-        std::string totalTmpBuffOffset = "0";
-        std::string *tmpBufOffset = new std::string[e->vars().size()];
-
-        // construct retval type string
-        std::string retvalType;
-        if (!e->retval().isVoid()) {
-            retvalType = e->retval().type()->name();
-        }
-
-        for (int pass = PASS_TmpBuffAlloc; pass < PASS_LAST; pass++) {
-            if (pass == PASS_FunctionCall && !e->retval().isVoid() && !e->retval().isPointer()) {
-                fprintf(fp, "\t\t\t*(%s *)(&tmpBuf[%s]) = ", retvalType.c_str(),
-                        totalTmpBuffOffset.c_str());
-            }
-
-
-            if (pass == PASS_FunctionCall) {
-                fprintf(fp, "\t\t\tthis->%s(", e->name().c_str());
-                if (e->customDecoder()) {
-                    fprintf(fp, "this"); // add a context to the call
-                }
-            } else if (pass == PASS_DebugPrint) {
-                fprintf(fp, "#ifdef DEBUG_PRINTOUT\n");
-                fprintf(fp, "\t\t\tfprintf(stderr,\"%s: %s(%s)\\n\"", m_basename.c_str(), e->name().c_str(), printString.c_str());
-                if (e->vars().size() > 0 && !e->vars()[0].isVoid()) fprintf(fp, ",");
-            }
-
-            std::string varoffset = "8"; // skip the header
-            VarsArray & evars = e->vars();
-            // allocate memory for out pointers;
-            for (size_t j = 0; j < evars.size(); j++) {
-                Var *v = & evars[j];
-                if (!v->isVoid()) {
-                    if ((pass == PASS_FunctionCall) && (j != 0 || e->customDecoder())) fprintf(fp, ", ");
-                    if (pass == PASS_DebugPrint && j != 0) fprintf(fp, ", ");
-
-                    if (!v->isPointer()) {
-                        if (pass == PASS_FunctionCall || pass == PASS_DebugPrint) {
-                            fprintf(fp, "*(%s *)(ptr + %s)", v->type()->name().c_str(), varoffset.c_str());
-                        }
-                        varoffset += " + " + toString(v->type()->bytes());
-                    } else {
-                        if (v->pointerDir() == Var::POINTER_IN || v->pointerDir() == Var::POINTER_INOUT) {
-                            if (pass == PASS_MemAlloc && v->pointerDir() == Var::POINTER_INOUT) {
-                                fprintf(fp, "\t\t\tsize_t tmpPtr%uSize = (size_t)*(unsigned int *)(ptr + %s);\n",
-                                        (uint) j, varoffset.c_str());
-                                fprintf(fp, "unsigned char *tmpPtr%u = (ptr + %s + 4);\n",
-                                        (uint) j, varoffset.c_str());
-                            }
-                            if (pass == PASS_FunctionCall) {
-                                if (v->nullAllowed()) {
-                                    fprintf(fp, "*((unsigned int *)(ptr + %s)) == 0 ? NULL : (%s)(ptr + %s + 4)",
-                                            varoffset.c_str(), v->type()->name().c_str(), varoffset.c_str());
-                                } else {
-                                    fprintf(fp, "(%s)(ptr + %s + 4)",
-                                            v->type()->name().c_str(), varoffset.c_str());
-                                }
-                            } else if (pass == PASS_DebugPrint) {
-                                fprintf(fp, "(%s)(ptr + %s + 4), *(unsigned int *)(ptr + %s)",
-                                        v->type()->name().c_str(), varoffset.c_str(),
-                                        varoffset.c_str());
-                            }
-                            varoffset += " + 4 + *(size_t *)(ptr +" + varoffset + ")";
-                        } else { // out pointer;
-                            if (pass == PASS_TmpBuffAlloc) {
-                                fprintf(fp, "\t\t\tsize_t tmpPtr%uSize = (size_t)*(unsigned int *)(ptr + %s);\n",
-                                        (uint) j, varoffset.c_str());
-                                if (!totalTmpBuffExist) {
-                                    fprintf(fp, "\t\t\tsize_t totalTmpSize = tmpPtr%uSize;\n", (uint)j);
-                                } else {
-                                    fprintf(fp, "\t\t\ttotalTmpSize += tmpPtr%uSize;\n", (uint)j);
-                                }
-                                tmpBufOffset[j] = totalTmpBuffOffset;
-                                char tmpPtrName[16];
-                                sprintf(tmpPtrName," + tmpPtr%uSize", (uint)j);
-                                totalTmpBuffOffset += std::string(tmpPtrName);
-                                totalTmpBuffExist = true;
-                            } else if (pass == PASS_MemAlloc) {
-                                fprintf(fp, "\t\t\tunsigned char *tmpPtr%u = &tmpBuf[%s];\n",
-                                        (uint)j, tmpBufOffset[j].c_str());
-                            } else if (pass == PASS_FunctionCall) {
-                                if (v->nullAllowed()) {
-                                    fprintf(fp, "tmpPtr%uSize == 0 ? NULL : (%s)(tmpPtr%u)",
-                                            (uint) j, v->type()->name().c_str(), (uint) j);
-                                } else {
-                                    fprintf(fp, "(%s)(tmpPtr%u)", v->type()->name().c_str(), (uint) j);
-                                }
-                            } else if (pass == PASS_DebugPrint) {
-                                fprintf(fp, "(%s)(tmpPtr%u), *(unsigned int *)(ptr + %s)",
-                                        v->type()->name().c_str(), (uint) j,
-                                        varoffset.c_str());
-                            }
-                            varoffset += " + 4";
-                        }
-                    }
-                }
-            }
-
-            if (pass == PASS_FunctionCall || pass == PASS_DebugPrint) fprintf(fp, ");\n");
-            if (pass == PASS_DebugPrint) fprintf(fp, "#endif\n");
-
-            if (pass == PASS_TmpBuffAlloc) {
-                if (!e->retval().isVoid() && !e->retval().isPointer()) {
-                    if (!totalTmpBuffExist)
-                        fprintf(fp, "\t\t\tsize_t totalTmpSize = sizeof(%s);\n", retvalType.c_str());
-                    else
-                        fprintf(fp, "\t\t\ttotalTmpSize += sizeof(%s);\n", retvalType.c_str());
-
-                    totalTmpBuffExist = true;
-                }
-                if (totalTmpBuffExist) {
-                    fprintf(fp, "\t\t\tunsigned char *tmpBuf = stream->alloc(totalTmpSize);\n");
-                }
-            }
-
-            if (pass == PASS_Epilog) {
-                // send back out pointers data as well as retval
-                if (totalTmpBuffExist) {
-                    fprintf(fp, "\t\t\tstream->flush();\n");
-                }
-
-                fprintf(fp, "\t\t\tpos += *(int *)(ptr + 4);\n");
-                fprintf(fp, "\t\t\tptr += *(int *)(ptr + 4);\n");
-            }
-
-        } // pass;
-        fprintf(fp, "\t\t\t}\n");
-        fprintf(fp, "#ifdef CHECK_GL_ERROR\n");
-        fprintf(fp, "\t\t\tsprintf(lastCall, \"%s\");\n", e->name().c_str());
-        fprintf(fp, "#endif\n");
-        fprintf(fp, "\t\t\tbreak;\n");
-
-        delete [] tmpBufOffset;
-    }
-    fprintf(fp, "\t\t\tdefault:\n");
-    fprintf(fp, "\t\t\t\tunknownOpcode = true;\n");
-    fprintf(fp, "\t\t} //switch\n");
-    if (strstr(m_basename.c_str(), "gl")) {
-        fprintf(fp, "#ifdef CHECK_GL_ERROR\n");
-        fprintf(fp, "\tint err = this->glGetError();\n");
-        fprintf(fp, "\tif (err) fprintf(stderr, \"%s Error: 0x%%X in %%s\\n\", err, lastCall);\n", m_basename.c_str());
-        fprintf(fp, "#endif\n");
-    }
-    fprintf(fp, "\t} // while\n");
-    fprintf(fp, "\treturn pos;\n");
-    fprintf(fp, "}\n");
-
-    fclose(fp);
-    return 0;
-}
-
-int ApiGen::readSpec(const std::string & filename)
-{
-    FILE *specfp = fopen(filename.c_str(), "rt");
-    if (specfp == NULL) {
-        return -1;
-    }
-
-    char line[1000];
-    unsigned int lc = 0;
-    while (fgets(line, sizeof(line), specfp) != NULL) {
-        lc++;
-        EntryPoint ref;
-        if (ref.parse(lc, std::string(line))) {
-            push_back(ref);
-            updateMaxEntryPointsParams(ref.vars().size());
-        }
-    }
-    fclose(specfp);
-    return 0;
-}
-
-int ApiGen::readAttributes(const std::string & attribFilename)
-{
-    enum { ST_NAME, ST_ATT } state;
-
-    FILE *fp = fopen(attribFilename.c_str(), "rt");
-    if (fp == NULL) {
-        perror(attribFilename.c_str());
-        return -1;
-    }
-    char buf[1000];
-
-    state = ST_NAME;
-    EntryPoint *currentEntry = NULL;
-    size_t lc = 0;
-    bool globalAttributes = false;
-    while (fgets(buf, sizeof(buf), fp) != NULL) {
-        lc++;
-        std::string line(buf);
-        if (line.size() == 0) continue; // could that happen?
-
-        if (line.at(0) == '#') continue; // comment
-
-        size_t first = line.find_first_not_of(" \t\n");
-        if (state == ST_ATT && (first == std::string::npos || first == 0)) state = ST_NAME;
-
-        line = trim(line);
-        if (line.size() == 0 || line.at(0) == '#') continue;
-
-        switch(state) {
-        case ST_NAME:
-            if (line == "GLOBAL") {
-                globalAttributes = true;
-            } else {
-                globalAttributes = false;
-                currentEntry = findEntryByName(line);
-                if (currentEntry == NULL) {
-                    fprintf(stderr, "WARNING: %u: attribute of non existant entry point %s\n", (unsigned int)lc, line.c_str());
-                }
-            }
-            state = ST_ATT;
-            break;
-        case ST_ATT:
-            if (globalAttributes) {
-                setGlobalAttribute(line, lc);
-            } else  if (currentEntry != NULL) {
-                currentEntry->setAttribute(line, lc);
-            }
-            break;
-        }
-    }
-    return 0;
-}
-
-
-int ApiGen::setGlobalAttribute(const std::string & line, size_t lc)
-{
-    size_t pos = 0;
-    size_t last;
-    std::string token = getNextToken(line, pos, &last, WHITESPACE);
-    pos = last;
-
-    if (token == "base_opcode") {
-        std::string str = getNextToken(line, pos, &last, WHITESPACE);
-        if (str.size() == 0) {
-            fprintf(stderr, "line %u: missing value for base_opcode\n", (uint) lc);
-        } else {
-            setBaseOpcode(atoi(str.c_str()));
-        }
-    } else  if (token == "encoder_headers") {
-        std::string str = getNextToken(line, pos, &last, WHITESPACE);
-        pos = last;
-        while (str.size() != 0) {
-            encoderHeaders().push_back(str);
-            str = getNextToken(line, pos, &last, WHITESPACE);
-            pos = last;
-        }
-    } else if (token == "client_context_headers") {
-        std::string str = getNextToken(line, pos, &last, WHITESPACE);
-        pos = last;
-        while (str.size() != 0) {
-            clientContextHeaders().push_back(str);
-            str = getNextToken(line, pos, &last, WHITESPACE);
-            pos = last;
-        }
-    } else if (token == "server_context_headers") {
-        std::string str = getNextToken(line, pos, &last, WHITESPACE);
-        pos = last;
-        while (str.size() != 0) {
-            serverContextHeaders().push_back(str);
-            str = getNextToken(line, pos, &last, WHITESPACE);
-            pos = last;
-        }
-    } else if (token == "decoder_headers") {
-        std::string str = getNextToken(line, pos, &last, WHITESPACE);
-        pos = last;
-        while (str.size() != 0) {
-            decoderHeaders().push_back(str);
-            str = getNextToken(line, pos, &last, WHITESPACE);
-            pos = last;
-        }
-    }
-    else {
-        fprintf(stderr, "WARNING: %u : unknown global attribute %s\n", (unsigned int)lc, line.c_str());
-    }
-
-    return 0;
-}
-
diff --git a/tools/emulator/opengl/host/tools/emugen/ApiGen.h b/tools/emulator/opengl/host/tools/emugen/ApiGen.h
deleted file mode 100644
index 1627ef6..0000000
--- a/tools/emulator/opengl/host/tools/emugen/ApiGen.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __API_GEN_H_
-#define __API_GEN_H_
-
-#include <vector>
-#include <string.h>
-#include "EntryPoint.h"
-
-
-class ApiGen : public std::vector<EntryPoint> {
-
-public:
-    typedef std::vector<std::string> StringVec;
-    typedef enum { CLIENT_SIDE, SERVER_SIDE, WRAPPER_SIDE } SideType;
-
-    ApiGen(const std::string & basename) :
-        m_basename(basename),
-        m_maxEntryPointsParams(0),
-        m_baseOpcode(0)
-    { }
-    virtual ~ApiGen() {}
-    int readSpec(const std::string & filename);
-    int readAttributes(const std::string & attribFilename);
-    size_t maxEntryPointsParams() {  return m_maxEntryPointsParams; }
-    void updateMaxEntryPointsParams(size_t val) {
-        if (m_maxEntryPointsParams == 0 || val > m_maxEntryPointsParams) m_maxEntryPointsParams = val;
-    }
-    int baseOpcode() { return m_baseOpcode; }
-    void setBaseOpcode(int base) { m_baseOpcode = base; }
-
-    const char *sideString(SideType side) {
-        const char *retval;
-        switch(side) {
-        case CLIENT_SIDE:
-            retval = "client";
-            break;
-        case SERVER_SIDE:
-            retval = "server";
-            break;
-        case WRAPPER_SIDE:
-            retval = "wrapper";
-            break;
-        }
-        return retval;
-    }
-
-    StringVec & clientContextHeaders() { return m_clientContextHeaders; }
-    StringVec & encoderHeaders() { return m_encoderHeaders; }
-    StringVec & serverContextHeaders() { return m_serverContextHeaders; }
-    StringVec & decoderHeaders() { return m_decoderHeaders; }
-
-    EntryPoint * findEntryByName(const std::string & name);
-    int genOpcodes(const std::string &filename);
-    int genAttributesTemplate(const std::string &filename);
-    int genProcTypes(const std::string &filename, SideType side);
-    int genFuncTable(const std::string &filename, SideType side);
-
-    int genContext(const std::string &filename, SideType side);
-    int genContextImpl(const std::string &filename, SideType side);
-
-    int genEntryPoints(const std::string &filename, SideType side);
-
-    int genEncoderHeader(const std::string &filename);
-    int genEncoderImpl(const std::string &filename);
-
-    int genDecoderHeader(const std::string &filename);
-    int genDecoderImpl(const std::string &filename);
-
-protected:
-    virtual void printHeader(FILE *fp) const;
-    std::string m_basename;
-    StringVec m_clientContextHeaders;
-    StringVec m_encoderHeaders;
-    StringVec m_serverContextHeaders;
-    StringVec m_decoderHeaders;
-    size_t m_maxEntryPointsParams; // record the maximum number of parameters in the entry points;
-    int m_baseOpcode;
-    int setGlobalAttribute(const std::string & line, size_t lc);
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/tools/emugen/EntryPoint.cpp b/tools/emulator/opengl/host/tools/emugen/EntryPoint.cpp
deleted file mode 100644
index 43b904b..0000000
--- a/tools/emulator/opengl/host/tools/emugen/EntryPoint.cpp
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <stdio.h>
-#include "EntryPoint.h"
-#include <string>
-#include "TypeFactory.h"
-#include "strUtils.h"
-#include <sstream>
-
-
-EntryPoint::EntryPoint()
-{
-    reset();
-}
-
-EntryPoint::~EntryPoint()
-{
-}
-
-void EntryPoint::reset()
-{
-    m_unsupported = false;
-    m_customDecoder = false;
-    m_notApi = false;
-    m_vars.empty();
-}
-
-bool parseTypeField(const std::string & f, std::string *vartype, std::string *varname)
-{
-    size_t pos = 0, last;
-    bool done = false;
-
-
-    *vartype = "";
-    if (varname != NULL) *varname = "";
-
-    enum { ST_TYPE, ST_NAME, ST_END } state = ST_TYPE;
-
-    while(!done) {
-
-        std::string str = getNextToken(f, pos, &last, WHITESPACE);
-        if (str.size() == 0) break;
-
-        switch(state) {
-        case ST_TYPE:
-            if (str == "const") {
-                pos = last;
-                *vartype = "const ";
-            } else {
-                // must be a type name;
-                *vartype += str;
-                state = ST_NAME;
-                pos = last;
-            }
-            break;
-        case ST_NAME:
-            if (str.size() == 0) {
-                done = true;
-            } else if (str == "*") {
-                (*vartype) += "*";
-                pos = last;
-            } else if (varname == NULL) {
-                done = true;
-            } else {
-                while (str[0] == '*') {
-                    (*vartype) += "*";
-                    str[0] = ' ';
-                    str = trim(str);
-                }
-                *varname = str;
-                done = true;
-            }
-            break;
-        case ST_END:
-            break;
-        }
-    }
-    return true;
-}
-
-// return true for valid line (need to get into the entry points list)
-bool EntryPoint::parse(unsigned int lc, const std::string & str)
-{
-    size_t pos, last;
-    std::string field;
-
-    reset();
-    std::string linestr = trim(str);
-
-    if (linestr.size() == 0) return false;
-    if (linestr.at(0) == '#') return false;
-
-    // skip PREFIX
-    field = getNextToken(linestr, 0, &last, "(");
-    pos = last + 1;
-    // return type
-    field = getNextToken(linestr, pos, &last, ",)");
-    std::string retTypeName;
-    if (!parseTypeField(field, &retTypeName, NULL)) {
-        fprintf(stderr, "line: %d: Parsing error in field <%s>\n", lc, field.c_str());
-        return false;
-    }
-    pos = last + 1;
-    const VarType *theType = TypeFactory::instance()->getVarTypeByName(retTypeName);
-    if (theType->name() == "UNKNOWN") {
-        fprintf(stderr, "UNKNOWN retval: %s\n", linestr.c_str());
-    }
-
-    m_retval.init(std::string(""), theType, std::string(""), Var::POINTER_OUT, std::string(""), std::string(""));
-
-    // function name
-    m_name = getNextToken(linestr, pos, &last, ",)");
-    pos = last + 1;
-
-    // parameters;
-    int nvars = 0;
-    while (pos < linestr.size() - 1) {
-        field = getNextToken(linestr, pos, &last, ",)");
-        std::string vartype, varname;
-        if (!parseTypeField(field, &vartype, &varname)) {
-            fprintf(stderr, "line: %d: Parsing error in field <%s>\n", lc, field.c_str());
-            return false;
-        }
-        nvars++;
-        const VarType *v = TypeFactory::instance()->getVarTypeByName(vartype);
-        if (v->id() == 0) {
-            fprintf(stderr, "%d: Unknown type: %s\n", lc, vartype.c_str());
-        } else {
-            if (varname == "" &&
-                !(v->name() == "void" && !v->isPointer())) {
-                std::ostringstream oss;
-                oss << "var" << nvars;
-                varname = oss.str();
-            }
-
-            m_vars.push_back(Var(varname, v, std::string(""), Var::POINTER_IN, "", ""));
-        }
-        pos = last + 1;
-    }
-    return true;
-}
-
-void EntryPoint::print(FILE *fp, bool newline,
-                       const std::string & name_suffix,
-                       const std::string & name_prefix,
-                       const std::string & ctx_param ) const
-{
-    fprintf(fp, "%s %s%s%s(",
-            m_retval.type()->name().c_str(),
-            name_prefix.c_str(),
-            m_name.c_str(),
-            name_suffix.c_str());
-
-    if (ctx_param != "") fprintf(fp, "%s ", ctx_param.c_str());
-
-    for (size_t i = 0; i < m_vars.size(); i++) {
-        if (m_vars[i].isVoid()) continue;
-        if (i != 0 || ctx_param != "") fprintf(fp, ", ");
-        fprintf(fp, "%s %s", m_vars[i].type()->name().c_str(),
-                m_vars[i].name().c_str());
-    }
-    fprintf(fp, ")%s", newline? "\n" : "");
-}
-
-Var * EntryPoint::var(const std::string & name)
-{
-    Var *v = NULL;
-    for (size_t i = 0; i < m_vars.size(); i++) {
-        if (m_vars[i].name() == name) {
-            v = &m_vars[i];
-            break;
-        }
-    }
-    return v;
-}
-
-bool EntryPoint::hasPointers()
-{
-    bool pointers = false;
-    if (m_retval.isPointer()) pointers = true;
-    if (!pointers) {
-        for (size_t i = 0; i < m_vars.size(); i++) {
-            if (m_vars[i].isPointer()) {
-                pointers = true;
-                break;
-            }
-        }
-    }
-    return pointers;
-}
-
-int EntryPoint::setAttribute(const std::string &line, size_t lc)
-{
-    size_t pos = 0;
-    size_t last;
-    std::string token = getNextToken(line, 0, &last, WHITESPACE);
-
-    if (token == "len") {
-        pos = last;
-        std::string varname = getNextToken(line, pos, &last, WHITESPACE);
-
-        if (varname.size() == 0) {
-            fprintf(stderr, "ERROR: %u: Missing variable name in 'len' attribute\n", (unsigned int)lc);
-            return -1;
-        }
-        Var * v = var(varname);
-        if (v == NULL) {
-            fprintf(stderr, "ERROR: %u: variable %s is not a parameter of %s\n",
-                    (unsigned int)lc, varname.c_str(), name().c_str());
-            return -2;
-        }
-        // set the size expression into var
-        pos = last;
-        v->setLenExpression(line.substr(pos));
-    } else if (token == "param_check") {
-        pos = last;
-        std::string varname = getNextToken(line, pos, &last, WHITESPACE);
-
-        if (varname.size() == 0) {
-            fprintf(stderr, "ERROR: %u: Missing variable name in 'param_check' attribute\n", (unsigned int)lc);
-            return -1;
-        }
-        Var * v = var(varname);
-        if (v == NULL) {
-            fprintf(stderr, "ERROR: %u: variable %s is not a parameter of %s\n",
-                    (unsigned int)lc, varname.c_str(), name().c_str());
-            return -2;
-        }
-        // set the size expression into var
-        pos = last;
-        v->setParamCheckExpression(line.substr(pos));
-
-    } else if (token == "dir") {
-        pos = last;
-        std::string varname = getNextToken(line, pos, &last, WHITESPACE);
-        if (varname.size() == 0) {
-            fprintf(stderr, "ERROR: %u: Missing variable name in 'dir' attribute\n", (unsigned int)lc);
-            return -1;
-        }
-        Var * v = var(varname);
-        if (v == NULL) {
-            fprintf(stderr, "ERROR: %u: variable %s is not a parameter of %s\n",
-                    (unsigned int)lc, varname.c_str(), name().c_str());
-            return -2;
-        }
-
-        pos = last;
-        std::string pointerDirStr = getNextToken(line, pos, &last, WHITESPACE);
-        if (pointerDirStr.size() == 0) {
-            fprintf(stderr, "ERROR: %u: missing pointer directions\n", (unsigned int)lc);
-            return -3;
-        }
-
-        if (pointerDirStr == "out") {
-            v->setPointerDir(Var::POINTER_OUT);
-        } else if (pointerDirStr == "inout") {
-            v->setPointerDir(Var::POINTER_INOUT);
-        } else if (pointerDirStr == "in") {
-            v->setPointerDir(Var::POINTER_IN);
-        } else {
-            fprintf(stderr, "ERROR: %u: unknow pointer direction %s\n", (unsigned int)lc, pointerDirStr.c_str());
-        }
-    } else if (token == "var_flag") {
-        pos = last;
-        std::string varname = getNextToken(line, pos, &last, WHITESPACE);
-        if (varname.size() == 0) {
-            fprintf(stderr, "ERROR: %u: Missing variable name in 'var_flag' attribute\n", (unsigned int)lc);
-            return -1;
-        }
-        Var * v = var(varname);
-        if (v == NULL) {
-            fprintf(stderr, "ERROR: %u: variable %s is not a parameter of %s\n",
-                    (unsigned int)lc, varname.c_str(), name().c_str());
-            return -2;
-        }
-        int count = 0;
-        for (;;) {
-            pos = last;
-            std::string flag = getNextToken(line, pos, &last, WHITESPACE);
-            if (flag.size() == 0) {
-                if (count == 0) {
-                    fprintf(stderr, "ERROR: %u: missing flag\n", (unsigned int) lc);
-                    return -3;
-                }
-                break;
-            }
-            count++;
-
-            if (flag == "nullAllowed") {
-                if (v->isPointer()) {
-                    v->setNullAllowed(true);
-                } else {
-                    fprintf(stderr, "WARNING: %u: setting nullAllowed for non-pointer variable %s\n",
-                            (unsigned int) lc, v->name().c_str());
-                }
-            } else if (flag == "isLarge") {
-                if (v->isPointer()) {
-                    v->setIsLarge(true);
-                } else {
-                    fprintf(stderr, "WARNING: %u: setting isLarge flag for a non-pointer variable %s\n",
-                            (unsigned int) lc, v->name().c_str());
-                }
-            } else {
-                fprintf(stderr, "WARNING: %u: unknow flag %s\n", (unsigned int)lc, flag.c_str());
-            }
-        }
-    } else if (token == "custom_pack") {
-        pos = last;
-        std::string varname = getNextToken(line, pos, &last, WHITESPACE);
-
-        if (varname.size() == 0) {
-            fprintf(stderr, "ERROR: %u: Missing variable name in 'custom_pack' attribute\n", (unsigned int)lc);
-            return -1;
-        }
-        Var * v = var(varname);
-        if (v == NULL) {
-            fprintf(stderr, "ERROR: %u: variable %s is not a parameter of %s\n",
-                    (unsigned int)lc, varname.c_str(), name().c_str());
-            return -2;
-        }
-        // set the size expression into var
-        pos = last;
-        v->setPackExpression(line.substr(pos));
-    } else if (token == "custom_write") {
-        pos = last;
-        std::string varname = getNextToken(line, pos, &last, WHITESPACE);
-
-        if (varname.size() == 0) {
-            fprintf(stderr, "ERROR: %u: Missing variable name in 'custom_write' attribute\n", (unsigned int)lc);
-            return -1;
-        }
-        Var * v = var(varname);
-        if (v == NULL) {
-            fprintf(stderr, "ERROR: %u: variable %s is not a parameter of %s\n",
-                    (unsigned int)lc, varname.c_str(), name().c_str());
-            return -2;
-        }
-        // set the size expression into var
-        pos = last;
-        v->setWriteExpression(line.substr(pos));
-    } else if (token == "flag") {
-        pos = last;
-        std::string flag = getNextToken(line, pos, &last, WHITESPACE);
-        if (flag.size() == 0) {
-            fprintf(stderr, "ERROR: %u: missing flag\n", (unsigned int) lc);
-            return -4;
-        }
-
-        if (flag == "unsupported") {
-            setUnsupported(true);
-        } else if (flag == "custom_decoder") {
-            setCustomDecoder(true);
-        } else if (flag == "not_api") {
-            setNotApi(true);
-        } else {
-            fprintf(stderr, "WARNING: %u: unknown flag %s\n", (unsigned int)lc, flag.c_str());
-        }
-    } else {
-        fprintf(stderr, "WARNING: %u: unknown attribute %s\n", (unsigned int)lc, token.c_str());
-    }
-
-    return 0;
-}
diff --git a/tools/emulator/opengl/host/tools/emugen/EntryPoint.h b/tools/emulator/opengl/host/tools/emugen/EntryPoint.h
deleted file mode 100644
index 77b8a7f..0000000
--- a/tools/emulator/opengl/host/tools/emugen/EntryPoint.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __EntryPoint__H__
-#define __EntryPoint__H__
-
-#include <string>
-#include <vector>
-#include <stdio.h>
-
-#include "Var.h"
-
-//---------------------------------------------------
-
-typedef std::vector<Var> VarsArray;
-
-class EntryPoint {
-public:
-    EntryPoint();
-    virtual ~EntryPoint();
-    bool parse(unsigned int lc, const std::string & str);
-    void reset(); // reset the class to empty;
-    void print(FILE *fp = stdout, bool newline = true,
-               const std::string & name_suffix = std::string(""),
-               const std::string & name_prefix = std::string(""),
-               const std::string & ctx_param = std::string("")) const;
-    const std::string & name() const { return m_name; }
-    VarsArray & vars() { return m_vars; }
-    Var & retval() { return m_retval; }
-    Var * var(const std::string & name);
-    bool hasPointers();
-    bool unsupported() const { return m_unsupported; }
-    void setUnsupported(bool state) { m_unsupported = state; }
-    bool customDecoder() { return m_customDecoder; }
-    void setCustomDecoder(bool state) { m_customDecoder = state; }
-    bool notApi() const { return m_notApi; }
-    void setNotApi(bool state) { m_notApi = state; }
-    int setAttribute(const std::string &line, size_t lc);
-
-private:
-    enum { PR_RETVAL = 0, PR_NAME, PR_VARS, PR_DONE } prState;
-    std::string m_name;
-    Var m_retval;
-    VarsArray m_vars;
-    bool m_unsupported;
-    bool m_customDecoder;
-    bool m_notApi;
-
-    void err(unsigned int lc, const char *msg) {
-        fprintf(stderr, "line %d: %s\n", lc, msg);
-    }
-};
-
-
-#endif
diff --git a/tools/emulator/opengl/host/tools/emugen/README b/tools/emulator/opengl/host/tools/emugen/README
deleted file mode 100644
index 5df11a3..0000000
--- a/tools/emulator/opengl/host/tools/emugen/README
+++ /dev/null
@@ -1,332 +0,0 @@
-Introduction:
--------------
-The emugen tool is a tool to generate a wire protocol implementation
-based on provided API.  The tool generates c++ encoder code that takes
-API calls and encodes them into the wire and decoder code that decodes
-the wire stream and calls server matching API.
-The emugen tool includes additional functionality that enables to
-generate an wrapper library. The wrapper library provides entry points
-for the specified API, where each entry routes the call via a dispatch
-table. The dispatch table may be initialized as required by a specific application.
-
-The following paragraphs includes the following:
-    * Wire Protocol Description
-    * Input files description & format
-    * Generated code description.
-
-
-Note: In this document, the caller is referred to as Encoder or Client
-and the callee is referred to as the Decoder or Server. These terms
-are used interchangeably by the context.
-
-
-
-Wire Protocol packet structure:
--------------------------------
-A general Encoder->Decoder packet is structured as following:
-struct Packet {
-	unsigned int opcode;
-	unsigned int packet_len;
-	… parameter 1
-	… parameter 2
-};
-A general Decoder->Encoder reply is expected to be received in the
-context of the ‘call’ that triggered it, thus it includes the reply
-data only, with no context headers. In precise term terms, a reply
-packet will look like:
-
-struct {
-	...// reply data
-};
-
-consider the following function call:
-int foo(int p1, short s1)
-will be encoded into :
-{
-	101, // foo opcode
-	14, // sizeof(opcode) + sizeof(packet_len) + sizeof(int) + sizeof(short)
-	p1, // 4 bytes
-	s1 // 4 bytes
-}
-
-Since ‘foo’ returns value, the caller is expected to read back the return packet from the server->client stream. The return value in this example is in thus the return packet is:
-{
-	int retval;
-}
-
-
-Pointer decoding:
-----------------
-The wire protocol also allows exchanging of pointer data
-(arrays). Pointers are defined with directions:
-
-	in : Data is sent from the caller to the calle
-	out: Data is sent from the callee to the caller
-	in_out: data is sent from the caller and return in place.
-
-‘in’ and ‘in_out’ encoded with their len:
-{
-	unsinged int pointer_data_len;
-	unsigned char data[pointer_data_len];… // pointer data
-}
-
-‘out’ pointers are encoded by data length only:
-{
-unsigned int pointer_data_len;
-}
-
-‘out’ and ‘in_out’ pointer’s data is returned in the return
-packet. For example, consider the following call:
-
-int foo(int n, int *ptr); // assume that ‘data’ is in_out pointer which contains ‘n’ ints
-
-The caller packet will have the following form:
-{
-	101, // foo opcode
-	xx, sizeof(opcode) + sizeof(datalen) + sizeof(int) + sizeof(unsigned int) + n * sizeof(int);
-	n, // the n parameter
-	n * sizeof(int), // size of the data in ptr
-	… // n* sizeof(int) bytes
-}
-
-The return packet is;
-{
-	…. // n * sizeof(int) bytes of data return in ptr
-	retval // sizeof(int) - the return value of the function;
-}
-
-Endianess
----------
-The Wire protocol is designed to impose minimum overhead on the client
-side. Thus, the data endianness that is sent across the wire is
-determined by the ‘client’ side. It is up to the server side to
-determine the client endianess and marshal the packets as required.
-
-
-
-Emugen input files - protocol specification
--------------------------------------------
-The protocol generated by emugen consists of two input files:
-
-1. basename.in - A sepcification of the protocol RPC procedures. This
-part of the specification is expected to be generated automatically
-from c/c++ header files or similar.
-
-‘basename’ is the basename for the protocol and will be used to prefix
-the files that are generated for this protocol.  A line in the .in
-file has the following format:
-
-[prefix](retvalType, FuncName, <param type> [param name],...)
-where 
-	retvalType - The function return value type
-	FuncName - function name
-	<param type> mandatory parameter type
-	[param name] - optional parameter name
-Examples:
-GL_ENTRY(void, glVertex1f, float v) 
-XXX(int *, foo, int n, float, short)
-XXX(void, glFlush, void)
-
-Note: Empty lines in the file are ignored. A line starts with # is a comment
-
-2. basename.attrib - Attributes information of the API. 
-This file includes additional flags, pointers datalen information and
-global attributes of the protocol. For uptodate format of the file,
-please refer to the specification file in the project source
-tree. The format of the .attrib file is described below.
-
-3. basename.types - Types information
-
-This files describes the types that are described by the API. A type
-is defined as follows:
-<type name> <size in bits> <print format string> <is a pointer? true|false>
-where:
-<type name> is the name of the type as described in the API
-<size in bits> 0, 8, 16, 32 sizes are accepted
-<print format string> a string to format the value of the type, as
-acceted by printf(3)
-<is pointer?> true or false string species whether the type should be
-treated as a pointer.
-
-example:
-GLint 32 %d false
-GLint* 32 %p true
-GLptr  32 %p true
-
-Encoder generated code files 
-----------------------------
-In order to generate the encoder files, one should run the ‘emugen’
-tool as follows:
-
-emugen -i <input directory> -E <encoder files output directory> <basename>
-where:
-	<input directory> containes the api specification files  (basename.in + basename.attrib)
-	<encoder directory> - a directory name to generate the encoder output files
-	basename - The basename for the api.
-
-Assuming the basename is ‘api’, The following files are generated:
-
-api_opcodes.h - defines the protocol opcodes. The first opcode value
-is 0, unless defined otherwise in the .attrib file
-
-api_entry.cpp - defines entry points for the functions that are
-defined by the protocol. this File also includes a function call
-‘setContextAccessor(void *(*f)()). This function should be used to
-provide a callback function that is used by the functions to access
-the encoder context. For example, such callback could fetch the
-context from a Thread Local Storage (TLS) location.
-
-api_client_proc.h - type defintions for the protocol procedures. 
-
-api_client_context.h - defines the client side dispatch table data
-structure that stores the encoding functions. This data structure also
-includes ‘accessors’ methods such that library user can override
-default entries for special case handling.
-
-api_client_context.cpp - defines an initialization function for
-dispatch table
-
-api_enc.h - This header file defines the encoder data strcuture. The
-encoder data structure inherits its functionality from the
-‘client_context’ class above and adds encoding and streaming
-functionality.
-
-api_enc.cpp - Encoder implementation. 
-
-Decoder generated files
------------------------
-In order to generate the decoder files, one should run the ‘emugen’
-tool as follows:
-emugen -i <input directory> -D <decoder files output directory> basename
-where:
-	<input directory> containes the api specification files  (basename.in + basename.attrib)
-	<decoder directory> - a directory name to generate the decoder output files
-	basename - The basename for the api.
-
-With resepct to the example above, Emugen will generate the following
-files:
-
-api_opcodes.h - Protocol opcodes
-
-api_server_proc.h - type definitions for the server side procedures
-
-api_server_context.h - dispatch table the decoder functions
-
-api_server_context.cpp - dispatch table initialization function
-api_dec.h - Decoder header file
-
-api_dec.cpp - Decoder implementation. In addtion, this file includes
-an intiailization function that uses a user provided callback to
-initialize the API server implementation. An example for such
-initialization is loading a set of functions from a shared library
-module.
-
-Wrapper generated files
------------------------
-In order to generate a wrapper library files, one should run the
-'emugen' tool as follows:
-
-emugen -i <input directory> -W <wrapper files output directory> basename
-where:
-	<input directory> containes the api specification files  (basename.in + basename.attrib)
-	<wrapper directory> - a directory name to generate the wrapper output files
-	basename - The basename for the api.
-
-With resepct to the example above, Emugen will generate the following
-files:
-
-api_wrapper_proc.h - type definitions for the wrapper procedures
-
-api_wrapper_context.h - dispatch table the wrapper functions
-
-api_wrapper_context.cpp - dispatch table initialization function
-api_wrapper_entry.cpp - entry points for the API
-
-
-.attrib file format description:
--------------------------------
-The .attrib file is an input file to emugen and is used to provide
- additional information that is required for the code generation.
-The file format is as follows:
-
-a line that starts with # is ignored (comment)
-a empty line just whitespace of (" " "\t" "\n") is ignored.
-
-The file is divided into 'sections', each describes a specific API
-function call. A section starts with the name of the function in
-column 0.
-
-A section that starts with the reserved word 'GLOBAL' provides global
-attributes.
-
-below are few sections examples:
-
-GLOBAL
-  encoder_headers string.h kuku.h
-
-glVertex3fv
-	len data (size)
-glTexImage2D
-       len pixels (pixels == NULL? 0 : (format_pixel_size(internalformat) * width * height * type_size(type)))
-
-
-Global section flags description:
-
-base_opcode
-    set the base opcode value for this api
-    format: base_opcode 100
-
-encoder_headers
-    a list of headers that will be included in the encoder header file
-    format: encoder_headers <stdio.h> "kuku.h"
-
-client_context_headers
-    a list of headers that will be included in the client context header file
-    format: client_context_headers <stdio.h> "kuku.h"
-
-decoder_headers
-    a list of headers that will be included in the decoder header file
-    format: decoder_headers <stdio.h> "kuku.h"
-
-server_context_headers
-    a list of headers that will be included in the server context header file
-    format: server_context_headers <stdio.h> "kuku.h"
-
-
-Entry point flags description:
-
- len
-	desciption : provide an expression to calcualte an expression data len
-	format: len <var name> <c expression that calcluates the data len>
-
-custom_pack
-	description: provide an expression to pack data into the stream.
-	format: custom_pack <var name> <c++ expression that pack data from var into the stream>
-	The stream is represented by a (unsigned char *)ptr. The expression may also refer
-	to other function parameters. In addition, the expression may refer to 'void *self' which
-	is the encoding context as provided by the caller.
-
- dir
-	description : set a pointer direction (in - for data that goes
-	to the codec, out from data that returns from the codec.
-     	format: dir <varname> <[in | out | inout]>
-
- var_flag 
- 	 description : set variable flags
- 	 format: var_flag <varname> < nullAllowed | isLarge | ... >
-
-        nullAllowed -> for pointer variables, indicates that NULL is a valid value
-        isLarge     -> for pointer variables, indicates that the data should be sent without an intermediate copy
-
- flag
-	description: set entry point flag; 
-	format: flag < unsupported | ... >
-	supported flags are:
-	unsupported - The encoder side implementation is pointed to "unsuppored reporting function". 
-	custom_decoder - The decoder is expected to be provided with
-		       	 custom implementation. The call to the
-		       	 deocder function includes a pointer to the
-		       	 context
-    not_api - the function is not native gl api
-
-
diff --git a/tools/emulator/opengl/host/tools/emugen/TypeFactory.cpp b/tools/emulator/opengl/host/tools/emugen/TypeFactory.cpp
deleted file mode 100644
index 8884225..0000000
--- a/tools/emulator/opengl/host/tools/emugen/TypeFactory.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "TypeFactory.h"
-#include "VarType.h"
-#include <string>
-#include <map>
-#include <stdio.h>
-#include <stdlib.h>
-#include "strUtils.h"
-
-
-TypeFactory * TypeFactory::m_instance = NULL;
-
-static Var0 g_var0;
-static Var8 g_var8;
-static Var16 g_var16;
-static Var32 g_var32;
-
-typedef std::map<std::string, VarType> TypeMap;
-static  TypeMap g_varMap;
-static bool g_initialized = false;
-static int g_typeId = 0;
-
-
-static VarConverter * getVarConverter(int size)
-{
-    VarConverter *v = NULL;
-
-    switch(size) {
-    case 0: v =  &g_var0; break;
-    case 8: v =  &g_var8; break;
-    case 16:    v =  &g_var16; break;
-    case 32:    v =  &g_var32; break;
-    }
-    return v;
-}
-
-#define ADD_TYPE(name, size, printformat,ispointer)                                           \
-    g_varMap.insert(std::pair<std::string, VarType>(name, VarType(g_typeId++, name, &g_var##size , printformat , ispointer)));
-
-void TypeFactory::initBaseTypes()
-{
-    g_initialized = true;
-    ADD_TYPE("UNKNOWN", 0, "0x%x", false);
-    ADD_TYPE("void", 0, "0x%x", false);
-    ADD_TYPE("char", 8, "%c", false);
-    ADD_TYPE("int", 32, "%d", false);
-    ADD_TYPE("float", 32, "%d", false);
-    ADD_TYPE("short", 16, "%d", false);
-}
-
-int TypeFactory::initFromFile(const std::string &filename)
-{
-    if (!g_initialized) {
-        initBaseTypes();
-    }
-
-    FILE *fp = fopen(filename.c_str(), "rt");
-    if (fp == NULL) {
-        perror(filename.c_str());
-        return -1;
-    }
-    char line[1000];
-    int lc = 0;
-    while(fgets(line, sizeof(line), fp) != NULL) {
-        lc++;
-        std::string str = trim(line);
-        if (str.size() == 0 || str.at(0) == '#') {
-            continue;
-        }
-        size_t pos = 0, last;
-        std::string name;
-        name = getNextToken(str, pos, &last, WHITESPACE);
-        if (name.size() == 0) {
-            fprintf(stderr, "Error: %d : missing type name\n", lc);
-            return -2;
-        }
-        pos = last + 1;
-        std::string size;
-        size = getNextToken(str, pos, &last, WHITESPACE);
-        if (size.size() == 0) {
-            fprintf(stderr, "Error: %d : missing type width\n", lc);
-            return -2;
-        }
-        pos = last + 1;
-        std::string printString;
-        printString = getNextToken(str, pos, &last, WHITESPACE);
-        if (printString.size() == 0) {
-            fprintf(stderr, "Error: %d : missing print-string\n", lc);
-            return -2;
-        }
-
-        pos = last + 1;
-        std::string pointerDef;
-        pointerDef = getNextToken(str, pos, &last, WHITESPACE);
-        if (pointerDef.size() == 0) {
-            fprintf(stderr, "Error: %d : missing ispointer definition\n", lc);
-            return -2;
-        }
-
-        bool isPointer=false;
-        if (std::string("true")==pointerDef)
-          isPointer = true;
-        else if (std::string("false")==pointerDef)
-          isPointer = false;
-        else
-        {
-          fprintf(stderr, "Error: %d : invalid isPointer definition, must be either \"true\" or \"false\"\n", lc);
-          return -2;
-        }
-
-        VarConverter *v = getVarConverter(atoi(size.c_str()));
-        if (v == NULL) {
-            fprintf(stderr, "Error: %d : unknown var width: %d\n", lc, atoi(size.c_str()));
-            return -1;
-        }
-
-        if (getVarTypeByName(name)->id() != 0) {
-            fprintf(stderr,
-                    "Warining: %d : type %s is already known, definition in line %d is taken\n",
-                    lc, name.c_str(), lc);
-        }
-        g_varMap.insert(std::pair<std::string, VarType>(name, VarType(g_typeId++, name, v ,printString,isPointer)));
-        std::string constName = "const " + name;
-        g_varMap.insert(std::pair<std::string, VarType>(constName, VarType(g_typeId++, constName, v ,printString,isPointer))); //add a const type
-    }
-    g_initialized = true;
-    return 0;
-}
-
-
-const VarType * TypeFactory::getVarTypeByName(const std::string & type)
-{
-    if (!g_initialized) {
-        initBaseTypes();
-    }
-    TypeMap::iterator i = g_varMap.find(type);
-    if (i == g_varMap.end()) {
-        i = g_varMap.find("UNKNOWN");
-    }
-    return &(i->second);
-}
-
diff --git a/tools/emulator/opengl/host/tools/emugen/TypeFactory.h b/tools/emulator/opengl/host/tools/emugen/TypeFactory.h
deleted file mode 100644
index deee2ca..0000000
--- a/tools/emulator/opengl/host/tools/emugen/TypeFactory.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __TYPE__FACTORY__H__
-#define __TYPE__FACTORY__H__
-
-#include <string>
-#include "VarType.h"
-
-class TypeFactory {
-public:
-    static TypeFactory *instance() {
-        if (m_instance == NULL) {
-            m_instance = new TypeFactory;
-        }
-        return m_instance;
-    }
-    const VarType * getVarTypeByName(const std::string &type);
-    int  initFromFile(const std::string &filename);
-private:
-    static TypeFactory *m_instance;
-    void initBaseTypes();
-    TypeFactory() {}
-};
-#endif
diff --git a/tools/emulator/opengl/host/tools/emugen/Var.h b/tools/emulator/opengl/host/tools/emugen/Var.h
deleted file mode 100644
index 322c66a..0000000
--- a/tools/emulator/opengl/host/tools/emugen/Var.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __VAR__H__
-#define __VAR__H__
-
-#include "VarType.h"
-#include <string>
-#include <stdio.h>
-
-class Var {
-public:
-    // pointer data direction - from the client point of view.
-    typedef enum { POINTER_OUT = 0x1, POINTER_IN = 0x2, POINTER_INOUT = 0x3 } PointerDir;
-    Var() :
-        m_name(""),
-        m_type(NULL),
-        m_lenExpression(""),
-        m_pointerDir(POINTER_IN),
-        m_nullAllowed(false),
-        m_isLarge(false),
-        m_packExpression(""),
-        m_writeExpression(""),
-        m_paramCheckExpression("")
-
-    {
-    }
-
-    Var(const std::string & name,
-        const VarType * vartype,
-        const std::string & lenExpression,
-        PointerDir dir,
-        const std::string &packExpression,
-        const std::string &writeExpression) :
-        m_name(name),
-        m_type(const_cast<VarType *>(vartype)),
-        m_lenExpression(lenExpression),
-        m_pointerDir(dir),
-        m_nullAllowed(false),
-        m_isLarge(false),
-        m_packExpression(packExpression),
-        m_writeExpression(writeExpression),
-	m_paramCheckExpression("")
-    {
-    }
-
-    void init(const std::string name, const VarType * vartype,
-              std::string lenExpression,
-              PointerDir dir,
-              std::string packExpression,
-              std::string writeExpression) {
-        m_name = name;
-        m_type = vartype;
-        m_lenExpression = lenExpression;
-        m_packExpression = packExpression;
-        m_writeExpression = writeExpression;
-        m_pointerDir = dir;
-        m_nullAllowed = false;
-        m_isLarge = false;
-
-    }
-
-    const std::string & name() const { return m_name; }
-    const VarType * type() const { return m_type; }
-    bool isPointer() const { return m_type->isPointer(); }
-    bool isVoid() const { return ((m_type->bytes() == 0) && (!m_type->isPointer())); }
-    const std::string & lenExpression() const { return m_lenExpression; }
-    const std::string & packExpression() const { return(m_packExpression); }
-    const std::string & writeExpression() const { return(m_writeExpression); }
-    const std::string & paramCheckExpression() const { return m_paramCheckExpression; }
-    void setLenExpression(const std::string & lenExpression) { m_lenExpression = lenExpression; }
-    void setPackExpression(const std::string & packExpression) { m_packExpression = packExpression; }
-    void setWriteExpression(const std::string & writeExpression) { m_writeExpression = writeExpression; }
-    void setParamCheckExpression(const std::string & paramCheckExpression) { m_paramCheckExpression = paramCheckExpression; }
-    void setPointerDir(PointerDir dir) { m_pointerDir = dir; }
-    PointerDir pointerDir() { return m_pointerDir; }
-    void setNullAllowed(bool state) { m_nullAllowed = state; }
-    void setIsLarge(bool state) { m_isLarge = state; }
-    bool nullAllowed() const { return m_nullAllowed; }
-    bool isLarge() const { return m_isLarge; }
-    void printType(FILE *fp) { fprintf(fp, "%s", m_type->name().c_str()); }
-    void printTypeName(FILE *fp) { printType(fp); fprintf(fp, " %s", m_name.c_str()); }
-
-private:
-    std::string m_name;
-    const VarType * m_type;
-    bool m_pointer; // is this variable a pointer;
-    std::string m_lenExpression; // an expression to calcualte a pointer data size
-    PointerDir m_pointerDir;
-    bool m_nullAllowed;
-    bool m_isLarge;
-    std::string m_packExpression; // an expression to pack data into the stream
-    std::string m_writeExpression; // an expression to write data into the stream
-    std::string m_paramCheckExpression; //an expression to check parameter value
-
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/tools/emugen/VarType.h b/tools/emulator/opengl/host/tools/emugen/VarType.h
deleted file mode 100644
index 41bb645..0000000
--- a/tools/emulator/opengl/host/tools/emugen/VarType.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef __VARTYPE__H__
-#define __VARTYPE__H__
-
-#include <string>
-
-class VarConverter {
-public:
-    VarConverter(size_t bytes) : m_bytes(bytes) {}
-    size_t bytes() const { return m_bytes; }
-private:
-    size_t m_bytes;
-};
-
-class Var8 : public VarConverter {
-public:
-    Var8() : VarConverter(1) {}
-};
-
-class Var16 : public VarConverter {
-public:
-    Var16() : VarConverter(2) {}
-};
-
-class Var32 : public VarConverter {
-public:
-    Var32() : VarConverter(4) {}
-};
-
-class Var0 : public VarConverter {
-public:
-    Var0() : VarConverter(0) {}
-};
-
-
-class VarType {
-public:
-    VarType() :
-        m_id(0), m_name("default_constructed"), m_converter(NULL), m_printFomrat("0x%x"), m_isPointer(false)
-    {
-    }
-
-    VarType(size_t id, const std::string & name, const VarConverter * converter, const std::string & printFormat , const bool isPointer) :
-        m_id(id), m_name(name), m_converter(const_cast<VarConverter *>(converter)), m_printFomrat(printFormat), m_isPointer(isPointer)
-    {
-    }
-
-    ~VarType()
-    {
-    }
-    const std::string & name() const { return m_name; }
-    const std::string & printFormat() const { return m_printFomrat; }
-    size_t bytes() const { return m_converter->bytes(); }
-    bool isPointer() const { return m_isPointer; }
-    size_t id() const { return m_id; }
-private:
-    size_t m_id;
-    std::string m_name;
-    VarConverter * m_converter;
-    std::string m_printFomrat;
-    bool m_isPointer;
-};
-
-#endif
diff --git a/tools/emulator/opengl/host/tools/emugen/errors.h b/tools/emulator/opengl/host/tools/emugen/errors.h
deleted file mode 100644
index d09c292..0000000
--- a/tools/emulator/opengl/host/tools/emugen/errors.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _ERRORS_H_
-#define _ERRORS_H_
-
-#define BAD_USAGE -1
-#define BAD_SPEC_FILE -2
-#define BAD_TYPES_FILE -3
-#define BAD_ATTRIBUTES_FILE -4
-
-#endif
diff --git a/tools/emulator/opengl/host/tools/emugen/main.cpp b/tools/emulator/opengl/host/tools/emugen/main.cpp
deleted file mode 100644
index 96377f2..0000000
--- a/tools/emulator/opengl/host/tools/emugen/main.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <stdio.h>
-#include <stdlib.h>
-#include "errors.h"
-#include "EntryPoint.h"
-#include "strUtils.h"
-#include "ApiGen.h"
-#include "TypeFactory.h"
-
-const std::string SPEC_EXTENSION = std::string(".in");
-const std::string ATTRIB_EXTENSION = std::string(".attrib");
-const std::string TYPES_EXTENTION = std::string(".types");
-
-
-void usage(const char *filename)
-{
-    fprintf(stderr, "Usage: %s [options] <base name>\n", filename);
-    fprintf(stderr, "\t-h: This message\n");
-    fprintf(stderr, "\t-E <dir>: generate encoder into dir\n");
-    fprintf(stderr, "\t-D <dir>: generate decoder into dir\n");
-    fprintf(stderr, "\t-i: input dir, local directory by default\n");
-    fprintf(stderr, "\t-T : generate attribute template into the input directory\n\t\tno other files are generated\n");
-    fprintf(stderr, "\t-W : generate wrapper into dir\n");
-}
-
-int main(int argc, char *argv[])
-{
-    std::string encoderDir = "";
-    std::string decoderDir = "";
-    std::string wrapperDir = "";
-    std::string inDir = ".";
-    bool generateAttributesTemplate = false;
-
-    int c;
-    while((c = getopt(argc, argv, "TE:D:i:hW:")) != -1) {
-        switch(c) {
-        case 'W':
-            wrapperDir = std::string(optarg);
-            break;
-        case 'T':
-            generateAttributesTemplate = true;
-            break;
-        case 'h':
-            usage(argv[0]);
-            exit(0);
-            break;
-        case 'E':
-            encoderDir = std::string(optarg);
-            break;
-        case 'D':
-            decoderDir = std::string(optarg);
-            break;
-        case 'i':
-            inDir = std::string(optarg);
-            break;
-        case ':':
-            fprintf(stderr, "Missing argument !!\n");
-            // fall through
-        default:
-            usage(argv[0]);
-            exit(0);
-        }
-    }
-
-    if (optind >= argc) {
-        fprintf(stderr, "Usage: %s [options] <base name> \n", argv[0]);
-        return BAD_USAGE;
-    }
-
-    if (encoderDir.size() == 0 &&
-        decoderDir.size() == 0 &&
-        generateAttributesTemplate == false &&
-        wrapperDir.size() == 0) {
-        fprintf(stderr, "No output specified - aborting\n");
-        return BAD_USAGE;
-    }
-
-    std::string baseName = std::string(argv[optind]);
-    ApiGen apiEntries(baseName);
-
-    // init types;
-    std::string typesFilename = inDir + "/" + baseName + TYPES_EXTENTION;
-
-    if (TypeFactory::instance()->initFromFile(typesFilename) < 0) {
-        fprintf(stderr, "missing or error reading types file: %s...ignored\n", typesFilename.c_str());
-    }
-
-    std::string filename = inDir + "/" + baseName + SPEC_EXTENSION;
-    if (apiEntries.readSpec(filename) < 0) {
-        perror(filename.c_str());
-        return BAD_SPEC_FILE;
-    }
-
-
-    if (generateAttributesTemplate) {
-        apiEntries.genAttributesTemplate(inDir + "/" + baseName + ATTRIB_EXTENSION);
-        exit(0);
-    }
-
-    std::string attribFileName = inDir + "/" + baseName + ATTRIB_EXTENSION;
-    if (apiEntries.readAttributes(attribFileName) < 0) {
-        perror(attribFileName.c_str());
-        fprintf(stderr, "failed to parse attributes\n");
-        exit(1);
-    }
-
-    if (encoderDir.size() != 0) {
-
-        apiEntries.genOpcodes(encoderDir + "/" + baseName + "_opcodes.h");
-        apiEntries.genContext(encoderDir + "/" + baseName + "_client_context.h", ApiGen::CLIENT_SIDE);
-        apiEntries.genContextImpl(encoderDir + "/" + baseName + "_client_context.cpp", ApiGen::CLIENT_SIDE);
-
-        apiEntries.genProcTypes(encoderDir + "/" + baseName + "_client_proc.h", ApiGen::CLIENT_SIDE);
-        apiEntries.genFuncTable(encoderDir + "/" + baseName + "_ftable.h", ApiGen::CLIENT_SIDE);
-
-        apiEntries.genEntryPoints(encoderDir + "/" + baseName + "_entry.cpp", ApiGen::CLIENT_SIDE);
-        apiEntries.genEncoderHeader(encoderDir + "/" + baseName + "_enc.h");
-        apiEntries.genEncoderImpl(encoderDir + "/" + baseName + "_enc.cpp");
-    }
-
-    if (decoderDir.size() != 0) {
-        apiEntries.genOpcodes(decoderDir + "/" + baseName + "_opcodes.h");
-        apiEntries.genProcTypes(decoderDir + "/" + baseName + "_server_proc.h", ApiGen::SERVER_SIDE);
-        apiEntries.genContext(decoderDir + "/" + baseName + "_server_context.h", ApiGen::SERVER_SIDE);
-        apiEntries.genContextImpl(decoderDir + "/" + baseName + "_server_context.cpp", ApiGen::SERVER_SIDE);
-        apiEntries.genDecoderHeader(decoderDir + "/" + baseName + "_dec.h");
-        apiEntries.genDecoderImpl(decoderDir + "/" + baseName + "_dec.cpp");
-    }
-
-    if (wrapperDir.size() != 0) {
-        apiEntries.genProcTypes(wrapperDir + "/" + baseName + "_wrapper_proc.h", ApiGen::WRAPPER_SIDE);
-        apiEntries.genContext(wrapperDir + "/" + baseName + "_wrapper_context.h", ApiGen::WRAPPER_SIDE);
-        apiEntries.genContextImpl(wrapperDir + "/" + baseName + "_wrapper_context.cpp", ApiGen::WRAPPER_SIDE);
-        apiEntries.genEntryPoints(wrapperDir + "/" + baseName + "_wrapper_entry.cpp", ApiGen::WRAPPER_SIDE);
-    }
-
-#ifdef DEBUG_DUMP
-    int withPointers = 0;
-    printf("%d functions found\n", int(apiEntries.size()));
-    for (int i = 0; i < apiEntries.size(); i++) {
-        if (apiEntries[i].hasPointers()) {
-            withPointers++;
-            apiEntries[i].print();
-        }
-    }
-    fprintf(stdout, "%d entries has poitners\n", withPointers);
-#endif
-
-}
-
diff --git a/tools/emulator/opengl/host/tools/emugen/strUtils.cpp b/tools/emulator/opengl/host/tools/emugen/strUtils.cpp
deleted file mode 100644
index 357054b..0000000
--- a/tools/emulator/opengl/host/tools/emugen/strUtils.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "strUtils.h"
-
-using namespace std;
-
-
-std::string getNextToken(const std::string & str, size_t pos, size_t * last, const std::string & delim)
-{
-    if (str.size() == 0 || pos >= str.size()) return "";
-
-    pos = str.find_first_not_of(WHITESPACE, pos);
-    if (pos == std::string::npos) return "";
-
-    *last = str.find_first_of(delim, pos);
-    if (*last == std::string::npos) *last = str.size();
-    std::string retval = str.substr(pos, *last - pos);
-    retval = trim(retval);
-    return retval;
-}
-
-
-std::string trim(const string & str)
-{
-  string result;
-  string::size_type start = str.find_first_not_of(WHITESPACE, 0);
-  string::size_type end = str.find_last_not_of(WHITESPACE);
-  if (start == string::npos || end == string::npos) {
-    result = string("");
-  } else {
-    result = str.substr(start, end - start + 1);
-  }
-  return result;
-}
-
-
diff --git a/tools/emulator/opengl/host/tools/emugen/strUtils.h b/tools/emulator/opengl/host/tools/emugen/strUtils.h
deleted file mode 100644
index 3fa0908..0000000
--- a/tools/emulator/opengl/host/tools/emugen/strUtils.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef STR_UTILS_H_
-#define STR_UTILS_H_
-
-#include <string>
-#include <sstream>
-
-#define WHITESPACE " \t\n"
-
-std::string trim(const std::string & str);
-std::string getNextToken(const std::string & str, size_t pos, size_t * last, const std::string & delim);
-template <class T> std::string inline toString(const T& t) {
-    std::stringstream ss;
-    ss << t;
-    return ss.str();
-
-}
-
-#endif
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/Android.mk b/tools/emulator/opengl/shared/OpenglCodecCommon/Android.mk
index 2f7da79..df9b39a 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/Android.mk
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/Android.mk
@@ -21,19 +21,3 @@
 $(call emugl-export,SHARED_LIBRARIES,libcutils libutils)
 $(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
 $(call emugl-end-module)
-
-### OpenglCodecCommon  host ##############################################
-$(call emugl-begin-host-static-library,libOpenglCodecCommon)
-
-LOCAL_SRC_FILES := $(commonSources)
-
-ifeq ($(HOST_OS),windows)
-    LOCAL_SRC_FILES += Win32PipeStream.cpp
-else
-    LOCAL_SRC_FILES += UnixStream.cpp
-endif
-
-$(call emugl-export,STATIC_LIBRARIES,libcutils)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-$(call emugl-end-module)
-
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/ErrorLog.h b/tools/emulator/opengl/shared/OpenglCodecCommon/ErrorLog.h
index 5e9c7b3..6f41fd7 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/ErrorLog.h
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/ErrorLog.h
@@ -18,9 +18,9 @@
 
 #if (HAVE_ANDROID_OS == 1)
 #    include <cutils/log.h>
-#    define ERR(...)    LOGE(__VA_ARGS__)
+#    define ERR(...)    ALOGE(__VA_ARGS__)
 #    ifdef EMUGL_DEBUG
-#        define DBG(...)    LOGD(__VA_ARGS__)
+#        define DBG(...)    ALOGD(__VA_ARGS__)
 #    else
 #        define DBG(...)    ((void)0)
 #    endif
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp b/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp
index c689f83..9795490 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.cpp
@@ -250,6 +250,11 @@
     return GL_NO_ERROR;
 }
 
+GLenum GLClientState::getActiveTextureUnit() const
+{
+    return GL_TEXTURE0 + (m_tex.activeUnit - &m_tex.unit[0]);
+}
+
 void GLClientState::enableTextureTarget(GLenum target)
 {
     switch (target) {
@@ -394,7 +399,7 @@
         if (texrec) {
             const TextureRec* end = m_tex.textures + m_tex.numTextures;
             memmove(texrec, texrec + 1,
-                    (end - texrec + 1) * sizeof(TextureRec));
+                    (end - texrec - 1) * sizeof(TextureRec));
             m_tex.numTextures--;
 
             for (TextureUnit* unit = m_tex.unit;
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.h b/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.h
index be66d68..c86329b 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.h
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/GLClientState.h
@@ -142,6 +142,7 @@
     // glActiveTexture(GL_TEXTURE0 + i)
     // Sets the active texture unit. Up to MAX_TEXTURE_UNITS are supported.
     GLenum setActiveTextureUnit(GLenum texture);
+    GLenum getActiveTextureUnit() const;
 
     // glEnable(GL_TEXTURE_(2D|EXTERNAL_OES))
     void enableTextureTarget(GLenum target);
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/GLErrorLog.h b/tools/emulator/opengl/shared/OpenglCodecCommon/GLErrorLog.h
index 3f30b22..5654aea 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/GLErrorLog.h
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/GLErrorLog.h
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #ifndef __GL_ERROR_LOG_H__
 #define __GL_ERROR_LOG_H__
 
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp b/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp
index ff48c9d..8504f7f 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.cpp
@@ -1,3 +1,19 @@
+/*
+* Copyright (C) 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include "GLSharedGroup.h"
 
 /**** BufferData ****/
@@ -53,6 +69,15 @@
         m_Indexes[index].appBase = 0;
     }
     m_Indexes[index].hostLocsPerElement = 1;
+    m_Indexes[index].flags = 0;
+    m_Indexes[index].samplerValue = 0;
+}
+
+void ProgramData::setIndexFlags(GLuint index, GLuint flags)
+{
+    if (index >= m_numIndexes)
+        return;
+    m_Indexes[index].flags |= flags;
 }
 
 GLuint ProgramData::getIndexForLocation(GLint location)
@@ -123,13 +148,77 @@
     return -1;
 }
 
+GLint ProgramData::getNextSamplerUniform(GLint index, GLint* val, GLenum* target)
+{
+    for (GLint i = index + 1; i >= 0 && i < (GLint)m_numIndexes; i++) {
+        if (m_Indexes[i].type == GL_SAMPLER_2D) {
+            if (val) *val = m_Indexes[i].samplerValue;
+            if (target) {
+                if (m_Indexes[i].flags & INDEX_FLAG_SAMPLER_EXTERNAL) {
+                    *target = GL_TEXTURE_EXTERNAL_OES;
+                } else {
+                    *target = GL_TEXTURE_2D;
+                }
+            }
+            return i;
+        }
+    }
+    return -1;
+}
+
+bool ProgramData::setSamplerUniform(GLint appLoc, GLint val, GLenum* target)
+{
+    for (GLuint i = 0; i < m_numIndexes; i++) {
+        GLint elemIndex = appLoc - m_Indexes[i].appBase;
+        if (elemIndex >= 0 && elemIndex < m_Indexes[i].size) {
+            if (m_Indexes[i].type == GL_TEXTURE_2D) {
+                m_Indexes[i].samplerValue = val;
+                if (target) {
+                    if (m_Indexes[i].flags & INDEX_FLAG_SAMPLER_EXTERNAL) {
+                        *target = GL_TEXTURE_EXTERNAL_OES;
+                    } else {
+                        *target = GL_TEXTURE_2D;
+                    }
+                }
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+bool ProgramData::attachShader(GLuint shader)
+{
+    size_t n = m_shaders.size();
+    for (size_t i = 0; i < n; i++) {
+        if (m_shaders[i] == shader) {
+            return false;
+        }
+    }
+    // AKA m_shaders.push_back(), but that has an ambiguous call to insertAt()
+    // due to the default parameters. This is the desired insertAt() overload.
+    m_shaders.insertAt(shader, m_shaders.size(), 1);
+    return true;
+}
+
+bool ProgramData::detachShader(GLuint shader)
+{
+    size_t n = m_shaders.size();
+    for (size_t i = 0; i < n; i++) {
+        if (m_shaders[i] == shader) {
+            m_shaders.removeAt(i);
+            return true;
+        }
+    }
+    return false;
+}
 
 /***** GLSharedGroup ****/
 
 GLSharedGroup::GLSharedGroup() :
     m_buffers(android::DefaultKeyedVector<GLuint, BufferData*>(NULL)),
     m_programs(android::DefaultKeyedVector<GLuint, ProgramData*>(NULL)),
-    m_shaders(android::List<GLuint>())
+    m_shaders(android::DefaultKeyedVector<GLuint, ShaderData*>(NULL))
 {
 }
 
@@ -217,13 +306,55 @@
     m_programs.removeItem(program); 
 }
 
-void GLSharedGroup::setProgramIndexInfo(GLuint program, GLuint index, GLint base, GLint size, GLenum type)
+void GLSharedGroup::attachShader(GLuint program, GLuint shader)
+{
+    android::AutoMutex _lock(m_lock);
+    ProgramData* programData = m_programs.valueFor(program);
+    ssize_t idx = m_shaders.indexOfKey(shader);
+    if (programData && idx >= 0) {
+        if (programData->attachShader(shader)) {
+            refShaderDataLocked(idx);
+        }
+    }
+}
+
+void GLSharedGroup::detachShader(GLuint program, GLuint shader)
+{
+    android::AutoMutex _lock(m_lock);
+    ProgramData* programData = m_programs.valueFor(program);
+    ssize_t idx = m_shaders.indexOfKey(shader);
+    if (programData && idx >= 0) {
+        if (programData->detachShader(shader)) {
+            unrefShaderDataLocked(idx);
+        }
+    }
+}
+
+void GLSharedGroup::setProgramIndexInfo(GLuint program, GLuint index, GLint base, GLint size, GLenum type, const char* name)
 {
     android::AutoMutex _lock(m_lock);
     ProgramData* pData = m_programs.valueFor(program);
     if (pData)
     {
         pData->setIndexInfo(index,base,size,type);
+
+        if (type == GL_SAMPLER_2D) {
+            size_t n = pData->getNumShaders();
+            for (size_t i = 0; i < n; i++) {
+                GLuint shaderId = pData->getShader(i);
+                ShaderData* shader = m_shaders.valueFor(shaderId);
+                if (!shader) continue;
+                ShaderData::StringList::iterator nameIter = shader->samplerExternalNames.begin();
+                ShaderData::StringList::iterator nameEnd  = shader->samplerExternalNames.end();
+                while (nameIter != nameEnd) {
+                    if (*nameIter == name) {
+                        pData->setIndexFlags(index, ProgramData::INDEX_FLAG_SAMPLER_EXTERNAL);
+                        break;
+                    }
+                    ++nameIter;
+                }
+            }
+        }
     }
 }
 
@@ -277,38 +408,62 @@
     return false;
 }
 
+GLint GLSharedGroup::getNextSamplerUniform(GLuint program, GLint index, GLint* val, GLenum* target) const
+{
+    android::AutoMutex _lock(m_lock);
+    ProgramData* pData = m_programs.valueFor(program);
+    return pData ? pData->getNextSamplerUniform(index, val, target) : -1;
+}
 
-void  GLSharedGroup::addShaderData(GLuint shader)
+bool GLSharedGroup::setSamplerUniform(GLuint program, GLint appLoc, GLint val, GLenum* target)
 {
     android::AutoMutex _lock(m_lock);
-    m_shaders.push_front(shader);
-    
+    ProgramData* pData = m_programs.valueFor(program);
+    return pData ? pData->setSamplerUniform(appLoc, val, target) : false;
 }
-bool  GLSharedGroup::isShader(GLuint shader)
+
+bool GLSharedGroup::addShaderData(GLuint shader)
 {
     android::AutoMutex _lock(m_lock);
-    android::List<GLuint>::iterator iter;
-    iter = m_shaders.begin();
-    while (iter!=m_shaders.end())
-    {
-        if (*iter==shader)
-            return true;
-        iter++;
-    }
-    return false;
-}
-void  GLSharedGroup::deleteShaderData(GLuint shader)
-{
-    android::AutoMutex _lock(m_lock);
-    android::List<GLuint>::iterator iter;
-    iter = m_shaders.begin();
-    while (iter!=m_shaders.end())
-    {
-        if (*iter==shader)
-        {
-            m_shaders.erase(iter);
-            return;
+    ShaderData* data = new ShaderData;
+    if (data) {
+        if (m_shaders.add(shader, data) < 0) {
+            delete data;
+            data = NULL;
         }
-        iter++;
+        data->refcount = 1;
+    }
+    return data != NULL;
+}
+
+ShaderData* GLSharedGroup::getShaderData(GLuint shader)
+{
+    android::AutoMutex _lock(m_lock);
+    return m_shaders.valueFor(shader);
+}
+
+void GLSharedGroup::unrefShaderData(GLuint shader)
+{
+    android::AutoMutex _lock(m_lock);
+    ssize_t idx = m_shaders.indexOfKey(shader);
+    if (idx >= 0) {
+        unrefShaderDataLocked(idx);
+    }
+}
+
+void GLSharedGroup::refShaderDataLocked(ssize_t shaderIdx)
+{
+    assert(shaderIdx >= 0 && shaderIdx <= m_shaders.size());
+    ShaderData* data = m_shaders.valueAt(shaderIdx);
+    data->refcount++;
+}
+
+void GLSharedGroup::unrefShaderDataLocked(ssize_t shaderIdx)
+{
+    assert(shaderIdx >= 0 && shaderIdx <= m_shaders.size());
+    ShaderData* data = m_shaders.valueAt(shaderIdx);
+    if (--data->refcount == 0) {
+        delete data;
+        m_shaders.removeItemsAt(shaderIdx);
     }
 }
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.h b/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.h
index 7104550..61b8f00 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.h
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/GLSharedGroup.h
@@ -31,8 +31,9 @@
 #include <stdlib.h>
 #include "ErrorLog.h"
 #include <utils/KeyedVector.h>
-#include <utils/threads.h>
 #include <utils/List.h>
+#include <utils/String8.h>
+#include <utils/threads.h>
 #include "FixedBuffer.h"
 #include "SmartPtr.h"
 
@@ -51,18 +52,28 @@
         GLenum type;
         GLint appBase;
         GLint hostLocsPerElement;
+        GLuint flags;
+        GLint samplerValue; // only set for sampler uniforms
     } IndexInfo;
 
     GLuint m_numIndexes;
     IndexInfo* m_Indexes;
     bool m_initialized;
     bool m_locShiftWAR;
+
+    android::Vector<GLuint> m_shaders;
+
 public:
+    enum {
+        INDEX_FLAG_SAMPLER_EXTERNAL = 0x00000001,
+    };
+
     ProgramData();
     void initProgramData(GLuint numIndexes);
     bool isInitialized();
     virtual ~ProgramData();
     void setIndexInfo(GLuint index, GLint base, GLint size, GLenum type);
+    void setIndexFlags(GLuint index, GLuint flags);
     GLuint getIndexForLocation(GLint location);
     GLenum getTypeForLocation(GLint location);
 
@@ -70,15 +81,32 @@
     void setupLocationShiftWAR();
     GLint locationWARHostToApp(GLint hostLoc, GLint arrIndex);
     GLint locationWARAppToHost(GLint appLoc);
-    
+
+    GLint getNextSamplerUniform(GLint index, GLint* val, GLenum* target);
+    bool setSamplerUniform(GLint appLoc, GLint val, GLenum* target);
+
+    bool attachShader(GLuint shader);
+    bool detachShader(GLuint shader);
+    size_t getNumShaders() const { return m_shaders.size(); }
+    GLuint getShader(size_t i) const { return m_shaders[i]; }
+};
+
+struct ShaderData {
+    typedef android::List<android::String8> StringList;
+    StringList samplerExternalNames;
+    int refcount;
 };
 
 class GLSharedGroup {
 private:
-    android::DefaultKeyedVector<GLuint, BufferData*>    m_buffers;
-    android::DefaultKeyedVector<GLuint, ProgramData*>    m_programs;
-    android::List<GLuint> m_shaders;
-    mutable android::Mutex       m_lock;
+    android::DefaultKeyedVector<GLuint, BufferData*> m_buffers;
+    android::DefaultKeyedVector<GLuint, ProgramData*> m_programs;
+    android::DefaultKeyedVector<GLuint, ShaderData*> m_shaders;
+    mutable android::Mutex m_lock;
+
+    void refShaderDataLocked(ssize_t shaderIdx);
+    void unrefShaderDataLocked(ssize_t shaderIdx);
+
 public:
     GLSharedGroup();
     ~GLSharedGroup();
@@ -92,18 +120,22 @@
     bool    isProgramInitialized(GLuint program);
     void    addProgramData(GLuint program); 
     void    initProgramData(GLuint program, GLuint numIndexes);
+    void    attachShader(GLuint program, GLuint shader);
+    void    detachShader(GLuint program, GLuint shader);
     void    deleteProgramData(GLuint program);
-    void    setProgramIndexInfo(GLuint program, GLuint index, GLint base, GLint size, GLenum type);
+    void    setProgramIndexInfo(GLuint program, GLuint index, GLint base, GLint size, GLenum type, const char* name);
     GLenum  getProgramUniformType(GLuint program, GLint location);
     void    setupLocationShiftWAR(GLuint program);
     GLint   locationWARHostToApp(GLuint program, GLint hostLoc, GLint arrIndex);
     GLint   locationWARAppToHost(GLuint program, GLint appLoc);
     bool    needUniformLocationWAR(GLuint program);
+    GLint   getNextSamplerUniform(GLuint program, GLint index, GLint* val, GLenum* target) const;
+    bool    setSamplerUniform(GLuint program, GLint appLoc, GLint val, GLenum* target);
 
-    void    addShaderData(GLuint shader);
-    bool    isShader(GLuint shader);
-    void    deleteShaderData(GLuint shader);
-
+    bool    addShaderData(GLuint shader);
+    // caller must hold a reference to the shader as long as it holds the pointer
+    ShaderData* getShaderData(GLuint shader);
+    void    unrefShaderData(GLuint shader);
 };
 
 typedef SmartPtr<GLSharedGroup> GLSharedGroupPtr; 
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/SocketStream.cpp b/tools/emulator/opengl/shared/OpenglCodecCommon/SocketStream.cpp
index ddc56d0..f7a2314 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/SocketStream.cpp
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/SocketStream.cpp
@@ -73,7 +73,7 @@
             m_buf = p;
             m_bufsize = allocSize;
         } else {
-            ERR("%s: realloc (%d) failed\n", __FUNCTION__, allocSize);
+            ERR("%s: realloc (%zu) failed\n", __FUNCTION__, allocSize);
             free(m_buf);
             m_buf = NULL;
             m_bufsize = 0;
diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/glUtils.cpp b/tools/emulator/opengl/shared/OpenglCodecCommon/glUtils.cpp
index ae70598..4b7fc89 100644
--- a/tools/emulator/opengl/shared/OpenglCodecCommon/glUtils.cpp
+++ b/tools/emulator/opengl/shared/OpenglCodecCommon/glUtils.cpp
@@ -81,6 +81,7 @@
 
     switch(param)
     {
+    case GL_DEPTH_TEST:
     case GL_DEPTH_FUNC:
     case GL_DEPTH_BITS:
     case GL_MAX_CLIP_PLANES:
diff --git a/tools/emulator/opengl/shared/OpenglOsUtils/Android.mk b/tools/emulator/opengl/shared/OpenglOsUtils/Android.mk
index 35da4cf..e7fd9e9 100644
--- a/tools/emulator/opengl/shared/OpenglOsUtils/Android.mk
+++ b/tools/emulator/opengl/shared/OpenglOsUtils/Android.mk
@@ -18,31 +18,3 @@
         osDynLibrary.cpp
 
 $(call emugl-end-module)
-
-
-### Host library ##############################################
-$(call emugl-begin-host-static-library,libOpenglOsUtils)
-
-    $(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-    LOCAL_SRC_FILES := osDynLibrary.cpp
-
-    ifeq ($(HOST_OS),windows)
-        LOCAL_SRC_FILES += \
-            osProcessWin.cpp \
-            osThreadWin.cpp
-
-        $(call emugl-export,LDLIBS,-lws2_32 -lpsapi)
-    else
-        LOCAL_SRC_FILES += \
-            osProcessUnix.cpp \
-            osThreadUnix.cpp
-
-        $(call emugl-export,LDLIBS,-ldl)
-    endif
-
-    ifeq ($(HOST_OS),linux)
-        $(call emugl-export,LDLIBS,-lpthread -lrt)
-    endif
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/shared/OpenglOsUtils/osDynLibrary.h b/tools/emulator/opengl/shared/OpenglOsUtils/osDynLibrary.h
index 5861b60..c83fbf3 100644
--- a/tools/emulator/opengl/shared/OpenglOsUtils/osDynLibrary.h
+++ b/tools/emulator/opengl/shared/OpenglOsUtils/osDynLibrary.h
@@ -45,4 +45,27 @@
 
 } // of namespace osUtils
 
+
+
+// Macro to compose emugl shared library name under various OS and bitness
+// eg.
+//     on x86_64, EMUGL_LIBNAME("foo") --> "lib64foo.so"
+
+#ifdef _WIN32
+#  define DLL_EXTENSION  "" // _WIN32 LoadLibrary only accept name w/o .dll extension
+#elif defined(__APPLE__)
+#  define DLL_EXTENSION  ".dylib"
+#else
+#  define DLL_EXTENSION  ".so"
+#endif
+
+#if defined(__x86_64__)
+#  define EMUGL_LIBNAME(name) "lib64" name DLL_EXTENSION
+#elif defined(__i386__)
+#  define EMUGL_LIBNAME(name) "lib" name DLL_EXTENSION
+#else
+/* This header is included by target w/o using EMUGL_LIBNAME().  Don't #error, leave it undefined */
+#endif
+
+
 #endif
diff --git a/tools/emulator/opengl/shared/OpenglOsUtils/osThreadUnix.cpp b/tools/emulator/opengl/shared/OpenglOsUtils/osThreadUnix.cpp
index 66611ee..d8879eb 100644
--- a/tools/emulator/opengl/shared/OpenglOsUtils/osThreadUnix.cpp
+++ b/tools/emulator/opengl/shared/OpenglOsUtils/osThreadUnix.cpp
@@ -80,14 +80,14 @@
 Thread::thread_main(void *p_arg)
 {
     Thread *self = (Thread *)p_arg;
-    void *ret = (void *)self->Main();
+    int ret = self->Main();
 
     pthread_mutex_lock(&self->m_lock);
     self->m_isRunning = false;
-    self->m_exitStatus = (int)ret;
+    self->m_exitStatus = ret;
     pthread_mutex_unlock(&self->m_lock);
 
-    return ret;
+    return (void*)ret;
 }
 
 } // of namespace osUtils
diff --git a/tools/emulator/opengl/system/GLESv1/gl.cpp b/tools/emulator/opengl/system/GLESv1/gl.cpp
index 07afade..8ecb504 100644
--- a/tools/emulator/opengl/system/GLESv1/gl.cpp
+++ b/tools/emulator/opengl/system/GLESv1/gl.cpp
@@ -1,10 +1,25 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include "EGLClientIface.h"
 #include "HostConnection.h"
 #include "GLEncoder.h"
 #include "GLES/gl.h"
 #include "GLES/glext.h"
 #include "ErrorLog.h"
-#include <private/ui/android_natives_priv.h>
 #include "gralloc_cb.h"
 #include "ThreadInfo.h"
 
@@ -23,12 +38,12 @@
 #define DEFINE_AND_VALIDATE_HOST_CONNECTION(ret) \
     HostConnection *hostCon = HostConnection::get(); \
     if (!hostCon) { \
-        LOGE("egl: Failed to get host connection\n"); \
+        ALOGE("egl: Failed to get host connection\n"); \
         return ret; \
     } \
     renderControl_encoder_context_t *rcEnc = hostCon->rcEncoder(); \
     if (!rcEnc) { \
-        LOGE("egl: Failed to get renderControl encoder context\n"); \
+        ALOGE("egl: Failed to get renderControl encoder context\n"); \
         return ret; \
     }
 
@@ -73,13 +88,9 @@
         return;
     }
 
-    GET_CONTEXT;
     DEFINE_AND_VALIDATE_HOST_CONNECTION();
-
-    ctx->override2DTextureTarget(target);
     rcEnc->rcBindRenderbuffer(rcEnc,
             ((cb_handle_t *)(native_buffer->handle))->hostHandle);
-    ctx->restore2DTextureTarget();
 
     return;
 }
diff --git a/tools/emulator/opengl/system/GLESv1_enc/Android.mk b/tools/emulator/opengl/system/GLESv1_enc/Android.mk
index 25c8c49..fd12395 100644
--- a/tools/emulator/opengl/system/GLESv1_enc/Android.mk
+++ b/tools/emulator/opengl/system/GLESv1_enc/Android.mk
@@ -7,9 +7,10 @@
 
 LOCAL_SRC_FILES := \
         GLEncoder.cpp \
-        GLEncoderUtils.cpp
-
-$(call emugl-gen-encoder,$(LOCAL_PATH),gl)
+        GLEncoderUtils.cpp \
+        gl_client_context.cpp \
+        gl_enc.cpp \
+        gl_entry.cpp
 
 $(call emugl-import,libOpenglCodecCommon)
 $(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
diff --git a/tools/emulator/opengl/system/GLESv1_enc/GLEncoder.cpp b/tools/emulator/opengl/system/GLESv1_enc/GLEncoder.cpp
index dc7c527..4414f24 100644
--- a/tools/emulator/opengl/system/GLESv1_enc/GLEncoder.cpp
+++ b/tools/emulator/opengl/system/GLESv1_enc/GLEncoder.cpp
@@ -16,7 +16,6 @@
 #include "GLEncoder.h"
 #include "glUtils.h"
 #include "FixedBuffer.h"
-#include <private/ui/android_natives_priv.h>
 #include <cutils/log.h>
 #include <assert.h>
 
@@ -30,14 +29,14 @@
 static GLubyte *gExtensionsString= (GLubyte *) ""; // no extensions at this point;
 
 #define SET_ERROR_IF(condition,err) if((condition)) {                            \
-        LOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
+        ALOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
         ctx->setError(err);                                    \
         return;                                                  \
     }
 
 
 #define RET_AND_SET_ERROR_IF(condition,err,ret) if((condition)) {                \
-        LOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
+        ALOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
         ctx->setError(err);                                    \
         return ret;                                              \
     }
@@ -258,7 +257,7 @@
 {
     GLEncoder *ctx = (GLEncoder *)self;
     ctx->m_glPixelStorei_enc(ctx, param, value);
-    LOG_ASSERT(ctx->m_state, "GLEncoder::s_glPixelStorei");
+    ALOG_ASSERT(ctx->m_state, "GLEncoder::s_glPixelStorei");
     ctx->m_state->setPixelStore(param, value);
 }
 
@@ -537,7 +536,7 @@
     }
 
     if (!has_immediate_arrays && !has_indirect_arrays) {
-        LOGE("glDrawElements: no data bound to the command - ignoring\n");
+        ALOGE("glDrawElements: no data bound to the command - ignoring\n");
         return;
     }
 
@@ -580,7 +579,7 @@
             }
             break;
         default:
-            LOGE("unsupported index buffer type %d\n", type);
+            ALOGE("unsupported index buffer type %d\n", type);
         }
         if (has_indirect_arrays || 1) {
             ctx->sendVertexData(minIndex, maxIndex - minIndex + 1);
@@ -588,12 +587,12 @@
                                       count * glSizeof(type));
             // XXX - OPTIMIZATION (see the other else branch) should be implemented
             if(!has_indirect_arrays) {
-                //LOGD("unoptimized drawelements !!!\n");
+                //ALOGD("unoptimized drawelements !!!\n");
             }
         } else {
             // we are all direct arrays and immidate mode index array -
             // rebuild the arrays and the index array;
-            LOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n");
+            ALOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n");
         }
     }
 }
@@ -605,7 +604,7 @@
     GLenum err;
 
     if ((err = state->setActiveTextureUnit(texture)) != GL_NO_ERROR) {
-        LOGE("%s:%s:%d GL error %#x\n", __FILE__, __FUNCTION__, __LINE__, err);
+        ALOGE("%s:%s:%d GL error %#x\n", __FILE__, __FUNCTION__, __LINE__, err);
         ctx->setError(err);
         return;
     }
@@ -621,7 +620,7 @@
 
     GLboolean firstUse;
     if ((err = state->bindTexture(target, texture, &firstUse)) != GL_NO_ERROR) {
-        LOGE("%s:%s:%d GL error %#x\n", __FILE__, __FUNCTION__, __LINE__, err);
+        ALOGE("%s:%s:%d GL error %#x\n", __FILE__, __FUNCTION__, __LINE__, err);
         ctx->setError(err);
         return;
     }
@@ -634,6 +633,7 @@
     GLenum priorityTarget = state->getPriorityEnabledTarget(GL_TEXTURE_2D);
 
     if (target == GL_TEXTURE_EXTERNAL_OES && firstUse) {
+        // set TEXTURE_EXTERNAL_OES default states which differ from TEXTURE_2D
         ctx->m_glBindTexture_enc(ctx, GL_TEXTURE_2D, texture);
         ctx->m_glTexParameteri_enc(ctx, GL_TEXTURE_2D,
                 GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -735,12 +735,20 @@
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
-    if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
-        ctx->override2DTextureTarget(target);
-        ctx->m_glGetTexParameteriv_enc(ctx, GL_TEXTURE_2D, pname, params);
-        ctx->restore2DTextureTarget();
-    } else {
-        ctx->m_glGetTexParameteriv_enc(ctx, target, pname, params);
+    switch (pname) {
+    case GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES:
+        *params = 1;
+        break;
+
+    default:
+        if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+            ctx->override2DTextureTarget(target);
+            ctx->m_glGetTexParameteriv_enc(ctx, GL_TEXTURE_2D, pname, params);
+            ctx->restore2DTextureTarget();
+        } else {
+            ctx->m_glGetTexParameteriv_enc(ctx, target, pname, params);
+        }
+        break;
     }
 }
 
@@ -759,12 +767,35 @@
     }
 }
 
+static bool isValidTextureExternalParam(GLenum pname, GLenum param)
+{
+    switch (pname) {
+    case GL_TEXTURE_MIN_FILTER:
+    case GL_TEXTURE_MAG_FILTER:
+        return param == GL_NEAREST || param == GL_LINEAR;
+
+    case GL_TEXTURE_WRAP_S:
+    case GL_TEXTURE_WRAP_T:
+        return param == GL_CLAMP_TO_EDGE;
+
+    case GL_GENERATE_MIPMAP:
+        return param == GL_FALSE;
+
+    default:
+        return true;
+    }
+}
+
 void GLEncoder::s_glTexParameterf(void* self,
         GLenum target, GLenum pname, GLfloat param)
 {
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)param)),
+            GL_INVALID_ENUM);
+
     if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
         ctx->override2DTextureTarget(target);
         ctx->m_glTexParameterf_enc(ctx, GL_TEXTURE_2D, pname, param);
@@ -780,6 +811,10 @@
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)params[0])),
+            GL_INVALID_ENUM);
+
     if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
         ctx->override2DTextureTarget(target);
         ctx->m_glTexParameterfv_enc(ctx, GL_TEXTURE_2D, pname, params);
@@ -795,6 +830,10 @@
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)param)),
+            GL_INVALID_ENUM);
+
     if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
         ctx->override2DTextureTarget(target);
         ctx->m_glTexParameteri_enc(ctx, GL_TEXTURE_2D, pname, param);
@@ -810,6 +849,10 @@
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)param)),
+            GL_INVALID_ENUM);
+
     if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
         ctx->override2DTextureTarget(target);
         ctx->m_glTexParameterx_enc(ctx, GL_TEXTURE_2D, pname, param);
@@ -825,6 +868,10 @@
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)params[0])),
+            GL_INVALID_ENUM);
+
     if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
         ctx->override2DTextureTarget(target);
         ctx->m_glTexParameteriv_enc(ctx, GL_TEXTURE_2D, pname, params);
@@ -840,6 +887,10 @@
     GLEncoder* ctx = (GLEncoder*)self;
     const GLClientState* state = ctx->m_state;
 
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)params[0])),
+            GL_INVALID_ENUM);
+
     if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
         ctx->override2DTextureTarget(target);
         ctx->m_glTexParameterxv_enc(ctx, GL_TEXTURE_2D, pname, params);
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl.addon b/tools/emulator/opengl/system/GLESv1_enc/gl.addon
deleted file mode 100644
index 2331f87..0000000
--- a/tools/emulator/opengl/system/GLESv1_enc/gl.addon
+++ /dev/null
@@ -1,15 +0,0 @@
-GL_ENTRY(void, glVertexPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glColorPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glNormalPointerOffset, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glPointSizePointerOffset, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glTexCoordPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-
-GL_ENTRY(void, glVertexPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glColorPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glNormalPointerData, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glTexCoordPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glPointSizePointerData, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-
-GL_ENTRY(void, glDrawElementsOffset, GLenum mode, GLsizei count, GLenum type, GLuint offset);
-GL_ENTRY(void, glDrawElementsData, GLenum mode, GLsizei count, GLenum type, void *data, GLuint datalen);
-
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl.attrib b/tools/emulator/opengl/system/GLESv1_enc/gl.attrib
deleted file mode 100644
index 9b84f89..0000000
--- a/tools/emulator/opengl/system/GLESv1_enc/gl.attrib
+++ /dev/null
@@ -1,691 +0,0 @@
-GLOBAL
-	base_opcode 1024
-	encoder_headers "glUtils.h" "GLEncoderUtils.h"
-	
-#void glClipPlanef(GLenum plane, GLfloat *equation)
-glClipPlanef
-  dir equation in
-	len equation (4 * sizeof(float))
-
-#void glFogfv(GLenum pname, GLfloat *params)
-glFogfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetFloatv(GLenum pname, GLfloat *params)
-glGetFloatv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetLightfv(GLenum light, GLenum pname, GLfloat *params)
-glGetLightfv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)
-glGetMaterialfv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetTexEnvfv(GLenum env, GLenum pname, GLfloat *params)
-glGetTexEnvfv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
-glGetTexParameterfv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glLightModelfv(GLenum pname, GLfloat *params)
-glLightModelfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glLightfv(GLenum light, GLenum pname, GLfloat *params)
-glLightfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glLoadMatrixf(GLfloat *m)
-glLoadMatrixf
-	len m (16 * sizeof(GLfloat))
-
-#void glMaterialfv(GLenum face, GLenum pname, GLfloat *params)
-glMaterialfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glMultMatrixf(GLfloat *m)
-glMultMatrixf
-	len m (16 * sizeof(GLfloat))
-
-#void glPointParameterfv(GLenum pname, GLfloat *params)
-glPointParameterfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glTexEnvfv(GLenum target, GLenum pname, GLfloat *params)
-glTexEnvfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
-glTexParameterfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glBufferData(GLenum target, GLsizeiptr size, GLvoid *data, GLenum usage)
-glBufferData
-	len data size
-
-#void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)
-glBufferSubData
-	dir data in
-	len data size
-
-#void glClipPlanex(GLenum plane, GLfixed *eqn)
-glClipPlanex
-	dir eqn in
-	len eqn (4 * sizeof(GLfixed))
-
-#void glColorPointer(GLint size, GLenum type, GLsizei stride, GLvoid *pointer)
-#we treat the pointer as offset to a VBO
-glColorPointer
-	len pointer (sizeof(unsigned int))
-	flag unsupported
-
-#void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLvoid *data)
-glCompressedTexImage2D
-	len data imageSize
-    var_flag data nullAllowed
-
-#void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLvoid *data)
-glCompressedTexSubImage2D
-	len data imageSize
-
-#void glDeleteBuffers(GLsizei n, GLuint *buffers)
-glDeleteBuffers
-	len buffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glDeleteTextures(GLsizei n, GLuint *textures)
-glDeleteTextures
-	len textures (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#this function is marked as unsupported - it shouldn't be called directly
-#instead it translated into - glDrawDirectElements and glDrawIndirectElements
-#void glDrawElements(GLenum mode, GLsizei count, GLenum type, GLvoid *indices)
-glDrawElements
-	flag unsupported
-
-
-#void glFogxv(GLenum pname, GLfixed *params)
-glFogxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetBooleanv(GLenum pname, GLboolean *params)
-glGetBooleanv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLboolean))
-
-#void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
-glGetBufferParameteriv
-	len params (sizeof(GLint))
-	dir params out
-
-#void glGenBuffers(GLsizei n, GLuint *buffers)
-glGenBuffers
-	len buffers (n * sizeof(GLuint))
-	dir buffers out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenTextures(GLsizei n, GLuint *textures)
-glGenTextures
-	len textures (n * sizeof(GLuint))
-	dir textures out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGetFixedv(GLenum pname, GLfixed *params)
-glGetFixedv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetIntegerv(GLenum pname, GLint *params)
-glGetIntegerv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glGetLightxv(GLenum light, GLenum pname, GLfixed *params)
-glGetLightxv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetMaterialxv(GLenum face, GLenum pname, GLfixed *params)
-glGetMaterialxv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetPointerv(GLenum pname, void **params)
-glGetPointerv
-	flag unsupported
-
-#GLubyte* glGetString(GLenum name)
-glGetString
-  flag unsupported
-
-#void glGetTexEnviv(GLenum env, GLenum pname, GLint *params)
-glGetTexEnviv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glGetTexEnvxv(GLenum env, GLenum pname, GLfixed *params)
-glGetTexEnvxv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)
-glGetTexParameteriv
-	dir params out
-	len params (sizeof(GLint))
-
-#void glGetTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
-glGetTexParameterxv
-	dir params out
-	len params (sizeof(GLfixed))
-
-#void glLightModelxv(GLenum pname, GLfixed *params)
-glLightModelxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glLightxv(GLenum light, GLenum pname, GLfixed *params)
-glLightxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glLoadMatrixx(GLfixed *m)
-glLoadMatrixx
-	len m (16 * sizeof(GLfixed))
-
-#void glMaterialxv(GLenum face, GLenum pname, GLfixed *params)
-glMaterialxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glMultMatrixx(GLfixed *m)
-glMultMatrixx
-	len m (16 * sizeof(GLfixed))
-
-#void glNormalPointer(GLenum type, GLsizei stride, GLvoid *pointer)
-#we treat the pointer as an offset to a VBO
-glNormalPointer
-	len pointer (sizeof(unsigned int))
-	flag unsupported
-
-#void glPointParameterxv(GLenum pname, GLfixed *params)
-glPointParameterxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
-glReadPixels
-	dir pixels out
-	len pixels pixelDataSize(self, width, height, format, type, 1)
-
-#void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, GLvoid *pointer)
-glTexCoordPointer
-	len pointer (sizeof(unsigned int))
-	flag unsupported
-
-#void glTexEnviv(GLenum target, GLenum pname, GLint *params)
-glTexEnviv
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glTexEnvxv(GLenum target, GLenum pname, GLfixed *params)
-glTexEnvxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels)
-glTexImage2D
-	dir pixels in
-	len pixels pixelDataSize(self, width, height, format, type, 0)
-	var_flag pixels nullAllowed isLarge
-
-#void glTexParameteriv(GLenum target, GLenum pname, GLint *params)
-glTexParameteriv
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glTexParameterxv(GLenum target, GLenum pname, GLfixed *params)
-glTexParameterxv
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
-glTexSubImage2D
-	len pixels pixelDataSize(self, width, height, format, type, 0)
-        var_flag pixels isLarge
-
-#void glVertexPointer(GLint size, GLenum type, GLsizei stride, GLvoid *pointer)
-# we treat the pointer as an offset to a VBO
-glVertexPointer
-	flag unsupported
-
-#void glPointSizePointerOES(GLenum type, GLsizei stride, GLvoid *pointer)
-glPointSizePointerOES
-	len pointer (sizeof(unsigned int))
-	flag unsupported
-
-#void glGetClipPlanef(GLenum pname, GLfloat * eqn)
-glGetClipPlanef
-	dir eqn out
-	len eqn (4 * sizeof(GLfloat))
-
-#void glVertexPointerData(GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen)
-glVertexPointerData
-	len data datalen
-	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen)
-	flag custom_decoder
-	flag not_api
-
-#void glColorPointerData(GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen)
-glColorPointerData
-	len data datalen
-	flag custom_decoder
-	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen)
-	flag not_api
-
-#void glNormalPointerData(GLenum type, GLsizei stride, void *data, GLuint datalen)
-glNormalPointerData
-	len data datalen
-	flag custom_decoder
-	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 3, type, stride, datalen)
-	flag not_api
-
-#void glPointSizePointerData(GLenum type, GLsizei stride, void *data, GLuint datalen)
-glPointSizePointerData
-	len data datalen
-	flag custom_decoder
-	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 1, type, stride, datalen)
-	flag not_api
-
-#void glTexCoordPointerData(GLint size, GLenum type, GLsizei stride, void *data, GLuint datalen)
-glTexCoordPointerData
-	len data datalen
-	flag custom_decoder
-	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen)
-	flag not_api
-
-#void glWeightPointerData(GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-glWeightPointerData
-  	len data datalen
-  	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen)
-  	flag custom_decoder
-	flag not_api
-
-#void glMatrixIndexPointerData(GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-glMatrixIndexPointerData
-	len data datalen
-  	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen)
-  	flag custom_decoder
-	flag not_api
-
-glVertexPointerOffset
-	flag custom_decoder
-	flag not_api
-glNormalPointerOffset
-	flag custom_decoder
-	flag not_api
-glTexCoordPointerOffset
-	flag custom_decoder
-	flag not_api
-glPointSizePointerOffset
-	flag custom_decoder
-	flag not_api
-glColorPointerOffset
-	flag custom_decoder
-	flag not_api
-glWeightPointerOffset
-    flag custom_decoder
-	flag not_api
-glMatrixIndexPointerOffset
-    flag custom_decoder
-	flag not_api
-
-glDrawElementsData
-	len data datalen
-	flag custom_decoder
-	flag not_api
-
-glDrawElementsOffset
-	flag custom_decoder
-	flag not_api
-
-glGetCompressedTextureFormats
-	dir formats out
-	len formats (count * sizeof(GLint))
-	flag custom_decoder
-	flag not_api
-
-glFinishRoundTrip
-	flag custom_decoder
-	flag not_api
-
-#gles1 extensions
-
-#void glDrawTexsvOES(GLshort *coords)
-glDrawTexsvOES
-	len coords (5 * sizeof(GLshort))
-
-#void glDrawTexivOES(GLint *coords)
-glDrawTexivOES
-	len coords (5 * sizeof(GLint))
-
-#void glDrawTexxvOES(GLfixed *coords)
-glDrawTexxvOES
-	len coords (5 * sizeof(GLfixed))
-
-#void glDrawTexfvOES(GLfloat *coords)
-glDrawTexfvOES
-	len coords (5 * sizeof(GLfloat))
-
-#glClipPlanexOES(GLenum plane, const GLfixed * equation)
-glClipPlanexOES
-	dir equation in
-	len equation (4 * sizeof(GLfixed))
-
-#glClipPlanexIMG(GLenum plane, const GLfixed * equation)
-glClipPlanexIMG
-	dir equation in
-	len equation (4 * sizeof(GLfixed))
-
-#void glFogxvOES(GLenum pname, GLfixed *params)
-glFogxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetClipPlanexOES(GLenum pname,  GLfixed * eqn)
-glGetClipPlanexOES
-	dir eqn out
-	len eqn (4 * sizeof(GLfixed))
-
-#void glGetClipPlanex(GLenum pname,  GLfixed * eqn)
-glGetClipPlanex
-	dir eqn out
-	len eqn (4 * sizeof(GLfixed))
-
-#void glGetFixedvOES(GLenum pname, GLfixed *params)
-glGetFixedvOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetLightxvOES(GLenum light, GLenum pname, GLfixed *params)
-glGetLightxvOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params)
-glGetMaterialxvOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed *params)
-glGetTexEnvxvOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params)
-glGetTexParameterxvOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glLightModelxvOES(GLenum pname, GLfixed *params)
-glLightModelxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glLightxvOES(GLenum light, GLenum pname, GLfixed *params)
-glLightxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glLoadMatrixxOES(GLfixed *m)
-glLoadMatrixxOES
-	dir m in
-	len m (16 * sizeof(GLfixed))
-
-#void glMaterialxvOES(GLenum face, GLenum pname, GLfixed *params)
-glMaterialxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glMultMatrixxOES(GLfixed *m)
-glMultMatrixxOES
-	dir m in
-	len m (16 * sizeof(GLfixed))
-
-#void glPointParameterxvOES(GLenum pname, GLfixed *params)
-glPointParameterxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glTexEnvxvOES(GLenum target, GLenum pname, GLfixed *params)
-glTexEnvxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params)
-glTexParameterxvOES
-	dir params in
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glDeleteRenderbuffersOES(GLsizei n, GLuint *renderbuffers)
-glDeleteRenderbuffersOES
-	dir renderbuffers in
-	len renderbuffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenRenderbuffersOES(GLsizei n, GLuint *renderbuffers)
-glGenRenderbuffersOES
-	dir renderbuffers out 
-	len renderbuffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint *params)
-glGetRenderbufferParameterivOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glDeleteFramebuffersOES(GLsizei n, GLuint *framebuffers)
-glDeleteFramebuffersOES
-	dir framebuffers in
-	len framebuffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenFramebuffersOES(GLsizei n, GLuint *framebuffers)
-glGenFramebuffersOES
-	dir framebuffers out
-	len framebuffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint *params)
-glGetFramebufferAttachmentParameterivOES
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void* glMapBufferOES(GLenum target, GLenum access)
-glMapBufferOES
-	flag unsupported
-
-#void glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid ** params)
-glGetBufferPointervOES
-	flag unsupported
-
-#void glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, GLvoid *pointer)
-glMatrixIndexPointerOES
-	len pointer (sizeof(unsigned int))
-	flag unsupported
-
-#void glWeightPointerOES(GLint size, GLenum type, GLsizei stride, GLvoid *pointer)
-glWeightPointerOES
-	len pointer (sizeof(unsigned int))
-	flag unsupported
-
-#glQueryMatrixxOES(GLfixed * mantissa, GLint * exponent)
-glQueryMatrixxOES
-	dir mantissa out
-	len mantissa (16 * sizeof(GLfixed))
-	dir exponent out
-	len exponent (16 * sizeof(GLfixed))
-
-#void glClipPlanefOES(GLenum plane, GLfloat *equation)
-glClipPlanefOES
-	dir equation in
-	len equation (4 * sizeof(GLfloat))
-
-#void glClipPlanefIMG(GLenum plane, GLfloat *equation)
-glClipPlanefIMG
-	dir equation in
-	len equation (4 * sizeof(GLfloat))
-
-#void glGetClipPlanefOES(GLenum pname, GLfloat * eqn)
-glGetClipPlanefOES
-	dir eqn out
-	len eqn (4 * sizeof(GLfloat))
-
-#void glTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)
-glTexGenfvOES
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glTexGenivOES(GLenum coord, GLenum pname, GLint *params)
-glTexGenivOES
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
-glTexGenxvOES
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat *params)
-glGetTexGenfvOES
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetTexGenivOES(GLenum coord, GLenum pname, GLint *params)
-glGetTexGenivOES
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
-glGetTexGenxvOES
-	len params (glUtilsParamSize(pname) * sizeof(GLfixed))
-
-#void glDeleteVertexArraysOES(GLsizei n, const GLuint *arrays)
-glDeleteVertexArraysOES
-	dir arrays in
-	len arrays (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenVertexArraysOES(GLsizei n, GLuint *arrays)
-glGenVertexArraysOES
-	dir arrays out
-	len arrays (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
-glDiscardFramebufferEXT
-	dir attachments in
-	len attachments (numAttachments * sizeof(const GLenum))
-
-#void glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
-glMultiDrawArraysEXT
-	flag unsupported
-	
-#void glMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount)
-glMultiDrawElementsEXT
-	flag unsupported
-
-#void glMultiDrawArraysSUN(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
-glMultiDrawArraysSUN
-	flag unsupported
-	
-#void glMultiDrawElementsSUN(GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount)
-glMultiDrawElementsSUN
-	flag unsupported
-
-#void glDeleteFencesNV(GLsizei n, const GLuint *fences)
-glDeleteFencesNV
-	dir fences in
-	len fences (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenFencesNV(GLsizei n, GLuint *fences)
-glGenFencesNV
-	dir fences in
-	len fences (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGetFenceivNV(GLuint fence, GLenum pname, GLint *params)
-glGetFenceivNV
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls)
-glGetDriverControlsQCOM
-	dir num out
-	len num (1 * sizeof(GLint))
-	dir driverControls out
-	len driverControls (size * sizeof(GLuint))
-
-#void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)
-glGetDriverControlStringQCOM
-	dir length out
-	len length (1 * sizeof(GLsizei))
-	dir driverControlString out
-	len driverControlString (1 * sizeof(GLchar))
-
-#void glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures)
-glExtGetTexturesQCOM
-	dir textures out
-	len textures (maxTextures * sizeof(GLuint))
-	dir numTextures out
-	len numTextures (1 * sizeof(GLint))
-
-#void glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers)
-glExtGetBuffersQCOM
-	dir buffers out
-	len buffers (maxBuffers * sizeof(GLuint))
-	dir numBuffers out
-	len numBuffers (1 * sizeof(GLint))
-
-#void glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers)
-glExtGetRenderbuffersQCOM
-	dir renderbuffers out
-	len renderbuffers (maxRenderbuffers * sizeof(GLuint))
-	dir numRenderbuffers out
-	len numRenderbuffers (1 * sizeof(GLint))
-
-#void glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)
-glExtGetFramebuffersQCOM
-	dir framebuffers out
-	len framebuffers (maxFramebuffers * sizeof(GLuint))
-	dir numFramebuffers out
-	len numFramebuffers (1 * sizeof(GLint))
-
-#void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)
-glExtGetTexLevelParameterivQCOM
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels)
-glExtGetTexSubImageQCOM
-	dir texels out
-	len texels (depth * pixelDataSize(self, width, height, format, type, 0))
-
-#void glExtGetBufferPointervQCOM(GLenum target, GLvoid **params)
-glExtGetBufferPointervQCOM
-	flag unsupported
-
-#void glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders)
-glExtGetShadersQCOM
-	dir shaders out
-	len shaders (maxShaders * sizeof(GLuint))
-	dir numShaders out
-	len numShaders (1 * sizeof(GLint))
-
-#void glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms)
-glExtGetProgramsQCOM
-	dir programs out
-	len programs (maxPrograms * sizeof(GLuint))
-	dir numPrograms out
-	len numPrograms (1 * sizeof(GLint))
-
-#void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length)
-glExtGetProgramBinarySourceQCOM
-	flag unsupported
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl.in b/tools/emulator/opengl/system/GLESv1_enc/gl.in
deleted file mode 100644
index 4340608..0000000
--- a/tools/emulator/opengl/system/GLESv1_enc/gl.in
+++ /dev/null
@@ -1,299 +0,0 @@
-GL_ENTRY(void, glAlphaFunc, GLenum func, GLclampf ref)
-GL_ENTRY(void, glClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-GL_ENTRY(void, glClearDepthf, GLclampf depth)
-GL_ENTRY(void, glClipPlanef, GLenum plane, const GLfloat *equation)
-GL_ENTRY(void, glColor4f, GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
-GL_ENTRY(void, glDepthRangef, GLclampf zNear, GLclampf zFar)
-GL_ENTRY(void, glFogf, GLenum pname, GLfloat param)
-GL_ENTRY(void, glFogfv, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glFrustumf, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
-GL_ENTRY(void, glGetClipPlanef, GLenum pname, GLfloat* eqn)
-GL_ENTRY(void, glGetFloatv, GLenum pname, GLfloat *params)
-GL_ENTRY(void, glGetLightfv, GLenum light, GLenum pname, GLfloat *params)
-GL_ENTRY(void, glGetMaterialfv, GLenum face, GLenum pname, GLfloat *params)
-GL_ENTRY(void, glGetTexEnvfv, GLenum env, GLenum pname, GLfloat *params)
-GL_ENTRY(void, glGetTexParameterfv, GLenum target, GLenum pname, GLfloat *params)
-GL_ENTRY(void, glLightModelf, GLenum pname, GLfloat param)
-GL_ENTRY(void, glLightModelfv, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glLightf, GLenum light, GLenum pname, GLfloat param)
-GL_ENTRY(void, glLightfv, GLenum light, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glLineWidth, GLfloat width)
-GL_ENTRY(void, glLoadMatrixf, const GLfloat *m)
-GL_ENTRY(void, glMaterialf, GLenum face, GLenum pname, GLfloat param)
-GL_ENTRY(void, glMaterialfv, GLenum face, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glMultMatrixf, const GLfloat *m)
-GL_ENTRY(void, glMultiTexCoord4f, GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
-GL_ENTRY(void, glNormal3f, GLfloat nx, GLfloat ny, GLfloat nz)
-GL_ENTRY(void, glOrthof, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
-GL_ENTRY(void, glPointParameterf, GLenum pname, GLfloat param)
-GL_ENTRY(void, glPointParameterfv, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glPointSize, GLfloat size)
-GL_ENTRY(void, glPolygonOffset, GLfloat factor, GLfloat units)
-GL_ENTRY(void, glRotatef, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
-GL_ENTRY(void, glScalef, GLfloat x, GLfloat y, GLfloat z)
-GL_ENTRY(void, glTexEnvf, GLenum target, GLenum pname, GLfloat param)
-GL_ENTRY(void, glTexEnvfv, GLenum target, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glTexParameterf, GLenum target, GLenum pname, GLfloat param)
-GL_ENTRY(void, glTexParameterfv, GLenum target, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glTranslatef, GLfloat x, GLfloat y, GLfloat z)
-GL_ENTRY(void, glActiveTexture, GLenum texture)
-GL_ENTRY(void, glAlphaFuncx, GLenum func, GLclampx ref)
-GL_ENTRY(void, glBindBuffer, GLenum target, GLuint buffer)
-GL_ENTRY(void, glBindTexture, GLenum target, GLuint texture)
-GL_ENTRY(void, glBlendFunc, GLenum sfactor, GLenum dfactor)
-GL_ENTRY(void, glBufferData, GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage)
-GL_ENTRY(void, glBufferSubData, GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data)
-GL_ENTRY(void, glClear, GLbitfield mask)
-GL_ENTRY(void, glClearColorx, GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
-GL_ENTRY(void, glClearDepthx, GLclampx depth)
-GL_ENTRY(void, glClearStencil, GLint s)
-GL_ENTRY(void, glClientActiveTexture, GLenum texture)
-GL_ENTRY(void, glColor4ub, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
-GL_ENTRY(void, glColor4x, GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
-GL_ENTRY(void, glColorMask, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
-GL_ENTRY(void, glColorPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
-GL_ENTRY(void, glCompressedTexImage2D, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
-GL_ENTRY(void, glCompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
-GL_ENTRY(void, glCopyTexImage2D, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
-GL_ENTRY(void, glCopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(void, glCullFace, GLenum mode)
-GL_ENTRY(void, glDeleteBuffers, GLsizei n, const GLuint *buffers)
-GL_ENTRY(void, glDeleteTextures, GLsizei n, const GLuint *textures)
-GL_ENTRY(void, glDepthFunc, GLenum func)
-GL_ENTRY(void, glDepthMask, GLboolean flag)
-GL_ENTRY(void, glDepthRangex, GLclampx zNear, GLclampx zFar)
-GL_ENTRY(void, glDisable, GLenum cap)
-GL_ENTRY(void, glDisableClientState, GLenum array)
-GL_ENTRY(void, glDrawArrays, GLenum mode, GLint first, GLsizei count)
-GL_ENTRY(void, glDrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
-GL_ENTRY(void, glEnable, GLenum cap)
-GL_ENTRY(void, glEnableClientState, GLenum array)
-GL_ENTRY(void, glFinish, void)
-GL_ENTRY(void, glFlush, void)
-GL_ENTRY(void, glFogx, GLenum pname, GLfixed param)
-GL_ENTRY(void, glFogxv, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glFrontFace, GLenum mode)
-GL_ENTRY(void, glFrustumx, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
-GL_ENTRY(void, glGetBooleanv, GLenum pname, GLboolean *params)
-GL_ENTRY(void, glGetBufferParameteriv, GLenum target, GLenum pname, GLint *params)
-GL_ENTRY(void, glClipPlanex, GLenum pname, const GLfixed * eqn)
-GL_ENTRY(void, glGenBuffers, GLsizei n, GLuint *buffers)
-GL_ENTRY(void, glGenTextures, GLsizei n, GLuint *textures)
-GL_ENTRY(GLenum, glGetError, void)
-GL_ENTRY(void, glGetFixedv, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetIntegerv, GLenum pname, GLint *params)
-GL_ENTRY(void, glGetLightxv, GLenum light, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetMaterialxv, GLenum face, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetPointerv, GLenum pname, GLvoid **params)
-GL_ENTRY(const GLubyte *, glGetString, GLenum name)
-GL_ENTRY(void, glGetTexEnviv, GLenum env, GLenum pname, GLint *params)
-GL_ENTRY(void, glGetTexEnvxv, GLenum env, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetTexParameteriv, GLenum target, GLenum pname, GLint *params)
-GL_ENTRY(void, glGetTexParameterxv, GLenum target, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glHint, GLenum target, GLenum mode)
-GL_ENTRY(GLboolean, glIsBuffer, GLuint buffer)
-GL_ENTRY(GLboolean, glIsEnabled, GLenum cap)
-GL_ENTRY(GLboolean, glIsTexture, GLuint texture)
-GL_ENTRY(void, glLightModelx, GLenum pname, GLfixed param)
-GL_ENTRY(void, glLightModelxv, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glLightx, GLenum light, GLenum pname, GLfixed param)
-GL_ENTRY(void, glLightxv, GLenum light, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glLineWidthx, GLfixed width)
-GL_ENTRY(void, glLoadIdentity, void)
-GL_ENTRY(void, glLoadMatrixx, const GLfixed *m)
-GL_ENTRY(void, glLogicOp, GLenum opcode)
-GL_ENTRY(void, glMaterialx, GLenum face, GLenum pname, GLfixed param)
-GL_ENTRY(void, glMaterialxv, GLenum face, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glMatrixMode, GLenum mode)
-GL_ENTRY(void, glMultMatrixx, const GLfixed *m)
-GL_ENTRY(void, glMultiTexCoord4x, GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
-GL_ENTRY(void, glNormal3x, GLfixed nx, GLfixed ny, GLfixed nz)
-GL_ENTRY(void, glNormalPointer, GLenum type, GLsizei stride, const GLvoid *pointer)
-GL_ENTRY(void, glOrthox, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
-GL_ENTRY(void, glPixelStorei, GLenum pname, GLint param)
-GL_ENTRY(void, glPointParameterx, GLenum pname, GLfixed param)
-GL_ENTRY(void, glPointParameterxv, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glPointSizex, GLfixed size)
-GL_ENTRY(void, glPolygonOffsetx, GLfixed factor, GLfixed units)
-GL_ENTRY(void, glPopMatrix, void)
-GL_ENTRY(void, glPushMatrix, void)
-GL_ENTRY(void, glReadPixels, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
-GL_ENTRY(void, glRotatex, GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
-GL_ENTRY(void, glSampleCoverage, GLclampf value, GLboolean invert)
-GL_ENTRY(void, glSampleCoveragex, GLclampx value, GLboolean invert)
-GL_ENTRY(void, glScalex, GLfixed x, GLfixed y, GLfixed z)
-GL_ENTRY(void, glScissor, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(void, glShadeModel, GLenum mode)
-GL_ENTRY(void, glStencilFunc, GLenum func, GLint ref, GLuint mask)
-GL_ENTRY(void, glStencilMask, GLuint mask)
-GL_ENTRY(void, glStencilOp, GLenum fail, GLenum zfail, GLenum zpass)
-GL_ENTRY(void, glTexCoordPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
-GL_ENTRY(void, glTexEnvi, GLenum target, GLenum pname, GLint param)
-GL_ENTRY(void, glTexEnvx, GLenum target, GLenum pname, GLfixed param)
-GL_ENTRY(void, glTexEnviv, GLenum target, GLenum pname, const GLint *params)
-GL_ENTRY(void, glTexEnvxv, GLenum target, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glTexImage2D, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
-GL_ENTRY(void, glTexParameteri, GLenum target, GLenum pname, GLint param)
-GL_ENTRY(void, glTexParameterx, GLenum target, GLenum pname, GLfixed param)
-GL_ENTRY(void, glTexParameteriv, GLenum target, GLenum pname, const GLint *params)
-GL_ENTRY(void, glTexParameterxv, GLenum target, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
-GL_ENTRY(void, glTranslatex, GLfixed x, GLfixed y, GLfixed z)
-GL_ENTRY(void, glVertexPointer, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
-GL_ENTRY(void, glViewport, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(void, glPointSizePointerOES, GLenum type, GLsizei stride, const GLvoid *pointer)
-
-GL_ENTRY(void, glVertexPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glColorPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glNormalPointerOffset, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glPointSizePointerOffset, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glTexCoordPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glWeightPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glMatrixIndexPointerOffset, GLint size, GLenum type, GLsizei stride,  GLuint offset)
-
-GL_ENTRY(void, glVertexPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glColorPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glNormalPointerData, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glTexCoordPointerData, GLint unit, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glPointSizePointerData, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glWeightPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glMatrixIndexPointerData, GLint size, GLenum type, GLsizei stride,  void * data, GLuint datalen)
-
-GL_ENTRY(void, glDrawElementsOffset, GLenum mode, GLsizei count, GLenum type, GLuint offset)
-GL_ENTRY(void, glDrawElementsData, GLenum mode, GLsizei count, GLenum type, void *data, GLuint datalen)
-GL_ENTRY(void, glGetCompressedTextureFormats, int count, GLint *formats);
-
-GL_ENTRY(int, glFinishRoundTrip, void)
-
-#opengl extensions
-
-GL_ENTRY(void, glBlendEquationSeparateOES, GLenum modeRGB, GLenum modeAlpha)
-GL_ENTRY(void, glBlendFuncSeparateOES, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
-GL_ENTRY(void, glBlendEquationOES, GLenum mode)
-GL_ENTRY(void, glDrawTexsOES, GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
-GL_ENTRY(void, glDrawTexiOES, GLint x, GLint y, GLint z, GLint width, GLint height)
-GL_ENTRY(void, glDrawTexxOES, GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
-GL_ENTRY(void, glDrawTexsvOES, const GLshort *coords)
-GL_ENTRY(void, glDrawTexivOES, const GLint *coords)
-GL_ENTRY(void, glDrawTexxvOES, const GLfixed *coords)
-GL_ENTRY(void, glDrawTexfOES, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
-GL_ENTRY(void, glDrawTexfvOES, const GLfloat *coords)
-GL_ENTRY(void, glEGLImageTargetTexture2DOES, GLenum target, GLeglImageOES image)
-GL_ENTRY(void, glEGLImageTargetRenderbufferStorageOES, GLenum target, GLeglImageOES image)
-GL_ENTRY(void, glAlphaFuncxOES, GLenum func, GLclampx ref)
-GL_ENTRY(void, glClearColorxOES, GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
-GL_ENTRY(void, glClearDepthxOES, GLclampx depth)
-GL_ENTRY(void, glClipPlanexOES, GLenum plane, const GLfixed * equation)
-GL_ENTRY(void, glClipPlanexIMG, GLenum plane, const GLfixed * equation)
-GL_ENTRY(void, glColor4xOES, GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
-GL_ENTRY(void, glDepthRangexOES, GLclampx zNear, GLclampx zFar)
-GL_ENTRY(void, glFogxOES, GLenum pname, GLfixed param)
-GL_ENTRY(void, glFogxvOES, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glFrustumxOES, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
-GL_ENTRY(void, glGetClipPlanexOES, GLenum pname, GLfixed* eqn)
-GL_ENTRY(void, glGetClipPlanex, GLenum pname, GLfixed* eqn)
-GL_ENTRY(void, glGetFixedvOES, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetLightxvOES, GLenum light, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetMaterialxvOES, GLenum face, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetTexEnvxvOES, GLenum env, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glGetTexParameterxvOES, GLenum target, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glLightModelxOES, GLenum pname, GLfixed param)
-GL_ENTRY(void, glLightModelxvOES, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glLightxOES, GLenum light, GLenum pname, GLfixed param)
-GL_ENTRY(void, glLightxvOES, GLenum light, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glLineWidthxOES, GLfixed width)
-GL_ENTRY(void, glLoadMatrixxOES, const GLfixed *m)
-GL_ENTRY(void, glMaterialxOES, GLenum face, GLenum pname, GLfixed param)
-GL_ENTRY(void, glMaterialxvOES, GLenum face, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glMultMatrixxOES, const GLfixed *m)
-GL_ENTRY(void, glMultiTexCoord4xOES, GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
-GL_ENTRY(void, glNormal3xOES, GLfixed nx, GLfixed ny, GLfixed nz)
-GL_ENTRY(void, glOrthoxOES, GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
-GL_ENTRY(void, glPointParameterxOES, GLenum pname, GLfixed param)
-GL_ENTRY(void, glPointParameterxvOES, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glPointSizexOES, GLfixed size)
-GL_ENTRY(void, glPolygonOffsetxOES, GLfixed factor, GLfixed units)
-GL_ENTRY(void, glRotatexOES, GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
-GL_ENTRY(void, glSampleCoveragexOES, GLclampx value, GLboolean invert)
-GL_ENTRY(void, glScalexOES, GLfixed x, GLfixed y, GLfixed z)
-GL_ENTRY(void, glTexEnvxOES, GLenum target, GLenum pname, GLfixed param)
-GL_ENTRY(void, glTexEnvxvOES, GLenum target, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glTexParameterxOES, GLenum target, GLenum pname, GLfixed param)
-GL_ENTRY(void, glTexParameterxvOES, GLenum target, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glTranslatexOES, GLfixed x, GLfixed y, GLfixed z)
-GL_ENTRY(GLboolean, glIsRenderbufferOES, GLuint renderbuffer)
-GL_ENTRY(void, glBindRenderbufferOES, GLenum target, GLuint renderbuffer)
-GL_ENTRY(void, glDeleteRenderbuffersOES, GLsizei n, const GLuint* renderbuffers)
-GL_ENTRY(void, glGenRenderbuffersOES, GLsizei n, GLuint* renderbuffers)
-GL_ENTRY(void, glRenderbufferStorageOES, GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
-GL_ENTRY(void, glGetRenderbufferParameterivOES, GLenum target, GLenum pname, GLint* params)
-GL_ENTRY(GLboolean, glIsFramebufferOES, GLuint framebuffer)
-GL_ENTRY(void, glBindFramebufferOES, GLenum target, GLuint framebuffer)
-GL_ENTRY(void, glDeleteFramebuffersOES, GLsizei n, const GLuint* framebuffers)
-GL_ENTRY(void, glGenFramebuffersOES, GLsizei n, GLuint* framebuffers)
-GL_ENTRY(GLenum, glCheckFramebufferStatusOES, GLenum target)
-GL_ENTRY(void, glFramebufferRenderbufferOES, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
-GL_ENTRY(void, glFramebufferTexture2DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-GL_ENTRY(void, glGetFramebufferAttachmentParameterivOES, GLenum target, GLenum attachment, GLenum pname, GLint* params)
-GL_ENTRY(void, glGenerateMipmapOES, GLenum target)
-GL_ENTRY(void*, glMapBufferOES, GLenum target, GLenum access)
-GL_ENTRY(GLboolean, glUnmapBufferOES, GLenum target)
-GL_ENTRY(void, glGetBufferPointervOES, GLenum target, GLenum pname, GLvoid* *params)
-GL_ENTRY(void, glCurrentPaletteMatrixOES, GLuint matrixpaletteindex)
-GL_ENTRY(void, glLoadPaletteFromModelViewMatrixOES, void)
-GL_ENTRY(void, glMatrixIndexPointerOES, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-GL_ENTRY(void, glWeightPointerOES, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-GL_ENTRY(GLbitfield, glQueryMatrixxOES, GLfixed * mantissa, GLint * exponent)
-GL_ENTRY(void, glDepthRangefOES, GLclampf zNear, GLclampf zFar)
-GL_ENTRY(void, glFrustumfOES, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
-GL_ENTRY(void, glOrthofOES, GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
-GL_ENTRY(void, glClipPlanefOES, GLenum plane, const GLfloat *equation)
-GL_ENTRY(void, glClipPlanefIMG, GLenum plane, const GLfloat *equation)
-GL_ENTRY(void, glGetClipPlanefOES, GLenum pname, GLfloat * eqn)
-GL_ENTRY(void, glClearDepthfOES, GLclampf depth)
-GL_ENTRY(void, glTexGenfOES, GLenum coord, GLenum pname, GLfloat param)
-GL_ENTRY(void, glTexGenfvOES, GLenum coord, GLenum pname, const GLfloat *params)
-GL_ENTRY(void, glTexGeniOES, GLenum coord, GLenum pname, GLint param)
-GL_ENTRY(void, glTexGenivOES, GLenum coord, GLenum pname, const GLint *params)
-GL_ENTRY(void, glTexGenxOES, GLenum coord, GLenum pname, GLfixed param)
-GL_ENTRY(void, glTexGenxvOES, GLenum coord, GLenum pname, const GLfixed *params)
-GL_ENTRY(void, glGetTexGenfvOES, GLenum coord, GLenum pname, GLfloat *params)
-GL_ENTRY(void, glGetTexGenivOES, GLenum coord, GLenum pname, GLint *params)
-GL_ENTRY(void, glGetTexGenxvOES, GLenum coord, GLenum pname, GLfixed *params)
-GL_ENTRY(void, glBindVertexArrayOES, GLuint array)
-GL_ENTRY(void, glDeleteVertexArraysOES, GLsizei n, const GLuint *arrays)
-GL_ENTRY(void, glGenVertexArraysOES, GLsizei n, GLuint *arrays)
-GL_ENTRY(GLboolean, glIsVertexArrayOES, GLuint array)
-GL_ENTRY(void, glDiscardFramebufferEXT, GLenum target, GLsizei numAttachments, const GLenum *attachments)
-GL_ENTRY(void, glMultiDrawArraysEXT, GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
-GL_ENTRY(void, glMultiDrawElementsEXT, GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)
-GL_ENTRY(void, glMultiDrawArraysSUN, GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
-GL_ENTRY(void, glMultiDrawElementsSUN, GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)
-GL_ENTRY(void, glRenderbufferStorageMultisampleIMG, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-GL_ENTRY(void, glFramebufferTexture2DMultisampleIMG, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
-GL_ENTRY(void, glDeleteFencesNV, GLsizei n, const GLuint *fences)
-GL_ENTRY(void, glGenFencesNV, GLsizei n, GLuint *fences)
-GL_ENTRY(GLboolean, glIsFenceNV, GLuint fence)
-GL_ENTRY(GLboolean, glTestFenceNV, GLuint fence)
-GL_ENTRY(void, glGetFenceivNV, GLuint fence, GLenum pname, GLint *params)
-GL_ENTRY(void, glFinishFenceNV, GLuint fence)
-GL_ENTRY(void, glSetFenceNV, GLuint fence, GLenum condition)
-GL_ENTRY(void, glGetDriverControlsQCOM, GLint *num, GLsizei size, GLuint *driverControls)
-GL_ENTRY(void, glGetDriverControlStringQCOM, GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)
-GL_ENTRY(void, glEnableDriverControlQCOM, GLuint driverControl)
-GL_ENTRY(void, glDisableDriverControlQCOM, GLuint driverControl)
-GL_ENTRY(void, glExtGetTexturesQCOM, GLuint *textures, GLint maxTextures, GLint *numTextures)
-GL_ENTRY(void, glExtGetBuffersQCOM, GLuint *buffers, GLint maxBuffers, GLint *numBuffers)
-GL_ENTRY(void, glExtGetRenderbuffersQCOM, GLuint * renderbuffers, GLint maxRenderbuffers, GLint * numRenderbuffers)
-GL_ENTRY(void, glExtGetFramebuffersQCOM, GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)
-GL_ENTRY(void, glExtGetTexLevelParameterivQCOM, GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)
-GL_ENTRY(void, glExtTexObjectStateOverrideiQCOM, GLenum target, GLenum pname, GLint param)
-GL_ENTRY(void, glExtGetTexSubImageQCOM, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels)
-GL_ENTRY(void, glExtGetBufferPointervQCOM, GLenum target, GLvoid* *params)
-GL_ENTRY(void, glExtGetShadersQCOM, GLuint *shaders, GLint maxShaders, GLint *numShaders)
-GL_ENTRY(void, glExtGetProgramsQCOM, GLuint *programs, GLint maxPrograms, GLint *numPrograms)
-GL_ENTRY(GLboolean, glExtIsProgramBinaryQCOM, GLuint program)
-GL_ENTRY(void, glExtGetProgramBinarySourceQCOM, GLuint program, GLenum shadertype, GLchar *source, GLint *length)
-GL_ENTRY(void, glStartTilingQCOM, GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
-GL_ENTRY(void, glEndTilingQCOM, GLbitfield preserveMask)
-
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl.types b/tools/emulator/opengl/system/GLESv1_enc/gl.types
deleted file mode 100644
index b269c01..0000000
--- a/tools/emulator/opengl/system/GLESv1_enc/gl.types
+++ /dev/null
@@ -1,33 +0,0 @@
-GLbitfield 32 0x%08x false
-GLboolean 8 %d false
-GLclampf 32 %f false
-GLclampx 32 0x%08x false
-GLeglImageOES 32 %p false
-GLenum 32 0x%08x false
-GLfixed 32 0x%08x false
-GLfloat 32 %f false
-GLint 32 %d false
-GLintptr 32 %p false
-GLshort 16 %d false
-GLsizei 32 %d false
-GLsizeiptr 32 %p false
-GLubyte 8 0x%02x false
-GLuint 32 %u false
-GLvoid 0 %x false
-GLchar 8 %d false
-GLenum* 32 0x%08x true
-GLboolean* 32 0x%08x true
-GLclampf* 32 0x%08x true
-GLclampx* 32 0x%08x true
-GLeglImageOES* 32 0x%08x true
-GLfixed* 32 0x%08x true
-GLfloat* 32 0x%08x true
-GLint* 32 0x%08x true
-GLshort* 32 0x%08x true
-GLsizei* 32 0x%08x true
-GLubyte* 32 0x%08x true
-GLuint* 32 0x%08x true
-GLvoid* 32 0x%08x true
-GLchar* 32 0x%08x true
-GLvoid** 32 0x%08x true
-void* 32 0x%08x true
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_client_context.cpp b/tools/emulator/opengl/system/GLESv1_enc/gl_client_context.cpp
new file mode 100644
index 0000000..a5fd04b
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_client_context.cpp
@@ -0,0 +1,308 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+
+#include <string.h>
+#include "gl_client_context.h"
+
+
+#include <stdio.h>
+
+int gl_client_context_t::initDispatchByName(void *(*getProc)(const char *, void *userData), void *userData)
+{
+	void *ptr;
+
+	ptr = getProc("glAlphaFunc", userData); set_glAlphaFunc((glAlphaFunc_client_proc_t)ptr);
+	ptr = getProc("glClearColor", userData); set_glClearColor((glClearColor_client_proc_t)ptr);
+	ptr = getProc("glClearDepthf", userData); set_glClearDepthf((glClearDepthf_client_proc_t)ptr);
+	ptr = getProc("glClipPlanef", userData); set_glClipPlanef((glClipPlanef_client_proc_t)ptr);
+	ptr = getProc("glColor4f", userData); set_glColor4f((glColor4f_client_proc_t)ptr);
+	ptr = getProc("glDepthRangef", userData); set_glDepthRangef((glDepthRangef_client_proc_t)ptr);
+	ptr = getProc("glFogf", userData); set_glFogf((glFogf_client_proc_t)ptr);
+	ptr = getProc("glFogfv", userData); set_glFogfv((glFogfv_client_proc_t)ptr);
+	ptr = getProc("glFrustumf", userData); set_glFrustumf((glFrustumf_client_proc_t)ptr);
+	ptr = getProc("glGetClipPlanef", userData); set_glGetClipPlanef((glGetClipPlanef_client_proc_t)ptr);
+	ptr = getProc("glGetFloatv", userData); set_glGetFloatv((glGetFloatv_client_proc_t)ptr);
+	ptr = getProc("glGetLightfv", userData); set_glGetLightfv((glGetLightfv_client_proc_t)ptr);
+	ptr = getProc("glGetMaterialfv", userData); set_glGetMaterialfv((glGetMaterialfv_client_proc_t)ptr);
+	ptr = getProc("glGetTexEnvfv", userData); set_glGetTexEnvfv((glGetTexEnvfv_client_proc_t)ptr);
+	ptr = getProc("glGetTexParameterfv", userData); set_glGetTexParameterfv((glGetTexParameterfv_client_proc_t)ptr);
+	ptr = getProc("glLightModelf", userData); set_glLightModelf((glLightModelf_client_proc_t)ptr);
+	ptr = getProc("glLightModelfv", userData); set_glLightModelfv((glLightModelfv_client_proc_t)ptr);
+	ptr = getProc("glLightf", userData); set_glLightf((glLightf_client_proc_t)ptr);
+	ptr = getProc("glLightfv", userData); set_glLightfv((glLightfv_client_proc_t)ptr);
+	ptr = getProc("glLineWidth", userData); set_glLineWidth((glLineWidth_client_proc_t)ptr);
+	ptr = getProc("glLoadMatrixf", userData); set_glLoadMatrixf((glLoadMatrixf_client_proc_t)ptr);
+	ptr = getProc("glMaterialf", userData); set_glMaterialf((glMaterialf_client_proc_t)ptr);
+	ptr = getProc("glMaterialfv", userData); set_glMaterialfv((glMaterialfv_client_proc_t)ptr);
+	ptr = getProc("glMultMatrixf", userData); set_glMultMatrixf((glMultMatrixf_client_proc_t)ptr);
+	ptr = getProc("glMultiTexCoord4f", userData); set_glMultiTexCoord4f((glMultiTexCoord4f_client_proc_t)ptr);
+	ptr = getProc("glNormal3f", userData); set_glNormal3f((glNormal3f_client_proc_t)ptr);
+	ptr = getProc("glOrthof", userData); set_glOrthof((glOrthof_client_proc_t)ptr);
+	ptr = getProc("glPointParameterf", userData); set_glPointParameterf((glPointParameterf_client_proc_t)ptr);
+	ptr = getProc("glPointParameterfv", userData); set_glPointParameterfv((glPointParameterfv_client_proc_t)ptr);
+	ptr = getProc("glPointSize", userData); set_glPointSize((glPointSize_client_proc_t)ptr);
+	ptr = getProc("glPolygonOffset", userData); set_glPolygonOffset((glPolygonOffset_client_proc_t)ptr);
+	ptr = getProc("glRotatef", userData); set_glRotatef((glRotatef_client_proc_t)ptr);
+	ptr = getProc("glScalef", userData); set_glScalef((glScalef_client_proc_t)ptr);
+	ptr = getProc("glTexEnvf", userData); set_glTexEnvf((glTexEnvf_client_proc_t)ptr);
+	ptr = getProc("glTexEnvfv", userData); set_glTexEnvfv((glTexEnvfv_client_proc_t)ptr);
+	ptr = getProc("glTexParameterf", userData); set_glTexParameterf((glTexParameterf_client_proc_t)ptr);
+	ptr = getProc("glTexParameterfv", userData); set_glTexParameterfv((glTexParameterfv_client_proc_t)ptr);
+	ptr = getProc("glTranslatef", userData); set_glTranslatef((glTranslatef_client_proc_t)ptr);
+	ptr = getProc("glActiveTexture", userData); set_glActiveTexture((glActiveTexture_client_proc_t)ptr);
+	ptr = getProc("glAlphaFuncx", userData); set_glAlphaFuncx((glAlphaFuncx_client_proc_t)ptr);
+	ptr = getProc("glBindBuffer", userData); set_glBindBuffer((glBindBuffer_client_proc_t)ptr);
+	ptr = getProc("glBindTexture", userData); set_glBindTexture((glBindTexture_client_proc_t)ptr);
+	ptr = getProc("glBlendFunc", userData); set_glBlendFunc((glBlendFunc_client_proc_t)ptr);
+	ptr = getProc("glBufferData", userData); set_glBufferData((glBufferData_client_proc_t)ptr);
+	ptr = getProc("glBufferSubData", userData); set_glBufferSubData((glBufferSubData_client_proc_t)ptr);
+	ptr = getProc("glClear", userData); set_glClear((glClear_client_proc_t)ptr);
+	ptr = getProc("glClearColorx", userData); set_glClearColorx((glClearColorx_client_proc_t)ptr);
+	ptr = getProc("glClearDepthx", userData); set_glClearDepthx((glClearDepthx_client_proc_t)ptr);
+	ptr = getProc("glClearStencil", userData); set_glClearStencil((glClearStencil_client_proc_t)ptr);
+	ptr = getProc("glClientActiveTexture", userData); set_glClientActiveTexture((glClientActiveTexture_client_proc_t)ptr);
+	ptr = getProc("glColor4ub", userData); set_glColor4ub((glColor4ub_client_proc_t)ptr);
+	ptr = getProc("glColor4x", userData); set_glColor4x((glColor4x_client_proc_t)ptr);
+	ptr = getProc("glColorMask", userData); set_glColorMask((glColorMask_client_proc_t)ptr);
+	ptr = getProc("glColorPointer", userData); set_glColorPointer((glColorPointer_client_proc_t)ptr);
+	ptr = getProc("glCompressedTexImage2D", userData); set_glCompressedTexImage2D((glCompressedTexImage2D_client_proc_t)ptr);
+	ptr = getProc("glCompressedTexSubImage2D", userData); set_glCompressedTexSubImage2D((glCompressedTexSubImage2D_client_proc_t)ptr);
+	ptr = getProc("glCopyTexImage2D", userData); set_glCopyTexImage2D((glCopyTexImage2D_client_proc_t)ptr);
+	ptr = getProc("glCopyTexSubImage2D", userData); set_glCopyTexSubImage2D((glCopyTexSubImage2D_client_proc_t)ptr);
+	ptr = getProc("glCullFace", userData); set_glCullFace((glCullFace_client_proc_t)ptr);
+	ptr = getProc("glDeleteBuffers", userData); set_glDeleteBuffers((glDeleteBuffers_client_proc_t)ptr);
+	ptr = getProc("glDeleteTextures", userData); set_glDeleteTextures((glDeleteTextures_client_proc_t)ptr);
+	ptr = getProc("glDepthFunc", userData); set_glDepthFunc((glDepthFunc_client_proc_t)ptr);
+	ptr = getProc("glDepthMask", userData); set_glDepthMask((glDepthMask_client_proc_t)ptr);
+	ptr = getProc("glDepthRangex", userData); set_glDepthRangex((glDepthRangex_client_proc_t)ptr);
+	ptr = getProc("glDisable", userData); set_glDisable((glDisable_client_proc_t)ptr);
+	ptr = getProc("glDisableClientState", userData); set_glDisableClientState((glDisableClientState_client_proc_t)ptr);
+	ptr = getProc("glDrawArrays", userData); set_glDrawArrays((glDrawArrays_client_proc_t)ptr);
+	ptr = getProc("glDrawElements", userData); set_glDrawElements((glDrawElements_client_proc_t)ptr);
+	ptr = getProc("glEnable", userData); set_glEnable((glEnable_client_proc_t)ptr);
+	ptr = getProc("glEnableClientState", userData); set_glEnableClientState((glEnableClientState_client_proc_t)ptr);
+	ptr = getProc("glFinish", userData); set_glFinish((glFinish_client_proc_t)ptr);
+	ptr = getProc("glFlush", userData); set_glFlush((glFlush_client_proc_t)ptr);
+	ptr = getProc("glFogx", userData); set_glFogx((glFogx_client_proc_t)ptr);
+	ptr = getProc("glFogxv", userData); set_glFogxv((glFogxv_client_proc_t)ptr);
+	ptr = getProc("glFrontFace", userData); set_glFrontFace((glFrontFace_client_proc_t)ptr);
+	ptr = getProc("glFrustumx", userData); set_glFrustumx((glFrustumx_client_proc_t)ptr);
+	ptr = getProc("glGetBooleanv", userData); set_glGetBooleanv((glGetBooleanv_client_proc_t)ptr);
+	ptr = getProc("glGetBufferParameteriv", userData); set_glGetBufferParameteriv((glGetBufferParameteriv_client_proc_t)ptr);
+	ptr = getProc("glClipPlanex", userData); set_glClipPlanex((glClipPlanex_client_proc_t)ptr);
+	ptr = getProc("glGenBuffers", userData); set_glGenBuffers((glGenBuffers_client_proc_t)ptr);
+	ptr = getProc("glGenTextures", userData); set_glGenTextures((glGenTextures_client_proc_t)ptr);
+	ptr = getProc("glGetError", userData); set_glGetError((glGetError_client_proc_t)ptr);
+	ptr = getProc("glGetFixedv", userData); set_glGetFixedv((glGetFixedv_client_proc_t)ptr);
+	ptr = getProc("glGetIntegerv", userData); set_glGetIntegerv((glGetIntegerv_client_proc_t)ptr);
+	ptr = getProc("glGetLightxv", userData); set_glGetLightxv((glGetLightxv_client_proc_t)ptr);
+	ptr = getProc("glGetMaterialxv", userData); set_glGetMaterialxv((glGetMaterialxv_client_proc_t)ptr);
+	ptr = getProc("glGetPointerv", userData); set_glGetPointerv((glGetPointerv_client_proc_t)ptr);
+	ptr = getProc("glGetString", userData); set_glGetString((glGetString_client_proc_t)ptr);
+	ptr = getProc("glGetTexEnviv", userData); set_glGetTexEnviv((glGetTexEnviv_client_proc_t)ptr);
+	ptr = getProc("glGetTexEnvxv", userData); set_glGetTexEnvxv((glGetTexEnvxv_client_proc_t)ptr);
+	ptr = getProc("glGetTexParameteriv", userData); set_glGetTexParameteriv((glGetTexParameteriv_client_proc_t)ptr);
+	ptr = getProc("glGetTexParameterxv", userData); set_glGetTexParameterxv((glGetTexParameterxv_client_proc_t)ptr);
+	ptr = getProc("glHint", userData); set_glHint((glHint_client_proc_t)ptr);
+	ptr = getProc("glIsBuffer", userData); set_glIsBuffer((glIsBuffer_client_proc_t)ptr);
+	ptr = getProc("glIsEnabled", userData); set_glIsEnabled((glIsEnabled_client_proc_t)ptr);
+	ptr = getProc("glIsTexture", userData); set_glIsTexture((glIsTexture_client_proc_t)ptr);
+	ptr = getProc("glLightModelx", userData); set_glLightModelx((glLightModelx_client_proc_t)ptr);
+	ptr = getProc("glLightModelxv", userData); set_glLightModelxv((glLightModelxv_client_proc_t)ptr);
+	ptr = getProc("glLightx", userData); set_glLightx((glLightx_client_proc_t)ptr);
+	ptr = getProc("glLightxv", userData); set_glLightxv((glLightxv_client_proc_t)ptr);
+	ptr = getProc("glLineWidthx", userData); set_glLineWidthx((glLineWidthx_client_proc_t)ptr);
+	ptr = getProc("glLoadIdentity", userData); set_glLoadIdentity((glLoadIdentity_client_proc_t)ptr);
+	ptr = getProc("glLoadMatrixx", userData); set_glLoadMatrixx((glLoadMatrixx_client_proc_t)ptr);
+	ptr = getProc("glLogicOp", userData); set_glLogicOp((glLogicOp_client_proc_t)ptr);
+	ptr = getProc("glMaterialx", userData); set_glMaterialx((glMaterialx_client_proc_t)ptr);
+	ptr = getProc("glMaterialxv", userData); set_glMaterialxv((glMaterialxv_client_proc_t)ptr);
+	ptr = getProc("glMatrixMode", userData); set_glMatrixMode((glMatrixMode_client_proc_t)ptr);
+	ptr = getProc("glMultMatrixx", userData); set_glMultMatrixx((glMultMatrixx_client_proc_t)ptr);
+	ptr = getProc("glMultiTexCoord4x", userData); set_glMultiTexCoord4x((glMultiTexCoord4x_client_proc_t)ptr);
+	ptr = getProc("glNormal3x", userData); set_glNormal3x((glNormal3x_client_proc_t)ptr);
+	ptr = getProc("glNormalPointer", userData); set_glNormalPointer((glNormalPointer_client_proc_t)ptr);
+	ptr = getProc("glOrthox", userData); set_glOrthox((glOrthox_client_proc_t)ptr);
+	ptr = getProc("glPixelStorei", userData); set_glPixelStorei((glPixelStorei_client_proc_t)ptr);
+	ptr = getProc("glPointParameterx", userData); set_glPointParameterx((glPointParameterx_client_proc_t)ptr);
+	ptr = getProc("glPointParameterxv", userData); set_glPointParameterxv((glPointParameterxv_client_proc_t)ptr);
+	ptr = getProc("glPointSizex", userData); set_glPointSizex((glPointSizex_client_proc_t)ptr);
+	ptr = getProc("glPolygonOffsetx", userData); set_glPolygonOffsetx((glPolygonOffsetx_client_proc_t)ptr);
+	ptr = getProc("glPopMatrix", userData); set_glPopMatrix((glPopMatrix_client_proc_t)ptr);
+	ptr = getProc("glPushMatrix", userData); set_glPushMatrix((glPushMatrix_client_proc_t)ptr);
+	ptr = getProc("glReadPixels", userData); set_glReadPixels((glReadPixels_client_proc_t)ptr);
+	ptr = getProc("glRotatex", userData); set_glRotatex((glRotatex_client_proc_t)ptr);
+	ptr = getProc("glSampleCoverage", userData); set_glSampleCoverage((glSampleCoverage_client_proc_t)ptr);
+	ptr = getProc("glSampleCoveragex", userData); set_glSampleCoveragex((glSampleCoveragex_client_proc_t)ptr);
+	ptr = getProc("glScalex", userData); set_glScalex((glScalex_client_proc_t)ptr);
+	ptr = getProc("glScissor", userData); set_glScissor((glScissor_client_proc_t)ptr);
+	ptr = getProc("glShadeModel", userData); set_glShadeModel((glShadeModel_client_proc_t)ptr);
+	ptr = getProc("glStencilFunc", userData); set_glStencilFunc((glStencilFunc_client_proc_t)ptr);
+	ptr = getProc("glStencilMask", userData); set_glStencilMask((glStencilMask_client_proc_t)ptr);
+	ptr = getProc("glStencilOp", userData); set_glStencilOp((glStencilOp_client_proc_t)ptr);
+	ptr = getProc("glTexCoordPointer", userData); set_glTexCoordPointer((glTexCoordPointer_client_proc_t)ptr);
+	ptr = getProc("glTexEnvi", userData); set_glTexEnvi((glTexEnvi_client_proc_t)ptr);
+	ptr = getProc("glTexEnvx", userData); set_glTexEnvx((glTexEnvx_client_proc_t)ptr);
+	ptr = getProc("glTexEnviv", userData); set_glTexEnviv((glTexEnviv_client_proc_t)ptr);
+	ptr = getProc("glTexEnvxv", userData); set_glTexEnvxv((glTexEnvxv_client_proc_t)ptr);
+	ptr = getProc("glTexImage2D", userData); set_glTexImage2D((glTexImage2D_client_proc_t)ptr);
+	ptr = getProc("glTexParameteri", userData); set_glTexParameteri((glTexParameteri_client_proc_t)ptr);
+	ptr = getProc("glTexParameterx", userData); set_glTexParameterx((glTexParameterx_client_proc_t)ptr);
+	ptr = getProc("glTexParameteriv", userData); set_glTexParameteriv((glTexParameteriv_client_proc_t)ptr);
+	ptr = getProc("glTexParameterxv", userData); set_glTexParameterxv((glTexParameterxv_client_proc_t)ptr);
+	ptr = getProc("glTexSubImage2D", userData); set_glTexSubImage2D((glTexSubImage2D_client_proc_t)ptr);
+	ptr = getProc("glTranslatex", userData); set_glTranslatex((glTranslatex_client_proc_t)ptr);
+	ptr = getProc("glVertexPointer", userData); set_glVertexPointer((glVertexPointer_client_proc_t)ptr);
+	ptr = getProc("glViewport", userData); set_glViewport((glViewport_client_proc_t)ptr);
+	ptr = getProc("glPointSizePointerOES", userData); set_glPointSizePointerOES((glPointSizePointerOES_client_proc_t)ptr);
+	ptr = getProc("glVertexPointerOffset", userData); set_glVertexPointerOffset((glVertexPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glColorPointerOffset", userData); set_glColorPointerOffset((glColorPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glNormalPointerOffset", userData); set_glNormalPointerOffset((glNormalPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glPointSizePointerOffset", userData); set_glPointSizePointerOffset((glPointSizePointerOffset_client_proc_t)ptr);
+	ptr = getProc("glTexCoordPointerOffset", userData); set_glTexCoordPointerOffset((glTexCoordPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glWeightPointerOffset", userData); set_glWeightPointerOffset((glWeightPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glMatrixIndexPointerOffset", userData); set_glMatrixIndexPointerOffset((glMatrixIndexPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glVertexPointerData", userData); set_glVertexPointerData((glVertexPointerData_client_proc_t)ptr);
+	ptr = getProc("glColorPointerData", userData); set_glColorPointerData((glColorPointerData_client_proc_t)ptr);
+	ptr = getProc("glNormalPointerData", userData); set_glNormalPointerData((glNormalPointerData_client_proc_t)ptr);
+	ptr = getProc("glTexCoordPointerData", userData); set_glTexCoordPointerData((glTexCoordPointerData_client_proc_t)ptr);
+	ptr = getProc("glPointSizePointerData", userData); set_glPointSizePointerData((glPointSizePointerData_client_proc_t)ptr);
+	ptr = getProc("glWeightPointerData", userData); set_glWeightPointerData((glWeightPointerData_client_proc_t)ptr);
+	ptr = getProc("glMatrixIndexPointerData", userData); set_glMatrixIndexPointerData((glMatrixIndexPointerData_client_proc_t)ptr);
+	ptr = getProc("glDrawElementsOffset", userData); set_glDrawElementsOffset((glDrawElementsOffset_client_proc_t)ptr);
+	ptr = getProc("glDrawElementsData", userData); set_glDrawElementsData((glDrawElementsData_client_proc_t)ptr);
+	ptr = getProc("glGetCompressedTextureFormats", userData); set_glGetCompressedTextureFormats((glGetCompressedTextureFormats_client_proc_t)ptr);
+	ptr = getProc("glFinishRoundTrip", userData); set_glFinishRoundTrip((glFinishRoundTrip_client_proc_t)ptr);
+	ptr = getProc("glBlendEquationSeparateOES", userData); set_glBlendEquationSeparateOES((glBlendEquationSeparateOES_client_proc_t)ptr);
+	ptr = getProc("glBlendFuncSeparateOES", userData); set_glBlendFuncSeparateOES((glBlendFuncSeparateOES_client_proc_t)ptr);
+	ptr = getProc("glBlendEquationOES", userData); set_glBlendEquationOES((glBlendEquationOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexsOES", userData); set_glDrawTexsOES((glDrawTexsOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexiOES", userData); set_glDrawTexiOES((glDrawTexiOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexxOES", userData); set_glDrawTexxOES((glDrawTexxOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexsvOES", userData); set_glDrawTexsvOES((glDrawTexsvOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexivOES", userData); set_glDrawTexivOES((glDrawTexivOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexxvOES", userData); set_glDrawTexxvOES((glDrawTexxvOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexfOES", userData); set_glDrawTexfOES((glDrawTexfOES_client_proc_t)ptr);
+	ptr = getProc("glDrawTexfvOES", userData); set_glDrawTexfvOES((glDrawTexfvOES_client_proc_t)ptr);
+	ptr = getProc("glEGLImageTargetTexture2DOES", userData); set_glEGLImageTargetTexture2DOES((glEGLImageTargetTexture2DOES_client_proc_t)ptr);
+	ptr = getProc("glEGLImageTargetRenderbufferStorageOES", userData); set_glEGLImageTargetRenderbufferStorageOES((glEGLImageTargetRenderbufferStorageOES_client_proc_t)ptr);
+	ptr = getProc("glAlphaFuncxOES", userData); set_glAlphaFuncxOES((glAlphaFuncxOES_client_proc_t)ptr);
+	ptr = getProc("glClearColorxOES", userData); set_glClearColorxOES((glClearColorxOES_client_proc_t)ptr);
+	ptr = getProc("glClearDepthxOES", userData); set_glClearDepthxOES((glClearDepthxOES_client_proc_t)ptr);
+	ptr = getProc("glClipPlanexOES", userData); set_glClipPlanexOES((glClipPlanexOES_client_proc_t)ptr);
+	ptr = getProc("glClipPlanexIMG", userData); set_glClipPlanexIMG((glClipPlanexIMG_client_proc_t)ptr);
+	ptr = getProc("glColor4xOES", userData); set_glColor4xOES((glColor4xOES_client_proc_t)ptr);
+	ptr = getProc("glDepthRangexOES", userData); set_glDepthRangexOES((glDepthRangexOES_client_proc_t)ptr);
+	ptr = getProc("glFogxOES", userData); set_glFogxOES((glFogxOES_client_proc_t)ptr);
+	ptr = getProc("glFogxvOES", userData); set_glFogxvOES((glFogxvOES_client_proc_t)ptr);
+	ptr = getProc("glFrustumxOES", userData); set_glFrustumxOES((glFrustumxOES_client_proc_t)ptr);
+	ptr = getProc("glGetClipPlanexOES", userData); set_glGetClipPlanexOES((glGetClipPlanexOES_client_proc_t)ptr);
+	ptr = getProc("glGetClipPlanex", userData); set_glGetClipPlanex((glGetClipPlanex_client_proc_t)ptr);
+	ptr = getProc("glGetFixedvOES", userData); set_glGetFixedvOES((glGetFixedvOES_client_proc_t)ptr);
+	ptr = getProc("glGetLightxvOES", userData); set_glGetLightxvOES((glGetLightxvOES_client_proc_t)ptr);
+	ptr = getProc("glGetMaterialxvOES", userData); set_glGetMaterialxvOES((glGetMaterialxvOES_client_proc_t)ptr);
+	ptr = getProc("glGetTexEnvxvOES", userData); set_glGetTexEnvxvOES((glGetTexEnvxvOES_client_proc_t)ptr);
+	ptr = getProc("glGetTexParameterxvOES", userData); set_glGetTexParameterxvOES((glGetTexParameterxvOES_client_proc_t)ptr);
+	ptr = getProc("glLightModelxOES", userData); set_glLightModelxOES((glLightModelxOES_client_proc_t)ptr);
+	ptr = getProc("glLightModelxvOES", userData); set_glLightModelxvOES((glLightModelxvOES_client_proc_t)ptr);
+	ptr = getProc("glLightxOES", userData); set_glLightxOES((glLightxOES_client_proc_t)ptr);
+	ptr = getProc("glLightxvOES", userData); set_glLightxvOES((glLightxvOES_client_proc_t)ptr);
+	ptr = getProc("glLineWidthxOES", userData); set_glLineWidthxOES((glLineWidthxOES_client_proc_t)ptr);
+	ptr = getProc("glLoadMatrixxOES", userData); set_glLoadMatrixxOES((glLoadMatrixxOES_client_proc_t)ptr);
+	ptr = getProc("glMaterialxOES", userData); set_glMaterialxOES((glMaterialxOES_client_proc_t)ptr);
+	ptr = getProc("glMaterialxvOES", userData); set_glMaterialxvOES((glMaterialxvOES_client_proc_t)ptr);
+	ptr = getProc("glMultMatrixxOES", userData); set_glMultMatrixxOES((glMultMatrixxOES_client_proc_t)ptr);
+	ptr = getProc("glMultiTexCoord4xOES", userData); set_glMultiTexCoord4xOES((glMultiTexCoord4xOES_client_proc_t)ptr);
+	ptr = getProc("glNormal3xOES", userData); set_glNormal3xOES((glNormal3xOES_client_proc_t)ptr);
+	ptr = getProc("glOrthoxOES", userData); set_glOrthoxOES((glOrthoxOES_client_proc_t)ptr);
+	ptr = getProc("glPointParameterxOES", userData); set_glPointParameterxOES((glPointParameterxOES_client_proc_t)ptr);
+	ptr = getProc("glPointParameterxvOES", userData); set_glPointParameterxvOES((glPointParameterxvOES_client_proc_t)ptr);
+	ptr = getProc("glPointSizexOES", userData); set_glPointSizexOES((glPointSizexOES_client_proc_t)ptr);
+	ptr = getProc("glPolygonOffsetxOES", userData); set_glPolygonOffsetxOES((glPolygonOffsetxOES_client_proc_t)ptr);
+	ptr = getProc("glRotatexOES", userData); set_glRotatexOES((glRotatexOES_client_proc_t)ptr);
+	ptr = getProc("glSampleCoveragexOES", userData); set_glSampleCoveragexOES((glSampleCoveragexOES_client_proc_t)ptr);
+	ptr = getProc("glScalexOES", userData); set_glScalexOES((glScalexOES_client_proc_t)ptr);
+	ptr = getProc("glTexEnvxOES", userData); set_glTexEnvxOES((glTexEnvxOES_client_proc_t)ptr);
+	ptr = getProc("glTexEnvxvOES", userData); set_glTexEnvxvOES((glTexEnvxvOES_client_proc_t)ptr);
+	ptr = getProc("glTexParameterxOES", userData); set_glTexParameterxOES((glTexParameterxOES_client_proc_t)ptr);
+	ptr = getProc("glTexParameterxvOES", userData); set_glTexParameterxvOES((glTexParameterxvOES_client_proc_t)ptr);
+	ptr = getProc("glTranslatexOES", userData); set_glTranslatexOES((glTranslatexOES_client_proc_t)ptr);
+	ptr = getProc("glIsRenderbufferOES", userData); set_glIsRenderbufferOES((glIsRenderbufferOES_client_proc_t)ptr);
+	ptr = getProc("glBindRenderbufferOES", userData); set_glBindRenderbufferOES((glBindRenderbufferOES_client_proc_t)ptr);
+	ptr = getProc("glDeleteRenderbuffersOES", userData); set_glDeleteRenderbuffersOES((glDeleteRenderbuffersOES_client_proc_t)ptr);
+	ptr = getProc("glGenRenderbuffersOES", userData); set_glGenRenderbuffersOES((glGenRenderbuffersOES_client_proc_t)ptr);
+	ptr = getProc("glRenderbufferStorageOES", userData); set_glRenderbufferStorageOES((glRenderbufferStorageOES_client_proc_t)ptr);
+	ptr = getProc("glGetRenderbufferParameterivOES", userData); set_glGetRenderbufferParameterivOES((glGetRenderbufferParameterivOES_client_proc_t)ptr);
+	ptr = getProc("glIsFramebufferOES", userData); set_glIsFramebufferOES((glIsFramebufferOES_client_proc_t)ptr);
+	ptr = getProc("glBindFramebufferOES", userData); set_glBindFramebufferOES((glBindFramebufferOES_client_proc_t)ptr);
+	ptr = getProc("glDeleteFramebuffersOES", userData); set_glDeleteFramebuffersOES((glDeleteFramebuffersOES_client_proc_t)ptr);
+	ptr = getProc("glGenFramebuffersOES", userData); set_glGenFramebuffersOES((glGenFramebuffersOES_client_proc_t)ptr);
+	ptr = getProc("glCheckFramebufferStatusOES", userData); set_glCheckFramebufferStatusOES((glCheckFramebufferStatusOES_client_proc_t)ptr);
+	ptr = getProc("glFramebufferRenderbufferOES", userData); set_glFramebufferRenderbufferOES((glFramebufferRenderbufferOES_client_proc_t)ptr);
+	ptr = getProc("glFramebufferTexture2DOES", userData); set_glFramebufferTexture2DOES((glFramebufferTexture2DOES_client_proc_t)ptr);
+	ptr = getProc("glGetFramebufferAttachmentParameterivOES", userData); set_glGetFramebufferAttachmentParameterivOES((glGetFramebufferAttachmentParameterivOES_client_proc_t)ptr);
+	ptr = getProc("glGenerateMipmapOES", userData); set_glGenerateMipmapOES((glGenerateMipmapOES_client_proc_t)ptr);
+	ptr = getProc("glMapBufferOES", userData); set_glMapBufferOES((glMapBufferOES_client_proc_t)ptr);
+	ptr = getProc("glUnmapBufferOES", userData); set_glUnmapBufferOES((glUnmapBufferOES_client_proc_t)ptr);
+	ptr = getProc("glGetBufferPointervOES", userData); set_glGetBufferPointervOES((glGetBufferPointervOES_client_proc_t)ptr);
+	ptr = getProc("glCurrentPaletteMatrixOES", userData); set_glCurrentPaletteMatrixOES((glCurrentPaletteMatrixOES_client_proc_t)ptr);
+	ptr = getProc("glLoadPaletteFromModelViewMatrixOES", userData); set_glLoadPaletteFromModelViewMatrixOES((glLoadPaletteFromModelViewMatrixOES_client_proc_t)ptr);
+	ptr = getProc("glMatrixIndexPointerOES", userData); set_glMatrixIndexPointerOES((glMatrixIndexPointerOES_client_proc_t)ptr);
+	ptr = getProc("glWeightPointerOES", userData); set_glWeightPointerOES((glWeightPointerOES_client_proc_t)ptr);
+	ptr = getProc("glQueryMatrixxOES", userData); set_glQueryMatrixxOES((glQueryMatrixxOES_client_proc_t)ptr);
+	ptr = getProc("glDepthRangefOES", userData); set_glDepthRangefOES((glDepthRangefOES_client_proc_t)ptr);
+	ptr = getProc("glFrustumfOES", userData); set_glFrustumfOES((glFrustumfOES_client_proc_t)ptr);
+	ptr = getProc("glOrthofOES", userData); set_glOrthofOES((glOrthofOES_client_proc_t)ptr);
+	ptr = getProc("glClipPlanefOES", userData); set_glClipPlanefOES((glClipPlanefOES_client_proc_t)ptr);
+	ptr = getProc("glClipPlanefIMG", userData); set_glClipPlanefIMG((glClipPlanefIMG_client_proc_t)ptr);
+	ptr = getProc("glGetClipPlanefOES", userData); set_glGetClipPlanefOES((glGetClipPlanefOES_client_proc_t)ptr);
+	ptr = getProc("glClearDepthfOES", userData); set_glClearDepthfOES((glClearDepthfOES_client_proc_t)ptr);
+	ptr = getProc("glTexGenfOES", userData); set_glTexGenfOES((glTexGenfOES_client_proc_t)ptr);
+	ptr = getProc("glTexGenfvOES", userData); set_glTexGenfvOES((glTexGenfvOES_client_proc_t)ptr);
+	ptr = getProc("glTexGeniOES", userData); set_glTexGeniOES((glTexGeniOES_client_proc_t)ptr);
+	ptr = getProc("glTexGenivOES", userData); set_glTexGenivOES((glTexGenivOES_client_proc_t)ptr);
+	ptr = getProc("glTexGenxOES", userData); set_glTexGenxOES((glTexGenxOES_client_proc_t)ptr);
+	ptr = getProc("glTexGenxvOES", userData); set_glTexGenxvOES((glTexGenxvOES_client_proc_t)ptr);
+	ptr = getProc("glGetTexGenfvOES", userData); set_glGetTexGenfvOES((glGetTexGenfvOES_client_proc_t)ptr);
+	ptr = getProc("glGetTexGenivOES", userData); set_glGetTexGenivOES((glGetTexGenivOES_client_proc_t)ptr);
+	ptr = getProc("glGetTexGenxvOES", userData); set_glGetTexGenxvOES((glGetTexGenxvOES_client_proc_t)ptr);
+	ptr = getProc("glBindVertexArrayOES", userData); set_glBindVertexArrayOES((glBindVertexArrayOES_client_proc_t)ptr);
+	ptr = getProc("glDeleteVertexArraysOES", userData); set_glDeleteVertexArraysOES((glDeleteVertexArraysOES_client_proc_t)ptr);
+	ptr = getProc("glGenVertexArraysOES", userData); set_glGenVertexArraysOES((glGenVertexArraysOES_client_proc_t)ptr);
+	ptr = getProc("glIsVertexArrayOES", userData); set_glIsVertexArrayOES((glIsVertexArrayOES_client_proc_t)ptr);
+	ptr = getProc("glDiscardFramebufferEXT", userData); set_glDiscardFramebufferEXT((glDiscardFramebufferEXT_client_proc_t)ptr);
+	ptr = getProc("glMultiDrawArraysEXT", userData); set_glMultiDrawArraysEXT((glMultiDrawArraysEXT_client_proc_t)ptr);
+	ptr = getProc("glMultiDrawElementsEXT", userData); set_glMultiDrawElementsEXT((glMultiDrawElementsEXT_client_proc_t)ptr);
+	ptr = getProc("glMultiDrawArraysSUN", userData); set_glMultiDrawArraysSUN((glMultiDrawArraysSUN_client_proc_t)ptr);
+	ptr = getProc("glMultiDrawElementsSUN", userData); set_glMultiDrawElementsSUN((glMultiDrawElementsSUN_client_proc_t)ptr);
+	ptr = getProc("glRenderbufferStorageMultisampleIMG", userData); set_glRenderbufferStorageMultisampleIMG((glRenderbufferStorageMultisampleIMG_client_proc_t)ptr);
+	ptr = getProc("glFramebufferTexture2DMultisampleIMG", userData); set_glFramebufferTexture2DMultisampleIMG((glFramebufferTexture2DMultisampleIMG_client_proc_t)ptr);
+	ptr = getProc("glDeleteFencesNV", userData); set_glDeleteFencesNV((glDeleteFencesNV_client_proc_t)ptr);
+	ptr = getProc("glGenFencesNV", userData); set_glGenFencesNV((glGenFencesNV_client_proc_t)ptr);
+	ptr = getProc("glIsFenceNV", userData); set_glIsFenceNV((glIsFenceNV_client_proc_t)ptr);
+	ptr = getProc("glTestFenceNV", userData); set_glTestFenceNV((glTestFenceNV_client_proc_t)ptr);
+	ptr = getProc("glGetFenceivNV", userData); set_glGetFenceivNV((glGetFenceivNV_client_proc_t)ptr);
+	ptr = getProc("glFinishFenceNV", userData); set_glFinishFenceNV((glFinishFenceNV_client_proc_t)ptr);
+	ptr = getProc("glSetFenceNV", userData); set_glSetFenceNV((glSetFenceNV_client_proc_t)ptr);
+	ptr = getProc("glGetDriverControlsQCOM", userData); set_glGetDriverControlsQCOM((glGetDriverControlsQCOM_client_proc_t)ptr);
+	ptr = getProc("glGetDriverControlStringQCOM", userData); set_glGetDriverControlStringQCOM((glGetDriverControlStringQCOM_client_proc_t)ptr);
+	ptr = getProc("glEnableDriverControlQCOM", userData); set_glEnableDriverControlQCOM((glEnableDriverControlQCOM_client_proc_t)ptr);
+	ptr = getProc("glDisableDriverControlQCOM", userData); set_glDisableDriverControlQCOM((glDisableDriverControlQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetTexturesQCOM", userData); set_glExtGetTexturesQCOM((glExtGetTexturesQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetBuffersQCOM", userData); set_glExtGetBuffersQCOM((glExtGetBuffersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetRenderbuffersQCOM", userData); set_glExtGetRenderbuffersQCOM((glExtGetRenderbuffersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetFramebuffersQCOM", userData); set_glExtGetFramebuffersQCOM((glExtGetFramebuffersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetTexLevelParameterivQCOM", userData); set_glExtGetTexLevelParameterivQCOM((glExtGetTexLevelParameterivQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtTexObjectStateOverrideiQCOM", userData); set_glExtTexObjectStateOverrideiQCOM((glExtTexObjectStateOverrideiQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetTexSubImageQCOM", userData); set_glExtGetTexSubImageQCOM((glExtGetTexSubImageQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetBufferPointervQCOM", userData); set_glExtGetBufferPointervQCOM((glExtGetBufferPointervQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetShadersQCOM", userData); set_glExtGetShadersQCOM((glExtGetShadersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetProgramsQCOM", userData); set_glExtGetProgramsQCOM((glExtGetProgramsQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtIsProgramBinaryQCOM", userData); set_glExtIsProgramBinaryQCOM((glExtIsProgramBinaryQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetProgramBinarySourceQCOM", userData); set_glExtGetProgramBinarySourceQCOM((glExtGetProgramBinarySourceQCOM_client_proc_t)ptr);
+	ptr = getProc("glStartTilingQCOM", userData); set_glStartTilingQCOM((glStartTilingQCOM_client_proc_t)ptr);
+	ptr = getProc("glEndTilingQCOM", userData); set_glEndTilingQCOM((glEndTilingQCOM_client_proc_t)ptr);
+	return 0;
+}
+
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_client_context.h b/tools/emulator/opengl/system/GLESv1_enc/gl_client_context.h
new file mode 100644
index 0000000..c0b83ad
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_client_context.h
@@ -0,0 +1,603 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __gl_client_context_t_h
+#define __gl_client_context_t_h
+
+#include "gl_client_proc.h"
+
+
+struct gl_client_context_t {
+
+	glAlphaFunc_client_proc_t glAlphaFunc;
+	glClearColor_client_proc_t glClearColor;
+	glClearDepthf_client_proc_t glClearDepthf;
+	glClipPlanef_client_proc_t glClipPlanef;
+	glColor4f_client_proc_t glColor4f;
+	glDepthRangef_client_proc_t glDepthRangef;
+	glFogf_client_proc_t glFogf;
+	glFogfv_client_proc_t glFogfv;
+	glFrustumf_client_proc_t glFrustumf;
+	glGetClipPlanef_client_proc_t glGetClipPlanef;
+	glGetFloatv_client_proc_t glGetFloatv;
+	glGetLightfv_client_proc_t glGetLightfv;
+	glGetMaterialfv_client_proc_t glGetMaterialfv;
+	glGetTexEnvfv_client_proc_t glGetTexEnvfv;
+	glGetTexParameterfv_client_proc_t glGetTexParameterfv;
+	glLightModelf_client_proc_t glLightModelf;
+	glLightModelfv_client_proc_t glLightModelfv;
+	glLightf_client_proc_t glLightf;
+	glLightfv_client_proc_t glLightfv;
+	glLineWidth_client_proc_t glLineWidth;
+	glLoadMatrixf_client_proc_t glLoadMatrixf;
+	glMaterialf_client_proc_t glMaterialf;
+	glMaterialfv_client_proc_t glMaterialfv;
+	glMultMatrixf_client_proc_t glMultMatrixf;
+	glMultiTexCoord4f_client_proc_t glMultiTexCoord4f;
+	glNormal3f_client_proc_t glNormal3f;
+	glOrthof_client_proc_t glOrthof;
+	glPointParameterf_client_proc_t glPointParameterf;
+	glPointParameterfv_client_proc_t glPointParameterfv;
+	glPointSize_client_proc_t glPointSize;
+	glPolygonOffset_client_proc_t glPolygonOffset;
+	glRotatef_client_proc_t glRotatef;
+	glScalef_client_proc_t glScalef;
+	glTexEnvf_client_proc_t glTexEnvf;
+	glTexEnvfv_client_proc_t glTexEnvfv;
+	glTexParameterf_client_proc_t glTexParameterf;
+	glTexParameterfv_client_proc_t glTexParameterfv;
+	glTranslatef_client_proc_t glTranslatef;
+	glActiveTexture_client_proc_t glActiveTexture;
+	glAlphaFuncx_client_proc_t glAlphaFuncx;
+	glBindBuffer_client_proc_t glBindBuffer;
+	glBindTexture_client_proc_t glBindTexture;
+	glBlendFunc_client_proc_t glBlendFunc;
+	glBufferData_client_proc_t glBufferData;
+	glBufferSubData_client_proc_t glBufferSubData;
+	glClear_client_proc_t glClear;
+	glClearColorx_client_proc_t glClearColorx;
+	glClearDepthx_client_proc_t glClearDepthx;
+	glClearStencil_client_proc_t glClearStencil;
+	glClientActiveTexture_client_proc_t glClientActiveTexture;
+	glColor4ub_client_proc_t glColor4ub;
+	glColor4x_client_proc_t glColor4x;
+	glColorMask_client_proc_t glColorMask;
+	glColorPointer_client_proc_t glColorPointer;
+	glCompressedTexImage2D_client_proc_t glCompressedTexImage2D;
+	glCompressedTexSubImage2D_client_proc_t glCompressedTexSubImage2D;
+	glCopyTexImage2D_client_proc_t glCopyTexImage2D;
+	glCopyTexSubImage2D_client_proc_t glCopyTexSubImage2D;
+	glCullFace_client_proc_t glCullFace;
+	glDeleteBuffers_client_proc_t glDeleteBuffers;
+	glDeleteTextures_client_proc_t glDeleteTextures;
+	glDepthFunc_client_proc_t glDepthFunc;
+	glDepthMask_client_proc_t glDepthMask;
+	glDepthRangex_client_proc_t glDepthRangex;
+	glDisable_client_proc_t glDisable;
+	glDisableClientState_client_proc_t glDisableClientState;
+	glDrawArrays_client_proc_t glDrawArrays;
+	glDrawElements_client_proc_t glDrawElements;
+	glEnable_client_proc_t glEnable;
+	glEnableClientState_client_proc_t glEnableClientState;
+	glFinish_client_proc_t glFinish;
+	glFlush_client_proc_t glFlush;
+	glFogx_client_proc_t glFogx;
+	glFogxv_client_proc_t glFogxv;
+	glFrontFace_client_proc_t glFrontFace;
+	glFrustumx_client_proc_t glFrustumx;
+	glGetBooleanv_client_proc_t glGetBooleanv;
+	glGetBufferParameteriv_client_proc_t glGetBufferParameteriv;
+	glClipPlanex_client_proc_t glClipPlanex;
+	glGenBuffers_client_proc_t glGenBuffers;
+	glGenTextures_client_proc_t glGenTextures;
+	glGetError_client_proc_t glGetError;
+	glGetFixedv_client_proc_t glGetFixedv;
+	glGetIntegerv_client_proc_t glGetIntegerv;
+	glGetLightxv_client_proc_t glGetLightxv;
+	glGetMaterialxv_client_proc_t glGetMaterialxv;
+	glGetPointerv_client_proc_t glGetPointerv;
+	glGetString_client_proc_t glGetString;
+	glGetTexEnviv_client_proc_t glGetTexEnviv;
+	glGetTexEnvxv_client_proc_t glGetTexEnvxv;
+	glGetTexParameteriv_client_proc_t glGetTexParameteriv;
+	glGetTexParameterxv_client_proc_t glGetTexParameterxv;
+	glHint_client_proc_t glHint;
+	glIsBuffer_client_proc_t glIsBuffer;
+	glIsEnabled_client_proc_t glIsEnabled;
+	glIsTexture_client_proc_t glIsTexture;
+	glLightModelx_client_proc_t glLightModelx;
+	glLightModelxv_client_proc_t glLightModelxv;
+	glLightx_client_proc_t glLightx;
+	glLightxv_client_proc_t glLightxv;
+	glLineWidthx_client_proc_t glLineWidthx;
+	glLoadIdentity_client_proc_t glLoadIdentity;
+	glLoadMatrixx_client_proc_t glLoadMatrixx;
+	glLogicOp_client_proc_t glLogicOp;
+	glMaterialx_client_proc_t glMaterialx;
+	glMaterialxv_client_proc_t glMaterialxv;
+	glMatrixMode_client_proc_t glMatrixMode;
+	glMultMatrixx_client_proc_t glMultMatrixx;
+	glMultiTexCoord4x_client_proc_t glMultiTexCoord4x;
+	glNormal3x_client_proc_t glNormal3x;
+	glNormalPointer_client_proc_t glNormalPointer;
+	glOrthox_client_proc_t glOrthox;
+	glPixelStorei_client_proc_t glPixelStorei;
+	glPointParameterx_client_proc_t glPointParameterx;
+	glPointParameterxv_client_proc_t glPointParameterxv;
+	glPointSizex_client_proc_t glPointSizex;
+	glPolygonOffsetx_client_proc_t glPolygonOffsetx;
+	glPopMatrix_client_proc_t glPopMatrix;
+	glPushMatrix_client_proc_t glPushMatrix;
+	glReadPixels_client_proc_t glReadPixels;
+	glRotatex_client_proc_t glRotatex;
+	glSampleCoverage_client_proc_t glSampleCoverage;
+	glSampleCoveragex_client_proc_t glSampleCoveragex;
+	glScalex_client_proc_t glScalex;
+	glScissor_client_proc_t glScissor;
+	glShadeModel_client_proc_t glShadeModel;
+	glStencilFunc_client_proc_t glStencilFunc;
+	glStencilMask_client_proc_t glStencilMask;
+	glStencilOp_client_proc_t glStencilOp;
+	glTexCoordPointer_client_proc_t glTexCoordPointer;
+	glTexEnvi_client_proc_t glTexEnvi;
+	glTexEnvx_client_proc_t glTexEnvx;
+	glTexEnviv_client_proc_t glTexEnviv;
+	glTexEnvxv_client_proc_t glTexEnvxv;
+	glTexImage2D_client_proc_t glTexImage2D;
+	glTexParameteri_client_proc_t glTexParameteri;
+	glTexParameterx_client_proc_t glTexParameterx;
+	glTexParameteriv_client_proc_t glTexParameteriv;
+	glTexParameterxv_client_proc_t glTexParameterxv;
+	glTexSubImage2D_client_proc_t glTexSubImage2D;
+	glTranslatex_client_proc_t glTranslatex;
+	glVertexPointer_client_proc_t glVertexPointer;
+	glViewport_client_proc_t glViewport;
+	glPointSizePointerOES_client_proc_t glPointSizePointerOES;
+	glVertexPointerOffset_client_proc_t glVertexPointerOffset;
+	glColorPointerOffset_client_proc_t glColorPointerOffset;
+	glNormalPointerOffset_client_proc_t glNormalPointerOffset;
+	glPointSizePointerOffset_client_proc_t glPointSizePointerOffset;
+	glTexCoordPointerOffset_client_proc_t glTexCoordPointerOffset;
+	glWeightPointerOffset_client_proc_t glWeightPointerOffset;
+	glMatrixIndexPointerOffset_client_proc_t glMatrixIndexPointerOffset;
+	glVertexPointerData_client_proc_t glVertexPointerData;
+	glColorPointerData_client_proc_t glColorPointerData;
+	glNormalPointerData_client_proc_t glNormalPointerData;
+	glTexCoordPointerData_client_proc_t glTexCoordPointerData;
+	glPointSizePointerData_client_proc_t glPointSizePointerData;
+	glWeightPointerData_client_proc_t glWeightPointerData;
+	glMatrixIndexPointerData_client_proc_t glMatrixIndexPointerData;
+	glDrawElementsOffset_client_proc_t glDrawElementsOffset;
+	glDrawElementsData_client_proc_t glDrawElementsData;
+	glGetCompressedTextureFormats_client_proc_t glGetCompressedTextureFormats;
+	glFinishRoundTrip_client_proc_t glFinishRoundTrip;
+	glBlendEquationSeparateOES_client_proc_t glBlendEquationSeparateOES;
+	glBlendFuncSeparateOES_client_proc_t glBlendFuncSeparateOES;
+	glBlendEquationOES_client_proc_t glBlendEquationOES;
+	glDrawTexsOES_client_proc_t glDrawTexsOES;
+	glDrawTexiOES_client_proc_t glDrawTexiOES;
+	glDrawTexxOES_client_proc_t glDrawTexxOES;
+	glDrawTexsvOES_client_proc_t glDrawTexsvOES;
+	glDrawTexivOES_client_proc_t glDrawTexivOES;
+	glDrawTexxvOES_client_proc_t glDrawTexxvOES;
+	glDrawTexfOES_client_proc_t glDrawTexfOES;
+	glDrawTexfvOES_client_proc_t glDrawTexfvOES;
+	glEGLImageTargetTexture2DOES_client_proc_t glEGLImageTargetTexture2DOES;
+	glEGLImageTargetRenderbufferStorageOES_client_proc_t glEGLImageTargetRenderbufferStorageOES;
+	glAlphaFuncxOES_client_proc_t glAlphaFuncxOES;
+	glClearColorxOES_client_proc_t glClearColorxOES;
+	glClearDepthxOES_client_proc_t glClearDepthxOES;
+	glClipPlanexOES_client_proc_t glClipPlanexOES;
+	glClipPlanexIMG_client_proc_t glClipPlanexIMG;
+	glColor4xOES_client_proc_t glColor4xOES;
+	glDepthRangexOES_client_proc_t glDepthRangexOES;
+	glFogxOES_client_proc_t glFogxOES;
+	glFogxvOES_client_proc_t glFogxvOES;
+	glFrustumxOES_client_proc_t glFrustumxOES;
+	glGetClipPlanexOES_client_proc_t glGetClipPlanexOES;
+	glGetClipPlanex_client_proc_t glGetClipPlanex;
+	glGetFixedvOES_client_proc_t glGetFixedvOES;
+	glGetLightxvOES_client_proc_t glGetLightxvOES;
+	glGetMaterialxvOES_client_proc_t glGetMaterialxvOES;
+	glGetTexEnvxvOES_client_proc_t glGetTexEnvxvOES;
+	glGetTexParameterxvOES_client_proc_t glGetTexParameterxvOES;
+	glLightModelxOES_client_proc_t glLightModelxOES;
+	glLightModelxvOES_client_proc_t glLightModelxvOES;
+	glLightxOES_client_proc_t glLightxOES;
+	glLightxvOES_client_proc_t glLightxvOES;
+	glLineWidthxOES_client_proc_t glLineWidthxOES;
+	glLoadMatrixxOES_client_proc_t glLoadMatrixxOES;
+	glMaterialxOES_client_proc_t glMaterialxOES;
+	glMaterialxvOES_client_proc_t glMaterialxvOES;
+	glMultMatrixxOES_client_proc_t glMultMatrixxOES;
+	glMultiTexCoord4xOES_client_proc_t glMultiTexCoord4xOES;
+	glNormal3xOES_client_proc_t glNormal3xOES;
+	glOrthoxOES_client_proc_t glOrthoxOES;
+	glPointParameterxOES_client_proc_t glPointParameterxOES;
+	glPointParameterxvOES_client_proc_t glPointParameterxvOES;
+	glPointSizexOES_client_proc_t glPointSizexOES;
+	glPolygonOffsetxOES_client_proc_t glPolygonOffsetxOES;
+	glRotatexOES_client_proc_t glRotatexOES;
+	glSampleCoveragexOES_client_proc_t glSampleCoveragexOES;
+	glScalexOES_client_proc_t glScalexOES;
+	glTexEnvxOES_client_proc_t glTexEnvxOES;
+	glTexEnvxvOES_client_proc_t glTexEnvxvOES;
+	glTexParameterxOES_client_proc_t glTexParameterxOES;
+	glTexParameterxvOES_client_proc_t glTexParameterxvOES;
+	glTranslatexOES_client_proc_t glTranslatexOES;
+	glIsRenderbufferOES_client_proc_t glIsRenderbufferOES;
+	glBindRenderbufferOES_client_proc_t glBindRenderbufferOES;
+	glDeleteRenderbuffersOES_client_proc_t glDeleteRenderbuffersOES;
+	glGenRenderbuffersOES_client_proc_t glGenRenderbuffersOES;
+	glRenderbufferStorageOES_client_proc_t glRenderbufferStorageOES;
+	glGetRenderbufferParameterivOES_client_proc_t glGetRenderbufferParameterivOES;
+	glIsFramebufferOES_client_proc_t glIsFramebufferOES;
+	glBindFramebufferOES_client_proc_t glBindFramebufferOES;
+	glDeleteFramebuffersOES_client_proc_t glDeleteFramebuffersOES;
+	glGenFramebuffersOES_client_proc_t glGenFramebuffersOES;
+	glCheckFramebufferStatusOES_client_proc_t glCheckFramebufferStatusOES;
+	glFramebufferRenderbufferOES_client_proc_t glFramebufferRenderbufferOES;
+	glFramebufferTexture2DOES_client_proc_t glFramebufferTexture2DOES;
+	glGetFramebufferAttachmentParameterivOES_client_proc_t glGetFramebufferAttachmentParameterivOES;
+	glGenerateMipmapOES_client_proc_t glGenerateMipmapOES;
+	glMapBufferOES_client_proc_t glMapBufferOES;
+	glUnmapBufferOES_client_proc_t glUnmapBufferOES;
+	glGetBufferPointervOES_client_proc_t glGetBufferPointervOES;
+	glCurrentPaletteMatrixOES_client_proc_t glCurrentPaletteMatrixOES;
+	glLoadPaletteFromModelViewMatrixOES_client_proc_t glLoadPaletteFromModelViewMatrixOES;
+	glMatrixIndexPointerOES_client_proc_t glMatrixIndexPointerOES;
+	glWeightPointerOES_client_proc_t glWeightPointerOES;
+	glQueryMatrixxOES_client_proc_t glQueryMatrixxOES;
+	glDepthRangefOES_client_proc_t glDepthRangefOES;
+	glFrustumfOES_client_proc_t glFrustumfOES;
+	glOrthofOES_client_proc_t glOrthofOES;
+	glClipPlanefOES_client_proc_t glClipPlanefOES;
+	glClipPlanefIMG_client_proc_t glClipPlanefIMG;
+	glGetClipPlanefOES_client_proc_t glGetClipPlanefOES;
+	glClearDepthfOES_client_proc_t glClearDepthfOES;
+	glTexGenfOES_client_proc_t glTexGenfOES;
+	glTexGenfvOES_client_proc_t glTexGenfvOES;
+	glTexGeniOES_client_proc_t glTexGeniOES;
+	glTexGenivOES_client_proc_t glTexGenivOES;
+	glTexGenxOES_client_proc_t glTexGenxOES;
+	glTexGenxvOES_client_proc_t glTexGenxvOES;
+	glGetTexGenfvOES_client_proc_t glGetTexGenfvOES;
+	glGetTexGenivOES_client_proc_t glGetTexGenivOES;
+	glGetTexGenxvOES_client_proc_t glGetTexGenxvOES;
+	glBindVertexArrayOES_client_proc_t glBindVertexArrayOES;
+	glDeleteVertexArraysOES_client_proc_t glDeleteVertexArraysOES;
+	glGenVertexArraysOES_client_proc_t glGenVertexArraysOES;
+	glIsVertexArrayOES_client_proc_t glIsVertexArrayOES;
+	glDiscardFramebufferEXT_client_proc_t glDiscardFramebufferEXT;
+	glMultiDrawArraysEXT_client_proc_t glMultiDrawArraysEXT;
+	glMultiDrawElementsEXT_client_proc_t glMultiDrawElementsEXT;
+	glMultiDrawArraysSUN_client_proc_t glMultiDrawArraysSUN;
+	glMultiDrawElementsSUN_client_proc_t glMultiDrawElementsSUN;
+	glRenderbufferStorageMultisampleIMG_client_proc_t glRenderbufferStorageMultisampleIMG;
+	glFramebufferTexture2DMultisampleIMG_client_proc_t glFramebufferTexture2DMultisampleIMG;
+	glDeleteFencesNV_client_proc_t glDeleteFencesNV;
+	glGenFencesNV_client_proc_t glGenFencesNV;
+	glIsFenceNV_client_proc_t glIsFenceNV;
+	glTestFenceNV_client_proc_t glTestFenceNV;
+	glGetFenceivNV_client_proc_t glGetFenceivNV;
+	glFinishFenceNV_client_proc_t glFinishFenceNV;
+	glSetFenceNV_client_proc_t glSetFenceNV;
+	glGetDriverControlsQCOM_client_proc_t glGetDriverControlsQCOM;
+	glGetDriverControlStringQCOM_client_proc_t glGetDriverControlStringQCOM;
+	glEnableDriverControlQCOM_client_proc_t glEnableDriverControlQCOM;
+	glDisableDriverControlQCOM_client_proc_t glDisableDriverControlQCOM;
+	glExtGetTexturesQCOM_client_proc_t glExtGetTexturesQCOM;
+	glExtGetBuffersQCOM_client_proc_t glExtGetBuffersQCOM;
+	glExtGetRenderbuffersQCOM_client_proc_t glExtGetRenderbuffersQCOM;
+	glExtGetFramebuffersQCOM_client_proc_t glExtGetFramebuffersQCOM;
+	glExtGetTexLevelParameterivQCOM_client_proc_t glExtGetTexLevelParameterivQCOM;
+	glExtTexObjectStateOverrideiQCOM_client_proc_t glExtTexObjectStateOverrideiQCOM;
+	glExtGetTexSubImageQCOM_client_proc_t glExtGetTexSubImageQCOM;
+	glExtGetBufferPointervQCOM_client_proc_t glExtGetBufferPointervQCOM;
+	glExtGetShadersQCOM_client_proc_t glExtGetShadersQCOM;
+	glExtGetProgramsQCOM_client_proc_t glExtGetProgramsQCOM;
+	glExtIsProgramBinaryQCOM_client_proc_t glExtIsProgramBinaryQCOM;
+	glExtGetProgramBinarySourceQCOM_client_proc_t glExtGetProgramBinarySourceQCOM;
+	glStartTilingQCOM_client_proc_t glStartTilingQCOM;
+	glEndTilingQCOM_client_proc_t glEndTilingQCOM;
+	//Accessors 
+	virtual glAlphaFunc_client_proc_t set_glAlphaFunc(glAlphaFunc_client_proc_t f) { glAlphaFunc_client_proc_t retval = glAlphaFunc; glAlphaFunc = f; return retval;}
+	virtual glClearColor_client_proc_t set_glClearColor(glClearColor_client_proc_t f) { glClearColor_client_proc_t retval = glClearColor; glClearColor = f; return retval;}
+	virtual glClearDepthf_client_proc_t set_glClearDepthf(glClearDepthf_client_proc_t f) { glClearDepthf_client_proc_t retval = glClearDepthf; glClearDepthf = f; return retval;}
+	virtual glClipPlanef_client_proc_t set_glClipPlanef(glClipPlanef_client_proc_t f) { glClipPlanef_client_proc_t retval = glClipPlanef; glClipPlanef = f; return retval;}
+	virtual glColor4f_client_proc_t set_glColor4f(glColor4f_client_proc_t f) { glColor4f_client_proc_t retval = glColor4f; glColor4f = f; return retval;}
+	virtual glDepthRangef_client_proc_t set_glDepthRangef(glDepthRangef_client_proc_t f) { glDepthRangef_client_proc_t retval = glDepthRangef; glDepthRangef = f; return retval;}
+	virtual glFogf_client_proc_t set_glFogf(glFogf_client_proc_t f) { glFogf_client_proc_t retval = glFogf; glFogf = f; return retval;}
+	virtual glFogfv_client_proc_t set_glFogfv(glFogfv_client_proc_t f) { glFogfv_client_proc_t retval = glFogfv; glFogfv = f; return retval;}
+	virtual glFrustumf_client_proc_t set_glFrustumf(glFrustumf_client_proc_t f) { glFrustumf_client_proc_t retval = glFrustumf; glFrustumf = f; return retval;}
+	virtual glGetClipPlanef_client_proc_t set_glGetClipPlanef(glGetClipPlanef_client_proc_t f) { glGetClipPlanef_client_proc_t retval = glGetClipPlanef; glGetClipPlanef = f; return retval;}
+	virtual glGetFloatv_client_proc_t set_glGetFloatv(glGetFloatv_client_proc_t f) { glGetFloatv_client_proc_t retval = glGetFloatv; glGetFloatv = f; return retval;}
+	virtual glGetLightfv_client_proc_t set_glGetLightfv(glGetLightfv_client_proc_t f) { glGetLightfv_client_proc_t retval = glGetLightfv; glGetLightfv = f; return retval;}
+	virtual glGetMaterialfv_client_proc_t set_glGetMaterialfv(glGetMaterialfv_client_proc_t f) { glGetMaterialfv_client_proc_t retval = glGetMaterialfv; glGetMaterialfv = f; return retval;}
+	virtual glGetTexEnvfv_client_proc_t set_glGetTexEnvfv(glGetTexEnvfv_client_proc_t f) { glGetTexEnvfv_client_proc_t retval = glGetTexEnvfv; glGetTexEnvfv = f; return retval;}
+	virtual glGetTexParameterfv_client_proc_t set_glGetTexParameterfv(glGetTexParameterfv_client_proc_t f) { glGetTexParameterfv_client_proc_t retval = glGetTexParameterfv; glGetTexParameterfv = f; return retval;}
+	virtual glLightModelf_client_proc_t set_glLightModelf(glLightModelf_client_proc_t f) { glLightModelf_client_proc_t retval = glLightModelf; glLightModelf = f; return retval;}
+	virtual glLightModelfv_client_proc_t set_glLightModelfv(glLightModelfv_client_proc_t f) { glLightModelfv_client_proc_t retval = glLightModelfv; glLightModelfv = f; return retval;}
+	virtual glLightf_client_proc_t set_glLightf(glLightf_client_proc_t f) { glLightf_client_proc_t retval = glLightf; glLightf = f; return retval;}
+	virtual glLightfv_client_proc_t set_glLightfv(glLightfv_client_proc_t f) { glLightfv_client_proc_t retval = glLightfv; glLightfv = f; return retval;}
+	virtual glLineWidth_client_proc_t set_glLineWidth(glLineWidth_client_proc_t f) { glLineWidth_client_proc_t retval = glLineWidth; glLineWidth = f; return retval;}
+	virtual glLoadMatrixf_client_proc_t set_glLoadMatrixf(glLoadMatrixf_client_proc_t f) { glLoadMatrixf_client_proc_t retval = glLoadMatrixf; glLoadMatrixf = f; return retval;}
+	virtual glMaterialf_client_proc_t set_glMaterialf(glMaterialf_client_proc_t f) { glMaterialf_client_proc_t retval = glMaterialf; glMaterialf = f; return retval;}
+	virtual glMaterialfv_client_proc_t set_glMaterialfv(glMaterialfv_client_proc_t f) { glMaterialfv_client_proc_t retval = glMaterialfv; glMaterialfv = f; return retval;}
+	virtual glMultMatrixf_client_proc_t set_glMultMatrixf(glMultMatrixf_client_proc_t f) { glMultMatrixf_client_proc_t retval = glMultMatrixf; glMultMatrixf = f; return retval;}
+	virtual glMultiTexCoord4f_client_proc_t set_glMultiTexCoord4f(glMultiTexCoord4f_client_proc_t f) { glMultiTexCoord4f_client_proc_t retval = glMultiTexCoord4f; glMultiTexCoord4f = f; return retval;}
+	virtual glNormal3f_client_proc_t set_glNormal3f(glNormal3f_client_proc_t f) { glNormal3f_client_proc_t retval = glNormal3f; glNormal3f = f; return retval;}
+	virtual glOrthof_client_proc_t set_glOrthof(glOrthof_client_proc_t f) { glOrthof_client_proc_t retval = glOrthof; glOrthof = f; return retval;}
+	virtual glPointParameterf_client_proc_t set_glPointParameterf(glPointParameterf_client_proc_t f) { glPointParameterf_client_proc_t retval = glPointParameterf; glPointParameterf = f; return retval;}
+	virtual glPointParameterfv_client_proc_t set_glPointParameterfv(glPointParameterfv_client_proc_t f) { glPointParameterfv_client_proc_t retval = glPointParameterfv; glPointParameterfv = f; return retval;}
+	virtual glPointSize_client_proc_t set_glPointSize(glPointSize_client_proc_t f) { glPointSize_client_proc_t retval = glPointSize; glPointSize = f; return retval;}
+	virtual glPolygonOffset_client_proc_t set_glPolygonOffset(glPolygonOffset_client_proc_t f) { glPolygonOffset_client_proc_t retval = glPolygonOffset; glPolygonOffset = f; return retval;}
+	virtual glRotatef_client_proc_t set_glRotatef(glRotatef_client_proc_t f) { glRotatef_client_proc_t retval = glRotatef; glRotatef = f; return retval;}
+	virtual glScalef_client_proc_t set_glScalef(glScalef_client_proc_t f) { glScalef_client_proc_t retval = glScalef; glScalef = f; return retval;}
+	virtual glTexEnvf_client_proc_t set_glTexEnvf(glTexEnvf_client_proc_t f) { glTexEnvf_client_proc_t retval = glTexEnvf; glTexEnvf = f; return retval;}
+	virtual glTexEnvfv_client_proc_t set_glTexEnvfv(glTexEnvfv_client_proc_t f) { glTexEnvfv_client_proc_t retval = glTexEnvfv; glTexEnvfv = f; return retval;}
+	virtual glTexParameterf_client_proc_t set_glTexParameterf(glTexParameterf_client_proc_t f) { glTexParameterf_client_proc_t retval = glTexParameterf; glTexParameterf = f; return retval;}
+	virtual glTexParameterfv_client_proc_t set_glTexParameterfv(glTexParameterfv_client_proc_t f) { glTexParameterfv_client_proc_t retval = glTexParameterfv; glTexParameterfv = f; return retval;}
+	virtual glTranslatef_client_proc_t set_glTranslatef(glTranslatef_client_proc_t f) { glTranslatef_client_proc_t retval = glTranslatef; glTranslatef = f; return retval;}
+	virtual glActiveTexture_client_proc_t set_glActiveTexture(glActiveTexture_client_proc_t f) { glActiveTexture_client_proc_t retval = glActiveTexture; glActiveTexture = f; return retval;}
+	virtual glAlphaFuncx_client_proc_t set_glAlphaFuncx(glAlphaFuncx_client_proc_t f) { glAlphaFuncx_client_proc_t retval = glAlphaFuncx; glAlphaFuncx = f; return retval;}
+	virtual glBindBuffer_client_proc_t set_glBindBuffer(glBindBuffer_client_proc_t f) { glBindBuffer_client_proc_t retval = glBindBuffer; glBindBuffer = f; return retval;}
+	virtual glBindTexture_client_proc_t set_glBindTexture(glBindTexture_client_proc_t f) { glBindTexture_client_proc_t retval = glBindTexture; glBindTexture = f; return retval;}
+	virtual glBlendFunc_client_proc_t set_glBlendFunc(glBlendFunc_client_proc_t f) { glBlendFunc_client_proc_t retval = glBlendFunc; glBlendFunc = f; return retval;}
+	virtual glBufferData_client_proc_t set_glBufferData(glBufferData_client_proc_t f) { glBufferData_client_proc_t retval = glBufferData; glBufferData = f; return retval;}
+	virtual glBufferSubData_client_proc_t set_glBufferSubData(glBufferSubData_client_proc_t f) { glBufferSubData_client_proc_t retval = glBufferSubData; glBufferSubData = f; return retval;}
+	virtual glClear_client_proc_t set_glClear(glClear_client_proc_t f) { glClear_client_proc_t retval = glClear; glClear = f; return retval;}
+	virtual glClearColorx_client_proc_t set_glClearColorx(glClearColorx_client_proc_t f) { glClearColorx_client_proc_t retval = glClearColorx; glClearColorx = f; return retval;}
+	virtual glClearDepthx_client_proc_t set_glClearDepthx(glClearDepthx_client_proc_t f) { glClearDepthx_client_proc_t retval = glClearDepthx; glClearDepthx = f; return retval;}
+	virtual glClearStencil_client_proc_t set_glClearStencil(glClearStencil_client_proc_t f) { glClearStencil_client_proc_t retval = glClearStencil; glClearStencil = f; return retval;}
+	virtual glClientActiveTexture_client_proc_t set_glClientActiveTexture(glClientActiveTexture_client_proc_t f) { glClientActiveTexture_client_proc_t retval = glClientActiveTexture; glClientActiveTexture = f; return retval;}
+	virtual glColor4ub_client_proc_t set_glColor4ub(glColor4ub_client_proc_t f) { glColor4ub_client_proc_t retval = glColor4ub; glColor4ub = f; return retval;}
+	virtual glColor4x_client_proc_t set_glColor4x(glColor4x_client_proc_t f) { glColor4x_client_proc_t retval = glColor4x; glColor4x = f; return retval;}
+	virtual glColorMask_client_proc_t set_glColorMask(glColorMask_client_proc_t f) { glColorMask_client_proc_t retval = glColorMask; glColorMask = f; return retval;}
+	virtual glColorPointer_client_proc_t set_glColorPointer(glColorPointer_client_proc_t f) { glColorPointer_client_proc_t retval = glColorPointer; glColorPointer = f; return retval;}
+	virtual glCompressedTexImage2D_client_proc_t set_glCompressedTexImage2D(glCompressedTexImage2D_client_proc_t f) { glCompressedTexImage2D_client_proc_t retval = glCompressedTexImage2D; glCompressedTexImage2D = f; return retval;}
+	virtual glCompressedTexSubImage2D_client_proc_t set_glCompressedTexSubImage2D(glCompressedTexSubImage2D_client_proc_t f) { glCompressedTexSubImage2D_client_proc_t retval = glCompressedTexSubImage2D; glCompressedTexSubImage2D = f; return retval;}
+	virtual glCopyTexImage2D_client_proc_t set_glCopyTexImage2D(glCopyTexImage2D_client_proc_t f) { glCopyTexImage2D_client_proc_t retval = glCopyTexImage2D; glCopyTexImage2D = f; return retval;}
+	virtual glCopyTexSubImage2D_client_proc_t set_glCopyTexSubImage2D(glCopyTexSubImage2D_client_proc_t f) { glCopyTexSubImage2D_client_proc_t retval = glCopyTexSubImage2D; glCopyTexSubImage2D = f; return retval;}
+	virtual glCullFace_client_proc_t set_glCullFace(glCullFace_client_proc_t f) { glCullFace_client_proc_t retval = glCullFace; glCullFace = f; return retval;}
+	virtual glDeleteBuffers_client_proc_t set_glDeleteBuffers(glDeleteBuffers_client_proc_t f) { glDeleteBuffers_client_proc_t retval = glDeleteBuffers; glDeleteBuffers = f; return retval;}
+	virtual glDeleteTextures_client_proc_t set_glDeleteTextures(glDeleteTextures_client_proc_t f) { glDeleteTextures_client_proc_t retval = glDeleteTextures; glDeleteTextures = f; return retval;}
+	virtual glDepthFunc_client_proc_t set_glDepthFunc(glDepthFunc_client_proc_t f) { glDepthFunc_client_proc_t retval = glDepthFunc; glDepthFunc = f; return retval;}
+	virtual glDepthMask_client_proc_t set_glDepthMask(glDepthMask_client_proc_t f) { glDepthMask_client_proc_t retval = glDepthMask; glDepthMask = f; return retval;}
+	virtual glDepthRangex_client_proc_t set_glDepthRangex(glDepthRangex_client_proc_t f) { glDepthRangex_client_proc_t retval = glDepthRangex; glDepthRangex = f; return retval;}
+	virtual glDisable_client_proc_t set_glDisable(glDisable_client_proc_t f) { glDisable_client_proc_t retval = glDisable; glDisable = f; return retval;}
+	virtual glDisableClientState_client_proc_t set_glDisableClientState(glDisableClientState_client_proc_t f) { glDisableClientState_client_proc_t retval = glDisableClientState; glDisableClientState = f; return retval;}
+	virtual glDrawArrays_client_proc_t set_glDrawArrays(glDrawArrays_client_proc_t f) { glDrawArrays_client_proc_t retval = glDrawArrays; glDrawArrays = f; return retval;}
+	virtual glDrawElements_client_proc_t set_glDrawElements(glDrawElements_client_proc_t f) { glDrawElements_client_proc_t retval = glDrawElements; glDrawElements = f; return retval;}
+	virtual glEnable_client_proc_t set_glEnable(glEnable_client_proc_t f) { glEnable_client_proc_t retval = glEnable; glEnable = f; return retval;}
+	virtual glEnableClientState_client_proc_t set_glEnableClientState(glEnableClientState_client_proc_t f) { glEnableClientState_client_proc_t retval = glEnableClientState; glEnableClientState = f; return retval;}
+	virtual glFinish_client_proc_t set_glFinish(glFinish_client_proc_t f) { glFinish_client_proc_t retval = glFinish; glFinish = f; return retval;}
+	virtual glFlush_client_proc_t set_glFlush(glFlush_client_proc_t f) { glFlush_client_proc_t retval = glFlush; glFlush = f; return retval;}
+	virtual glFogx_client_proc_t set_glFogx(glFogx_client_proc_t f) { glFogx_client_proc_t retval = glFogx; glFogx = f; return retval;}
+	virtual glFogxv_client_proc_t set_glFogxv(glFogxv_client_proc_t f) { glFogxv_client_proc_t retval = glFogxv; glFogxv = f; return retval;}
+	virtual glFrontFace_client_proc_t set_glFrontFace(glFrontFace_client_proc_t f) { glFrontFace_client_proc_t retval = glFrontFace; glFrontFace = f; return retval;}
+	virtual glFrustumx_client_proc_t set_glFrustumx(glFrustumx_client_proc_t f) { glFrustumx_client_proc_t retval = glFrustumx; glFrustumx = f; return retval;}
+	virtual glGetBooleanv_client_proc_t set_glGetBooleanv(glGetBooleanv_client_proc_t f) { glGetBooleanv_client_proc_t retval = glGetBooleanv; glGetBooleanv = f; return retval;}
+	virtual glGetBufferParameteriv_client_proc_t set_glGetBufferParameteriv(glGetBufferParameteriv_client_proc_t f) { glGetBufferParameteriv_client_proc_t retval = glGetBufferParameteriv; glGetBufferParameteriv = f; return retval;}
+	virtual glClipPlanex_client_proc_t set_glClipPlanex(glClipPlanex_client_proc_t f) { glClipPlanex_client_proc_t retval = glClipPlanex; glClipPlanex = f; return retval;}
+	virtual glGenBuffers_client_proc_t set_glGenBuffers(glGenBuffers_client_proc_t f) { glGenBuffers_client_proc_t retval = glGenBuffers; glGenBuffers = f; return retval;}
+	virtual glGenTextures_client_proc_t set_glGenTextures(glGenTextures_client_proc_t f) { glGenTextures_client_proc_t retval = glGenTextures; glGenTextures = f; return retval;}
+	virtual glGetError_client_proc_t set_glGetError(glGetError_client_proc_t f) { glGetError_client_proc_t retval = glGetError; glGetError = f; return retval;}
+	virtual glGetFixedv_client_proc_t set_glGetFixedv(glGetFixedv_client_proc_t f) { glGetFixedv_client_proc_t retval = glGetFixedv; glGetFixedv = f; return retval;}
+	virtual glGetIntegerv_client_proc_t set_glGetIntegerv(glGetIntegerv_client_proc_t f) { glGetIntegerv_client_proc_t retval = glGetIntegerv; glGetIntegerv = f; return retval;}
+	virtual glGetLightxv_client_proc_t set_glGetLightxv(glGetLightxv_client_proc_t f) { glGetLightxv_client_proc_t retval = glGetLightxv; glGetLightxv = f; return retval;}
+	virtual glGetMaterialxv_client_proc_t set_glGetMaterialxv(glGetMaterialxv_client_proc_t f) { glGetMaterialxv_client_proc_t retval = glGetMaterialxv; glGetMaterialxv = f; return retval;}
+	virtual glGetPointerv_client_proc_t set_glGetPointerv(glGetPointerv_client_proc_t f) { glGetPointerv_client_proc_t retval = glGetPointerv; glGetPointerv = f; return retval;}
+	virtual glGetString_client_proc_t set_glGetString(glGetString_client_proc_t f) { glGetString_client_proc_t retval = glGetString; glGetString = f; return retval;}
+	virtual glGetTexEnviv_client_proc_t set_glGetTexEnviv(glGetTexEnviv_client_proc_t f) { glGetTexEnviv_client_proc_t retval = glGetTexEnviv; glGetTexEnviv = f; return retval;}
+	virtual glGetTexEnvxv_client_proc_t set_glGetTexEnvxv(glGetTexEnvxv_client_proc_t f) { glGetTexEnvxv_client_proc_t retval = glGetTexEnvxv; glGetTexEnvxv = f; return retval;}
+	virtual glGetTexParameteriv_client_proc_t set_glGetTexParameteriv(glGetTexParameteriv_client_proc_t f) { glGetTexParameteriv_client_proc_t retval = glGetTexParameteriv; glGetTexParameteriv = f; return retval;}
+	virtual glGetTexParameterxv_client_proc_t set_glGetTexParameterxv(glGetTexParameterxv_client_proc_t f) { glGetTexParameterxv_client_proc_t retval = glGetTexParameterxv; glGetTexParameterxv = f; return retval;}
+	virtual glHint_client_proc_t set_glHint(glHint_client_proc_t f) { glHint_client_proc_t retval = glHint; glHint = f; return retval;}
+	virtual glIsBuffer_client_proc_t set_glIsBuffer(glIsBuffer_client_proc_t f) { glIsBuffer_client_proc_t retval = glIsBuffer; glIsBuffer = f; return retval;}
+	virtual glIsEnabled_client_proc_t set_glIsEnabled(glIsEnabled_client_proc_t f) { glIsEnabled_client_proc_t retval = glIsEnabled; glIsEnabled = f; return retval;}
+	virtual glIsTexture_client_proc_t set_glIsTexture(glIsTexture_client_proc_t f) { glIsTexture_client_proc_t retval = glIsTexture; glIsTexture = f; return retval;}
+	virtual glLightModelx_client_proc_t set_glLightModelx(glLightModelx_client_proc_t f) { glLightModelx_client_proc_t retval = glLightModelx; glLightModelx = f; return retval;}
+	virtual glLightModelxv_client_proc_t set_glLightModelxv(glLightModelxv_client_proc_t f) { glLightModelxv_client_proc_t retval = glLightModelxv; glLightModelxv = f; return retval;}
+	virtual glLightx_client_proc_t set_glLightx(glLightx_client_proc_t f) { glLightx_client_proc_t retval = glLightx; glLightx = f; return retval;}
+	virtual glLightxv_client_proc_t set_glLightxv(glLightxv_client_proc_t f) { glLightxv_client_proc_t retval = glLightxv; glLightxv = f; return retval;}
+	virtual glLineWidthx_client_proc_t set_glLineWidthx(glLineWidthx_client_proc_t f) { glLineWidthx_client_proc_t retval = glLineWidthx; glLineWidthx = f; return retval;}
+	virtual glLoadIdentity_client_proc_t set_glLoadIdentity(glLoadIdentity_client_proc_t f) { glLoadIdentity_client_proc_t retval = glLoadIdentity; glLoadIdentity = f; return retval;}
+	virtual glLoadMatrixx_client_proc_t set_glLoadMatrixx(glLoadMatrixx_client_proc_t f) { glLoadMatrixx_client_proc_t retval = glLoadMatrixx; glLoadMatrixx = f; return retval;}
+	virtual glLogicOp_client_proc_t set_glLogicOp(glLogicOp_client_proc_t f) { glLogicOp_client_proc_t retval = glLogicOp; glLogicOp = f; return retval;}
+	virtual glMaterialx_client_proc_t set_glMaterialx(glMaterialx_client_proc_t f) { glMaterialx_client_proc_t retval = glMaterialx; glMaterialx = f; return retval;}
+	virtual glMaterialxv_client_proc_t set_glMaterialxv(glMaterialxv_client_proc_t f) { glMaterialxv_client_proc_t retval = glMaterialxv; glMaterialxv = f; return retval;}
+	virtual glMatrixMode_client_proc_t set_glMatrixMode(glMatrixMode_client_proc_t f) { glMatrixMode_client_proc_t retval = glMatrixMode; glMatrixMode = f; return retval;}
+	virtual glMultMatrixx_client_proc_t set_glMultMatrixx(glMultMatrixx_client_proc_t f) { glMultMatrixx_client_proc_t retval = glMultMatrixx; glMultMatrixx = f; return retval;}
+	virtual glMultiTexCoord4x_client_proc_t set_glMultiTexCoord4x(glMultiTexCoord4x_client_proc_t f) { glMultiTexCoord4x_client_proc_t retval = glMultiTexCoord4x; glMultiTexCoord4x = f; return retval;}
+	virtual glNormal3x_client_proc_t set_glNormal3x(glNormal3x_client_proc_t f) { glNormal3x_client_proc_t retval = glNormal3x; glNormal3x = f; return retval;}
+	virtual glNormalPointer_client_proc_t set_glNormalPointer(glNormalPointer_client_proc_t f) { glNormalPointer_client_proc_t retval = glNormalPointer; glNormalPointer = f; return retval;}
+	virtual glOrthox_client_proc_t set_glOrthox(glOrthox_client_proc_t f) { glOrthox_client_proc_t retval = glOrthox; glOrthox = f; return retval;}
+	virtual glPixelStorei_client_proc_t set_glPixelStorei(glPixelStorei_client_proc_t f) { glPixelStorei_client_proc_t retval = glPixelStorei; glPixelStorei = f; return retval;}
+	virtual glPointParameterx_client_proc_t set_glPointParameterx(glPointParameterx_client_proc_t f) { glPointParameterx_client_proc_t retval = glPointParameterx; glPointParameterx = f; return retval;}
+	virtual glPointParameterxv_client_proc_t set_glPointParameterxv(glPointParameterxv_client_proc_t f) { glPointParameterxv_client_proc_t retval = glPointParameterxv; glPointParameterxv = f; return retval;}
+	virtual glPointSizex_client_proc_t set_glPointSizex(glPointSizex_client_proc_t f) { glPointSizex_client_proc_t retval = glPointSizex; glPointSizex = f; return retval;}
+	virtual glPolygonOffsetx_client_proc_t set_glPolygonOffsetx(glPolygonOffsetx_client_proc_t f) { glPolygonOffsetx_client_proc_t retval = glPolygonOffsetx; glPolygonOffsetx = f; return retval;}
+	virtual glPopMatrix_client_proc_t set_glPopMatrix(glPopMatrix_client_proc_t f) { glPopMatrix_client_proc_t retval = glPopMatrix; glPopMatrix = f; return retval;}
+	virtual glPushMatrix_client_proc_t set_glPushMatrix(glPushMatrix_client_proc_t f) { glPushMatrix_client_proc_t retval = glPushMatrix; glPushMatrix = f; return retval;}
+	virtual glReadPixels_client_proc_t set_glReadPixels(glReadPixels_client_proc_t f) { glReadPixels_client_proc_t retval = glReadPixels; glReadPixels = f; return retval;}
+	virtual glRotatex_client_proc_t set_glRotatex(glRotatex_client_proc_t f) { glRotatex_client_proc_t retval = glRotatex; glRotatex = f; return retval;}
+	virtual glSampleCoverage_client_proc_t set_glSampleCoverage(glSampleCoverage_client_proc_t f) { glSampleCoverage_client_proc_t retval = glSampleCoverage; glSampleCoverage = f; return retval;}
+	virtual glSampleCoveragex_client_proc_t set_glSampleCoveragex(glSampleCoveragex_client_proc_t f) { glSampleCoveragex_client_proc_t retval = glSampleCoveragex; glSampleCoveragex = f; return retval;}
+	virtual glScalex_client_proc_t set_glScalex(glScalex_client_proc_t f) { glScalex_client_proc_t retval = glScalex; glScalex = f; return retval;}
+	virtual glScissor_client_proc_t set_glScissor(glScissor_client_proc_t f) { glScissor_client_proc_t retval = glScissor; glScissor = f; return retval;}
+	virtual glShadeModel_client_proc_t set_glShadeModel(glShadeModel_client_proc_t f) { glShadeModel_client_proc_t retval = glShadeModel; glShadeModel = f; return retval;}
+	virtual glStencilFunc_client_proc_t set_glStencilFunc(glStencilFunc_client_proc_t f) { glStencilFunc_client_proc_t retval = glStencilFunc; glStencilFunc = f; return retval;}
+	virtual glStencilMask_client_proc_t set_glStencilMask(glStencilMask_client_proc_t f) { glStencilMask_client_proc_t retval = glStencilMask; glStencilMask = f; return retval;}
+	virtual glStencilOp_client_proc_t set_glStencilOp(glStencilOp_client_proc_t f) { glStencilOp_client_proc_t retval = glStencilOp; glStencilOp = f; return retval;}
+	virtual glTexCoordPointer_client_proc_t set_glTexCoordPointer(glTexCoordPointer_client_proc_t f) { glTexCoordPointer_client_proc_t retval = glTexCoordPointer; glTexCoordPointer = f; return retval;}
+	virtual glTexEnvi_client_proc_t set_glTexEnvi(glTexEnvi_client_proc_t f) { glTexEnvi_client_proc_t retval = glTexEnvi; glTexEnvi = f; return retval;}
+	virtual glTexEnvx_client_proc_t set_glTexEnvx(glTexEnvx_client_proc_t f) { glTexEnvx_client_proc_t retval = glTexEnvx; glTexEnvx = f; return retval;}
+	virtual glTexEnviv_client_proc_t set_glTexEnviv(glTexEnviv_client_proc_t f) { glTexEnviv_client_proc_t retval = glTexEnviv; glTexEnviv = f; return retval;}
+	virtual glTexEnvxv_client_proc_t set_glTexEnvxv(glTexEnvxv_client_proc_t f) { glTexEnvxv_client_proc_t retval = glTexEnvxv; glTexEnvxv = f; return retval;}
+	virtual glTexImage2D_client_proc_t set_glTexImage2D(glTexImage2D_client_proc_t f) { glTexImage2D_client_proc_t retval = glTexImage2D; glTexImage2D = f; return retval;}
+	virtual glTexParameteri_client_proc_t set_glTexParameteri(glTexParameteri_client_proc_t f) { glTexParameteri_client_proc_t retval = glTexParameteri; glTexParameteri = f; return retval;}
+	virtual glTexParameterx_client_proc_t set_glTexParameterx(glTexParameterx_client_proc_t f) { glTexParameterx_client_proc_t retval = glTexParameterx; glTexParameterx = f; return retval;}
+	virtual glTexParameteriv_client_proc_t set_glTexParameteriv(glTexParameteriv_client_proc_t f) { glTexParameteriv_client_proc_t retval = glTexParameteriv; glTexParameteriv = f; return retval;}
+	virtual glTexParameterxv_client_proc_t set_glTexParameterxv(glTexParameterxv_client_proc_t f) { glTexParameterxv_client_proc_t retval = glTexParameterxv; glTexParameterxv = f; return retval;}
+	virtual glTexSubImage2D_client_proc_t set_glTexSubImage2D(glTexSubImage2D_client_proc_t f) { glTexSubImage2D_client_proc_t retval = glTexSubImage2D; glTexSubImage2D = f; return retval;}
+	virtual glTranslatex_client_proc_t set_glTranslatex(glTranslatex_client_proc_t f) { glTranslatex_client_proc_t retval = glTranslatex; glTranslatex = f; return retval;}
+	virtual glVertexPointer_client_proc_t set_glVertexPointer(glVertexPointer_client_proc_t f) { glVertexPointer_client_proc_t retval = glVertexPointer; glVertexPointer = f; return retval;}
+	virtual glViewport_client_proc_t set_glViewport(glViewport_client_proc_t f) { glViewport_client_proc_t retval = glViewport; glViewport = f; return retval;}
+	virtual glPointSizePointerOES_client_proc_t set_glPointSizePointerOES(glPointSizePointerOES_client_proc_t f) { glPointSizePointerOES_client_proc_t retval = glPointSizePointerOES; glPointSizePointerOES = f; return retval;}
+	virtual glVertexPointerOffset_client_proc_t set_glVertexPointerOffset(glVertexPointerOffset_client_proc_t f) { glVertexPointerOffset_client_proc_t retval = glVertexPointerOffset; glVertexPointerOffset = f; return retval;}
+	virtual glColorPointerOffset_client_proc_t set_glColorPointerOffset(glColorPointerOffset_client_proc_t f) { glColorPointerOffset_client_proc_t retval = glColorPointerOffset; glColorPointerOffset = f; return retval;}
+	virtual glNormalPointerOffset_client_proc_t set_glNormalPointerOffset(glNormalPointerOffset_client_proc_t f) { glNormalPointerOffset_client_proc_t retval = glNormalPointerOffset; glNormalPointerOffset = f; return retval;}
+	virtual glPointSizePointerOffset_client_proc_t set_glPointSizePointerOffset(glPointSizePointerOffset_client_proc_t f) { glPointSizePointerOffset_client_proc_t retval = glPointSizePointerOffset; glPointSizePointerOffset = f; return retval;}
+	virtual glTexCoordPointerOffset_client_proc_t set_glTexCoordPointerOffset(glTexCoordPointerOffset_client_proc_t f) { glTexCoordPointerOffset_client_proc_t retval = glTexCoordPointerOffset; glTexCoordPointerOffset = f; return retval;}
+	virtual glWeightPointerOffset_client_proc_t set_glWeightPointerOffset(glWeightPointerOffset_client_proc_t f) { glWeightPointerOffset_client_proc_t retval = glWeightPointerOffset; glWeightPointerOffset = f; return retval;}
+	virtual glMatrixIndexPointerOffset_client_proc_t set_glMatrixIndexPointerOffset(glMatrixIndexPointerOffset_client_proc_t f) { glMatrixIndexPointerOffset_client_proc_t retval = glMatrixIndexPointerOffset; glMatrixIndexPointerOffset = f; return retval;}
+	virtual glVertexPointerData_client_proc_t set_glVertexPointerData(glVertexPointerData_client_proc_t f) { glVertexPointerData_client_proc_t retval = glVertexPointerData; glVertexPointerData = f; return retval;}
+	virtual glColorPointerData_client_proc_t set_glColorPointerData(glColorPointerData_client_proc_t f) { glColorPointerData_client_proc_t retval = glColorPointerData; glColorPointerData = f; return retval;}
+	virtual glNormalPointerData_client_proc_t set_glNormalPointerData(glNormalPointerData_client_proc_t f) { glNormalPointerData_client_proc_t retval = glNormalPointerData; glNormalPointerData = f; return retval;}
+	virtual glTexCoordPointerData_client_proc_t set_glTexCoordPointerData(glTexCoordPointerData_client_proc_t f) { glTexCoordPointerData_client_proc_t retval = glTexCoordPointerData; glTexCoordPointerData = f; return retval;}
+	virtual glPointSizePointerData_client_proc_t set_glPointSizePointerData(glPointSizePointerData_client_proc_t f) { glPointSizePointerData_client_proc_t retval = glPointSizePointerData; glPointSizePointerData = f; return retval;}
+	virtual glWeightPointerData_client_proc_t set_glWeightPointerData(glWeightPointerData_client_proc_t f) { glWeightPointerData_client_proc_t retval = glWeightPointerData; glWeightPointerData = f; return retval;}
+	virtual glMatrixIndexPointerData_client_proc_t set_glMatrixIndexPointerData(glMatrixIndexPointerData_client_proc_t f) { glMatrixIndexPointerData_client_proc_t retval = glMatrixIndexPointerData; glMatrixIndexPointerData = f; return retval;}
+	virtual glDrawElementsOffset_client_proc_t set_glDrawElementsOffset(glDrawElementsOffset_client_proc_t f) { glDrawElementsOffset_client_proc_t retval = glDrawElementsOffset; glDrawElementsOffset = f; return retval;}
+	virtual glDrawElementsData_client_proc_t set_glDrawElementsData(glDrawElementsData_client_proc_t f) { glDrawElementsData_client_proc_t retval = glDrawElementsData; glDrawElementsData = f; return retval;}
+	virtual glGetCompressedTextureFormats_client_proc_t set_glGetCompressedTextureFormats(glGetCompressedTextureFormats_client_proc_t f) { glGetCompressedTextureFormats_client_proc_t retval = glGetCompressedTextureFormats; glGetCompressedTextureFormats = f; return retval;}
+	virtual glFinishRoundTrip_client_proc_t set_glFinishRoundTrip(glFinishRoundTrip_client_proc_t f) { glFinishRoundTrip_client_proc_t retval = glFinishRoundTrip; glFinishRoundTrip = f; return retval;}
+	virtual glBlendEquationSeparateOES_client_proc_t set_glBlendEquationSeparateOES(glBlendEquationSeparateOES_client_proc_t f) { glBlendEquationSeparateOES_client_proc_t retval = glBlendEquationSeparateOES; glBlendEquationSeparateOES = f; return retval;}
+	virtual glBlendFuncSeparateOES_client_proc_t set_glBlendFuncSeparateOES(glBlendFuncSeparateOES_client_proc_t f) { glBlendFuncSeparateOES_client_proc_t retval = glBlendFuncSeparateOES; glBlendFuncSeparateOES = f; return retval;}
+	virtual glBlendEquationOES_client_proc_t set_glBlendEquationOES(glBlendEquationOES_client_proc_t f) { glBlendEquationOES_client_proc_t retval = glBlendEquationOES; glBlendEquationOES = f; return retval;}
+	virtual glDrawTexsOES_client_proc_t set_glDrawTexsOES(glDrawTexsOES_client_proc_t f) { glDrawTexsOES_client_proc_t retval = glDrawTexsOES; glDrawTexsOES = f; return retval;}
+	virtual glDrawTexiOES_client_proc_t set_glDrawTexiOES(glDrawTexiOES_client_proc_t f) { glDrawTexiOES_client_proc_t retval = glDrawTexiOES; glDrawTexiOES = f; return retval;}
+	virtual glDrawTexxOES_client_proc_t set_glDrawTexxOES(glDrawTexxOES_client_proc_t f) { glDrawTexxOES_client_proc_t retval = glDrawTexxOES; glDrawTexxOES = f; return retval;}
+	virtual glDrawTexsvOES_client_proc_t set_glDrawTexsvOES(glDrawTexsvOES_client_proc_t f) { glDrawTexsvOES_client_proc_t retval = glDrawTexsvOES; glDrawTexsvOES = f; return retval;}
+	virtual glDrawTexivOES_client_proc_t set_glDrawTexivOES(glDrawTexivOES_client_proc_t f) { glDrawTexivOES_client_proc_t retval = glDrawTexivOES; glDrawTexivOES = f; return retval;}
+	virtual glDrawTexxvOES_client_proc_t set_glDrawTexxvOES(glDrawTexxvOES_client_proc_t f) { glDrawTexxvOES_client_proc_t retval = glDrawTexxvOES; glDrawTexxvOES = f; return retval;}
+	virtual glDrawTexfOES_client_proc_t set_glDrawTexfOES(glDrawTexfOES_client_proc_t f) { glDrawTexfOES_client_proc_t retval = glDrawTexfOES; glDrawTexfOES = f; return retval;}
+	virtual glDrawTexfvOES_client_proc_t set_glDrawTexfvOES(glDrawTexfvOES_client_proc_t f) { glDrawTexfvOES_client_proc_t retval = glDrawTexfvOES; glDrawTexfvOES = f; return retval;}
+	virtual glEGLImageTargetTexture2DOES_client_proc_t set_glEGLImageTargetTexture2DOES(glEGLImageTargetTexture2DOES_client_proc_t f) { glEGLImageTargetTexture2DOES_client_proc_t retval = glEGLImageTargetTexture2DOES; glEGLImageTargetTexture2DOES = f; return retval;}
+	virtual glEGLImageTargetRenderbufferStorageOES_client_proc_t set_glEGLImageTargetRenderbufferStorageOES(glEGLImageTargetRenderbufferStorageOES_client_proc_t f) { glEGLImageTargetRenderbufferStorageOES_client_proc_t retval = glEGLImageTargetRenderbufferStorageOES; glEGLImageTargetRenderbufferStorageOES = f; return retval;}
+	virtual glAlphaFuncxOES_client_proc_t set_glAlphaFuncxOES(glAlphaFuncxOES_client_proc_t f) { glAlphaFuncxOES_client_proc_t retval = glAlphaFuncxOES; glAlphaFuncxOES = f; return retval;}
+	virtual glClearColorxOES_client_proc_t set_glClearColorxOES(glClearColorxOES_client_proc_t f) { glClearColorxOES_client_proc_t retval = glClearColorxOES; glClearColorxOES = f; return retval;}
+	virtual glClearDepthxOES_client_proc_t set_glClearDepthxOES(glClearDepthxOES_client_proc_t f) { glClearDepthxOES_client_proc_t retval = glClearDepthxOES; glClearDepthxOES = f; return retval;}
+	virtual glClipPlanexOES_client_proc_t set_glClipPlanexOES(glClipPlanexOES_client_proc_t f) { glClipPlanexOES_client_proc_t retval = glClipPlanexOES; glClipPlanexOES = f; return retval;}
+	virtual glClipPlanexIMG_client_proc_t set_glClipPlanexIMG(glClipPlanexIMG_client_proc_t f) { glClipPlanexIMG_client_proc_t retval = glClipPlanexIMG; glClipPlanexIMG = f; return retval;}
+	virtual glColor4xOES_client_proc_t set_glColor4xOES(glColor4xOES_client_proc_t f) { glColor4xOES_client_proc_t retval = glColor4xOES; glColor4xOES = f; return retval;}
+	virtual glDepthRangexOES_client_proc_t set_glDepthRangexOES(glDepthRangexOES_client_proc_t f) { glDepthRangexOES_client_proc_t retval = glDepthRangexOES; glDepthRangexOES = f; return retval;}
+	virtual glFogxOES_client_proc_t set_glFogxOES(glFogxOES_client_proc_t f) { glFogxOES_client_proc_t retval = glFogxOES; glFogxOES = f; return retval;}
+	virtual glFogxvOES_client_proc_t set_glFogxvOES(glFogxvOES_client_proc_t f) { glFogxvOES_client_proc_t retval = glFogxvOES; glFogxvOES = f; return retval;}
+	virtual glFrustumxOES_client_proc_t set_glFrustumxOES(glFrustumxOES_client_proc_t f) { glFrustumxOES_client_proc_t retval = glFrustumxOES; glFrustumxOES = f; return retval;}
+	virtual glGetClipPlanexOES_client_proc_t set_glGetClipPlanexOES(glGetClipPlanexOES_client_proc_t f) { glGetClipPlanexOES_client_proc_t retval = glGetClipPlanexOES; glGetClipPlanexOES = f; return retval;}
+	virtual glGetClipPlanex_client_proc_t set_glGetClipPlanex(glGetClipPlanex_client_proc_t f) { glGetClipPlanex_client_proc_t retval = glGetClipPlanex; glGetClipPlanex = f; return retval;}
+	virtual glGetFixedvOES_client_proc_t set_glGetFixedvOES(glGetFixedvOES_client_proc_t f) { glGetFixedvOES_client_proc_t retval = glGetFixedvOES; glGetFixedvOES = f; return retval;}
+	virtual glGetLightxvOES_client_proc_t set_glGetLightxvOES(glGetLightxvOES_client_proc_t f) { glGetLightxvOES_client_proc_t retval = glGetLightxvOES; glGetLightxvOES = f; return retval;}
+	virtual glGetMaterialxvOES_client_proc_t set_glGetMaterialxvOES(glGetMaterialxvOES_client_proc_t f) { glGetMaterialxvOES_client_proc_t retval = glGetMaterialxvOES; glGetMaterialxvOES = f; return retval;}
+	virtual glGetTexEnvxvOES_client_proc_t set_glGetTexEnvxvOES(glGetTexEnvxvOES_client_proc_t f) { glGetTexEnvxvOES_client_proc_t retval = glGetTexEnvxvOES; glGetTexEnvxvOES = f; return retval;}
+	virtual glGetTexParameterxvOES_client_proc_t set_glGetTexParameterxvOES(glGetTexParameterxvOES_client_proc_t f) { glGetTexParameterxvOES_client_proc_t retval = glGetTexParameterxvOES; glGetTexParameterxvOES = f; return retval;}
+	virtual glLightModelxOES_client_proc_t set_glLightModelxOES(glLightModelxOES_client_proc_t f) { glLightModelxOES_client_proc_t retval = glLightModelxOES; glLightModelxOES = f; return retval;}
+	virtual glLightModelxvOES_client_proc_t set_glLightModelxvOES(glLightModelxvOES_client_proc_t f) { glLightModelxvOES_client_proc_t retval = glLightModelxvOES; glLightModelxvOES = f; return retval;}
+	virtual glLightxOES_client_proc_t set_glLightxOES(glLightxOES_client_proc_t f) { glLightxOES_client_proc_t retval = glLightxOES; glLightxOES = f; return retval;}
+	virtual glLightxvOES_client_proc_t set_glLightxvOES(glLightxvOES_client_proc_t f) { glLightxvOES_client_proc_t retval = glLightxvOES; glLightxvOES = f; return retval;}
+	virtual glLineWidthxOES_client_proc_t set_glLineWidthxOES(glLineWidthxOES_client_proc_t f) { glLineWidthxOES_client_proc_t retval = glLineWidthxOES; glLineWidthxOES = f; return retval;}
+	virtual glLoadMatrixxOES_client_proc_t set_glLoadMatrixxOES(glLoadMatrixxOES_client_proc_t f) { glLoadMatrixxOES_client_proc_t retval = glLoadMatrixxOES; glLoadMatrixxOES = f; return retval;}
+	virtual glMaterialxOES_client_proc_t set_glMaterialxOES(glMaterialxOES_client_proc_t f) { glMaterialxOES_client_proc_t retval = glMaterialxOES; glMaterialxOES = f; return retval;}
+	virtual glMaterialxvOES_client_proc_t set_glMaterialxvOES(glMaterialxvOES_client_proc_t f) { glMaterialxvOES_client_proc_t retval = glMaterialxvOES; glMaterialxvOES = f; return retval;}
+	virtual glMultMatrixxOES_client_proc_t set_glMultMatrixxOES(glMultMatrixxOES_client_proc_t f) { glMultMatrixxOES_client_proc_t retval = glMultMatrixxOES; glMultMatrixxOES = f; return retval;}
+	virtual glMultiTexCoord4xOES_client_proc_t set_glMultiTexCoord4xOES(glMultiTexCoord4xOES_client_proc_t f) { glMultiTexCoord4xOES_client_proc_t retval = glMultiTexCoord4xOES; glMultiTexCoord4xOES = f; return retval;}
+	virtual glNormal3xOES_client_proc_t set_glNormal3xOES(glNormal3xOES_client_proc_t f) { glNormal3xOES_client_proc_t retval = glNormal3xOES; glNormal3xOES = f; return retval;}
+	virtual glOrthoxOES_client_proc_t set_glOrthoxOES(glOrthoxOES_client_proc_t f) { glOrthoxOES_client_proc_t retval = glOrthoxOES; glOrthoxOES = f; return retval;}
+	virtual glPointParameterxOES_client_proc_t set_glPointParameterxOES(glPointParameterxOES_client_proc_t f) { glPointParameterxOES_client_proc_t retval = glPointParameterxOES; glPointParameterxOES = f; return retval;}
+	virtual glPointParameterxvOES_client_proc_t set_glPointParameterxvOES(glPointParameterxvOES_client_proc_t f) { glPointParameterxvOES_client_proc_t retval = glPointParameterxvOES; glPointParameterxvOES = f; return retval;}
+	virtual glPointSizexOES_client_proc_t set_glPointSizexOES(glPointSizexOES_client_proc_t f) { glPointSizexOES_client_proc_t retval = glPointSizexOES; glPointSizexOES = f; return retval;}
+	virtual glPolygonOffsetxOES_client_proc_t set_glPolygonOffsetxOES(glPolygonOffsetxOES_client_proc_t f) { glPolygonOffsetxOES_client_proc_t retval = glPolygonOffsetxOES; glPolygonOffsetxOES = f; return retval;}
+	virtual glRotatexOES_client_proc_t set_glRotatexOES(glRotatexOES_client_proc_t f) { glRotatexOES_client_proc_t retval = glRotatexOES; glRotatexOES = f; return retval;}
+	virtual glSampleCoveragexOES_client_proc_t set_glSampleCoveragexOES(glSampleCoveragexOES_client_proc_t f) { glSampleCoveragexOES_client_proc_t retval = glSampleCoveragexOES; glSampleCoveragexOES = f; return retval;}
+	virtual glScalexOES_client_proc_t set_glScalexOES(glScalexOES_client_proc_t f) { glScalexOES_client_proc_t retval = glScalexOES; glScalexOES = f; return retval;}
+	virtual glTexEnvxOES_client_proc_t set_glTexEnvxOES(glTexEnvxOES_client_proc_t f) { glTexEnvxOES_client_proc_t retval = glTexEnvxOES; glTexEnvxOES = f; return retval;}
+	virtual glTexEnvxvOES_client_proc_t set_glTexEnvxvOES(glTexEnvxvOES_client_proc_t f) { glTexEnvxvOES_client_proc_t retval = glTexEnvxvOES; glTexEnvxvOES = f; return retval;}
+	virtual glTexParameterxOES_client_proc_t set_glTexParameterxOES(glTexParameterxOES_client_proc_t f) { glTexParameterxOES_client_proc_t retval = glTexParameterxOES; glTexParameterxOES = f; return retval;}
+	virtual glTexParameterxvOES_client_proc_t set_glTexParameterxvOES(glTexParameterxvOES_client_proc_t f) { glTexParameterxvOES_client_proc_t retval = glTexParameterxvOES; glTexParameterxvOES = f; return retval;}
+	virtual glTranslatexOES_client_proc_t set_glTranslatexOES(glTranslatexOES_client_proc_t f) { glTranslatexOES_client_proc_t retval = glTranslatexOES; glTranslatexOES = f; return retval;}
+	virtual glIsRenderbufferOES_client_proc_t set_glIsRenderbufferOES(glIsRenderbufferOES_client_proc_t f) { glIsRenderbufferOES_client_proc_t retval = glIsRenderbufferOES; glIsRenderbufferOES = f; return retval;}
+	virtual glBindRenderbufferOES_client_proc_t set_glBindRenderbufferOES(glBindRenderbufferOES_client_proc_t f) { glBindRenderbufferOES_client_proc_t retval = glBindRenderbufferOES; glBindRenderbufferOES = f; return retval;}
+	virtual glDeleteRenderbuffersOES_client_proc_t set_glDeleteRenderbuffersOES(glDeleteRenderbuffersOES_client_proc_t f) { glDeleteRenderbuffersOES_client_proc_t retval = glDeleteRenderbuffersOES; glDeleteRenderbuffersOES = f; return retval;}
+	virtual glGenRenderbuffersOES_client_proc_t set_glGenRenderbuffersOES(glGenRenderbuffersOES_client_proc_t f) { glGenRenderbuffersOES_client_proc_t retval = glGenRenderbuffersOES; glGenRenderbuffersOES = f; return retval;}
+	virtual glRenderbufferStorageOES_client_proc_t set_glRenderbufferStorageOES(glRenderbufferStorageOES_client_proc_t f) { glRenderbufferStorageOES_client_proc_t retval = glRenderbufferStorageOES; glRenderbufferStorageOES = f; return retval;}
+	virtual glGetRenderbufferParameterivOES_client_proc_t set_glGetRenderbufferParameterivOES(glGetRenderbufferParameterivOES_client_proc_t f) { glGetRenderbufferParameterivOES_client_proc_t retval = glGetRenderbufferParameterivOES; glGetRenderbufferParameterivOES = f; return retval;}
+	virtual glIsFramebufferOES_client_proc_t set_glIsFramebufferOES(glIsFramebufferOES_client_proc_t f) { glIsFramebufferOES_client_proc_t retval = glIsFramebufferOES; glIsFramebufferOES = f; return retval;}
+	virtual glBindFramebufferOES_client_proc_t set_glBindFramebufferOES(glBindFramebufferOES_client_proc_t f) { glBindFramebufferOES_client_proc_t retval = glBindFramebufferOES; glBindFramebufferOES = f; return retval;}
+	virtual glDeleteFramebuffersOES_client_proc_t set_glDeleteFramebuffersOES(glDeleteFramebuffersOES_client_proc_t f) { glDeleteFramebuffersOES_client_proc_t retval = glDeleteFramebuffersOES; glDeleteFramebuffersOES = f; return retval;}
+	virtual glGenFramebuffersOES_client_proc_t set_glGenFramebuffersOES(glGenFramebuffersOES_client_proc_t f) { glGenFramebuffersOES_client_proc_t retval = glGenFramebuffersOES; glGenFramebuffersOES = f; return retval;}
+	virtual glCheckFramebufferStatusOES_client_proc_t set_glCheckFramebufferStatusOES(glCheckFramebufferStatusOES_client_proc_t f) { glCheckFramebufferStatusOES_client_proc_t retval = glCheckFramebufferStatusOES; glCheckFramebufferStatusOES = f; return retval;}
+	virtual glFramebufferRenderbufferOES_client_proc_t set_glFramebufferRenderbufferOES(glFramebufferRenderbufferOES_client_proc_t f) { glFramebufferRenderbufferOES_client_proc_t retval = glFramebufferRenderbufferOES; glFramebufferRenderbufferOES = f; return retval;}
+	virtual glFramebufferTexture2DOES_client_proc_t set_glFramebufferTexture2DOES(glFramebufferTexture2DOES_client_proc_t f) { glFramebufferTexture2DOES_client_proc_t retval = glFramebufferTexture2DOES; glFramebufferTexture2DOES = f; return retval;}
+	virtual glGetFramebufferAttachmentParameterivOES_client_proc_t set_glGetFramebufferAttachmentParameterivOES(glGetFramebufferAttachmentParameterivOES_client_proc_t f) { glGetFramebufferAttachmentParameterivOES_client_proc_t retval = glGetFramebufferAttachmentParameterivOES; glGetFramebufferAttachmentParameterivOES = f; return retval;}
+	virtual glGenerateMipmapOES_client_proc_t set_glGenerateMipmapOES(glGenerateMipmapOES_client_proc_t f) { glGenerateMipmapOES_client_proc_t retval = glGenerateMipmapOES; glGenerateMipmapOES = f; return retval;}
+	virtual glMapBufferOES_client_proc_t set_glMapBufferOES(glMapBufferOES_client_proc_t f) { glMapBufferOES_client_proc_t retval = glMapBufferOES; glMapBufferOES = f; return retval;}
+	virtual glUnmapBufferOES_client_proc_t set_glUnmapBufferOES(glUnmapBufferOES_client_proc_t f) { glUnmapBufferOES_client_proc_t retval = glUnmapBufferOES; glUnmapBufferOES = f; return retval;}
+	virtual glGetBufferPointervOES_client_proc_t set_glGetBufferPointervOES(glGetBufferPointervOES_client_proc_t f) { glGetBufferPointervOES_client_proc_t retval = glGetBufferPointervOES; glGetBufferPointervOES = f; return retval;}
+	virtual glCurrentPaletteMatrixOES_client_proc_t set_glCurrentPaletteMatrixOES(glCurrentPaletteMatrixOES_client_proc_t f) { glCurrentPaletteMatrixOES_client_proc_t retval = glCurrentPaletteMatrixOES; glCurrentPaletteMatrixOES = f; return retval;}
+	virtual glLoadPaletteFromModelViewMatrixOES_client_proc_t set_glLoadPaletteFromModelViewMatrixOES(glLoadPaletteFromModelViewMatrixOES_client_proc_t f) { glLoadPaletteFromModelViewMatrixOES_client_proc_t retval = glLoadPaletteFromModelViewMatrixOES; glLoadPaletteFromModelViewMatrixOES = f; return retval;}
+	virtual glMatrixIndexPointerOES_client_proc_t set_glMatrixIndexPointerOES(glMatrixIndexPointerOES_client_proc_t f) { glMatrixIndexPointerOES_client_proc_t retval = glMatrixIndexPointerOES; glMatrixIndexPointerOES = f; return retval;}
+	virtual glWeightPointerOES_client_proc_t set_glWeightPointerOES(glWeightPointerOES_client_proc_t f) { glWeightPointerOES_client_proc_t retval = glWeightPointerOES; glWeightPointerOES = f; return retval;}
+	virtual glQueryMatrixxOES_client_proc_t set_glQueryMatrixxOES(glQueryMatrixxOES_client_proc_t f) { glQueryMatrixxOES_client_proc_t retval = glQueryMatrixxOES; glQueryMatrixxOES = f; return retval;}
+	virtual glDepthRangefOES_client_proc_t set_glDepthRangefOES(glDepthRangefOES_client_proc_t f) { glDepthRangefOES_client_proc_t retval = glDepthRangefOES; glDepthRangefOES = f; return retval;}
+	virtual glFrustumfOES_client_proc_t set_glFrustumfOES(glFrustumfOES_client_proc_t f) { glFrustumfOES_client_proc_t retval = glFrustumfOES; glFrustumfOES = f; return retval;}
+	virtual glOrthofOES_client_proc_t set_glOrthofOES(glOrthofOES_client_proc_t f) { glOrthofOES_client_proc_t retval = glOrthofOES; glOrthofOES = f; return retval;}
+	virtual glClipPlanefOES_client_proc_t set_glClipPlanefOES(glClipPlanefOES_client_proc_t f) { glClipPlanefOES_client_proc_t retval = glClipPlanefOES; glClipPlanefOES = f; return retval;}
+	virtual glClipPlanefIMG_client_proc_t set_glClipPlanefIMG(glClipPlanefIMG_client_proc_t f) { glClipPlanefIMG_client_proc_t retval = glClipPlanefIMG; glClipPlanefIMG = f; return retval;}
+	virtual glGetClipPlanefOES_client_proc_t set_glGetClipPlanefOES(glGetClipPlanefOES_client_proc_t f) { glGetClipPlanefOES_client_proc_t retval = glGetClipPlanefOES; glGetClipPlanefOES = f; return retval;}
+	virtual glClearDepthfOES_client_proc_t set_glClearDepthfOES(glClearDepthfOES_client_proc_t f) { glClearDepthfOES_client_proc_t retval = glClearDepthfOES; glClearDepthfOES = f; return retval;}
+	virtual glTexGenfOES_client_proc_t set_glTexGenfOES(glTexGenfOES_client_proc_t f) { glTexGenfOES_client_proc_t retval = glTexGenfOES; glTexGenfOES = f; return retval;}
+	virtual glTexGenfvOES_client_proc_t set_glTexGenfvOES(glTexGenfvOES_client_proc_t f) { glTexGenfvOES_client_proc_t retval = glTexGenfvOES; glTexGenfvOES = f; return retval;}
+	virtual glTexGeniOES_client_proc_t set_glTexGeniOES(glTexGeniOES_client_proc_t f) { glTexGeniOES_client_proc_t retval = glTexGeniOES; glTexGeniOES = f; return retval;}
+	virtual glTexGenivOES_client_proc_t set_glTexGenivOES(glTexGenivOES_client_proc_t f) { glTexGenivOES_client_proc_t retval = glTexGenivOES; glTexGenivOES = f; return retval;}
+	virtual glTexGenxOES_client_proc_t set_glTexGenxOES(glTexGenxOES_client_proc_t f) { glTexGenxOES_client_proc_t retval = glTexGenxOES; glTexGenxOES = f; return retval;}
+	virtual glTexGenxvOES_client_proc_t set_glTexGenxvOES(glTexGenxvOES_client_proc_t f) { glTexGenxvOES_client_proc_t retval = glTexGenxvOES; glTexGenxvOES = f; return retval;}
+	virtual glGetTexGenfvOES_client_proc_t set_glGetTexGenfvOES(glGetTexGenfvOES_client_proc_t f) { glGetTexGenfvOES_client_proc_t retval = glGetTexGenfvOES; glGetTexGenfvOES = f; return retval;}
+	virtual glGetTexGenivOES_client_proc_t set_glGetTexGenivOES(glGetTexGenivOES_client_proc_t f) { glGetTexGenivOES_client_proc_t retval = glGetTexGenivOES; glGetTexGenivOES = f; return retval;}
+	virtual glGetTexGenxvOES_client_proc_t set_glGetTexGenxvOES(glGetTexGenxvOES_client_proc_t f) { glGetTexGenxvOES_client_proc_t retval = glGetTexGenxvOES; glGetTexGenxvOES = f; return retval;}
+	virtual glBindVertexArrayOES_client_proc_t set_glBindVertexArrayOES(glBindVertexArrayOES_client_proc_t f) { glBindVertexArrayOES_client_proc_t retval = glBindVertexArrayOES; glBindVertexArrayOES = f; return retval;}
+	virtual glDeleteVertexArraysOES_client_proc_t set_glDeleteVertexArraysOES(glDeleteVertexArraysOES_client_proc_t f) { glDeleteVertexArraysOES_client_proc_t retval = glDeleteVertexArraysOES; glDeleteVertexArraysOES = f; return retval;}
+	virtual glGenVertexArraysOES_client_proc_t set_glGenVertexArraysOES(glGenVertexArraysOES_client_proc_t f) { glGenVertexArraysOES_client_proc_t retval = glGenVertexArraysOES; glGenVertexArraysOES = f; return retval;}
+	virtual glIsVertexArrayOES_client_proc_t set_glIsVertexArrayOES(glIsVertexArrayOES_client_proc_t f) { glIsVertexArrayOES_client_proc_t retval = glIsVertexArrayOES; glIsVertexArrayOES = f; return retval;}
+	virtual glDiscardFramebufferEXT_client_proc_t set_glDiscardFramebufferEXT(glDiscardFramebufferEXT_client_proc_t f) { glDiscardFramebufferEXT_client_proc_t retval = glDiscardFramebufferEXT; glDiscardFramebufferEXT = f; return retval;}
+	virtual glMultiDrawArraysEXT_client_proc_t set_glMultiDrawArraysEXT(glMultiDrawArraysEXT_client_proc_t f) { glMultiDrawArraysEXT_client_proc_t retval = glMultiDrawArraysEXT; glMultiDrawArraysEXT = f; return retval;}
+	virtual glMultiDrawElementsEXT_client_proc_t set_glMultiDrawElementsEXT(glMultiDrawElementsEXT_client_proc_t f) { glMultiDrawElementsEXT_client_proc_t retval = glMultiDrawElementsEXT; glMultiDrawElementsEXT = f; return retval;}
+	virtual glMultiDrawArraysSUN_client_proc_t set_glMultiDrawArraysSUN(glMultiDrawArraysSUN_client_proc_t f) { glMultiDrawArraysSUN_client_proc_t retval = glMultiDrawArraysSUN; glMultiDrawArraysSUN = f; return retval;}
+	virtual glMultiDrawElementsSUN_client_proc_t set_glMultiDrawElementsSUN(glMultiDrawElementsSUN_client_proc_t f) { glMultiDrawElementsSUN_client_proc_t retval = glMultiDrawElementsSUN; glMultiDrawElementsSUN = f; return retval;}
+	virtual glRenderbufferStorageMultisampleIMG_client_proc_t set_glRenderbufferStorageMultisampleIMG(glRenderbufferStorageMultisampleIMG_client_proc_t f) { glRenderbufferStorageMultisampleIMG_client_proc_t retval = glRenderbufferStorageMultisampleIMG; glRenderbufferStorageMultisampleIMG = f; return retval;}
+	virtual glFramebufferTexture2DMultisampleIMG_client_proc_t set_glFramebufferTexture2DMultisampleIMG(glFramebufferTexture2DMultisampleIMG_client_proc_t f) { glFramebufferTexture2DMultisampleIMG_client_proc_t retval = glFramebufferTexture2DMultisampleIMG; glFramebufferTexture2DMultisampleIMG = f; return retval;}
+	virtual glDeleteFencesNV_client_proc_t set_glDeleteFencesNV(glDeleteFencesNV_client_proc_t f) { glDeleteFencesNV_client_proc_t retval = glDeleteFencesNV; glDeleteFencesNV = f; return retval;}
+	virtual glGenFencesNV_client_proc_t set_glGenFencesNV(glGenFencesNV_client_proc_t f) { glGenFencesNV_client_proc_t retval = glGenFencesNV; glGenFencesNV = f; return retval;}
+	virtual glIsFenceNV_client_proc_t set_glIsFenceNV(glIsFenceNV_client_proc_t f) { glIsFenceNV_client_proc_t retval = glIsFenceNV; glIsFenceNV = f; return retval;}
+	virtual glTestFenceNV_client_proc_t set_glTestFenceNV(glTestFenceNV_client_proc_t f) { glTestFenceNV_client_proc_t retval = glTestFenceNV; glTestFenceNV = f; return retval;}
+	virtual glGetFenceivNV_client_proc_t set_glGetFenceivNV(glGetFenceivNV_client_proc_t f) { glGetFenceivNV_client_proc_t retval = glGetFenceivNV; glGetFenceivNV = f; return retval;}
+	virtual glFinishFenceNV_client_proc_t set_glFinishFenceNV(glFinishFenceNV_client_proc_t f) { glFinishFenceNV_client_proc_t retval = glFinishFenceNV; glFinishFenceNV = f; return retval;}
+	virtual glSetFenceNV_client_proc_t set_glSetFenceNV(glSetFenceNV_client_proc_t f) { glSetFenceNV_client_proc_t retval = glSetFenceNV; glSetFenceNV = f; return retval;}
+	virtual glGetDriverControlsQCOM_client_proc_t set_glGetDriverControlsQCOM(glGetDriverControlsQCOM_client_proc_t f) { glGetDriverControlsQCOM_client_proc_t retval = glGetDriverControlsQCOM; glGetDriverControlsQCOM = f; return retval;}
+	virtual glGetDriverControlStringQCOM_client_proc_t set_glGetDriverControlStringQCOM(glGetDriverControlStringQCOM_client_proc_t f) { glGetDriverControlStringQCOM_client_proc_t retval = glGetDriverControlStringQCOM; glGetDriverControlStringQCOM = f; return retval;}
+	virtual glEnableDriverControlQCOM_client_proc_t set_glEnableDriverControlQCOM(glEnableDriverControlQCOM_client_proc_t f) { glEnableDriverControlQCOM_client_proc_t retval = glEnableDriverControlQCOM; glEnableDriverControlQCOM = f; return retval;}
+	virtual glDisableDriverControlQCOM_client_proc_t set_glDisableDriverControlQCOM(glDisableDriverControlQCOM_client_proc_t f) { glDisableDriverControlQCOM_client_proc_t retval = glDisableDriverControlQCOM; glDisableDriverControlQCOM = f; return retval;}
+	virtual glExtGetTexturesQCOM_client_proc_t set_glExtGetTexturesQCOM(glExtGetTexturesQCOM_client_proc_t f) { glExtGetTexturesQCOM_client_proc_t retval = glExtGetTexturesQCOM; glExtGetTexturesQCOM = f; return retval;}
+	virtual glExtGetBuffersQCOM_client_proc_t set_glExtGetBuffersQCOM(glExtGetBuffersQCOM_client_proc_t f) { glExtGetBuffersQCOM_client_proc_t retval = glExtGetBuffersQCOM; glExtGetBuffersQCOM = f; return retval;}
+	virtual glExtGetRenderbuffersQCOM_client_proc_t set_glExtGetRenderbuffersQCOM(glExtGetRenderbuffersQCOM_client_proc_t f) { glExtGetRenderbuffersQCOM_client_proc_t retval = glExtGetRenderbuffersQCOM; glExtGetRenderbuffersQCOM = f; return retval;}
+	virtual glExtGetFramebuffersQCOM_client_proc_t set_glExtGetFramebuffersQCOM(glExtGetFramebuffersQCOM_client_proc_t f) { glExtGetFramebuffersQCOM_client_proc_t retval = glExtGetFramebuffersQCOM; glExtGetFramebuffersQCOM = f; return retval;}
+	virtual glExtGetTexLevelParameterivQCOM_client_proc_t set_glExtGetTexLevelParameterivQCOM(glExtGetTexLevelParameterivQCOM_client_proc_t f) { glExtGetTexLevelParameterivQCOM_client_proc_t retval = glExtGetTexLevelParameterivQCOM; glExtGetTexLevelParameterivQCOM = f; return retval;}
+	virtual glExtTexObjectStateOverrideiQCOM_client_proc_t set_glExtTexObjectStateOverrideiQCOM(glExtTexObjectStateOverrideiQCOM_client_proc_t f) { glExtTexObjectStateOverrideiQCOM_client_proc_t retval = glExtTexObjectStateOverrideiQCOM; glExtTexObjectStateOverrideiQCOM = f; return retval;}
+	virtual glExtGetTexSubImageQCOM_client_proc_t set_glExtGetTexSubImageQCOM(glExtGetTexSubImageQCOM_client_proc_t f) { glExtGetTexSubImageQCOM_client_proc_t retval = glExtGetTexSubImageQCOM; glExtGetTexSubImageQCOM = f; return retval;}
+	virtual glExtGetBufferPointervQCOM_client_proc_t set_glExtGetBufferPointervQCOM(glExtGetBufferPointervQCOM_client_proc_t f) { glExtGetBufferPointervQCOM_client_proc_t retval = glExtGetBufferPointervQCOM; glExtGetBufferPointervQCOM = f; return retval;}
+	virtual glExtGetShadersQCOM_client_proc_t set_glExtGetShadersQCOM(glExtGetShadersQCOM_client_proc_t f) { glExtGetShadersQCOM_client_proc_t retval = glExtGetShadersQCOM; glExtGetShadersQCOM = f; return retval;}
+	virtual glExtGetProgramsQCOM_client_proc_t set_glExtGetProgramsQCOM(glExtGetProgramsQCOM_client_proc_t f) { glExtGetProgramsQCOM_client_proc_t retval = glExtGetProgramsQCOM; glExtGetProgramsQCOM = f; return retval;}
+	virtual glExtIsProgramBinaryQCOM_client_proc_t set_glExtIsProgramBinaryQCOM(glExtIsProgramBinaryQCOM_client_proc_t f) { glExtIsProgramBinaryQCOM_client_proc_t retval = glExtIsProgramBinaryQCOM; glExtIsProgramBinaryQCOM = f; return retval;}
+	virtual glExtGetProgramBinarySourceQCOM_client_proc_t set_glExtGetProgramBinarySourceQCOM(glExtGetProgramBinarySourceQCOM_client_proc_t f) { glExtGetProgramBinarySourceQCOM_client_proc_t retval = glExtGetProgramBinarySourceQCOM; glExtGetProgramBinarySourceQCOM = f; return retval;}
+	virtual glStartTilingQCOM_client_proc_t set_glStartTilingQCOM(glStartTilingQCOM_client_proc_t f) { glStartTilingQCOM_client_proc_t retval = glStartTilingQCOM; glStartTilingQCOM = f; return retval;}
+	virtual glEndTilingQCOM_client_proc_t set_glEndTilingQCOM(glEndTilingQCOM_client_proc_t f) { glEndTilingQCOM_client_proc_t retval = glEndTilingQCOM; glEndTilingQCOM = f; return retval;}
+	 virtual ~gl_client_context_t() {}
+
+	typedef gl_client_context_t *CONTEXT_ACCESSOR_TYPE(void);
+	static void setContextAccessor(CONTEXT_ACCESSOR_TYPE *f);
+	int initDispatchByName( void *(*getProc)(const char *name, void *userData), void *userData);
+	virtual void setError(unsigned int  error){};
+	virtual unsigned int getError(){ return 0; };
+};
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_client_proc.h b/tools/emulator/opengl/system/GLESv1_enc/gl_client_proc.h
new file mode 100644
index 0000000..a188657
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_client_proc.h
@@ -0,0 +1,305 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __gl_client_proc_t_h
+#define __gl_client_proc_t_h
+
+
+
+#include "gl_types.h"
+#ifndef gl_APIENTRY
+#define gl_APIENTRY 
+#endif
+typedef void (gl_APIENTRY *glAlphaFunc_client_proc_t) (void * ctx, GLenum, GLclampf);
+typedef void (gl_APIENTRY *glClearColor_client_proc_t) (void * ctx, GLclampf, GLclampf, GLclampf, GLclampf);
+typedef void (gl_APIENTRY *glClearDepthf_client_proc_t) (void * ctx, GLclampf);
+typedef void (gl_APIENTRY *glClipPlanef_client_proc_t) (void * ctx, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glColor4f_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glDepthRangef_client_proc_t) (void * ctx, GLclampf, GLclampf);
+typedef void (gl_APIENTRY *glFogf_client_proc_t) (void * ctx, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glFogfv_client_proc_t) (void * ctx, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glFrustumf_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glGetClipPlanef_client_proc_t) (void * ctx, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glGetFloatv_client_proc_t) (void * ctx, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glGetLightfv_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glGetMaterialfv_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glGetTexEnvfv_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glGetTexParameterfv_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glLightModelf_client_proc_t) (void * ctx, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glLightModelfv_client_proc_t) (void * ctx, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glLightf_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glLightfv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glLineWidth_client_proc_t) (void * ctx, GLfloat);
+typedef void (gl_APIENTRY *glLoadMatrixf_client_proc_t) (void * ctx, const GLfloat*);
+typedef void (gl_APIENTRY *glMaterialf_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glMaterialfv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glMultMatrixf_client_proc_t) (void * ctx, const GLfloat*);
+typedef void (gl_APIENTRY *glMultiTexCoord4f_client_proc_t) (void * ctx, GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glNormal3f_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glOrthof_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glPointParameterf_client_proc_t) (void * ctx, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glPointParameterfv_client_proc_t) (void * ctx, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glPointSize_client_proc_t) (void * ctx, GLfloat);
+typedef void (gl_APIENTRY *glPolygonOffset_client_proc_t) (void * ctx, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glRotatef_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glScalef_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glTexEnvf_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glTexEnvfv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glTexParameterf_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glTexParameterfv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glTranslatef_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glActiveTexture_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glAlphaFuncx_client_proc_t) (void * ctx, GLenum, GLclampx);
+typedef void (gl_APIENTRY *glBindBuffer_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl_APIENTRY *glBindTexture_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl_APIENTRY *glBlendFunc_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef void (gl_APIENTRY *glBufferData_client_proc_t) (void * ctx, GLenum, GLsizeiptr, const GLvoid*, GLenum);
+typedef void (gl_APIENTRY *glBufferSubData_client_proc_t) (void * ctx, GLenum, GLintptr, GLsizeiptr, const GLvoid*);
+typedef void (gl_APIENTRY *glClear_client_proc_t) (void * ctx, GLbitfield);
+typedef void (gl_APIENTRY *glClearColorx_client_proc_t) (void * ctx, GLclampx, GLclampx, GLclampx, GLclampx);
+typedef void (gl_APIENTRY *glClearDepthx_client_proc_t) (void * ctx, GLclampx);
+typedef void (gl_APIENTRY *glClearStencil_client_proc_t) (void * ctx, GLint);
+typedef void (gl_APIENTRY *glClientActiveTexture_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glColor4ub_client_proc_t) (void * ctx, GLubyte, GLubyte, GLubyte, GLubyte);
+typedef void (gl_APIENTRY *glColor4x_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glColorMask_client_proc_t) (void * ctx, GLboolean, GLboolean, GLboolean, GLboolean);
+typedef void (gl_APIENTRY *glColorPointer_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glCompressedTexImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glCompressedTexSubImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glCopyTexImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+typedef void (gl_APIENTRY *glCopyTexSubImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+typedef void (gl_APIENTRY *glCullFace_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glDeleteBuffers_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl_APIENTRY *glDeleteTextures_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl_APIENTRY *glDepthFunc_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glDepthMask_client_proc_t) (void * ctx, GLboolean);
+typedef void (gl_APIENTRY *glDepthRangex_client_proc_t) (void * ctx, GLclampx, GLclampx);
+typedef void (gl_APIENTRY *glDisable_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glDisableClientState_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glDrawArrays_client_proc_t) (void * ctx, GLenum, GLint, GLsizei);
+typedef void (gl_APIENTRY *glDrawElements_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, const GLvoid*);
+typedef void (gl_APIENTRY *glEnable_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glEnableClientState_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glFinish_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glFlush_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glFogx_client_proc_t) (void * ctx, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glFogxv_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glFrontFace_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glFrustumx_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glGetBooleanv_client_proc_t) (void * ctx, GLenum, GLboolean*);
+typedef void (gl_APIENTRY *glGetBufferParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef void (gl_APIENTRY *glClipPlanex_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glGenBuffers_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl_APIENTRY *glGenTextures_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef GLenum (gl_APIENTRY *glGetError_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glGetFixedv_client_proc_t) (void * ctx, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetIntegerv_client_proc_t) (void * ctx, GLenum, GLint*);
+typedef void (gl_APIENTRY *glGetLightxv_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetMaterialxv_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetPointerv_client_proc_t) (void * ctx, GLenum, GLvoid**);
+typedef const GLubyte* (gl_APIENTRY *glGetString_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glGetTexEnviv_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef void (gl_APIENTRY *glGetTexEnvxv_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetTexParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef void (gl_APIENTRY *glGetTexParameterxv_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glHint_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef GLboolean (gl_APIENTRY *glIsBuffer_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl_APIENTRY *glIsEnabled_client_proc_t) (void * ctx, GLenum);
+typedef GLboolean (gl_APIENTRY *glIsTexture_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glLightModelx_client_proc_t) (void * ctx, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glLightModelxv_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glLightx_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glLightxv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glLineWidthx_client_proc_t) (void * ctx, GLfixed);
+typedef void (gl_APIENTRY *glLoadIdentity_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glLoadMatrixx_client_proc_t) (void * ctx, const GLfixed*);
+typedef void (gl_APIENTRY *glLogicOp_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glMaterialx_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glMaterialxv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glMatrixMode_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glMultMatrixx_client_proc_t) (void * ctx, const GLfixed*);
+typedef void (gl_APIENTRY *glMultiTexCoord4x_client_proc_t) (void * ctx, GLenum, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glNormal3x_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glNormalPointer_client_proc_t) (void * ctx, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glOrthox_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glPixelStorei_client_proc_t) (void * ctx, GLenum, GLint);
+typedef void (gl_APIENTRY *glPointParameterx_client_proc_t) (void * ctx, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glPointParameterxv_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glPointSizex_client_proc_t) (void * ctx, GLfixed);
+typedef void (gl_APIENTRY *glPolygonOffsetx_client_proc_t) (void * ctx, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glPopMatrix_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glPushMatrix_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glReadPixels_client_proc_t) (void * ctx, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
+typedef void (gl_APIENTRY *glRotatex_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glSampleCoverage_client_proc_t) (void * ctx, GLclampf, GLboolean);
+typedef void (gl_APIENTRY *glSampleCoveragex_client_proc_t) (void * ctx, GLclampx, GLboolean);
+typedef void (gl_APIENTRY *glScalex_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glScissor_client_proc_t) (void * ctx, GLint, GLint, GLsizei, GLsizei);
+typedef void (gl_APIENTRY *glShadeModel_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glStencilFunc_client_proc_t) (void * ctx, GLenum, GLint, GLuint);
+typedef void (gl_APIENTRY *glStencilMask_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glStencilOp_client_proc_t) (void * ctx, GLenum, GLenum, GLenum);
+typedef void (gl_APIENTRY *glTexCoordPointer_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glTexEnvi_client_proc_t) (void * ctx, GLenum, GLenum, GLint);
+typedef void (gl_APIENTRY *glTexEnvx_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glTexEnviv_client_proc_t) (void * ctx, GLenum, GLenum, const GLint*);
+typedef void (gl_APIENTRY *glTexEnvxv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glTexImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*);
+typedef void (gl_APIENTRY *glTexParameteri_client_proc_t) (void * ctx, GLenum, GLenum, GLint);
+typedef void (gl_APIENTRY *glTexParameterx_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glTexParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, const GLint*);
+typedef void (gl_APIENTRY *glTexParameterxv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glTexSubImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*);
+typedef void (gl_APIENTRY *glTranslatex_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glVertexPointer_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glViewport_client_proc_t) (void * ctx, GLint, GLint, GLsizei, GLsizei);
+typedef void (gl_APIENTRY *glPointSizePointerOES_client_proc_t) (void * ctx, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glVertexPointerOffset_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glColorPointerOffset_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glNormalPointerOffset_client_proc_t) (void * ctx, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glPointSizePointerOffset_client_proc_t) (void * ctx, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glTexCoordPointerOffset_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glWeightPointerOffset_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glMatrixIndexPointerOffset_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, GLuint);
+typedef void (gl_APIENTRY *glVertexPointerData_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glColorPointerData_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glNormalPointerData_client_proc_t) (void * ctx, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glTexCoordPointerData_client_proc_t) (void * ctx, GLint, GLint, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glPointSizePointerData_client_proc_t) (void * ctx, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glWeightPointerData_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glMatrixIndexPointerData_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, void*, GLuint);
+typedef void (gl_APIENTRY *glDrawElementsOffset_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, GLuint);
+typedef void (gl_APIENTRY *glDrawElementsData_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, void*, GLuint);
+typedef void (gl_APIENTRY *glGetCompressedTextureFormats_client_proc_t) (void * ctx, int, GLint*);
+typedef int (gl_APIENTRY *glFinishRoundTrip_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glBlendEquationSeparateOES_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef void (gl_APIENTRY *glBlendFuncSeparateOES_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLenum);
+typedef void (gl_APIENTRY *glBlendEquationOES_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glDrawTexsOES_client_proc_t) (void * ctx, GLshort, GLshort, GLshort, GLshort, GLshort);
+typedef void (gl_APIENTRY *glDrawTexiOES_client_proc_t) (void * ctx, GLint, GLint, GLint, GLint, GLint);
+typedef void (gl_APIENTRY *glDrawTexxOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glDrawTexsvOES_client_proc_t) (void * ctx, const GLshort*);
+typedef void (gl_APIENTRY *glDrawTexivOES_client_proc_t) (void * ctx, const GLint*);
+typedef void (gl_APIENTRY *glDrawTexxvOES_client_proc_t) (void * ctx, const GLfixed*);
+typedef void (gl_APIENTRY *glDrawTexfOES_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glDrawTexfvOES_client_proc_t) (void * ctx, const GLfloat*);
+typedef void (gl_APIENTRY *glEGLImageTargetTexture2DOES_client_proc_t) (void * ctx, GLenum, GLeglImageOES);
+typedef void (gl_APIENTRY *glEGLImageTargetRenderbufferStorageOES_client_proc_t) (void * ctx, GLenum, GLeglImageOES);
+typedef void (gl_APIENTRY *glAlphaFuncxOES_client_proc_t) (void * ctx, GLenum, GLclampx);
+typedef void (gl_APIENTRY *glClearColorxOES_client_proc_t) (void * ctx, GLclampx, GLclampx, GLclampx, GLclampx);
+typedef void (gl_APIENTRY *glClearDepthxOES_client_proc_t) (void * ctx, GLclampx);
+typedef void (gl_APIENTRY *glClipPlanexOES_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glClipPlanexIMG_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glColor4xOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glDepthRangexOES_client_proc_t) (void * ctx, GLclampx, GLclampx);
+typedef void (gl_APIENTRY *glFogxOES_client_proc_t) (void * ctx, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glFogxvOES_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glFrustumxOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glGetClipPlanexOES_client_proc_t) (void * ctx, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetClipPlanex_client_proc_t) (void * ctx, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetFixedvOES_client_proc_t) (void * ctx, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetLightxvOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetMaterialxvOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetTexEnvxvOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glGetTexParameterxvOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glLightModelxOES_client_proc_t) (void * ctx, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glLightModelxvOES_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glLightxOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glLightxvOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glLineWidthxOES_client_proc_t) (void * ctx, GLfixed);
+typedef void (gl_APIENTRY *glLoadMatrixxOES_client_proc_t) (void * ctx, const GLfixed*);
+typedef void (gl_APIENTRY *glMaterialxOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glMaterialxvOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glMultMatrixxOES_client_proc_t) (void * ctx, const GLfixed*);
+typedef void (gl_APIENTRY *glMultiTexCoord4xOES_client_proc_t) (void * ctx, GLenum, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glNormal3xOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glOrthoxOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glPointParameterxOES_client_proc_t) (void * ctx, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glPointParameterxvOES_client_proc_t) (void * ctx, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glPointSizexOES_client_proc_t) (void * ctx, GLfixed);
+typedef void (gl_APIENTRY *glPolygonOffsetxOES_client_proc_t) (void * ctx, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glRotatexOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glSampleCoveragexOES_client_proc_t) (void * ctx, GLclampx, GLboolean);
+typedef void (gl_APIENTRY *glScalexOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed);
+typedef void (gl_APIENTRY *glTexEnvxOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glTexEnvxvOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glTexParameterxOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glTexParameterxvOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glTranslatexOES_client_proc_t) (void * ctx, GLfixed, GLfixed, GLfixed);
+typedef GLboolean (gl_APIENTRY *glIsRenderbufferOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glBindRenderbufferOES_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl_APIENTRY *glDeleteRenderbuffersOES_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl_APIENTRY *glGenRenderbuffersOES_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl_APIENTRY *glRenderbufferStorageOES_client_proc_t) (void * ctx, GLenum, GLenum, GLsizei, GLsizei);
+typedef void (gl_APIENTRY *glGetRenderbufferParameterivOES_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef GLboolean (gl_APIENTRY *glIsFramebufferOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glBindFramebufferOES_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl_APIENTRY *glDeleteFramebuffersOES_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl_APIENTRY *glGenFramebuffersOES_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef GLenum (gl_APIENTRY *glCheckFramebufferStatusOES_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glFramebufferRenderbufferOES_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint);
+typedef void (gl_APIENTRY *glFramebufferTexture2DOES_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint, GLint);
+typedef void (gl_APIENTRY *glGetFramebufferAttachmentParameterivOES_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLint*);
+typedef void (gl_APIENTRY *glGenerateMipmapOES_client_proc_t) (void * ctx, GLenum);
+typedef void* (gl_APIENTRY *glMapBufferOES_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef GLboolean (gl_APIENTRY *glUnmapBufferOES_client_proc_t) (void * ctx, GLenum);
+typedef void (gl_APIENTRY *glGetBufferPointervOES_client_proc_t) (void * ctx, GLenum, GLenum, GLvoid**);
+typedef void (gl_APIENTRY *glCurrentPaletteMatrixOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glLoadPaletteFromModelViewMatrixOES_client_proc_t) (void * ctx);
+typedef void (gl_APIENTRY *glMatrixIndexPointerOES_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, const GLvoid*);
+typedef void (gl_APIENTRY *glWeightPointerOES_client_proc_t) (void * ctx, GLint, GLenum, GLsizei, const GLvoid*);
+typedef GLbitfield (gl_APIENTRY *glQueryMatrixxOES_client_proc_t) (void * ctx, GLfixed*, GLint*);
+typedef void (gl_APIENTRY *glDepthRangefOES_client_proc_t) (void * ctx, GLclampf, GLclampf);
+typedef void (gl_APIENTRY *glFrustumfOES_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glOrthofOES_client_proc_t) (void * ctx, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl_APIENTRY *glClipPlanefOES_client_proc_t) (void * ctx, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glClipPlanefIMG_client_proc_t) (void * ctx, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glGetClipPlanefOES_client_proc_t) (void * ctx, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glClearDepthfOES_client_proc_t) (void * ctx, GLclampf);
+typedef void (gl_APIENTRY *glTexGenfOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat);
+typedef void (gl_APIENTRY *glTexGenfvOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLfloat*);
+typedef void (gl_APIENTRY *glTexGeniOES_client_proc_t) (void * ctx, GLenum, GLenum, GLint);
+typedef void (gl_APIENTRY *glTexGenivOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLint*);
+typedef void (gl_APIENTRY *glTexGenxOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed);
+typedef void (gl_APIENTRY *glTexGenxvOES_client_proc_t) (void * ctx, GLenum, GLenum, const GLfixed*);
+typedef void (gl_APIENTRY *glGetTexGenfvOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat*);
+typedef void (gl_APIENTRY *glGetTexGenivOES_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef void (gl_APIENTRY *glGetTexGenxvOES_client_proc_t) (void * ctx, GLenum, GLenum, GLfixed*);
+typedef void (gl_APIENTRY *glBindVertexArrayOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glDeleteVertexArraysOES_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl_APIENTRY *glGenVertexArraysOES_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef GLboolean (gl_APIENTRY *glIsVertexArrayOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glDiscardFramebufferEXT_client_proc_t) (void * ctx, GLenum, GLsizei, const GLenum*);
+typedef void (gl_APIENTRY *glMultiDrawArraysEXT_client_proc_t) (void * ctx, GLenum, GLint*, GLsizei*, GLsizei);
+typedef void (gl_APIENTRY *glMultiDrawElementsEXT_client_proc_t) (void * ctx, GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei);
+typedef void (gl_APIENTRY *glMultiDrawArraysSUN_client_proc_t) (void * ctx, GLenum, GLint*, GLsizei*, GLsizei);
+typedef void (gl_APIENTRY *glMultiDrawElementsSUN_client_proc_t) (void * ctx, GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei);
+typedef void (gl_APIENTRY *glRenderbufferStorageMultisampleIMG_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+typedef void (gl_APIENTRY *glFramebufferTexture2DMultisampleIMG_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
+typedef void (gl_APIENTRY *glDeleteFencesNV_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl_APIENTRY *glGenFencesNV_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef GLboolean (gl_APIENTRY *glIsFenceNV_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl_APIENTRY *glTestFenceNV_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glGetFenceivNV_client_proc_t) (void * ctx, GLuint, GLenum, GLint*);
+typedef void (gl_APIENTRY *glFinishFenceNV_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glSetFenceNV_client_proc_t) (void * ctx, GLuint, GLenum);
+typedef void (gl_APIENTRY *glGetDriverControlsQCOM_client_proc_t) (void * ctx, GLint*, GLsizei, GLuint*);
+typedef void (gl_APIENTRY *glGetDriverControlStringQCOM_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (gl_APIENTRY *glEnableDriverControlQCOM_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glDisableDriverControlQCOM_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glExtGetTexturesQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl_APIENTRY *glExtGetBuffersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl_APIENTRY *glExtGetRenderbuffersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl_APIENTRY *glExtGetFramebuffersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl_APIENTRY *glExtGetTexLevelParameterivQCOM_client_proc_t) (void * ctx, GLuint, GLenum, GLint, GLenum, GLint*);
+typedef void (gl_APIENTRY *glExtTexObjectStateOverrideiQCOM_client_proc_t) (void * ctx, GLenum, GLenum, GLint);
+typedef void (gl_APIENTRY *glExtGetTexSubImageQCOM_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
+typedef void (gl_APIENTRY *glExtGetBufferPointervQCOM_client_proc_t) (void * ctx, GLenum, GLvoid**);
+typedef void (gl_APIENTRY *glExtGetShadersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl_APIENTRY *glExtGetProgramsQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef GLboolean (gl_APIENTRY *glExtIsProgramBinaryQCOM_client_proc_t) (void * ctx, GLuint);
+typedef void (gl_APIENTRY *glExtGetProgramBinarySourceQCOM_client_proc_t) (void * ctx, GLuint, GLenum, GLchar*, GLint*);
+typedef void (gl_APIENTRY *glStartTilingQCOM_client_proc_t) (void * ctx, GLuint, GLuint, GLuint, GLuint, GLbitfield);
+typedef void (gl_APIENTRY *glEndTilingQCOM_client_proc_t) (void * ctx, GLbitfield);
+
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_enc.cpp b/tools/emulator/opengl/system/GLESv1_enc/gl_enc.cpp
new file mode 100644
index 0000000..0a343df
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_enc.cpp
@@ -0,0 +1,5184 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+
+#include <string.h>
+#include "gl_opcodes.h"
+
+#include "gl_enc.h"
+
+
+#include <stdio.h>
+static void enc_unsupported()
+{
+	ALOGE("Function is unsupported\n");
+}
+
+void glAlphaFunc_enc(void *self , GLenum func, GLclampf ref)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glAlphaFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+		memcpy(ptr, &ref, 4); ptr += 4;
+}
+
+void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glClearDepthf_enc(void *self , GLclampf depth)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &depth, 4); ptr += 4;
+}
+
+void glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_equation =  (4 * sizeof(float));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_equation + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClipPlanef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &plane, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
+	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+}
+
+void glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColor4f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glFogf_enc(void *self , GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFogf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glFogfv_enc(void *self , GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFogfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFrustumf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_eqn =  (4 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetClipPlanef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+	stream->readback(eqn, __size_eqn);
+}
+
+void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetLightfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetMaterialfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexEnvfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &env, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glLightModelf_enc(void *self , GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightModelf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightModelfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glLineWidth_enc(void *self , GLfloat width)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &width, 4); ptr += 4;
+}
+
+void glLoadMatrixf_enc(void *self , const GLfloat* m)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_m =  (16 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_m + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLoadMatrixf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_m; ptr += 4;
+	memcpy(ptr, m, __size_m);ptr += __size_m;
+}
+
+void glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMaterialf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMaterialfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glMultMatrixf_enc(void *self , const GLfloat* m)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_m =  (16 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_m + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMultMatrixf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_m; ptr += 4;
+	memcpy(ptr, m, __size_m);ptr += __size_m;
+}
+
+void glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMultiTexCoord4f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &s, 4); ptr += 4;
+		memcpy(ptr, &t, 4); ptr += 4;
+		memcpy(ptr, &r, 4); ptr += 4;
+		memcpy(ptr, &q, 4); ptr += 4;
+}
+
+void glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glNormal3f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &nx, 4); ptr += 4;
+		memcpy(ptr, &ny, 4); ptr += 4;
+		memcpy(ptr, &nz, 4); ptr += 4;
+}
+
+void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glOrthof;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glPointParameterf_enc(void *self , GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glPointSize_enc(void *self , GLfloat size)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointSize;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+}
+
+void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &factor, 4); ptr += 4;
+		memcpy(ptr, &units, 4); ptr += 4;
+}
+
+void glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glRotatef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &angle, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glScalef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTranslatef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glActiveTexture_enc(void *self , GLenum texture)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &texture, 4); ptr += 4;
+}
+
+void glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glAlphaFuncx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+		memcpy(ptr, &ref, 4); ptr += 4;
+}
+
+void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &buffer, 4); ptr += 4;
+}
+
+void glBindTexture_enc(void *self , GLenum target, GLuint texture)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &texture, 4); ptr += 4;
+}
+
+void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &sfactor, 4); ptr += 4;
+		memcpy(ptr, &dfactor, 4); ptr += 4;
+}
+
+void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  size;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	memcpy(ptr, data, __size_data);ptr += __size_data;
+		memcpy(ptr, &usage, 4); ptr += 4;
+}
+
+void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  size;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	memcpy(ptr, data, __size_data);ptr += __size_data;
+}
+
+void glClear_enc(void *self , GLbitfield mask)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearColorx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glClearDepthx_enc(void *self , GLclampx depth)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearDepthx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &depth, 4); ptr += 4;
+}
+
+void glClearStencil_enc(void *self , GLint s)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &s, 4); ptr += 4;
+}
+
+void glClientActiveTexture_enc(void *self , GLenum texture)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClientActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &texture, 4); ptr += 4;
+}
+
+void glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 1 + 1 + 1 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColor4ub;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 1); ptr += 1;
+		memcpy(ptr, &green, 1); ptr += 1;
+		memcpy(ptr, &blue, 1); ptr += 1;
+		memcpy(ptr, &alpha, 1); ptr += 1;
+}
+
+void glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColor4x;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 1 + 1 + 1 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 1); ptr += 1;
+		memcpy(ptr, &green, 1); ptr += 1;
+		memcpy(ptr, &blue, 1); ptr += 1;
+		memcpy(ptr, &alpha, 1); ptr += 1;
+}
+
+void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+		memcpy(ptr, &imageSize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	if (data != NULL) memcpy(ptr, data, __size_data);ptr += __size_data;
+}
+
+void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  imageSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &imageSize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	memcpy(ptr, data, __size_data);ptr += __size_data;
+}
+
+void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+}
+
+void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glCullFace_enc(void *self , GLenum mode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+	memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
+}
+
+void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_textures =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_textures + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+	memcpy(ptr, textures, __size_textures);ptr += __size_textures;
+}
+
+void glDepthFunc_enc(void *self , GLenum func)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+}
+
+void glDepthMask_enc(void *self , GLboolean flag)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &flag, 1); ptr += 1;
+}
+
+void glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthRangex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glDisable_enc(void *self , GLenum cap)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &cap, 4); ptr += 4;
+}
+
+void glDisableClientState_enc(void *self , GLenum array)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDisableClientState;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &array, 4); ptr += 4;
+}
+
+void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+		memcpy(ptr, &first, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+}
+
+void glEnable_enc(void *self , GLenum cap)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &cap, 4); ptr += 4;
+}
+
+void glEnableClientState_enc(void *self , GLenum array)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEnableClientState;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &array, 4); ptr += 4;
+}
+
+void glFinish_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glFlush_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glFogx_enc(void *self , GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFogx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glFogxv_enc(void *self , GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFogxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glFrontFace_enc(void *self , GLenum mode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFrustumx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLboolean));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_eqn =  (4 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClipPlanex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+	memcpy(ptr, eqn, __size_eqn);ptr += __size_eqn;
+}
+
+void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+	stream->readback(buffers, __size_buffers);
+}
+
+void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_textures =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_textures + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+	stream->readback(textures, __size_textures);
+}
+
+GLenum glGetError_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+
+	GLenum retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glGetFixedv_enc(void *self , GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFixedv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetLightxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetMaterialxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexEnviv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &env, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexEnvxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &env, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glHint_enc(void *self , GLenum target, GLenum mode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+GLboolean glIsBuffer_enc(void *self , GLuint buffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &buffer, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsEnabled_enc(void *self , GLenum cap)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &cap, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsTexture_enc(void *self , GLuint texture)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &texture, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glLightModelx_enc(void *self , GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightModelx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightModelxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glLineWidthx_enc(void *self , GLfixed width)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLineWidthx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &width, 4); ptr += 4;
+}
+
+void glLoadIdentity_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLoadIdentity;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glLoadMatrixx_enc(void *self , const GLfixed* m)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_m =  (16 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_m + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLoadMatrixx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_m; ptr += 4;
+	memcpy(ptr, m, __size_m);ptr += __size_m;
+}
+
+void glLogicOp_enc(void *self , GLenum opcode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLogicOp;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &opcode, 4); ptr += 4;
+}
+
+void glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMaterialx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMaterialxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glMatrixMode_enc(void *self , GLenum mode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMatrixMode;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glMultMatrixx_enc(void *self , const GLfixed* m)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_m =  (16 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_m + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMultMatrixx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_m; ptr += 4;
+	memcpy(ptr, m, __size_m);ptr += __size_m;
+}
+
+void glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMultiTexCoord4x;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &s, 4); ptr += 4;
+		memcpy(ptr, &t, 4); ptr += 4;
+		memcpy(ptr, &r, 4); ptr += 4;
+		memcpy(ptr, &q, 4); ptr += 4;
+}
+
+void glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glNormal3x;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &nx, 4); ptr += 4;
+		memcpy(ptr, &ny, 4); ptr += 4;
+		memcpy(ptr, &nz, 4); ptr += 4;
+}
+
+void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glOrthox;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glPixelStorei_enc(void *self , GLenum pname, GLint param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glPointParameterx_enc(void *self , GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointParameterx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glPointSizex_enc(void *self , GLfixed size)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointSizex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+}
+
+void glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPolygonOffsetx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &factor, 4); ptr += 4;
+		memcpy(ptr, &units, 4); ptr += 4;
+}
+
+void glPopMatrix_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPopMatrix;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glPushMatrix_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPushMatrix;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  pixelDataSize(self, width, height, format, type, 1);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
+	stream->readback(pixels, __size_pixels);
+}
+
+void glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glRotatex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &angle, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &value, 4); ptr += 4;
+		memcpy(ptr, &invert, 1); ptr += 1;
+}
+
+void glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glSampleCoveragex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &value, 4); ptr += 4;
+		memcpy(ptr, &invert, 1); ptr += 1;
+}
+
+void glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glScalex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glShadeModel_enc(void *self , GLenum mode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glShadeModel;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+		memcpy(ptr, &ref, 4); ptr += 4;
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glStencilMask_enc(void *self , GLuint mask)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fail, 4); ptr += 4;
+		memcpy(ptr, &zfail, 4); ptr += 4;
+		memcpy(ptr, &zpass, 4); ptr += 4;
+}
+
+void glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvi;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnviv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels = ((pixels != NULL) ?  pixelDataSize(self, width, height, format, type, 0) : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+}
+
+void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterx;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterxv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  pixelDataSize(self, width, height, format, type, 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	stream->writeFully(pixels, __size_pixels);
+}
+
+void glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTranslatex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColorPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glNormalPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointSizePointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexCoordPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glWeightPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMatrixIndexPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColorPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glNormalPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 3, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexCoordPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &unit, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointSizePointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, 1, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glWeightPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMatrixIndexPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char*)data, size, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	memcpy(ptr, data, __size_data);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_formats =  (count * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_formats + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_formats; ptr += 4;
+	stream->readback(formats, __size_formats);
+}
+
+int glFinishRoundTrip_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+
+	int retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glBlendEquationSeparateOES_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendEquationSeparateOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &modeRGB, 4); ptr += 4;
+		memcpy(ptr, &modeAlpha, 4); ptr += 4;
+}
+
+void glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendFuncSeparateOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &srcRGB, 4); ptr += 4;
+		memcpy(ptr, &dstRGB, 4); ptr += 4;
+		memcpy(ptr, &srcAlpha, 4); ptr += 4;
+		memcpy(ptr, &dstAlpha, 4); ptr += 4;
+}
+
+void glBlendEquationOES_enc(void *self , GLenum mode)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendEquationOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 2 + 2 + 2 + 2 + 2;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexsOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 2); ptr += 2;
+		memcpy(ptr, &y, 2); ptr += 2;
+		memcpy(ptr, &z, 2); ptr += 2;
+		memcpy(ptr, &width, 2); ptr += 2;
+		memcpy(ptr, &height, 2); ptr += 2;
+}
+
+void glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLint height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexiOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glDrawTexsvOES_enc(void *self , const GLshort* coords)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_coords =  (5 * sizeof(GLshort));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_coords + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexsvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
+	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+}
+
+void glDrawTexivOES_enc(void *self , const GLint* coords)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_coords =  (5 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_coords + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexivOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
+	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+}
+
+void glDrawTexxvOES_enc(void *self , const GLfixed* coords)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_coords =  (5 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_coords + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
+	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+}
+
+void glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexfOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glDrawTexfvOES_enc(void *self , const GLfloat* coords)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_coords =  (5 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_coords + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawTexfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_coords; ptr += 4;
+	memcpy(ptr, coords, __size_coords);ptr += __size_coords;
+}
+
+void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &image, 4); ptr += 4;
+}
+
+void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &image, 4); ptr += 4;
+}
+
+void glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glAlphaFuncxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+		memcpy(ptr, &ref, 4); ptr += 4;
+}
+
+void glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearColorxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glClearDepthxOES_enc(void *self , GLclampx depth)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearDepthxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &depth, 4); ptr += 4;
+}
+
+void glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_equation =  (4 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_equation + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClipPlanexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &plane, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
+	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+}
+
+void glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_equation =  (4 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_equation + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClipPlanexIMG;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &plane, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
+	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+}
+
+void glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColor4xOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthRangexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glFogxOES_enc(void *self , GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFogxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFogxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFrustumxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_eqn =  (4 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetClipPlanexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+	stream->readback(eqn, __size_eqn);
+}
+
+void glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_eqn =  (4 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetClipPlanex;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+	stream->readback(eqn, __size_eqn);
+}
+
+void glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFixedvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetLightxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetMaterialxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexEnvxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &env, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glLightModelxOES_enc(void *self , GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightModelxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightModelxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLightxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &light, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glLineWidthxOES_enc(void *self , GLfixed width)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLineWidthxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &width, 4); ptr += 4;
+}
+
+void glLoadMatrixxOES_enc(void *self , const GLfixed* m)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_m =  (16 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_m + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLoadMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_m; ptr += 4;
+	memcpy(ptr, m, __size_m);ptr += __size_m;
+}
+
+void glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMaterialxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMaterialxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glMultMatrixxOES_enc(void *self , const GLfixed* m)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_m =  (16 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_m + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMultMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_m; ptr += 4;
+	memcpy(ptr, m, __size_m);ptr += __size_m;
+}
+
+void glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glMultiTexCoord4xOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &s, 4); ptr += 4;
+		memcpy(ptr, &t, 4); ptr += 4;
+		memcpy(ptr, &r, 4); ptr += 4;
+		memcpy(ptr, &q, 4); ptr += 4;
+}
+
+void glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glNormal3xOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &nx, 4); ptr += 4;
+		memcpy(ptr, &ny, 4); ptr += 4;
+		memcpy(ptr, &nz, 4); ptr += 4;
+}
+
+void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glOrthoxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointParameterxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glPointSizexOES_enc(void *self , GLfixed size)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPointSizexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &size, 4); ptr += 4;
+}
+
+void glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPolygonOffsetxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &factor, 4); ptr += 4;
+		memcpy(ptr, &units, 4); ptr += 4;
+}
+
+void glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glRotatexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &angle, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glSampleCoveragexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &value, 4); ptr += 4;
+		memcpy(ptr, &invert, 1); ptr += 1;
+}
+
+void glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glScalexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexEnvxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTranslatexOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+GLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &renderbuffer, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glBindRenderbufferOES_enc(void *self , GLenum target, GLuint renderbuffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &renderbuffer, 4); ptr += 4;
+}
+
+void glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteRenderbuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+	memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
+}
+
+void glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenRenderbuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+	stream->readback(renderbuffers, __size_renderbuffers);
+}
+
+void glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetRenderbufferParameterivOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+GLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsFramebufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &framebuffer, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glBindFramebufferOES_enc(void *self , GLenum target, GLuint framebuffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindFramebufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &framebuffer, 4); ptr += 4;
+}
+
+void glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteFramebuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+	memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
+}
+
+void glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenFramebuffersOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+	stream->readback(framebuffers, __size_framebuffers);
+}
+
+GLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCheckFramebufferStatusOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+
+	GLenum retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glFramebufferRenderbufferOES_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFramebufferRenderbufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
+		memcpy(ptr, &renderbuffer, 4); ptr += 4;
+}
+
+void glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFramebufferTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &textarget, 4); ptr += 4;
+		memcpy(ptr, &texture, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+}
+
+void glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFramebufferAttachmentParameterivOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGenerateMipmapOES_enc(void *self , GLenum target)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenerateMipmapOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+}
+
+GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glCurrentPaletteMatrixOES_enc(void *self , GLuint matrixpaletteindex)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCurrentPaletteMatrixOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &matrixpaletteindex, 4); ptr += 4;
+}
+
+void glLoadPaletteFromModelViewMatrixOES_enc(void *self )
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLoadPaletteFromModelViewMatrixOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+GLbitfield glQueryMatrixxOES_enc(void *self , GLfixed* mantissa, GLint* exponent)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_mantissa =  (16 * sizeof(GLfixed));
+	const unsigned int __size_exponent =  (16 * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_mantissa + __size_exponent + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glQueryMatrixxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_mantissa; ptr += 4;
+	*(unsigned int *)(ptr) = __size_exponent; ptr += 4;
+	stream->readback(mantissa, __size_mantissa);
+	stream->readback(exponent, __size_exponent);
+
+	GLbitfield retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glDepthRangefOES_enc(void *self , GLclampf zNear, GLclampf zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthRangefOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFrustumfOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glOrthofOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &left, 4); ptr += 4;
+		memcpy(ptr, &right, 4); ptr += 4;
+		memcpy(ptr, &bottom, 4); ptr += 4;
+		memcpy(ptr, &top, 4); ptr += 4;
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_equation =  (4 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_equation + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClipPlanefOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &plane, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
+	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+}
+
+void glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_equation =  (4 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_equation + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClipPlanefIMG;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &plane, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_equation; ptr += 4;
+	memcpy(ptr, equation, __size_equation);ptr += __size_equation;
+}
+
+void glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_eqn =  (4 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_eqn + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetClipPlanefOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_eqn; ptr += 4;
+	stream->readback(eqn, __size_eqn);
+}
+
+void glClearDepthfOES_enc(void *self , GLclampf depth)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearDepthfOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &depth, 4); ptr += 4;
+}
+
+void glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexGenfOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexGenfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexGeniOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexGenivOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexGenxOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexGenxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexGenfvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexGenivOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfixed));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexGenxvOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &coord, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glBindVertexArrayOES_enc(void *self , GLuint array)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &array, 4); ptr += 4;
+}
+
+void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_arrays =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
+	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
+}
+
+void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_arrays =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
+	stream->readback(arrays, __size_arrays);
+}
+
+GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &array, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_attachments =  (numAttachments * sizeof(const GLenum));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_attachments + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &numAttachments, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
+	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
+}
+
+void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glRenderbufferStorageMultisampleIMG;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &samples, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFramebufferTexture2DMultisampleIMG;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &textarget, 4); ptr += 4;
+		memcpy(ptr, &texture, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &samples, 4); ptr += 4;
+}
+
+void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_fences =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_fences + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteFencesNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_fences; ptr += 4;
+	memcpy(ptr, fences, __size_fences);ptr += __size_fences;
+}
+
+void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_fences =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_fences + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenFencesNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_fences; ptr += 4;
+	memcpy(ptr, fences, __size_fences);ptr += __size_fences;
+}
+
+GLboolean glIsFenceNV_enc(void *self , GLuint fence)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fence, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glTestFenceNV_enc(void *self , GLuint fence)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTestFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fence, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFenceivNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fence, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glFinishFenceNV_enc(void *self , GLuint fence)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFinishFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fence, 4); ptr += 4;
+}
+
+void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glSetFenceNV;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fence, 4); ptr += 4;
+		memcpy(ptr, &condition, 4); ptr += 4;
+}
+
+void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* driverControls)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_num =  (1 * sizeof(GLint));
+	const unsigned int __size_driverControls =  (size * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_num + 4 + __size_driverControls + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetDriverControlsQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_num; ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_driverControls; ptr += 4;
+	stream->readback(num, __size_num);
+	stream->readback(driverControls, __size_driverControls);
+}
+
+void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_length =  (1 * sizeof(GLsizei));
+	const unsigned int __size_driverControlString =  (1 * sizeof(GLchar));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_length + __size_driverControlString + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetDriverControlStringQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &driverControl, 4); ptr += 4;
+		memcpy(ptr, &bufSize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_length; ptr += 4;
+	*(unsigned int *)(ptr) = __size_driverControlString; ptr += 4;
+	stream->readback(length, __size_length);
+	stream->readback(driverControlString, __size_driverControlString);
+}
+
+void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEnableDriverControlQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &driverControl, 4); ptr += 4;
+}
+
+void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDisableDriverControlQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &driverControl, 4); ptr += 4;
+}
+
+void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, GLint* numTextures)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_textures =  (maxTextures * sizeof(GLuint));
+	const unsigned int __size_numTextures =  (1 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_textures + 4 + __size_numTextures + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetTexturesQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+		memcpy(ptr, &maxTextures, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_numTextures; ptr += 4;
+	stream->readback(textures, __size_textures);
+	stream->readback(numTextures, __size_numTextures);
+}
+
+void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffers =  (maxBuffers * sizeof(GLuint));
+	const unsigned int __size_numBuffers =  (1 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_buffers + 4 + __size_numBuffers + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetBuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+		memcpy(ptr, &maxBuffers, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_numBuffers; ptr += 4;
+	stream->readback(buffers, __size_buffers);
+	stream->readback(numBuffers, __size_numBuffers);
+}
+
+void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_renderbuffers =  (maxRenderbuffers * sizeof(GLuint));
+	const unsigned int __size_numRenderbuffers =  (1 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_renderbuffers + 4 + __size_numRenderbuffers + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetRenderbuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+		memcpy(ptr, &maxRenderbuffers, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_numRenderbuffers; ptr += 4;
+	stream->readback(renderbuffers, __size_renderbuffers);
+	stream->readback(numRenderbuffers, __size_numRenderbuffers);
+}
+
+void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_framebuffers =  (maxFramebuffers * sizeof(GLuint));
+	const unsigned int __size_numFramebuffers =  (1 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_framebuffers + 4 + __size_numFramebuffers + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetFramebuffersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+		memcpy(ptr, &maxFramebuffers, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_numFramebuffers; ptr += 4;
+	stream->readback(framebuffers, __size_framebuffers);
+	stream->readback(numFramebuffers, __size_numFramebuffers);
+}
+
+void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetTexLevelParameterivQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &texture, 4); ptr += 4;
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pname, GLint param)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtTexObjectStateOverrideiQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_texels =  (depth * pixelDataSize(self, width, height, format, type, 0));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_texels + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetTexSubImageQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &zoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &depth, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_texels; ptr += 4;
+	stream->readback(texels, __size_texels);
+}
+
+void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLint* numShaders)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_shaders =  (maxShaders * sizeof(GLuint));
+	const unsigned int __size_numShaders =  (1 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_shaders + 4 + __size_numShaders + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetShadersQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_shaders; ptr += 4;
+		memcpy(ptr, &maxShaders, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_numShaders; ptr += 4;
+	stream->readback(shaders, __size_shaders);
+	stream->readback(numShaders, __size_numShaders);
+}
+
+void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLint* numPrograms)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_programs =  (maxPrograms * sizeof(GLuint));
+	const unsigned int __size_numPrograms =  (1 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_programs + 4 + __size_numPrograms + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtGetProgramsQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_programs; ptr += 4;
+		memcpy(ptr, &maxPrograms, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_numPrograms; ptr += 4;
+	stream->readback(programs, __size_programs);
+	stream->readback(numPrograms, __size_numPrograms);
+}
+
+GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glExtIsProgramBinaryQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStartTilingQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &preserveMask, 4); ptr += 4;
+}
+
+void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask)
+{
+
+	gl_encoder_context_t *ctx = (gl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEndTilingQCOM;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &preserveMask, 4); ptr += 4;
+}
+
+gl_encoder_context_t::gl_encoder_context_t(IOStream *stream)
+{
+	m_stream = stream;
+
+	set_glAlphaFunc(glAlphaFunc_enc);
+	set_glClearColor(glClearColor_enc);
+	set_glClearDepthf(glClearDepthf_enc);
+	set_glClipPlanef(glClipPlanef_enc);
+	set_glColor4f(glColor4f_enc);
+	set_glDepthRangef(glDepthRangef_enc);
+	set_glFogf(glFogf_enc);
+	set_glFogfv(glFogfv_enc);
+	set_glFrustumf(glFrustumf_enc);
+	set_glGetClipPlanef(glGetClipPlanef_enc);
+	set_glGetFloatv(glGetFloatv_enc);
+	set_glGetLightfv(glGetLightfv_enc);
+	set_glGetMaterialfv(glGetMaterialfv_enc);
+	set_glGetTexEnvfv(glGetTexEnvfv_enc);
+	set_glGetTexParameterfv(glGetTexParameterfv_enc);
+	set_glLightModelf(glLightModelf_enc);
+	set_glLightModelfv(glLightModelfv_enc);
+	set_glLightf(glLightf_enc);
+	set_glLightfv(glLightfv_enc);
+	set_glLineWidth(glLineWidth_enc);
+	set_glLoadMatrixf(glLoadMatrixf_enc);
+	set_glMaterialf(glMaterialf_enc);
+	set_glMaterialfv(glMaterialfv_enc);
+	set_glMultMatrixf(glMultMatrixf_enc);
+	set_glMultiTexCoord4f(glMultiTexCoord4f_enc);
+	set_glNormal3f(glNormal3f_enc);
+	set_glOrthof(glOrthof_enc);
+	set_glPointParameterf(glPointParameterf_enc);
+	set_glPointParameterfv(glPointParameterfv_enc);
+	set_glPointSize(glPointSize_enc);
+	set_glPolygonOffset(glPolygonOffset_enc);
+	set_glRotatef(glRotatef_enc);
+	set_glScalef(glScalef_enc);
+	set_glTexEnvf(glTexEnvf_enc);
+	set_glTexEnvfv(glTexEnvfv_enc);
+	set_glTexParameterf(glTexParameterf_enc);
+	set_glTexParameterfv(glTexParameterfv_enc);
+	set_glTranslatef(glTranslatef_enc);
+	set_glActiveTexture(glActiveTexture_enc);
+	set_glAlphaFuncx(glAlphaFuncx_enc);
+	set_glBindBuffer(glBindBuffer_enc);
+	set_glBindTexture(glBindTexture_enc);
+	set_glBlendFunc(glBlendFunc_enc);
+	set_glBufferData(glBufferData_enc);
+	set_glBufferSubData(glBufferSubData_enc);
+	set_glClear(glClear_enc);
+	set_glClearColorx(glClearColorx_enc);
+	set_glClearDepthx(glClearDepthx_enc);
+	set_glClearStencil(glClearStencil_enc);
+	set_glClientActiveTexture(glClientActiveTexture_enc);
+	set_glColor4ub(glColor4ub_enc);
+	set_glColor4x(glColor4x_enc);
+	set_glColorMask(glColorMask_enc);
+	set_glColorPointer((glColorPointer_client_proc_t)(enc_unsupported));
+	set_glCompressedTexImage2D(glCompressedTexImage2D_enc);
+	set_glCompressedTexSubImage2D(glCompressedTexSubImage2D_enc);
+	set_glCopyTexImage2D(glCopyTexImage2D_enc);
+	set_glCopyTexSubImage2D(glCopyTexSubImage2D_enc);
+	set_glCullFace(glCullFace_enc);
+	set_glDeleteBuffers(glDeleteBuffers_enc);
+	set_glDeleteTextures(glDeleteTextures_enc);
+	set_glDepthFunc(glDepthFunc_enc);
+	set_glDepthMask(glDepthMask_enc);
+	set_glDepthRangex(glDepthRangex_enc);
+	set_glDisable(glDisable_enc);
+	set_glDisableClientState(glDisableClientState_enc);
+	set_glDrawArrays(glDrawArrays_enc);
+	set_glDrawElements((glDrawElements_client_proc_t)(enc_unsupported));
+	set_glEnable(glEnable_enc);
+	set_glEnableClientState(glEnableClientState_enc);
+	set_glFinish(glFinish_enc);
+	set_glFlush(glFlush_enc);
+	set_glFogx(glFogx_enc);
+	set_glFogxv(glFogxv_enc);
+	set_glFrontFace(glFrontFace_enc);
+	set_glFrustumx(glFrustumx_enc);
+	set_glGetBooleanv(glGetBooleanv_enc);
+	set_glGetBufferParameteriv(glGetBufferParameteriv_enc);
+	set_glClipPlanex(glClipPlanex_enc);
+	set_glGenBuffers(glGenBuffers_enc);
+	set_glGenTextures(glGenTextures_enc);
+	set_glGetError(glGetError_enc);
+	set_glGetFixedv(glGetFixedv_enc);
+	set_glGetIntegerv(glGetIntegerv_enc);
+	set_glGetLightxv(glGetLightxv_enc);
+	set_glGetMaterialxv(glGetMaterialxv_enc);
+	set_glGetPointerv((glGetPointerv_client_proc_t)(enc_unsupported));
+	set_glGetString((glGetString_client_proc_t)(enc_unsupported));
+	set_glGetTexEnviv(glGetTexEnviv_enc);
+	set_glGetTexEnvxv(glGetTexEnvxv_enc);
+	set_glGetTexParameteriv(glGetTexParameteriv_enc);
+	set_glGetTexParameterxv(glGetTexParameterxv_enc);
+	set_glHint(glHint_enc);
+	set_glIsBuffer(glIsBuffer_enc);
+	set_glIsEnabled(glIsEnabled_enc);
+	set_glIsTexture(glIsTexture_enc);
+	set_glLightModelx(glLightModelx_enc);
+	set_glLightModelxv(glLightModelxv_enc);
+	set_glLightx(glLightx_enc);
+	set_glLightxv(glLightxv_enc);
+	set_glLineWidthx(glLineWidthx_enc);
+	set_glLoadIdentity(glLoadIdentity_enc);
+	set_glLoadMatrixx(glLoadMatrixx_enc);
+	set_glLogicOp(glLogicOp_enc);
+	set_glMaterialx(glMaterialx_enc);
+	set_glMaterialxv(glMaterialxv_enc);
+	set_glMatrixMode(glMatrixMode_enc);
+	set_glMultMatrixx(glMultMatrixx_enc);
+	set_glMultiTexCoord4x(glMultiTexCoord4x_enc);
+	set_glNormal3x(glNormal3x_enc);
+	set_glNormalPointer((glNormalPointer_client_proc_t)(enc_unsupported));
+	set_glOrthox(glOrthox_enc);
+	set_glPixelStorei(glPixelStorei_enc);
+	set_glPointParameterx(glPointParameterx_enc);
+	set_glPointParameterxv(glPointParameterxv_enc);
+	set_glPointSizex(glPointSizex_enc);
+	set_glPolygonOffsetx(glPolygonOffsetx_enc);
+	set_glPopMatrix(glPopMatrix_enc);
+	set_glPushMatrix(glPushMatrix_enc);
+	set_glReadPixels(glReadPixels_enc);
+	set_glRotatex(glRotatex_enc);
+	set_glSampleCoverage(glSampleCoverage_enc);
+	set_glSampleCoveragex(glSampleCoveragex_enc);
+	set_glScalex(glScalex_enc);
+	set_glScissor(glScissor_enc);
+	set_glShadeModel(glShadeModel_enc);
+	set_glStencilFunc(glStencilFunc_enc);
+	set_glStencilMask(glStencilMask_enc);
+	set_glStencilOp(glStencilOp_enc);
+	set_glTexCoordPointer((glTexCoordPointer_client_proc_t)(enc_unsupported));
+	set_glTexEnvi(glTexEnvi_enc);
+	set_glTexEnvx(glTexEnvx_enc);
+	set_glTexEnviv(glTexEnviv_enc);
+	set_glTexEnvxv(glTexEnvxv_enc);
+	set_glTexImage2D(glTexImage2D_enc);
+	set_glTexParameteri(glTexParameteri_enc);
+	set_glTexParameterx(glTexParameterx_enc);
+	set_glTexParameteriv(glTexParameteriv_enc);
+	set_glTexParameterxv(glTexParameterxv_enc);
+	set_glTexSubImage2D(glTexSubImage2D_enc);
+	set_glTranslatex(glTranslatex_enc);
+	set_glVertexPointer((glVertexPointer_client_proc_t)(enc_unsupported));
+	set_glViewport(glViewport_enc);
+	set_glPointSizePointerOES((glPointSizePointerOES_client_proc_t)(enc_unsupported));
+	set_glVertexPointerOffset(glVertexPointerOffset_enc);
+	set_glColorPointerOffset(glColorPointerOffset_enc);
+	set_glNormalPointerOffset(glNormalPointerOffset_enc);
+	set_glPointSizePointerOffset(glPointSizePointerOffset_enc);
+	set_glTexCoordPointerOffset(glTexCoordPointerOffset_enc);
+	set_glWeightPointerOffset(glWeightPointerOffset_enc);
+	set_glMatrixIndexPointerOffset(glMatrixIndexPointerOffset_enc);
+	set_glVertexPointerData(glVertexPointerData_enc);
+	set_glColorPointerData(glColorPointerData_enc);
+	set_glNormalPointerData(glNormalPointerData_enc);
+	set_glTexCoordPointerData(glTexCoordPointerData_enc);
+	set_glPointSizePointerData(glPointSizePointerData_enc);
+	set_glWeightPointerData(glWeightPointerData_enc);
+	set_glMatrixIndexPointerData(glMatrixIndexPointerData_enc);
+	set_glDrawElementsOffset(glDrawElementsOffset_enc);
+	set_glDrawElementsData(glDrawElementsData_enc);
+	set_glGetCompressedTextureFormats(glGetCompressedTextureFormats_enc);
+	set_glFinishRoundTrip(glFinishRoundTrip_enc);
+	set_glBlendEquationSeparateOES(glBlendEquationSeparateOES_enc);
+	set_glBlendFuncSeparateOES(glBlendFuncSeparateOES_enc);
+	set_glBlendEquationOES(glBlendEquationOES_enc);
+	set_glDrawTexsOES(glDrawTexsOES_enc);
+	set_glDrawTexiOES(glDrawTexiOES_enc);
+	set_glDrawTexxOES(glDrawTexxOES_enc);
+	set_glDrawTexsvOES(glDrawTexsvOES_enc);
+	set_glDrawTexivOES(glDrawTexivOES_enc);
+	set_glDrawTexxvOES(glDrawTexxvOES_enc);
+	set_glDrawTexfOES(glDrawTexfOES_enc);
+	set_glDrawTexfvOES(glDrawTexfvOES_enc);
+	set_glEGLImageTargetTexture2DOES(glEGLImageTargetTexture2DOES_enc);
+	set_glEGLImageTargetRenderbufferStorageOES(glEGLImageTargetRenderbufferStorageOES_enc);
+	set_glAlphaFuncxOES(glAlphaFuncxOES_enc);
+	set_glClearColorxOES(glClearColorxOES_enc);
+	set_glClearDepthxOES(glClearDepthxOES_enc);
+	set_glClipPlanexOES(glClipPlanexOES_enc);
+	set_glClipPlanexIMG(glClipPlanexIMG_enc);
+	set_glColor4xOES(glColor4xOES_enc);
+	set_glDepthRangexOES(glDepthRangexOES_enc);
+	set_glFogxOES(glFogxOES_enc);
+	set_glFogxvOES(glFogxvOES_enc);
+	set_glFrustumxOES(glFrustumxOES_enc);
+	set_glGetClipPlanexOES(glGetClipPlanexOES_enc);
+	set_glGetClipPlanex(glGetClipPlanex_enc);
+	set_glGetFixedvOES(glGetFixedvOES_enc);
+	set_glGetLightxvOES(glGetLightxvOES_enc);
+	set_glGetMaterialxvOES(glGetMaterialxvOES_enc);
+	set_glGetTexEnvxvOES(glGetTexEnvxvOES_enc);
+	set_glGetTexParameterxvOES(glGetTexParameterxvOES_enc);
+	set_glLightModelxOES(glLightModelxOES_enc);
+	set_glLightModelxvOES(glLightModelxvOES_enc);
+	set_glLightxOES(glLightxOES_enc);
+	set_glLightxvOES(glLightxvOES_enc);
+	set_glLineWidthxOES(glLineWidthxOES_enc);
+	set_glLoadMatrixxOES(glLoadMatrixxOES_enc);
+	set_glMaterialxOES(glMaterialxOES_enc);
+	set_glMaterialxvOES(glMaterialxvOES_enc);
+	set_glMultMatrixxOES(glMultMatrixxOES_enc);
+	set_glMultiTexCoord4xOES(glMultiTexCoord4xOES_enc);
+	set_glNormal3xOES(glNormal3xOES_enc);
+	set_glOrthoxOES(glOrthoxOES_enc);
+	set_glPointParameterxOES(glPointParameterxOES_enc);
+	set_glPointParameterxvOES(glPointParameterxvOES_enc);
+	set_glPointSizexOES(glPointSizexOES_enc);
+	set_glPolygonOffsetxOES(glPolygonOffsetxOES_enc);
+	set_glRotatexOES(glRotatexOES_enc);
+	set_glSampleCoveragexOES(glSampleCoveragexOES_enc);
+	set_glScalexOES(glScalexOES_enc);
+	set_glTexEnvxOES(glTexEnvxOES_enc);
+	set_glTexEnvxvOES(glTexEnvxvOES_enc);
+	set_glTexParameterxOES(glTexParameterxOES_enc);
+	set_glTexParameterxvOES(glTexParameterxvOES_enc);
+	set_glTranslatexOES(glTranslatexOES_enc);
+	set_glIsRenderbufferOES(glIsRenderbufferOES_enc);
+	set_glBindRenderbufferOES(glBindRenderbufferOES_enc);
+	set_glDeleteRenderbuffersOES(glDeleteRenderbuffersOES_enc);
+	set_glGenRenderbuffersOES(glGenRenderbuffersOES_enc);
+	set_glRenderbufferStorageOES(glRenderbufferStorageOES_enc);
+	set_glGetRenderbufferParameterivOES(glGetRenderbufferParameterivOES_enc);
+	set_glIsFramebufferOES(glIsFramebufferOES_enc);
+	set_glBindFramebufferOES(glBindFramebufferOES_enc);
+	set_glDeleteFramebuffersOES(glDeleteFramebuffersOES_enc);
+	set_glGenFramebuffersOES(glGenFramebuffersOES_enc);
+	set_glCheckFramebufferStatusOES(glCheckFramebufferStatusOES_enc);
+	set_glFramebufferRenderbufferOES(glFramebufferRenderbufferOES_enc);
+	set_glFramebufferTexture2DOES(glFramebufferTexture2DOES_enc);
+	set_glGetFramebufferAttachmentParameterivOES(glGetFramebufferAttachmentParameterivOES_enc);
+	set_glGenerateMipmapOES(glGenerateMipmapOES_enc);
+	set_glMapBufferOES((glMapBufferOES_client_proc_t)(enc_unsupported));
+	set_glUnmapBufferOES(glUnmapBufferOES_enc);
+	set_glGetBufferPointervOES((glGetBufferPointervOES_client_proc_t)(enc_unsupported));
+	set_glCurrentPaletteMatrixOES(glCurrentPaletteMatrixOES_enc);
+	set_glLoadPaletteFromModelViewMatrixOES(glLoadPaletteFromModelViewMatrixOES_enc);
+	set_glMatrixIndexPointerOES((glMatrixIndexPointerOES_client_proc_t)(enc_unsupported));
+	set_glWeightPointerOES((glWeightPointerOES_client_proc_t)(enc_unsupported));
+	set_glQueryMatrixxOES(glQueryMatrixxOES_enc);
+	set_glDepthRangefOES(glDepthRangefOES_enc);
+	set_glFrustumfOES(glFrustumfOES_enc);
+	set_glOrthofOES(glOrthofOES_enc);
+	set_glClipPlanefOES(glClipPlanefOES_enc);
+	set_glClipPlanefIMG(glClipPlanefIMG_enc);
+	set_glGetClipPlanefOES(glGetClipPlanefOES_enc);
+	set_glClearDepthfOES(glClearDepthfOES_enc);
+	set_glTexGenfOES(glTexGenfOES_enc);
+	set_glTexGenfvOES(glTexGenfvOES_enc);
+	set_glTexGeniOES(glTexGeniOES_enc);
+	set_glTexGenivOES(glTexGenivOES_enc);
+	set_glTexGenxOES(glTexGenxOES_enc);
+	set_glTexGenxvOES(glTexGenxvOES_enc);
+	set_glGetTexGenfvOES(glGetTexGenfvOES_enc);
+	set_glGetTexGenivOES(glGetTexGenivOES_enc);
+	set_glGetTexGenxvOES(glGetTexGenxvOES_enc);
+	set_glBindVertexArrayOES(glBindVertexArrayOES_enc);
+	set_glDeleteVertexArraysOES(glDeleteVertexArraysOES_enc);
+	set_glGenVertexArraysOES(glGenVertexArraysOES_enc);
+	set_glIsVertexArrayOES(glIsVertexArrayOES_enc);
+	set_glDiscardFramebufferEXT(glDiscardFramebufferEXT_enc);
+	set_glMultiDrawArraysEXT((glMultiDrawArraysEXT_client_proc_t)(enc_unsupported));
+	set_glMultiDrawElementsEXT((glMultiDrawElementsEXT_client_proc_t)(enc_unsupported));
+	set_glMultiDrawArraysSUN((glMultiDrawArraysSUN_client_proc_t)(enc_unsupported));
+	set_glMultiDrawElementsSUN((glMultiDrawElementsSUN_client_proc_t)(enc_unsupported));
+	set_glRenderbufferStorageMultisampleIMG(glRenderbufferStorageMultisampleIMG_enc);
+	set_glFramebufferTexture2DMultisampleIMG(glFramebufferTexture2DMultisampleIMG_enc);
+	set_glDeleteFencesNV(glDeleteFencesNV_enc);
+	set_glGenFencesNV(glGenFencesNV_enc);
+	set_glIsFenceNV(glIsFenceNV_enc);
+	set_glTestFenceNV(glTestFenceNV_enc);
+	set_glGetFenceivNV(glGetFenceivNV_enc);
+	set_glFinishFenceNV(glFinishFenceNV_enc);
+	set_glSetFenceNV(glSetFenceNV_enc);
+	set_glGetDriverControlsQCOM(glGetDriverControlsQCOM_enc);
+	set_glGetDriverControlStringQCOM(glGetDriverControlStringQCOM_enc);
+	set_glEnableDriverControlQCOM(glEnableDriverControlQCOM_enc);
+	set_glDisableDriverControlQCOM(glDisableDriverControlQCOM_enc);
+	set_glExtGetTexturesQCOM(glExtGetTexturesQCOM_enc);
+	set_glExtGetBuffersQCOM(glExtGetBuffersQCOM_enc);
+	set_glExtGetRenderbuffersQCOM(glExtGetRenderbuffersQCOM_enc);
+	set_glExtGetFramebuffersQCOM(glExtGetFramebuffersQCOM_enc);
+	set_glExtGetTexLevelParameterivQCOM(glExtGetTexLevelParameterivQCOM_enc);
+	set_glExtTexObjectStateOverrideiQCOM(glExtTexObjectStateOverrideiQCOM_enc);
+	set_glExtGetTexSubImageQCOM(glExtGetTexSubImageQCOM_enc);
+	set_glExtGetBufferPointervQCOM((glExtGetBufferPointervQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetShadersQCOM(glExtGetShadersQCOM_enc);
+	set_glExtGetProgramsQCOM(glExtGetProgramsQCOM_enc);
+	set_glExtIsProgramBinaryQCOM(glExtIsProgramBinaryQCOM_enc);
+	set_glExtGetProgramBinarySourceQCOM((glExtGetProgramBinarySourceQCOM_client_proc_t)(enc_unsupported));
+	set_glStartTilingQCOM(glStartTilingQCOM_enc);
+	set_glEndTilingQCOM(glEndTilingQCOM_enc);
+}
+
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_enc.h b/tools/emulator/opengl/system/GLESv1_enc/gl_enc.h
new file mode 100644
index 0000000..d8a23e4
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_enc.h
@@ -0,0 +1,316 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+#ifndef GUARD_gl_encoder_context_t
+#define GUARD_gl_encoder_context_t
+
+#include "IOStream.h"
+#include "gl_client_context.h"
+
+
+#include "glUtils.h"
+#include "GLEncoderUtils.h"
+
+struct gl_encoder_context_t : public gl_client_context_t {
+
+	IOStream *m_stream;
+
+	gl_encoder_context_t(IOStream *stream);
+
+
+};
+
+extern "C" {
+	void glAlphaFunc_enc(void *self , GLenum func, GLclampf ref);
+	void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void glClearDepthf_enc(void *self , GLclampf depth);
+	void glClipPlanef_enc(void *self , GLenum plane, const GLfloat* equation);
+	void glColor4f_enc(void *self , GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+	void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar);
+	void glFogf_enc(void *self , GLenum pname, GLfloat param);
+	void glFogfv_enc(void *self , GLenum pname, const GLfloat* params);
+	void glFrustumf_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glGetClipPlanef_enc(void *self , GLenum pname, GLfloat* eqn);
+	void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params);
+	void glGetLightfv_enc(void *self , GLenum light, GLenum pname, GLfloat* params);
+	void glGetMaterialfv_enc(void *self , GLenum face, GLenum pname, GLfloat* params);
+	void glGetTexEnvfv_enc(void *self , GLenum env, GLenum pname, GLfloat* params);
+	void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params);
+	void glLightModelf_enc(void *self , GLenum pname, GLfloat param);
+	void glLightModelfv_enc(void *self , GLenum pname, const GLfloat* params);
+	void glLightf_enc(void *self , GLenum light, GLenum pname, GLfloat param);
+	void glLightfv_enc(void *self , GLenum light, GLenum pname, const GLfloat* params);
+	void glLineWidth_enc(void *self , GLfloat width);
+	void glLoadMatrixf_enc(void *self , const GLfloat* m);
+	void glMaterialf_enc(void *self , GLenum face, GLenum pname, GLfloat param);
+	void glMaterialfv_enc(void *self , GLenum face, GLenum pname, const GLfloat* params);
+	void glMultMatrixf_enc(void *self , const GLfloat* m);
+	void glMultiTexCoord4f_enc(void *self , GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+	void glNormal3f_enc(void *self , GLfloat nx, GLfloat ny, GLfloat nz);
+	void glOrthof_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glPointParameterf_enc(void *self , GLenum pname, GLfloat param);
+	void glPointParameterfv_enc(void *self , GLenum pname, const GLfloat* params);
+	void glPointSize_enc(void *self , GLfloat size);
+	void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units);
+	void glRotatef_enc(void *self , GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+	void glScalef_enc(void *self , GLfloat x, GLfloat y, GLfloat z);
+	void glTexEnvf_enc(void *self , GLenum target, GLenum pname, GLfloat param);
+	void glTexEnvfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params);
+	void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param);
+	void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params);
+	void glTranslatef_enc(void *self , GLfloat x, GLfloat y, GLfloat z);
+	void glActiveTexture_enc(void *self , GLenum texture);
+	void glAlphaFuncx_enc(void *self , GLenum func, GLclampx ref);
+	void glBindBuffer_enc(void *self , GLenum target, GLuint buffer);
+	void glBindTexture_enc(void *self , GLenum target, GLuint texture);
+	void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor);
+	void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	void glClear_enc(void *self , GLbitfield mask);
+	void glClearColorx_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+	void glClearDepthx_enc(void *self , GLclampx depth);
+	void glClearStencil_enc(void *self , GLint s);
+	void glClientActiveTexture_enc(void *self , GLenum texture);
+	void glColor4ub_enc(void *self , GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+	void glColor4x_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+	void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void glColorPointer_enc(void *self , GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
+	void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
+	void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void glCullFace_enc(void *self , GLenum mode);
+	void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers);
+	void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures);
+	void glDepthFunc_enc(void *self , GLenum func);
+	void glDepthMask_enc(void *self , GLboolean flag);
+	void glDepthRangex_enc(void *self , GLclampx zNear, GLclampx zFar);
+	void glDisable_enc(void *self , GLenum cap);
+	void glDisableClientState_enc(void *self , GLenum array);
+	void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count);
+	void glDrawElements_enc(void *self , GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void glEnable_enc(void *self , GLenum cap);
+	void glEnableClientState_enc(void *self , GLenum array);
+	void glFinish_enc(void *self );
+	void glFlush_enc(void *self );
+	void glFogx_enc(void *self , GLenum pname, GLfixed param);
+	void glFogxv_enc(void *self , GLenum pname, const GLfixed* params);
+	void glFrontFace_enc(void *self , GLenum mode);
+	void glFrustumx_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params);
+	void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params);
+	void glClipPlanex_enc(void *self , GLenum pname, const GLfixed* eqn);
+	void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers);
+	void glGenTextures_enc(void *self , GLsizei n, GLuint* textures);
+	GLenum glGetError_enc(void *self );
+	void glGetFixedv_enc(void *self , GLenum pname, GLfixed* params);
+	void glGetIntegerv_enc(void *self , GLenum pname, GLint* params);
+	void glGetLightxv_enc(void *self , GLenum light, GLenum pname, GLfixed* params);
+	void glGetMaterialxv_enc(void *self , GLenum face, GLenum pname, GLfixed* params);
+	void glGetPointerv_enc(void *self , GLenum pname, GLvoid** params);
+	const GLubyte* glGetString_enc(void *self , GLenum name);
+	void glGetTexEnviv_enc(void *self , GLenum env, GLenum pname, GLint* params);
+	void glGetTexEnvxv_enc(void *self , GLenum env, GLenum pname, GLfixed* params);
+	void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params);
+	void glGetTexParameterxv_enc(void *self , GLenum target, GLenum pname, GLfixed* params);
+	void glHint_enc(void *self , GLenum target, GLenum mode);
+	GLboolean glIsBuffer_enc(void *self , GLuint buffer);
+	GLboolean glIsEnabled_enc(void *self , GLenum cap);
+	GLboolean glIsTexture_enc(void *self , GLuint texture);
+	void glLightModelx_enc(void *self , GLenum pname, GLfixed param);
+	void glLightModelxv_enc(void *self , GLenum pname, const GLfixed* params);
+	void glLightx_enc(void *self , GLenum light, GLenum pname, GLfixed param);
+	void glLightxv_enc(void *self , GLenum light, GLenum pname, const GLfixed* params);
+	void glLineWidthx_enc(void *self , GLfixed width);
+	void glLoadIdentity_enc(void *self );
+	void glLoadMatrixx_enc(void *self , const GLfixed* m);
+	void glLogicOp_enc(void *self , GLenum opcode);
+	void glMaterialx_enc(void *self , GLenum face, GLenum pname, GLfixed param);
+	void glMaterialxv_enc(void *self , GLenum face, GLenum pname, const GLfixed* params);
+	void glMatrixMode_enc(void *self , GLenum mode);
+	void glMultMatrixx_enc(void *self , const GLfixed* m);
+	void glMultiTexCoord4x_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+	void glNormal3x_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz);
+	void glNormalPointer_enc(void *self , GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glOrthox_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glPixelStorei_enc(void *self , GLenum pname, GLint param);
+	void glPointParameterx_enc(void *self , GLenum pname, GLfixed param);
+	void glPointParameterxv_enc(void *self , GLenum pname, const GLfixed* params);
+	void glPointSizex_enc(void *self , GLfixed size);
+	void glPolygonOffsetx_enc(void *self , GLfixed factor, GLfixed units);
+	void glPopMatrix_enc(void *self );
+	void glPushMatrix_enc(void *self );
+	void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void glRotatex_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+	void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert);
+	void glSampleCoveragex_enc(void *self , GLclampx value, GLboolean invert);
+	void glScalex_enc(void *self , GLfixed x, GLfixed y, GLfixed z);
+	void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height);
+	void glShadeModel_enc(void *self , GLenum mode);
+	void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask);
+	void glStencilMask_enc(void *self , GLuint mask);
+	void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass);
+	void glTexCoordPointer_enc(void *self , GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glTexEnvi_enc(void *self , GLenum target, GLenum pname, GLint param);
+	void glTexEnvx_enc(void *self , GLenum target, GLenum pname, GLfixed param);
+	void glTexEnviv_enc(void *self , GLenum target, GLenum pname, const GLint* params);
+	void glTexEnvxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params);
+	void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param);
+	void glTexParameterx_enc(void *self , GLenum target, GLenum pname, GLfixed param);
+	void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params);
+	void glTexParameterxv_enc(void *self , GLenum target, GLenum pname, const GLfixed* params);
+	void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTranslatex_enc(void *self , GLfixed x, GLfixed y, GLfixed z);
+	void glVertexPointer_enc(void *self , GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height);
+	void glPointSizePointerOES_enc(void *self , GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glVertexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glColorPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glNormalPointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset);
+	void glPointSizePointerOffset_enc(void *self , GLenum type, GLsizei stride, GLuint offset);
+	void glTexCoordPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glWeightPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glMatrixIndexPointerOffset_enc(void *self , GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glVertexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glColorPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glNormalPointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glTexCoordPointerData_enc(void *self , GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glPointSizePointerData_enc(void *self , GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glWeightPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glMatrixIndexPointerData_enc(void *self , GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset);
+	void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen);
+	void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats);
+	int glFinishRoundTrip_enc(void *self );
+	void glBlendEquationSeparateOES_enc(void *self , GLenum modeRGB, GLenum modeAlpha);
+	void glBlendFuncSeparateOES_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void glBlendEquationOES_enc(void *self , GLenum mode);
+	void glDrawTexsOES_enc(void *self , GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+	void glDrawTexiOES_enc(void *self , GLint x, GLint y, GLint z, GLint width, GLint height);
+	void glDrawTexxOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+	void glDrawTexsvOES_enc(void *self , const GLshort* coords);
+	void glDrawTexivOES_enc(void *self , const GLint* coords);
+	void glDrawTexxvOES_enc(void *self , const GLfixed* coords);
+	void glDrawTexfOES_enc(void *self , GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+	void glDrawTexfvOES_enc(void *self , const GLfloat* coords);
+	void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image);
+	void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image);
+	void glAlphaFuncxOES_enc(void *self , GLenum func, GLclampx ref);
+	void glClearColorxOES_enc(void *self , GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+	void glClearDepthxOES_enc(void *self , GLclampx depth);
+	void glClipPlanexOES_enc(void *self , GLenum plane, const GLfixed* equation);
+	void glClipPlanexIMG_enc(void *self , GLenum plane, const GLfixed* equation);
+	void glColor4xOES_enc(void *self , GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+	void glDepthRangexOES_enc(void *self , GLclampx zNear, GLclampx zFar);
+	void glFogxOES_enc(void *self , GLenum pname, GLfixed param);
+	void glFogxvOES_enc(void *self , GLenum pname, const GLfixed* params);
+	void glFrustumxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glGetClipPlanexOES_enc(void *self , GLenum pname, GLfixed* eqn);
+	void glGetClipPlanex_enc(void *self , GLenum pname, GLfixed* eqn);
+	void glGetFixedvOES_enc(void *self , GLenum pname, GLfixed* params);
+	void glGetLightxvOES_enc(void *self , GLenum light, GLenum pname, GLfixed* params);
+	void glGetMaterialxvOES_enc(void *self , GLenum face, GLenum pname, GLfixed* params);
+	void glGetTexEnvxvOES_enc(void *self , GLenum env, GLenum pname, GLfixed* params);
+	void glGetTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, GLfixed* params);
+	void glLightModelxOES_enc(void *self , GLenum pname, GLfixed param);
+	void glLightModelxvOES_enc(void *self , GLenum pname, const GLfixed* params);
+	void glLightxOES_enc(void *self , GLenum light, GLenum pname, GLfixed param);
+	void glLightxvOES_enc(void *self , GLenum light, GLenum pname, const GLfixed* params);
+	void glLineWidthxOES_enc(void *self , GLfixed width);
+	void glLoadMatrixxOES_enc(void *self , const GLfixed* m);
+	void glMaterialxOES_enc(void *self , GLenum face, GLenum pname, GLfixed param);
+	void glMaterialxvOES_enc(void *self , GLenum face, GLenum pname, const GLfixed* params);
+	void glMultMatrixxOES_enc(void *self , const GLfixed* m);
+	void glMultiTexCoord4xOES_enc(void *self , GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+	void glNormal3xOES_enc(void *self , GLfixed nx, GLfixed ny, GLfixed nz);
+	void glOrthoxOES_enc(void *self , GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glPointParameterxOES_enc(void *self , GLenum pname, GLfixed param);
+	void glPointParameterxvOES_enc(void *self , GLenum pname, const GLfixed* params);
+	void glPointSizexOES_enc(void *self , GLfixed size);
+	void glPolygonOffsetxOES_enc(void *self , GLfixed factor, GLfixed units);
+	void glRotatexOES_enc(void *self , GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+	void glSampleCoveragexOES_enc(void *self , GLclampx value, GLboolean invert);
+	void glScalexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z);
+	void glTexEnvxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param);
+	void glTexEnvxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params);
+	void glTexParameterxOES_enc(void *self , GLenum target, GLenum pname, GLfixed param);
+	void glTexParameterxvOES_enc(void *self , GLenum target, GLenum pname, const GLfixed* params);
+	void glTranslatexOES_enc(void *self , GLfixed x, GLfixed y, GLfixed z);
+	GLboolean glIsRenderbufferOES_enc(void *self , GLuint renderbuffer);
+	void glBindRenderbufferOES_enc(void *self , GLenum target, GLuint renderbuffer);
+	void glDeleteRenderbuffersOES_enc(void *self , GLsizei n, const GLuint* renderbuffers);
+	void glGenRenderbuffersOES_enc(void *self , GLsizei n, GLuint* renderbuffers);
+	void glRenderbufferStorageOES_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void glGetRenderbufferParameterivOES_enc(void *self , GLenum target, GLenum pname, GLint* params);
+	GLboolean glIsFramebufferOES_enc(void *self , GLuint framebuffer);
+	void glBindFramebufferOES_enc(void *self , GLenum target, GLuint framebuffer);
+	void glDeleteFramebuffersOES_enc(void *self , GLsizei n, const GLuint* framebuffers);
+	void glGenFramebuffersOES_enc(void *self , GLsizei n, GLuint* framebuffers);
+	GLenum glCheckFramebufferStatusOES_enc(void *self , GLenum target);
+	void glFramebufferRenderbufferOES_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void glFramebufferTexture2DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void glGetFramebufferAttachmentParameterivOES_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void glGenerateMipmapOES_enc(void *self , GLenum target);
+	void* glMapBufferOES_enc(void *self , GLenum target, GLenum access);
+	GLboolean glUnmapBufferOES_enc(void *self , GLenum target);
+	void glGetBufferPointervOES_enc(void *self , GLenum target, GLenum pname, GLvoid** params);
+	void glCurrentPaletteMatrixOES_enc(void *self , GLuint matrixpaletteindex);
+	void glLoadPaletteFromModelViewMatrixOES_enc(void *self );
+	void glMatrixIndexPointerOES_enc(void *self , GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glWeightPointerOES_enc(void *self , GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	GLbitfield glQueryMatrixxOES_enc(void *self , GLfixed* mantissa, GLint* exponent);
+	void glDepthRangefOES_enc(void *self , GLclampf zNear, GLclampf zFar);
+	void glFrustumfOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glOrthofOES_enc(void *self , GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glClipPlanefOES_enc(void *self , GLenum plane, const GLfloat* equation);
+	void glClipPlanefIMG_enc(void *self , GLenum plane, const GLfloat* equation);
+	void glGetClipPlanefOES_enc(void *self , GLenum pname, GLfloat* eqn);
+	void glClearDepthfOES_enc(void *self , GLclampf depth);
+	void glTexGenfOES_enc(void *self , GLenum coord, GLenum pname, GLfloat param);
+	void glTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, const GLfloat* params);
+	void glTexGeniOES_enc(void *self , GLenum coord, GLenum pname, GLint param);
+	void glTexGenivOES_enc(void *self , GLenum coord, GLenum pname, const GLint* params);
+	void glTexGenxOES_enc(void *self , GLenum coord, GLenum pname, GLfixed param);
+	void glTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, const GLfixed* params);
+	void glGetTexGenfvOES_enc(void *self , GLenum coord, GLenum pname, GLfloat* params);
+	void glGetTexGenivOES_enc(void *self , GLenum coord, GLenum pname, GLint* params);
+	void glGetTexGenxvOES_enc(void *self , GLenum coord, GLenum pname, GLfixed* params);
+	void glBindVertexArrayOES_enc(void *self , GLuint array);
+	void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays);
+	void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays);
+	GLboolean glIsVertexArrayOES_enc(void *self , GLuint array);
+	void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments);
+	void glMultiDrawArraysEXT_enc(void *self , GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
+	void glMultiDrawElementsEXT_enc(void *self , GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
+	void glMultiDrawArraysSUN_enc(void *self , GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
+	void glMultiDrawElementsSUN_enc(void *self , GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
+	void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+	void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences);
+	void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences);
+	GLboolean glIsFenceNV_enc(void *self , GLuint fence);
+	GLboolean glTestFenceNV_enc(void *self , GLuint fence);
+	void glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params);
+	void glFinishFenceNV_enc(void *self , GLuint fence);
+	void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition);
+	void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* driverControls);
+	void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString);
+	void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl);
+	void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl);
+	void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, GLint* numTextures);
+	void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
+	void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
+	void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
+	void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
+	void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pname, GLint param);
+	void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels);
+	void glExtGetBufferPointervQCOM_enc(void *self , GLenum target, GLvoid** params);
+	void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLint* numShaders);
+	void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLint* numPrograms);
+	GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program);
+	void glExtGetProgramBinarySourceQCOM_enc(void *self , GLuint program, GLenum shadertype, GLchar* source, GLint* length);
+	void glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+	void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask);
+};
+#endif
\ No newline at end of file
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_entry.cpp b/tools/emulator/opengl/system/GLESv1_enc/gl_entry.cpp
new file mode 100644
index 0000000..b43df09
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_entry.cpp
@@ -0,0 +1,2066 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#include <stdio.h>
+#include <stdlib.h>
+#include "gl_client_context.h"
+
+#ifndef GL_TRUE
+extern "C" {
+	void glAlphaFunc(GLenum func, GLclampf ref);
+	void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void glClearDepthf(GLclampf depth);
+	void glClipPlanef(GLenum plane, const GLfloat* equation);
+	void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+	void glDepthRangef(GLclampf zNear, GLclampf zFar);
+	void glFogf(GLenum pname, GLfloat param);
+	void glFogfv(GLenum pname, const GLfloat* params);
+	void glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glGetClipPlanef(GLenum pname, GLfloat* eqn);
+	void glGetFloatv(GLenum pname, GLfloat* params);
+	void glGetLightfv(GLenum light, GLenum pname, GLfloat* params);
+	void glGetMaterialfv(GLenum face, GLenum pname, GLfloat* params);
+	void glGetTexEnvfv(GLenum env, GLenum pname, GLfloat* params);
+	void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
+	void glLightModelf(GLenum pname, GLfloat param);
+	void glLightModelfv(GLenum pname, const GLfloat* params);
+	void glLightf(GLenum light, GLenum pname, GLfloat param);
+	void glLightfv(GLenum light, GLenum pname, const GLfloat* params);
+	void glLineWidth(GLfloat width);
+	void glLoadMatrixf(const GLfloat* m);
+	void glMaterialf(GLenum face, GLenum pname, GLfloat param);
+	void glMaterialfv(GLenum face, GLenum pname, const GLfloat* params);
+	void glMultMatrixf(const GLfloat* m);
+	void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+	void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
+	void glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glPointParameterf(GLenum pname, GLfloat param);
+	void glPointParameterfv(GLenum pname, const GLfloat* params);
+	void glPointSize(GLfloat size);
+	void glPolygonOffset(GLfloat factor, GLfloat units);
+	void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+	void glScalef(GLfloat x, GLfloat y, GLfloat z);
+	void glTexEnvf(GLenum target, GLenum pname, GLfloat param);
+	void glTexEnvfv(GLenum target, GLenum pname, const GLfloat* params);
+	void glTexParameterf(GLenum target, GLenum pname, GLfloat param);
+	void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
+	void glTranslatef(GLfloat x, GLfloat y, GLfloat z);
+	void glActiveTexture(GLenum texture);
+	void glAlphaFuncx(GLenum func, GLclampx ref);
+	void glBindBuffer(GLenum target, GLuint buffer);
+	void glBindTexture(GLenum target, GLuint texture);
+	void glBlendFunc(GLenum sfactor, GLenum dfactor);
+	void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	void glClear(GLbitfield mask);
+	void glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+	void glClearDepthx(GLclampx depth);
+	void glClearStencil(GLint s);
+	void glClientActiveTexture(GLenum texture);
+	void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+	void glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+	void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
+	void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
+	void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void glCullFace(GLenum mode);
+	void glDeleteBuffers(GLsizei n, const GLuint* buffers);
+	void glDeleteTextures(GLsizei n, const GLuint* textures);
+	void glDepthFunc(GLenum func);
+	void glDepthMask(GLboolean flag);
+	void glDepthRangex(GLclampx zNear, GLclampx zFar);
+	void glDisable(GLenum cap);
+	void glDisableClientState(GLenum array);
+	void glDrawArrays(GLenum mode, GLint first, GLsizei count);
+	void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void glEnable(GLenum cap);
+	void glEnableClientState(GLenum array);
+	void glFinish();
+	void glFlush();
+	void glFogx(GLenum pname, GLfixed param);
+	void glFogxv(GLenum pname, const GLfixed* params);
+	void glFrontFace(GLenum mode);
+	void glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glGetBooleanv(GLenum pname, GLboolean* params);
+	void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
+	void glClipPlanex(GLenum pname, const GLfixed* eqn);
+	void glGenBuffers(GLsizei n, GLuint* buffers);
+	void glGenTextures(GLsizei n, GLuint* textures);
+	GLenum glGetError();
+	void glGetFixedv(GLenum pname, GLfixed* params);
+	void glGetIntegerv(GLenum pname, GLint* params);
+	void glGetLightxv(GLenum light, GLenum pname, GLfixed* params);
+	void glGetMaterialxv(GLenum face, GLenum pname, GLfixed* params);
+	void glGetPointerv(GLenum pname, GLvoid** params);
+	const GLubyte* glGetString(GLenum name);
+	void glGetTexEnviv(GLenum env, GLenum pname, GLint* params);
+	void glGetTexEnvxv(GLenum env, GLenum pname, GLfixed* params);
+	void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params);
+	void glGetTexParameterxv(GLenum target, GLenum pname, GLfixed* params);
+	void glHint(GLenum target, GLenum mode);
+	GLboolean glIsBuffer(GLuint buffer);
+	GLboolean glIsEnabled(GLenum cap);
+	GLboolean glIsTexture(GLuint texture);
+	void glLightModelx(GLenum pname, GLfixed param);
+	void glLightModelxv(GLenum pname, const GLfixed* params);
+	void glLightx(GLenum light, GLenum pname, GLfixed param);
+	void glLightxv(GLenum light, GLenum pname, const GLfixed* params);
+	void glLineWidthx(GLfixed width);
+	void glLoadIdentity();
+	void glLoadMatrixx(const GLfixed* m);
+	void glLogicOp(GLenum opcode);
+	void glMaterialx(GLenum face, GLenum pname, GLfixed param);
+	void glMaterialxv(GLenum face, GLenum pname, const GLfixed* params);
+	void glMatrixMode(GLenum mode);
+	void glMultMatrixx(const GLfixed* m);
+	void glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+	void glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz);
+	void glNormalPointer(GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glPixelStorei(GLenum pname, GLint param);
+	void glPointParameterx(GLenum pname, GLfixed param);
+	void glPointParameterxv(GLenum pname, const GLfixed* params);
+	void glPointSizex(GLfixed size);
+	void glPolygonOffsetx(GLfixed factor, GLfixed units);
+	void glPopMatrix();
+	void glPushMatrix();
+	void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+	void glSampleCoverage(GLclampf value, GLboolean invert);
+	void glSampleCoveragex(GLclampx value, GLboolean invert);
+	void glScalex(GLfixed x, GLfixed y, GLfixed z);
+	void glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
+	void glShadeModel(GLenum mode);
+	void glStencilFunc(GLenum func, GLint ref, GLuint mask);
+	void glStencilMask(GLuint mask);
+	void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
+	void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glTexEnvi(GLenum target, GLenum pname, GLint param);
+	void glTexEnvx(GLenum target, GLenum pname, GLfixed param);
+	void glTexEnviv(GLenum target, GLenum pname, const GLint* params);
+	void glTexEnvxv(GLenum target, GLenum pname, const GLfixed* params);
+	void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTexParameteri(GLenum target, GLenum pname, GLint param);
+	void glTexParameterx(GLenum target, GLenum pname, GLfixed param);
+	void glTexParameteriv(GLenum target, GLenum pname, const GLint* params);
+	void glTexParameterxv(GLenum target, GLenum pname, const GLfixed* params);
+	void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTranslatex(GLfixed x, GLfixed y, GLfixed z);
+	void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
+	void glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glVertexPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glColorPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glNormalPointerOffset(GLenum type, GLsizei stride, GLuint offset);
+	void glPointSizePointerOffset(GLenum type, GLsizei stride, GLuint offset);
+	void glTexCoordPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glWeightPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glMatrixIndexPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset);
+	void glVertexPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glColorPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glNormalPointerData(GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glTexCoordPointerData(GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glPointSizePointerData(GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glWeightPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glMatrixIndexPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen);
+	void glDrawElementsOffset(GLenum mode, GLsizei count, GLenum type, GLuint offset);
+	void glDrawElementsData(GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen);
+	void glGetCompressedTextureFormats(int count, GLint* formats);
+	int glFinishRoundTrip();
+	void glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha);
+	void glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void glBlendEquationOES(GLenum mode);
+	void glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
+	void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height);
+	void glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
+	void glDrawTexsvOES(const GLshort* coords);
+	void glDrawTexivOES(const GLint* coords);
+	void glDrawTexxvOES(const GLfixed* coords);
+	void glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
+	void glDrawTexfvOES(const GLfloat* coords);
+	void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
+	void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
+	void glAlphaFuncxOES(GLenum func, GLclampx ref);
+	void glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
+	void glClearDepthxOES(GLclampx depth);
+	void glClipPlanexOES(GLenum plane, const GLfixed* equation);
+	void glClipPlanexIMG(GLenum plane, const GLfixed* equation);
+	void glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
+	void glDepthRangexOES(GLclampx zNear, GLclampx zFar);
+	void glFogxOES(GLenum pname, GLfixed param);
+	void glFogxvOES(GLenum pname, const GLfixed* params);
+	void glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glGetClipPlanexOES(GLenum pname, GLfixed* eqn);
+	void glGetClipPlanex(GLenum pname, GLfixed* eqn);
+	void glGetFixedvOES(GLenum pname, GLfixed* params);
+	void glGetLightxvOES(GLenum light, GLenum pname, GLfixed* params);
+	void glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed* params);
+	void glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed* params);
+	void glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed* params);
+	void glLightModelxOES(GLenum pname, GLfixed param);
+	void glLightModelxvOES(GLenum pname, const GLfixed* params);
+	void glLightxOES(GLenum light, GLenum pname, GLfixed param);
+	void glLightxvOES(GLenum light, GLenum pname, const GLfixed* params);
+	void glLineWidthxOES(GLfixed width);
+	void glLoadMatrixxOES(const GLfixed* m);
+	void glMaterialxOES(GLenum face, GLenum pname, GLfixed param);
+	void glMaterialxvOES(GLenum face, GLenum pname, const GLfixed* params);
+	void glMultMatrixxOES(const GLfixed* m);
+	void glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
+	void glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz);
+	void glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
+	void glPointParameterxOES(GLenum pname, GLfixed param);
+	void glPointParameterxvOES(GLenum pname, const GLfixed* params);
+	void glPointSizexOES(GLfixed size);
+	void glPolygonOffsetxOES(GLfixed factor, GLfixed units);
+	void glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
+	void glSampleCoveragexOES(GLclampx value, GLboolean invert);
+	void glScalexOES(GLfixed x, GLfixed y, GLfixed z);
+	void glTexEnvxOES(GLenum target, GLenum pname, GLfixed param);
+	void glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed* params);
+	void glTexParameterxOES(GLenum target, GLenum pname, GLfixed param);
+	void glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed* params);
+	void glTranslatexOES(GLfixed x, GLfixed y, GLfixed z);
+	GLboolean glIsRenderbufferOES(GLuint renderbuffer);
+	void glBindRenderbufferOES(GLenum target, GLuint renderbuffer);
+	void glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
+	void glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
+	void glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
+	GLboolean glIsFramebufferOES(GLuint framebuffer);
+	void glBindFramebufferOES(GLenum target, GLuint framebuffer);
+	void glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
+	void glGenFramebuffersOES(GLsizei n, GLuint* framebuffers);
+	GLenum glCheckFramebufferStatusOES(GLenum target);
+	void glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void glGenerateMipmapOES(GLenum target);
+	void* glMapBufferOES(GLenum target, GLenum access);
+	GLboolean glUnmapBufferOES(GLenum target);
+	void glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params);
+	void glCurrentPaletteMatrixOES(GLuint matrixpaletteindex);
+	void glLoadPaletteFromModelViewMatrixOES();
+	void glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	void glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
+	GLbitfield glQueryMatrixxOES(GLfixed* mantissa, GLint* exponent);
+	void glDepthRangefOES(GLclampf zNear, GLclampf zFar);
+	void glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
+	void glClipPlanefOES(GLenum plane, const GLfloat* equation);
+	void glClipPlanefIMG(GLenum plane, const GLfloat* equation);
+	void glGetClipPlanefOES(GLenum pname, GLfloat* eqn);
+	void glClearDepthfOES(GLclampf depth);
+	void glTexGenfOES(GLenum coord, GLenum pname, GLfloat param);
+	void glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat* params);
+	void glTexGeniOES(GLenum coord, GLenum pname, GLint param);
+	void glTexGenivOES(GLenum coord, GLenum pname, const GLint* params);
+	void glTexGenxOES(GLenum coord, GLenum pname, GLfixed param);
+	void glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed* params);
+	void glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat* params);
+	void glGetTexGenivOES(GLenum coord, GLenum pname, GLint* params);
+	void glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed* params);
+	void glBindVertexArrayOES(GLuint array);
+	void glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays);
+	void glGenVertexArraysOES(GLsizei n, GLuint* arrays);
+	GLboolean glIsVertexArrayOES(GLuint array);
+	void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum* attachments);
+	void glMultiDrawArraysEXT(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
+	void glMultiDrawElementsEXT(GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
+	void glMultiDrawArraysSUN(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
+	void glMultiDrawElementsSUN(GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
+	void glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+	void glDeleteFencesNV(GLsizei n, const GLuint* fences);
+	void glGenFencesNV(GLsizei n, GLuint* fences);
+	GLboolean glIsFenceNV(GLuint fence);
+	GLboolean glTestFenceNV(GLuint fence);
+	void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params);
+	void glFinishFenceNV(GLuint fence);
+	void glSetFenceNV(GLuint fence, GLenum condition);
+	void glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls);
+	void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString);
+	void glEnableDriverControlQCOM(GLuint driverControl);
+	void glDisableDriverControlQCOM(GLuint driverControl);
+	void glExtGetTexturesQCOM(GLuint* textures, GLint maxTextures, GLint* numTextures);
+	void glExtGetBuffersQCOM(GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
+	void glExtGetRenderbuffersQCOM(GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
+	void glExtGetFramebuffersQCOM(GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
+	void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
+	void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param);
+	void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels);
+	void glExtGetBufferPointervQCOM(GLenum target, GLvoid** params);
+	void glExtGetShadersQCOM(GLuint* shaders, GLint maxShaders, GLint* numShaders);
+	void glExtGetProgramsQCOM(GLuint* programs, GLint maxPrograms, GLint* numPrograms);
+	GLboolean glExtIsProgramBinaryQCOM(GLuint program);
+	void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar* source, GLint* length);
+	void glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+	void glEndTilingQCOM(GLbitfield preserveMask);
+};
+
+#endif
+#ifndef GET_CONTEXT
+static gl_client_context_t::CONTEXT_ACCESSOR_TYPE *getCurrentContext = NULL;
+void gl_client_context_t::setContextAccessor(CONTEXT_ACCESSOR_TYPE *f) { getCurrentContext = f; }
+#define GET_CONTEXT gl_client_context_t * ctx = getCurrentContext() 
+#endif
+
+void glAlphaFunc(GLenum func, GLclampf ref)
+{
+	GET_CONTEXT; 
+	 ctx->glAlphaFunc(ctx, func, ref);
+}
+
+void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glClearColor(ctx, red, green, blue, alpha);
+}
+
+void glClearDepthf(GLclampf depth)
+{
+	GET_CONTEXT; 
+	 ctx->glClearDepthf(ctx, depth);
+}
+
+void glClipPlanef(GLenum plane, const GLfloat* equation)
+{
+	GET_CONTEXT; 
+	 ctx->glClipPlanef(ctx, plane, equation);
+}
+
+void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glColor4f(ctx, red, green, blue, alpha);
+}
+
+void glDepthRangef(GLclampf zNear, GLclampf zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthRangef(ctx, zNear, zFar);
+}
+
+void glFogf(GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glFogf(ctx, pname, param);
+}
+
+void glFogfv(GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glFogfv(ctx, pname, params);
+}
+
+void glFrustumf(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glFrustumf(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glGetClipPlanef(GLenum pname, GLfloat* eqn)
+{
+	GET_CONTEXT; 
+	 ctx->glGetClipPlanef(ctx, pname, eqn);
+}
+
+void glGetFloatv(GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFloatv(ctx, pname, params);
+}
+
+void glGetLightfv(GLenum light, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetLightfv(ctx, light, pname, params);
+}
+
+void glGetMaterialfv(GLenum face, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetMaterialfv(ctx, face, pname, params);
+}
+
+void glGetTexEnvfv(GLenum env, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexEnvfv(ctx, env, pname, params);
+}
+
+void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexParameterfv(ctx, target, pname, params);
+}
+
+void glLightModelf(GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glLightModelf(ctx, pname, param);
+}
+
+void glLightModelfv(GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glLightModelfv(ctx, pname, params);
+}
+
+void glLightf(GLenum light, GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glLightf(ctx, light, pname, param);
+}
+
+void glLightfv(GLenum light, GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glLightfv(ctx, light, pname, params);
+}
+
+void glLineWidth(GLfloat width)
+{
+	GET_CONTEXT; 
+	 ctx->glLineWidth(ctx, width);
+}
+
+void glLoadMatrixf(const GLfloat* m)
+{
+	GET_CONTEXT; 
+	 ctx->glLoadMatrixf(ctx, m);
+}
+
+void glMaterialf(GLenum face, GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glMaterialf(ctx, face, pname, param);
+}
+
+void glMaterialfv(GLenum face, GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glMaterialfv(ctx, face, pname, params);
+}
+
+void glMultMatrixf(const GLfloat* m)
+{
+	GET_CONTEXT; 
+	 ctx->glMultMatrixf(ctx, m);
+}
+
+void glMultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiTexCoord4f(ctx, target, s, t, r, q);
+}
+
+void glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)
+{
+	GET_CONTEXT; 
+	 ctx->glNormal3f(ctx, nx, ny, nz);
+}
+
+void glOrthof(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glOrthof(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glPointParameterf(GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glPointParameterf(ctx, pname, param);
+}
+
+void glPointParameterfv(GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glPointParameterfv(ctx, pname, params);
+}
+
+void glPointSize(GLfloat size)
+{
+	GET_CONTEXT; 
+	 ctx->glPointSize(ctx, size);
+}
+
+void glPolygonOffset(GLfloat factor, GLfloat units)
+{
+	GET_CONTEXT; 
+	 ctx->glPolygonOffset(ctx, factor, units);
+}
+
+void glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+{
+	GET_CONTEXT; 
+	 ctx->glRotatef(ctx, angle, x, y, z);
+}
+
+void glScalef(GLfloat x, GLfloat y, GLfloat z)
+{
+	GET_CONTEXT; 
+	 ctx->glScalef(ctx, x, y, z);
+}
+
+void glTexEnvf(GLenum target, GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvf(ctx, target, pname, param);
+}
+
+void glTexEnvfv(GLenum target, GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvfv(ctx, target, pname, params);
+}
+
+void glTexParameterf(GLenum target, GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterf(ctx, target, pname, param);
+}
+
+void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterfv(ctx, target, pname, params);
+}
+
+void glTranslatef(GLfloat x, GLfloat y, GLfloat z)
+{
+	GET_CONTEXT; 
+	 ctx->glTranslatef(ctx, x, y, z);
+}
+
+void glActiveTexture(GLenum texture)
+{
+	GET_CONTEXT; 
+	 ctx->glActiveTexture(ctx, texture);
+}
+
+void glAlphaFuncx(GLenum func, GLclampx ref)
+{
+	GET_CONTEXT; 
+	 ctx->glAlphaFuncx(ctx, func, ref);
+}
+
+void glBindBuffer(GLenum target, GLuint buffer)
+{
+	GET_CONTEXT; 
+	 ctx->glBindBuffer(ctx, target, buffer);
+}
+
+void glBindTexture(GLenum target, GLuint texture)
+{
+	GET_CONTEXT; 
+	 ctx->glBindTexture(ctx, target, texture);
+}
+
+void glBlendFunc(GLenum sfactor, GLenum dfactor)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendFunc(ctx, sfactor, dfactor);
+}
+
+void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+{
+	GET_CONTEXT; 
+	 ctx->glBufferData(ctx, target, size, data, usage);
+}
+
+void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glBufferSubData(ctx, target, offset, size, data);
+}
+
+void glClear(GLbitfield mask)
+{
+	GET_CONTEXT; 
+	 ctx->glClear(ctx, mask);
+}
+
+void glClearColorx(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glClearColorx(ctx, red, green, blue, alpha);
+}
+
+void glClearDepthx(GLclampx depth)
+{
+	GET_CONTEXT; 
+	 ctx->glClearDepthx(ctx, depth);
+}
+
+void glClearStencil(GLint s)
+{
+	GET_CONTEXT; 
+	 ctx->glClearStencil(ctx, s);
+}
+
+void glClientActiveTexture(GLenum texture)
+{
+	GET_CONTEXT; 
+	 ctx->glClientActiveTexture(ctx, texture);
+}
+
+void glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glColor4ub(ctx, red, green, blue, alpha);
+}
+
+void glColor4x(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glColor4x(ctx, red, green, blue, alpha);
+}
+
+void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glColorMask(ctx, red, green, blue, alpha);
+}
+
+void glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glColorPointer(ctx, size, type, stride, pointer);
+}
+
+void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glCompressedTexImage2D(ctx, target, level, internalformat, width, height, border, imageSize, data);
+}
+
+void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glCompressedTexSubImage2D(ctx, target, level, xoffset, yoffset, width, height, format, imageSize, data);
+}
+
+void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+	GET_CONTEXT; 
+	 ctx->glCopyTexImage2D(ctx, target, level, internalformat, x, y, width, height, border);
+}
+
+void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glCopyTexSubImage2D(ctx, target, level, xoffset, yoffset, x, y, width, height);
+}
+
+void glCullFace(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glCullFace(ctx, mode);
+}
+
+void glDeleteBuffers(GLsizei n, const GLuint* buffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteBuffers(ctx, n, buffers);
+}
+
+void glDeleteTextures(GLsizei n, const GLuint* textures)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteTextures(ctx, n, textures);
+}
+
+void glDepthFunc(GLenum func)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthFunc(ctx, func);
+}
+
+void glDepthMask(GLboolean flag)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthMask(ctx, flag);
+}
+
+void glDepthRangex(GLclampx zNear, GLclampx zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthRangex(ctx, zNear, zFar);
+}
+
+void glDisable(GLenum cap)
+{
+	GET_CONTEXT; 
+	 ctx->glDisable(ctx, cap);
+}
+
+void glDisableClientState(GLenum array)
+{
+	GET_CONTEXT; 
+	 ctx->glDisableClientState(ctx, array);
+}
+
+void glDrawArrays(GLenum mode, GLint first, GLsizei count)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawArrays(ctx, mode, first, count);
+}
+
+void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawElements(ctx, mode, count, type, indices);
+}
+
+void glEnable(GLenum cap)
+{
+	GET_CONTEXT; 
+	 ctx->glEnable(ctx, cap);
+}
+
+void glEnableClientState(GLenum array)
+{
+	GET_CONTEXT; 
+	 ctx->glEnableClientState(ctx, array);
+}
+
+void glFinish()
+{
+	GET_CONTEXT; 
+	 ctx->glFinish(ctx);
+}
+
+void glFlush()
+{
+	GET_CONTEXT; 
+	 ctx->glFlush(ctx);
+}
+
+void glFogx(GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glFogx(ctx, pname, param);
+}
+
+void glFogxv(GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glFogxv(ctx, pname, params);
+}
+
+void glFrontFace(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glFrontFace(ctx, mode);
+}
+
+void glFrustumx(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glFrustumx(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glGetBooleanv(GLenum pname, GLboolean* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetBooleanv(ctx, pname, params);
+}
+
+void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetBufferParameteriv(ctx, target, pname, params);
+}
+
+void glClipPlanex(GLenum pname, const GLfixed* eqn)
+{
+	GET_CONTEXT; 
+	 ctx->glClipPlanex(ctx, pname, eqn);
+}
+
+void glGenBuffers(GLsizei n, GLuint* buffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenBuffers(ctx, n, buffers);
+}
+
+void glGenTextures(GLsizei n, GLuint* textures)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenTextures(ctx, n, textures);
+}
+
+GLenum glGetError()
+{
+	GET_CONTEXT; 
+	 return ctx->glGetError(ctx);
+}
+
+void glGetFixedv(GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFixedv(ctx, pname, params);
+}
+
+void glGetIntegerv(GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetIntegerv(ctx, pname, params);
+}
+
+void glGetLightxv(GLenum light, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetLightxv(ctx, light, pname, params);
+}
+
+void glGetMaterialxv(GLenum face, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetMaterialxv(ctx, face, pname, params);
+}
+
+void glGetPointerv(GLenum pname, GLvoid** params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPointerv(ctx, pname, params);
+}
+
+const GLubyte* glGetString(GLenum name)
+{
+	GET_CONTEXT; 
+	 return ctx->glGetString(ctx, name);
+}
+
+void glGetTexEnviv(GLenum env, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexEnviv(ctx, env, pname, params);
+}
+
+void glGetTexEnvxv(GLenum env, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexEnvxv(ctx, env, pname, params);
+}
+
+void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexParameteriv(ctx, target, pname, params);
+}
+
+void glGetTexParameterxv(GLenum target, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexParameterxv(ctx, target, pname, params);
+}
+
+void glHint(GLenum target, GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glHint(ctx, target, mode);
+}
+
+GLboolean glIsBuffer(GLuint buffer)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsBuffer(ctx, buffer);
+}
+
+GLboolean glIsEnabled(GLenum cap)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsEnabled(ctx, cap);
+}
+
+GLboolean glIsTexture(GLuint texture)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsTexture(ctx, texture);
+}
+
+void glLightModelx(GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glLightModelx(ctx, pname, param);
+}
+
+void glLightModelxv(GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glLightModelxv(ctx, pname, params);
+}
+
+void glLightx(GLenum light, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glLightx(ctx, light, pname, param);
+}
+
+void glLightxv(GLenum light, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glLightxv(ctx, light, pname, params);
+}
+
+void glLineWidthx(GLfixed width)
+{
+	GET_CONTEXT; 
+	 ctx->glLineWidthx(ctx, width);
+}
+
+void glLoadIdentity()
+{
+	GET_CONTEXT; 
+	 ctx->glLoadIdentity(ctx);
+}
+
+void glLoadMatrixx(const GLfixed* m)
+{
+	GET_CONTEXT; 
+	 ctx->glLoadMatrixx(ctx, m);
+}
+
+void glLogicOp(GLenum opcode)
+{
+	GET_CONTEXT; 
+	 ctx->glLogicOp(ctx, opcode);
+}
+
+void glMaterialx(GLenum face, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glMaterialx(ctx, face, pname, param);
+}
+
+void glMaterialxv(GLenum face, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glMaterialxv(ctx, face, pname, params);
+}
+
+void glMatrixMode(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glMatrixMode(ctx, mode);
+}
+
+void glMultMatrixx(const GLfixed* m)
+{
+	GET_CONTEXT; 
+	 ctx->glMultMatrixx(ctx, m);
+}
+
+void glMultiTexCoord4x(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiTexCoord4x(ctx, target, s, t, r, q);
+}
+
+void glNormal3x(GLfixed nx, GLfixed ny, GLfixed nz)
+{
+	GET_CONTEXT; 
+	 ctx->glNormal3x(ctx, nx, ny, nz);
+}
+
+void glNormalPointer(GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glNormalPointer(ctx, type, stride, pointer);
+}
+
+void glOrthox(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glOrthox(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glPixelStorei(GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glPixelStorei(ctx, pname, param);
+}
+
+void glPointParameterx(GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glPointParameterx(ctx, pname, param);
+}
+
+void glPointParameterxv(GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glPointParameterxv(ctx, pname, params);
+}
+
+void glPointSizex(GLfixed size)
+{
+	GET_CONTEXT; 
+	 ctx->glPointSizex(ctx, size);
+}
+
+void glPolygonOffsetx(GLfixed factor, GLfixed units)
+{
+	GET_CONTEXT; 
+	 ctx->glPolygonOffsetx(ctx, factor, units);
+}
+
+void glPopMatrix()
+{
+	GET_CONTEXT; 
+	 ctx->glPopMatrix(ctx);
+}
+
+void glPushMatrix()
+{
+	GET_CONTEXT; 
+	 ctx->glPushMatrix(ctx);
+}
+
+void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glReadPixels(ctx, x, y, width, height, format, type, pixels);
+}
+
+void glRotatex(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+{
+	GET_CONTEXT; 
+	 ctx->glRotatex(ctx, angle, x, y, z);
+}
+
+void glSampleCoverage(GLclampf value, GLboolean invert)
+{
+	GET_CONTEXT; 
+	 ctx->glSampleCoverage(ctx, value, invert);
+}
+
+void glSampleCoveragex(GLclampx value, GLboolean invert)
+{
+	GET_CONTEXT; 
+	 ctx->glSampleCoveragex(ctx, value, invert);
+}
+
+void glScalex(GLfixed x, GLfixed y, GLfixed z)
+{
+	GET_CONTEXT; 
+	 ctx->glScalex(ctx, x, y, z);
+}
+
+void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glScissor(ctx, x, y, width, height);
+}
+
+void glShadeModel(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glShadeModel(ctx, mode);
+}
+
+void glStencilFunc(GLenum func, GLint ref, GLuint mask)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilFunc(ctx, func, ref, mask);
+}
+
+void glStencilMask(GLuint mask)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilMask(ctx, mask);
+}
+
+void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilOp(ctx, fail, zfail, zpass);
+}
+
+void glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glTexCoordPointer(ctx, size, type, stride, pointer);
+}
+
+void glTexEnvi(GLenum target, GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvi(ctx, target, pname, param);
+}
+
+void glTexEnvx(GLenum target, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvx(ctx, target, pname, param);
+}
+
+void glTexEnviv(GLenum target, GLenum pname, const GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnviv(ctx, target, pname, params);
+}
+
+void glTexEnvxv(GLenum target, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvxv(ctx, target, pname, params);
+}
+
+void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glTexImage2D(ctx, target, level, internalformat, width, height, border, format, type, pixels);
+}
+
+void glTexParameteri(GLenum target, GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameteri(ctx, target, pname, param);
+}
+
+void glTexParameterx(GLenum target, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterx(ctx, target, pname, param);
+}
+
+void glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameteriv(ctx, target, pname, params);
+}
+
+void glTexParameterxv(GLenum target, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterxv(ctx, target, pname, params);
+}
+
+void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glTexSubImage2D(ctx, target, level, xoffset, yoffset, width, height, format, type, pixels);
+}
+
+void glTranslatex(GLfixed x, GLfixed y, GLfixed z)
+{
+	GET_CONTEXT; 
+	 ctx->glTranslatex(ctx, x, y, z);
+}
+
+void glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexPointer(ctx, size, type, stride, pointer);
+}
+
+void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glViewport(ctx, x, y, width, height);
+}
+
+void glPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glPointSizePointerOES(ctx, type, stride, pointer);
+}
+
+void glVertexPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexPointerOffset(ctx, size, type, stride, offset);
+}
+
+void glColorPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glColorPointerOffset(ctx, size, type, stride, offset);
+}
+
+void glNormalPointerOffset(GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glNormalPointerOffset(ctx, type, stride, offset);
+}
+
+void glPointSizePointerOffset(GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glPointSizePointerOffset(ctx, type, stride, offset);
+}
+
+void glTexCoordPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glTexCoordPointerOffset(ctx, size, type, stride, offset);
+}
+
+void glWeightPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glWeightPointerOffset(ctx, size, type, stride, offset);
+}
+
+void glMatrixIndexPointerOffset(GLint size, GLenum type, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glMatrixIndexPointerOffset(ctx, size, type, stride, offset);
+}
+
+void glVertexPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexPointerData(ctx, size, type, stride, data, datalen);
+}
+
+void glColorPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glColorPointerData(ctx, size, type, stride, data, datalen);
+}
+
+void glNormalPointerData(GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glNormalPointerData(ctx, type, stride, data, datalen);
+}
+
+void glTexCoordPointerData(GLint unit, GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glTexCoordPointerData(ctx, unit, size, type, stride, data, datalen);
+}
+
+void glPointSizePointerData(GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glPointSizePointerData(ctx, type, stride, data, datalen);
+}
+
+void glWeightPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glWeightPointerData(ctx, size, type, stride, data, datalen);
+}
+
+void glMatrixIndexPointerData(GLint size, GLenum type, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glMatrixIndexPointerData(ctx, size, type, stride, data, datalen);
+}
+
+void glDrawElementsOffset(GLenum mode, GLsizei count, GLenum type, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawElementsOffset(ctx, mode, count, type, offset);
+}
+
+void glDrawElementsData(GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawElementsData(ctx, mode, count, type, data, datalen);
+}
+
+void glGetCompressedTextureFormats(int count, GLint* formats)
+{
+	GET_CONTEXT; 
+	 ctx->glGetCompressedTextureFormats(ctx, count, formats);
+}
+
+int glFinishRoundTrip()
+{
+	GET_CONTEXT; 
+	 return ctx->glFinishRoundTrip(ctx);
+}
+
+void glBlendEquationSeparateOES(GLenum modeRGB, GLenum modeAlpha)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendEquationSeparateOES(ctx, modeRGB, modeAlpha);
+}
+
+void glBlendFuncSeparateOES(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendFuncSeparateOES(ctx, srcRGB, dstRGB, srcAlpha, dstAlpha);
+}
+
+void glBlendEquationOES(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendEquationOES(ctx, mode);
+}
+
+void glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexsOES(ctx, x, y, z, width, height);
+}
+
+void glDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexiOES(ctx, x, y, z, width, height);
+}
+
+void glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexxOES(ctx, x, y, z, width, height);
+}
+
+void glDrawTexsvOES(const GLshort* coords)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexsvOES(ctx, coords);
+}
+
+void glDrawTexivOES(const GLint* coords)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexivOES(ctx, coords);
+}
+
+void glDrawTexxvOES(const GLfixed* coords)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexxvOES(ctx, coords);
+}
+
+void glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexfOES(ctx, x, y, z, width, height);
+}
+
+void glDrawTexfvOES(const GLfloat* coords)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawTexfvOES(ctx, coords);
+}
+
+void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
+{
+	GET_CONTEXT; 
+	 ctx->glEGLImageTargetTexture2DOES(ctx, target, image);
+}
+
+void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
+{
+	GET_CONTEXT; 
+	 ctx->glEGLImageTargetRenderbufferStorageOES(ctx, target, image);
+}
+
+void glAlphaFuncxOES(GLenum func, GLclampx ref)
+{
+	GET_CONTEXT; 
+	 ctx->glAlphaFuncxOES(ctx, func, ref);
+}
+
+void glClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glClearColorxOES(ctx, red, green, blue, alpha);
+}
+
+void glClearDepthxOES(GLclampx depth)
+{
+	GET_CONTEXT; 
+	 ctx->glClearDepthxOES(ctx, depth);
+}
+
+void glClipPlanexOES(GLenum plane, const GLfixed* equation)
+{
+	GET_CONTEXT; 
+	 ctx->glClipPlanexOES(ctx, plane, equation);
+}
+
+void glClipPlanexIMG(GLenum plane, const GLfixed* equation)
+{
+	GET_CONTEXT; 
+	 ctx->glClipPlanexIMG(ctx, plane, equation);
+}
+
+void glColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glColor4xOES(ctx, red, green, blue, alpha);
+}
+
+void glDepthRangexOES(GLclampx zNear, GLclampx zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthRangexOES(ctx, zNear, zFar);
+}
+
+void glFogxOES(GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glFogxOES(ctx, pname, param);
+}
+
+void glFogxvOES(GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glFogxvOES(ctx, pname, params);
+}
+
+void glFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glFrustumxOES(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glGetClipPlanexOES(GLenum pname, GLfixed* eqn)
+{
+	GET_CONTEXT; 
+	 ctx->glGetClipPlanexOES(ctx, pname, eqn);
+}
+
+void glGetClipPlanex(GLenum pname, GLfixed* eqn)
+{
+	GET_CONTEXT; 
+	 ctx->glGetClipPlanex(ctx, pname, eqn);
+}
+
+void glGetFixedvOES(GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFixedvOES(ctx, pname, params);
+}
+
+void glGetLightxvOES(GLenum light, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetLightxvOES(ctx, light, pname, params);
+}
+
+void glGetMaterialxvOES(GLenum face, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetMaterialxvOES(ctx, face, pname, params);
+}
+
+void glGetTexEnvxvOES(GLenum env, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexEnvxvOES(ctx, env, pname, params);
+}
+
+void glGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexParameterxvOES(ctx, target, pname, params);
+}
+
+void glLightModelxOES(GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glLightModelxOES(ctx, pname, param);
+}
+
+void glLightModelxvOES(GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glLightModelxvOES(ctx, pname, params);
+}
+
+void glLightxOES(GLenum light, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glLightxOES(ctx, light, pname, param);
+}
+
+void glLightxvOES(GLenum light, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glLightxvOES(ctx, light, pname, params);
+}
+
+void glLineWidthxOES(GLfixed width)
+{
+	GET_CONTEXT; 
+	 ctx->glLineWidthxOES(ctx, width);
+}
+
+void glLoadMatrixxOES(const GLfixed* m)
+{
+	GET_CONTEXT; 
+	 ctx->glLoadMatrixxOES(ctx, m);
+}
+
+void glMaterialxOES(GLenum face, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glMaterialxOES(ctx, face, pname, param);
+}
+
+void glMaterialxvOES(GLenum face, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glMaterialxvOES(ctx, face, pname, params);
+}
+
+void glMultMatrixxOES(const GLfixed* m)
+{
+	GET_CONTEXT; 
+	 ctx->glMultMatrixxOES(ctx, m);
+}
+
+void glMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiTexCoord4xOES(ctx, target, s, t, r, q);
+}
+
+void glNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz)
+{
+	GET_CONTEXT; 
+	 ctx->glNormal3xOES(ctx, nx, ny, nz);
+}
+
+void glOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glOrthoxOES(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glPointParameterxOES(GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glPointParameterxOES(ctx, pname, param);
+}
+
+void glPointParameterxvOES(GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glPointParameterxvOES(ctx, pname, params);
+}
+
+void glPointSizexOES(GLfixed size)
+{
+	GET_CONTEXT; 
+	 ctx->glPointSizexOES(ctx, size);
+}
+
+void glPolygonOffsetxOES(GLfixed factor, GLfixed units)
+{
+	GET_CONTEXT; 
+	 ctx->glPolygonOffsetxOES(ctx, factor, units);
+}
+
+void glRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
+{
+	GET_CONTEXT; 
+	 ctx->glRotatexOES(ctx, angle, x, y, z);
+}
+
+void glSampleCoveragexOES(GLclampx value, GLboolean invert)
+{
+	GET_CONTEXT; 
+	 ctx->glSampleCoveragexOES(ctx, value, invert);
+}
+
+void glScalexOES(GLfixed x, GLfixed y, GLfixed z)
+{
+	GET_CONTEXT; 
+	 ctx->glScalexOES(ctx, x, y, z);
+}
+
+void glTexEnvxOES(GLenum target, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvxOES(ctx, target, pname, param);
+}
+
+void glTexEnvxvOES(GLenum target, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexEnvxvOES(ctx, target, pname, params);
+}
+
+void glTexParameterxOES(GLenum target, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterxOES(ctx, target, pname, param);
+}
+
+void glTexParameterxvOES(GLenum target, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterxvOES(ctx, target, pname, params);
+}
+
+void glTranslatexOES(GLfixed x, GLfixed y, GLfixed z)
+{
+	GET_CONTEXT; 
+	 ctx->glTranslatexOES(ctx, x, y, z);
+}
+
+GLboolean glIsRenderbufferOES(GLuint renderbuffer)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsRenderbufferOES(ctx, renderbuffer);
+}
+
+void glBindRenderbufferOES(GLenum target, GLuint renderbuffer)
+{
+	GET_CONTEXT; 
+	 ctx->glBindRenderbufferOES(ctx, target, renderbuffer);
+}
+
+void glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteRenderbuffersOES(ctx, n, renderbuffers);
+}
+
+void glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenRenderbuffersOES(ctx, n, renderbuffers);
+}
+
+void glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glRenderbufferStorageOES(ctx, target, internalformat, width, height);
+}
+
+void glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetRenderbufferParameterivOES(ctx, target, pname, params);
+}
+
+GLboolean glIsFramebufferOES(GLuint framebuffer)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsFramebufferOES(ctx, framebuffer);
+}
+
+void glBindFramebufferOES(GLenum target, GLuint framebuffer)
+{
+	GET_CONTEXT; 
+	 ctx->glBindFramebufferOES(ctx, target, framebuffer);
+}
+
+void glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteFramebuffersOES(ctx, n, framebuffers);
+}
+
+void glGenFramebuffersOES(GLsizei n, GLuint* framebuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenFramebuffersOES(ctx, n, framebuffers);
+}
+
+GLenum glCheckFramebufferStatusOES(GLenum target)
+{
+	GET_CONTEXT; 
+	 return ctx->glCheckFramebufferStatusOES(ctx, target);
+}
+
+void glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferRenderbufferOES(ctx, target, attachment, renderbuffertarget, renderbuffer);
+}
+
+void glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferTexture2DOES(ctx, target, attachment, textarget, texture, level);
+}
+
+void glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFramebufferAttachmentParameterivOES(ctx, target, attachment, pname, params);
+}
+
+void glGenerateMipmapOES(GLenum target)
+{
+	GET_CONTEXT; 
+	 ctx->glGenerateMipmapOES(ctx, target);
+}
+
+void* glMapBufferOES(GLenum target, GLenum access)
+{
+	GET_CONTEXT; 
+	 return ctx->glMapBufferOES(ctx, target, access);
+}
+
+GLboolean glUnmapBufferOES(GLenum target)
+{
+	GET_CONTEXT; 
+	 return ctx->glUnmapBufferOES(ctx, target);
+}
+
+void glGetBufferPointervOES(GLenum target, GLenum pname, GLvoid** params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetBufferPointervOES(ctx, target, pname, params);
+}
+
+void glCurrentPaletteMatrixOES(GLuint matrixpaletteindex)
+{
+	GET_CONTEXT; 
+	 ctx->glCurrentPaletteMatrixOES(ctx, matrixpaletteindex);
+}
+
+void glLoadPaletteFromModelViewMatrixOES()
+{
+	GET_CONTEXT; 
+	 ctx->glLoadPaletteFromModelViewMatrixOES(ctx);
+}
+
+void glMatrixIndexPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glMatrixIndexPointerOES(ctx, size, type, stride, pointer);
+}
+
+void glWeightPointerOES(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glWeightPointerOES(ctx, size, type, stride, pointer);
+}
+
+GLbitfield glQueryMatrixxOES(GLfixed* mantissa, GLint* exponent)
+{
+	GET_CONTEXT; 
+	 return ctx->glQueryMatrixxOES(ctx, mantissa, exponent);
+}
+
+void glDepthRangefOES(GLclampf zNear, GLclampf zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthRangefOES(ctx, zNear, zFar);
+}
+
+void glFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glFrustumfOES(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glOrthofOES(ctx, left, right, bottom, top, zNear, zFar);
+}
+
+void glClipPlanefOES(GLenum plane, const GLfloat* equation)
+{
+	GET_CONTEXT; 
+	 ctx->glClipPlanefOES(ctx, plane, equation);
+}
+
+void glClipPlanefIMG(GLenum plane, const GLfloat* equation)
+{
+	GET_CONTEXT; 
+	 ctx->glClipPlanefIMG(ctx, plane, equation);
+}
+
+void glGetClipPlanefOES(GLenum pname, GLfloat* eqn)
+{
+	GET_CONTEXT; 
+	 ctx->glGetClipPlanefOES(ctx, pname, eqn);
+}
+
+void glClearDepthfOES(GLclampf depth)
+{
+	GET_CONTEXT; 
+	 ctx->glClearDepthfOES(ctx, depth);
+}
+
+void glTexGenfOES(GLenum coord, GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexGenfOES(ctx, coord, pname, param);
+}
+
+void glTexGenfvOES(GLenum coord, GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexGenfvOES(ctx, coord, pname, params);
+}
+
+void glTexGeniOES(GLenum coord, GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexGeniOES(ctx, coord, pname, param);
+}
+
+void glTexGenivOES(GLenum coord, GLenum pname, const GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexGenivOES(ctx, coord, pname, params);
+}
+
+void glTexGenxOES(GLenum coord, GLenum pname, GLfixed param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexGenxOES(ctx, coord, pname, param);
+}
+
+void glTexGenxvOES(GLenum coord, GLenum pname, const GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexGenxvOES(ctx, coord, pname, params);
+}
+
+void glGetTexGenfvOES(GLenum coord, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexGenfvOES(ctx, coord, pname, params);
+}
+
+void glGetTexGenivOES(GLenum coord, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexGenivOES(ctx, coord, pname, params);
+}
+
+void glGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexGenxvOES(ctx, coord, pname, params);
+}
+
+void glBindVertexArrayOES(GLuint array)
+{
+	GET_CONTEXT; 
+	 ctx->glBindVertexArrayOES(ctx, array);
+}
+
+void glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteVertexArraysOES(ctx, n, arrays);
+}
+
+void glGenVertexArraysOES(GLsizei n, GLuint* arrays)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenVertexArraysOES(ctx, n, arrays);
+}
+
+GLboolean glIsVertexArrayOES(GLuint array)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsVertexArrayOES(ctx, array);
+}
+
+void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum* attachments)
+{
+	GET_CONTEXT; 
+	 ctx->glDiscardFramebufferEXT(ctx, target, numAttachments, attachments);
+}
+
+void glMultiDrawArraysEXT(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiDrawArraysEXT(ctx, mode, first, count, primcount);
+}
+
+void glMultiDrawElementsEXT(GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiDrawElementsEXT(ctx, mode, count, type, indices, primcount);
+}
+
+void glMultiDrawArraysSUN(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiDrawArraysSUN(ctx, mode, first, count, primcount);
+}
+
+void glMultiDrawElementsSUN(GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiDrawElementsSUN(ctx, mode, count, type, indices, primcount);
+}
+
+void glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glRenderbufferStorageMultisampleIMG(ctx, target, samples, internalformat, width, height);
+}
+
+void glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferTexture2DMultisampleIMG(ctx, target, attachment, textarget, texture, level, samples);
+}
+
+void glDeleteFencesNV(GLsizei n, const GLuint* fences)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteFencesNV(ctx, n, fences);
+}
+
+void glGenFencesNV(GLsizei n, GLuint* fences)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenFencesNV(ctx, n, fences);
+}
+
+GLboolean glIsFenceNV(GLuint fence)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsFenceNV(ctx, fence);
+}
+
+GLboolean glTestFenceNV(GLuint fence)
+{
+	GET_CONTEXT; 
+	 return ctx->glTestFenceNV(ctx, fence);
+}
+
+void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFenceivNV(ctx, fence, pname, params);
+}
+
+void glFinishFenceNV(GLuint fence)
+{
+	GET_CONTEXT; 
+	 ctx->glFinishFenceNV(ctx, fence);
+}
+
+void glSetFenceNV(GLuint fence, GLenum condition)
+{
+	GET_CONTEXT; 
+	 ctx->glSetFenceNV(ctx, fence, condition);
+}
+
+void glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls)
+{
+	GET_CONTEXT; 
+	 ctx->glGetDriverControlsQCOM(ctx, num, size, driverControls);
+}
+
+void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString)
+{
+	GET_CONTEXT; 
+	 ctx->glGetDriverControlStringQCOM(ctx, driverControl, bufSize, length, driverControlString);
+}
+
+void glEnableDriverControlQCOM(GLuint driverControl)
+{
+	GET_CONTEXT; 
+	 ctx->glEnableDriverControlQCOM(ctx, driverControl);
+}
+
+void glDisableDriverControlQCOM(GLuint driverControl)
+{
+	GET_CONTEXT; 
+	 ctx->glDisableDriverControlQCOM(ctx, driverControl);
+}
+
+void glExtGetTexturesQCOM(GLuint* textures, GLint maxTextures, GLint* numTextures)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetTexturesQCOM(ctx, textures, maxTextures, numTextures);
+}
+
+void glExtGetBuffersQCOM(GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetBuffersQCOM(ctx, buffers, maxBuffers, numBuffers);
+}
+
+void glExtGetRenderbuffersQCOM(GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetRenderbuffersQCOM(ctx, renderbuffers, maxRenderbuffers, numRenderbuffers);
+}
+
+void glExtGetFramebuffersQCOM(GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetFramebuffersQCOM(ctx, framebuffers, maxFramebuffers, numFramebuffers);
+}
+
+void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetTexLevelParameterivQCOM(ctx, texture, face, level, pname, params);
+}
+
+void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glExtTexObjectStateOverrideiQCOM(ctx, target, pname, param);
+}
+
+void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetTexSubImageQCOM(ctx, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
+}
+
+void glExtGetBufferPointervQCOM(GLenum target, GLvoid** params)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetBufferPointervQCOM(ctx, target, params);
+}
+
+void glExtGetShadersQCOM(GLuint* shaders, GLint maxShaders, GLint* numShaders)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetShadersQCOM(ctx, shaders, maxShaders, numShaders);
+}
+
+void glExtGetProgramsQCOM(GLuint* programs, GLint maxPrograms, GLint* numPrograms)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetProgramsQCOM(ctx, programs, maxPrograms, numPrograms);
+}
+
+GLboolean glExtIsProgramBinaryQCOM(GLuint program)
+{
+	GET_CONTEXT; 
+	 return ctx->glExtIsProgramBinaryQCOM(ctx, program);
+}
+
+void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar* source, GLint* length)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetProgramBinarySourceQCOM(ctx, program, shadertype, source, length);
+}
+
+void glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
+{
+	GET_CONTEXT; 
+	 ctx->glStartTilingQCOM(ctx, x, y, width, height, preserveMask);
+}
+
+void glEndTilingQCOM(GLbitfield preserveMask)
+{
+	GET_CONTEXT; 
+	 ctx->glEndTilingQCOM(ctx, preserveMask);
+}
+
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_ftable.h b/tools/emulator/opengl/system/GLESv1_enc/gl_ftable.h
new file mode 100644
index 0000000..7201e7f
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_ftable.h
@@ -0,0 +1,288 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __gl_client_ftable_t_h
+#define __gl_client_ftable_t_h
+
+
+static struct _gl_funcs_by_name {
+	const char *name;
+	void *proc;
+} gl_funcs_by_name[] = {
+	{"glAlphaFunc", (void*)glAlphaFunc},
+	{"glClearColor", (void*)glClearColor},
+	{"glClearDepthf", (void*)glClearDepthf},
+	{"glClipPlanef", (void*)glClipPlanef},
+	{"glColor4f", (void*)glColor4f},
+	{"glDepthRangef", (void*)glDepthRangef},
+	{"glFogf", (void*)glFogf},
+	{"glFogfv", (void*)glFogfv},
+	{"glFrustumf", (void*)glFrustumf},
+	{"glGetClipPlanef", (void*)glGetClipPlanef},
+	{"glGetFloatv", (void*)glGetFloatv},
+	{"glGetLightfv", (void*)glGetLightfv},
+	{"glGetMaterialfv", (void*)glGetMaterialfv},
+	{"glGetTexEnvfv", (void*)glGetTexEnvfv},
+	{"glGetTexParameterfv", (void*)glGetTexParameterfv},
+	{"glLightModelf", (void*)glLightModelf},
+	{"glLightModelfv", (void*)glLightModelfv},
+	{"glLightf", (void*)glLightf},
+	{"glLightfv", (void*)glLightfv},
+	{"glLineWidth", (void*)glLineWidth},
+	{"glLoadMatrixf", (void*)glLoadMatrixf},
+	{"glMaterialf", (void*)glMaterialf},
+	{"glMaterialfv", (void*)glMaterialfv},
+	{"glMultMatrixf", (void*)glMultMatrixf},
+	{"glMultiTexCoord4f", (void*)glMultiTexCoord4f},
+	{"glNormal3f", (void*)glNormal3f},
+	{"glOrthof", (void*)glOrthof},
+	{"glPointParameterf", (void*)glPointParameterf},
+	{"glPointParameterfv", (void*)glPointParameterfv},
+	{"glPointSize", (void*)glPointSize},
+	{"glPolygonOffset", (void*)glPolygonOffset},
+	{"glRotatef", (void*)glRotatef},
+	{"glScalef", (void*)glScalef},
+	{"glTexEnvf", (void*)glTexEnvf},
+	{"glTexEnvfv", (void*)glTexEnvfv},
+	{"glTexParameterf", (void*)glTexParameterf},
+	{"glTexParameterfv", (void*)glTexParameterfv},
+	{"glTranslatef", (void*)glTranslatef},
+	{"glActiveTexture", (void*)glActiveTexture},
+	{"glAlphaFuncx", (void*)glAlphaFuncx},
+	{"glBindBuffer", (void*)glBindBuffer},
+	{"glBindTexture", (void*)glBindTexture},
+	{"glBlendFunc", (void*)glBlendFunc},
+	{"glBufferData", (void*)glBufferData},
+	{"glBufferSubData", (void*)glBufferSubData},
+	{"glClear", (void*)glClear},
+	{"glClearColorx", (void*)glClearColorx},
+	{"glClearDepthx", (void*)glClearDepthx},
+	{"glClearStencil", (void*)glClearStencil},
+	{"glClientActiveTexture", (void*)glClientActiveTexture},
+	{"glColor4ub", (void*)glColor4ub},
+	{"glColor4x", (void*)glColor4x},
+	{"glColorMask", (void*)glColorMask},
+	{"glColorPointer", (void*)glColorPointer},
+	{"glCompressedTexImage2D", (void*)glCompressedTexImage2D},
+	{"glCompressedTexSubImage2D", (void*)glCompressedTexSubImage2D},
+	{"glCopyTexImage2D", (void*)glCopyTexImage2D},
+	{"glCopyTexSubImage2D", (void*)glCopyTexSubImage2D},
+	{"glCullFace", (void*)glCullFace},
+	{"glDeleteBuffers", (void*)glDeleteBuffers},
+	{"glDeleteTextures", (void*)glDeleteTextures},
+	{"glDepthFunc", (void*)glDepthFunc},
+	{"glDepthMask", (void*)glDepthMask},
+	{"glDepthRangex", (void*)glDepthRangex},
+	{"glDisable", (void*)glDisable},
+	{"glDisableClientState", (void*)glDisableClientState},
+	{"glDrawArrays", (void*)glDrawArrays},
+	{"glDrawElements", (void*)glDrawElements},
+	{"glEnable", (void*)glEnable},
+	{"glEnableClientState", (void*)glEnableClientState},
+	{"glFinish", (void*)glFinish},
+	{"glFlush", (void*)glFlush},
+	{"glFogx", (void*)glFogx},
+	{"glFogxv", (void*)glFogxv},
+	{"glFrontFace", (void*)glFrontFace},
+	{"glFrustumx", (void*)glFrustumx},
+	{"glGetBooleanv", (void*)glGetBooleanv},
+	{"glGetBufferParameteriv", (void*)glGetBufferParameteriv},
+	{"glClipPlanex", (void*)glClipPlanex},
+	{"glGenBuffers", (void*)glGenBuffers},
+	{"glGenTextures", (void*)glGenTextures},
+	{"glGetError", (void*)glGetError},
+	{"glGetFixedv", (void*)glGetFixedv},
+	{"glGetIntegerv", (void*)glGetIntegerv},
+	{"glGetLightxv", (void*)glGetLightxv},
+	{"glGetMaterialxv", (void*)glGetMaterialxv},
+	{"glGetPointerv", (void*)glGetPointerv},
+	{"glGetString", (void*)glGetString},
+	{"glGetTexEnviv", (void*)glGetTexEnviv},
+	{"glGetTexEnvxv", (void*)glGetTexEnvxv},
+	{"glGetTexParameteriv", (void*)glGetTexParameteriv},
+	{"glGetTexParameterxv", (void*)glGetTexParameterxv},
+	{"glHint", (void*)glHint},
+	{"glIsBuffer", (void*)glIsBuffer},
+	{"glIsEnabled", (void*)glIsEnabled},
+	{"glIsTexture", (void*)glIsTexture},
+	{"glLightModelx", (void*)glLightModelx},
+	{"glLightModelxv", (void*)glLightModelxv},
+	{"glLightx", (void*)glLightx},
+	{"glLightxv", (void*)glLightxv},
+	{"glLineWidthx", (void*)glLineWidthx},
+	{"glLoadIdentity", (void*)glLoadIdentity},
+	{"glLoadMatrixx", (void*)glLoadMatrixx},
+	{"glLogicOp", (void*)glLogicOp},
+	{"glMaterialx", (void*)glMaterialx},
+	{"glMaterialxv", (void*)glMaterialxv},
+	{"glMatrixMode", (void*)glMatrixMode},
+	{"glMultMatrixx", (void*)glMultMatrixx},
+	{"glMultiTexCoord4x", (void*)glMultiTexCoord4x},
+	{"glNormal3x", (void*)glNormal3x},
+	{"glNormalPointer", (void*)glNormalPointer},
+	{"glOrthox", (void*)glOrthox},
+	{"glPixelStorei", (void*)glPixelStorei},
+	{"glPointParameterx", (void*)glPointParameterx},
+	{"glPointParameterxv", (void*)glPointParameterxv},
+	{"glPointSizex", (void*)glPointSizex},
+	{"glPolygonOffsetx", (void*)glPolygonOffsetx},
+	{"glPopMatrix", (void*)glPopMatrix},
+	{"glPushMatrix", (void*)glPushMatrix},
+	{"glReadPixels", (void*)glReadPixels},
+	{"glRotatex", (void*)glRotatex},
+	{"glSampleCoverage", (void*)glSampleCoverage},
+	{"glSampleCoveragex", (void*)glSampleCoveragex},
+	{"glScalex", (void*)glScalex},
+	{"glScissor", (void*)glScissor},
+	{"glShadeModel", (void*)glShadeModel},
+	{"glStencilFunc", (void*)glStencilFunc},
+	{"glStencilMask", (void*)glStencilMask},
+	{"glStencilOp", (void*)glStencilOp},
+	{"glTexCoordPointer", (void*)glTexCoordPointer},
+	{"glTexEnvi", (void*)glTexEnvi},
+	{"glTexEnvx", (void*)glTexEnvx},
+	{"glTexEnviv", (void*)glTexEnviv},
+	{"glTexEnvxv", (void*)glTexEnvxv},
+	{"glTexImage2D", (void*)glTexImage2D},
+	{"glTexParameteri", (void*)glTexParameteri},
+	{"glTexParameterx", (void*)glTexParameterx},
+	{"glTexParameteriv", (void*)glTexParameteriv},
+	{"glTexParameterxv", (void*)glTexParameterxv},
+	{"glTexSubImage2D", (void*)glTexSubImage2D},
+	{"glTranslatex", (void*)glTranslatex},
+	{"glVertexPointer", (void*)glVertexPointer},
+	{"glViewport", (void*)glViewport},
+	{"glPointSizePointerOES", (void*)glPointSizePointerOES},
+	{"glBlendEquationSeparateOES", (void*)glBlendEquationSeparateOES},
+	{"glBlendFuncSeparateOES", (void*)glBlendFuncSeparateOES},
+	{"glBlendEquationOES", (void*)glBlendEquationOES},
+	{"glDrawTexsOES", (void*)glDrawTexsOES},
+	{"glDrawTexiOES", (void*)glDrawTexiOES},
+	{"glDrawTexxOES", (void*)glDrawTexxOES},
+	{"glDrawTexsvOES", (void*)glDrawTexsvOES},
+	{"glDrawTexivOES", (void*)glDrawTexivOES},
+	{"glDrawTexxvOES", (void*)glDrawTexxvOES},
+	{"glDrawTexfOES", (void*)glDrawTexfOES},
+	{"glDrawTexfvOES", (void*)glDrawTexfvOES},
+	{"glEGLImageTargetTexture2DOES", (void*)glEGLImageTargetTexture2DOES},
+	{"glEGLImageTargetRenderbufferStorageOES", (void*)glEGLImageTargetRenderbufferStorageOES},
+	{"glAlphaFuncxOES", (void*)glAlphaFuncxOES},
+	{"glClearColorxOES", (void*)glClearColorxOES},
+	{"glClearDepthxOES", (void*)glClearDepthxOES},
+	{"glClipPlanexOES", (void*)glClipPlanexOES},
+	{"glClipPlanexIMG", (void*)glClipPlanexIMG},
+	{"glColor4xOES", (void*)glColor4xOES},
+	{"glDepthRangexOES", (void*)glDepthRangexOES},
+	{"glFogxOES", (void*)glFogxOES},
+	{"glFogxvOES", (void*)glFogxvOES},
+	{"glFrustumxOES", (void*)glFrustumxOES},
+	{"glGetClipPlanexOES", (void*)glGetClipPlanexOES},
+	{"glGetClipPlanex", (void*)glGetClipPlanex},
+	{"glGetFixedvOES", (void*)glGetFixedvOES},
+	{"glGetLightxvOES", (void*)glGetLightxvOES},
+	{"glGetMaterialxvOES", (void*)glGetMaterialxvOES},
+	{"glGetTexEnvxvOES", (void*)glGetTexEnvxvOES},
+	{"glGetTexParameterxvOES", (void*)glGetTexParameterxvOES},
+	{"glLightModelxOES", (void*)glLightModelxOES},
+	{"glLightModelxvOES", (void*)glLightModelxvOES},
+	{"glLightxOES", (void*)glLightxOES},
+	{"glLightxvOES", (void*)glLightxvOES},
+	{"glLineWidthxOES", (void*)glLineWidthxOES},
+	{"glLoadMatrixxOES", (void*)glLoadMatrixxOES},
+	{"glMaterialxOES", (void*)glMaterialxOES},
+	{"glMaterialxvOES", (void*)glMaterialxvOES},
+	{"glMultMatrixxOES", (void*)glMultMatrixxOES},
+	{"glMultiTexCoord4xOES", (void*)glMultiTexCoord4xOES},
+	{"glNormal3xOES", (void*)glNormal3xOES},
+	{"glOrthoxOES", (void*)glOrthoxOES},
+	{"glPointParameterxOES", (void*)glPointParameterxOES},
+	{"glPointParameterxvOES", (void*)glPointParameterxvOES},
+	{"glPointSizexOES", (void*)glPointSizexOES},
+	{"glPolygonOffsetxOES", (void*)glPolygonOffsetxOES},
+	{"glRotatexOES", (void*)glRotatexOES},
+	{"glSampleCoveragexOES", (void*)glSampleCoveragexOES},
+	{"glScalexOES", (void*)glScalexOES},
+	{"glTexEnvxOES", (void*)glTexEnvxOES},
+	{"glTexEnvxvOES", (void*)glTexEnvxvOES},
+	{"glTexParameterxOES", (void*)glTexParameterxOES},
+	{"glTexParameterxvOES", (void*)glTexParameterxvOES},
+	{"glTranslatexOES", (void*)glTranslatexOES},
+	{"glIsRenderbufferOES", (void*)glIsRenderbufferOES},
+	{"glBindRenderbufferOES", (void*)glBindRenderbufferOES},
+	{"glDeleteRenderbuffersOES", (void*)glDeleteRenderbuffersOES},
+	{"glGenRenderbuffersOES", (void*)glGenRenderbuffersOES},
+	{"glRenderbufferStorageOES", (void*)glRenderbufferStorageOES},
+	{"glGetRenderbufferParameterivOES", (void*)glGetRenderbufferParameterivOES},
+	{"glIsFramebufferOES", (void*)glIsFramebufferOES},
+	{"glBindFramebufferOES", (void*)glBindFramebufferOES},
+	{"glDeleteFramebuffersOES", (void*)glDeleteFramebuffersOES},
+	{"glGenFramebuffersOES", (void*)glGenFramebuffersOES},
+	{"glCheckFramebufferStatusOES", (void*)glCheckFramebufferStatusOES},
+	{"glFramebufferRenderbufferOES", (void*)glFramebufferRenderbufferOES},
+	{"glFramebufferTexture2DOES", (void*)glFramebufferTexture2DOES},
+	{"glGetFramebufferAttachmentParameterivOES", (void*)glGetFramebufferAttachmentParameterivOES},
+	{"glGenerateMipmapOES", (void*)glGenerateMipmapOES},
+	{"glMapBufferOES", (void*)glMapBufferOES},
+	{"glUnmapBufferOES", (void*)glUnmapBufferOES},
+	{"glGetBufferPointervOES", (void*)glGetBufferPointervOES},
+	{"glCurrentPaletteMatrixOES", (void*)glCurrentPaletteMatrixOES},
+	{"glLoadPaletteFromModelViewMatrixOES", (void*)glLoadPaletteFromModelViewMatrixOES},
+	{"glMatrixIndexPointerOES", (void*)glMatrixIndexPointerOES},
+	{"glWeightPointerOES", (void*)glWeightPointerOES},
+	{"glQueryMatrixxOES", (void*)glQueryMatrixxOES},
+	{"glDepthRangefOES", (void*)glDepthRangefOES},
+	{"glFrustumfOES", (void*)glFrustumfOES},
+	{"glOrthofOES", (void*)glOrthofOES},
+	{"glClipPlanefOES", (void*)glClipPlanefOES},
+	{"glClipPlanefIMG", (void*)glClipPlanefIMG},
+	{"glGetClipPlanefOES", (void*)glGetClipPlanefOES},
+	{"glClearDepthfOES", (void*)glClearDepthfOES},
+	{"glTexGenfOES", (void*)glTexGenfOES},
+	{"glTexGenfvOES", (void*)glTexGenfvOES},
+	{"glTexGeniOES", (void*)glTexGeniOES},
+	{"glTexGenivOES", (void*)glTexGenivOES},
+	{"glTexGenxOES", (void*)glTexGenxOES},
+	{"glTexGenxvOES", (void*)glTexGenxvOES},
+	{"glGetTexGenfvOES", (void*)glGetTexGenfvOES},
+	{"glGetTexGenivOES", (void*)glGetTexGenivOES},
+	{"glGetTexGenxvOES", (void*)glGetTexGenxvOES},
+	{"glBindVertexArrayOES", (void*)glBindVertexArrayOES},
+	{"glDeleteVertexArraysOES", (void*)glDeleteVertexArraysOES},
+	{"glGenVertexArraysOES", (void*)glGenVertexArraysOES},
+	{"glIsVertexArrayOES", (void*)glIsVertexArrayOES},
+	{"glDiscardFramebufferEXT", (void*)glDiscardFramebufferEXT},
+	{"glMultiDrawArraysEXT", (void*)glMultiDrawArraysEXT},
+	{"glMultiDrawElementsEXT", (void*)glMultiDrawElementsEXT},
+	{"glMultiDrawArraysSUN", (void*)glMultiDrawArraysSUN},
+	{"glMultiDrawElementsSUN", (void*)glMultiDrawElementsSUN},
+	{"glRenderbufferStorageMultisampleIMG", (void*)glRenderbufferStorageMultisampleIMG},
+	{"glFramebufferTexture2DMultisampleIMG", (void*)glFramebufferTexture2DMultisampleIMG},
+	{"glDeleteFencesNV", (void*)glDeleteFencesNV},
+	{"glGenFencesNV", (void*)glGenFencesNV},
+	{"glIsFenceNV", (void*)glIsFenceNV},
+	{"glTestFenceNV", (void*)glTestFenceNV},
+	{"glGetFenceivNV", (void*)glGetFenceivNV},
+	{"glFinishFenceNV", (void*)glFinishFenceNV},
+	{"glSetFenceNV", (void*)glSetFenceNV},
+	{"glGetDriverControlsQCOM", (void*)glGetDriverControlsQCOM},
+	{"glGetDriverControlStringQCOM", (void*)glGetDriverControlStringQCOM},
+	{"glEnableDriverControlQCOM", (void*)glEnableDriverControlQCOM},
+	{"glDisableDriverControlQCOM", (void*)glDisableDriverControlQCOM},
+	{"glExtGetTexturesQCOM", (void*)glExtGetTexturesQCOM},
+	{"glExtGetBuffersQCOM", (void*)glExtGetBuffersQCOM},
+	{"glExtGetRenderbuffersQCOM", (void*)glExtGetRenderbuffersQCOM},
+	{"glExtGetFramebuffersQCOM", (void*)glExtGetFramebuffersQCOM},
+	{"glExtGetTexLevelParameterivQCOM", (void*)glExtGetTexLevelParameterivQCOM},
+	{"glExtTexObjectStateOverrideiQCOM", (void*)glExtTexObjectStateOverrideiQCOM},
+	{"glExtGetTexSubImageQCOM", (void*)glExtGetTexSubImageQCOM},
+	{"glExtGetBufferPointervQCOM", (void*)glExtGetBufferPointervQCOM},
+	{"glExtGetShadersQCOM", (void*)glExtGetShadersQCOM},
+	{"glExtGetProgramsQCOM", (void*)glExtGetProgramsQCOM},
+	{"glExtIsProgramBinaryQCOM", (void*)glExtIsProgramBinaryQCOM},
+	{"glExtGetProgramBinarySourceQCOM", (void*)glExtGetProgramBinarySourceQCOM},
+	{"glStartTilingQCOM", (void*)glStartTilingQCOM},
+	{"glEndTilingQCOM", (void*)glEndTilingQCOM},
+};
+static int gl_num_funcs = sizeof(gl_funcs_by_name) / sizeof(struct _gl_funcs_by_name);
+
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv1_enc/gl_opcodes.h b/tools/emulator/opengl/system/GLESv1_enc/gl_opcodes.h
new file mode 100644
index 0000000..319d0a1
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv1_enc/gl_opcodes.h
@@ -0,0 +1,300 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __GUARD_gl_opcodes_h_
+#define __GUARD_gl_opcodes_h_
+
+#define OP_glAlphaFunc 					1024
+#define OP_glClearColor 					1025
+#define OP_glClearDepthf 					1026
+#define OP_glClipPlanef 					1027
+#define OP_glColor4f 					1028
+#define OP_glDepthRangef 					1029
+#define OP_glFogf 					1030
+#define OP_glFogfv 					1031
+#define OP_glFrustumf 					1032
+#define OP_glGetClipPlanef 					1033
+#define OP_glGetFloatv 					1034
+#define OP_glGetLightfv 					1035
+#define OP_glGetMaterialfv 					1036
+#define OP_glGetTexEnvfv 					1037
+#define OP_glGetTexParameterfv 					1038
+#define OP_glLightModelf 					1039
+#define OP_glLightModelfv 					1040
+#define OP_glLightf 					1041
+#define OP_glLightfv 					1042
+#define OP_glLineWidth 					1043
+#define OP_glLoadMatrixf 					1044
+#define OP_glMaterialf 					1045
+#define OP_glMaterialfv 					1046
+#define OP_glMultMatrixf 					1047
+#define OP_glMultiTexCoord4f 					1048
+#define OP_glNormal3f 					1049
+#define OP_glOrthof 					1050
+#define OP_glPointParameterf 					1051
+#define OP_glPointParameterfv 					1052
+#define OP_glPointSize 					1053
+#define OP_glPolygonOffset 					1054
+#define OP_glRotatef 					1055
+#define OP_glScalef 					1056
+#define OP_glTexEnvf 					1057
+#define OP_glTexEnvfv 					1058
+#define OP_glTexParameterf 					1059
+#define OP_glTexParameterfv 					1060
+#define OP_glTranslatef 					1061
+#define OP_glActiveTexture 					1062
+#define OP_glAlphaFuncx 					1063
+#define OP_glBindBuffer 					1064
+#define OP_glBindTexture 					1065
+#define OP_glBlendFunc 					1066
+#define OP_glBufferData 					1067
+#define OP_glBufferSubData 					1068
+#define OP_glClear 					1069
+#define OP_glClearColorx 					1070
+#define OP_glClearDepthx 					1071
+#define OP_glClearStencil 					1072
+#define OP_glClientActiveTexture 					1073
+#define OP_glColor4ub 					1074
+#define OP_glColor4x 					1075
+#define OP_glColorMask 					1076
+#define OP_glColorPointer 					1077
+#define OP_glCompressedTexImage2D 					1078
+#define OP_glCompressedTexSubImage2D 					1079
+#define OP_glCopyTexImage2D 					1080
+#define OP_glCopyTexSubImage2D 					1081
+#define OP_glCullFace 					1082
+#define OP_glDeleteBuffers 					1083
+#define OP_glDeleteTextures 					1084
+#define OP_glDepthFunc 					1085
+#define OP_glDepthMask 					1086
+#define OP_glDepthRangex 					1087
+#define OP_glDisable 					1088
+#define OP_glDisableClientState 					1089
+#define OP_glDrawArrays 					1090
+#define OP_glDrawElements 					1091
+#define OP_glEnable 					1092
+#define OP_glEnableClientState 					1093
+#define OP_glFinish 					1094
+#define OP_glFlush 					1095
+#define OP_glFogx 					1096
+#define OP_glFogxv 					1097
+#define OP_glFrontFace 					1098
+#define OP_glFrustumx 					1099
+#define OP_glGetBooleanv 					1100
+#define OP_glGetBufferParameteriv 					1101
+#define OP_glClipPlanex 					1102
+#define OP_glGenBuffers 					1103
+#define OP_glGenTextures 					1104
+#define OP_glGetError 					1105
+#define OP_glGetFixedv 					1106
+#define OP_glGetIntegerv 					1107
+#define OP_glGetLightxv 					1108
+#define OP_glGetMaterialxv 					1109
+#define OP_glGetPointerv 					1110
+#define OP_glGetString 					1111
+#define OP_glGetTexEnviv 					1112
+#define OP_glGetTexEnvxv 					1113
+#define OP_glGetTexParameteriv 					1114
+#define OP_glGetTexParameterxv 					1115
+#define OP_glHint 					1116
+#define OP_glIsBuffer 					1117
+#define OP_glIsEnabled 					1118
+#define OP_glIsTexture 					1119
+#define OP_glLightModelx 					1120
+#define OP_glLightModelxv 					1121
+#define OP_glLightx 					1122
+#define OP_glLightxv 					1123
+#define OP_glLineWidthx 					1124
+#define OP_glLoadIdentity 					1125
+#define OP_glLoadMatrixx 					1126
+#define OP_glLogicOp 					1127
+#define OP_glMaterialx 					1128
+#define OP_glMaterialxv 					1129
+#define OP_glMatrixMode 					1130
+#define OP_glMultMatrixx 					1131
+#define OP_glMultiTexCoord4x 					1132
+#define OP_glNormal3x 					1133
+#define OP_glNormalPointer 					1134
+#define OP_glOrthox 					1135
+#define OP_glPixelStorei 					1136
+#define OP_glPointParameterx 					1137
+#define OP_glPointParameterxv 					1138
+#define OP_glPointSizex 					1139
+#define OP_glPolygonOffsetx 					1140
+#define OP_glPopMatrix 					1141
+#define OP_glPushMatrix 					1142
+#define OP_glReadPixels 					1143
+#define OP_glRotatex 					1144
+#define OP_glSampleCoverage 					1145
+#define OP_glSampleCoveragex 					1146
+#define OP_glScalex 					1147
+#define OP_glScissor 					1148
+#define OP_glShadeModel 					1149
+#define OP_glStencilFunc 					1150
+#define OP_glStencilMask 					1151
+#define OP_glStencilOp 					1152
+#define OP_glTexCoordPointer 					1153
+#define OP_glTexEnvi 					1154
+#define OP_glTexEnvx 					1155
+#define OP_glTexEnviv 					1156
+#define OP_glTexEnvxv 					1157
+#define OP_glTexImage2D 					1158
+#define OP_glTexParameteri 					1159
+#define OP_glTexParameterx 					1160
+#define OP_glTexParameteriv 					1161
+#define OP_glTexParameterxv 					1162
+#define OP_glTexSubImage2D 					1163
+#define OP_glTranslatex 					1164
+#define OP_glVertexPointer 					1165
+#define OP_glViewport 					1166
+#define OP_glPointSizePointerOES 					1167
+#define OP_glVertexPointerOffset 					1168
+#define OP_glColorPointerOffset 					1169
+#define OP_glNormalPointerOffset 					1170
+#define OP_glPointSizePointerOffset 					1171
+#define OP_glTexCoordPointerOffset 					1172
+#define OP_glWeightPointerOffset 					1173
+#define OP_glMatrixIndexPointerOffset 					1174
+#define OP_glVertexPointerData 					1175
+#define OP_glColorPointerData 					1176
+#define OP_glNormalPointerData 					1177
+#define OP_glTexCoordPointerData 					1178
+#define OP_glPointSizePointerData 					1179
+#define OP_glWeightPointerData 					1180
+#define OP_glMatrixIndexPointerData 					1181
+#define OP_glDrawElementsOffset 					1182
+#define OP_glDrawElementsData 					1183
+#define OP_glGetCompressedTextureFormats 					1184
+#define OP_glFinishRoundTrip 					1185
+#define OP_glBlendEquationSeparateOES 					1186
+#define OP_glBlendFuncSeparateOES 					1187
+#define OP_glBlendEquationOES 					1188
+#define OP_glDrawTexsOES 					1189
+#define OP_glDrawTexiOES 					1190
+#define OP_glDrawTexxOES 					1191
+#define OP_glDrawTexsvOES 					1192
+#define OP_glDrawTexivOES 					1193
+#define OP_glDrawTexxvOES 					1194
+#define OP_glDrawTexfOES 					1195
+#define OP_glDrawTexfvOES 					1196
+#define OP_glEGLImageTargetTexture2DOES 					1197
+#define OP_glEGLImageTargetRenderbufferStorageOES 					1198
+#define OP_glAlphaFuncxOES 					1199
+#define OP_glClearColorxOES 					1200
+#define OP_glClearDepthxOES 					1201
+#define OP_glClipPlanexOES 					1202
+#define OP_glClipPlanexIMG 					1203
+#define OP_glColor4xOES 					1204
+#define OP_glDepthRangexOES 					1205
+#define OP_glFogxOES 					1206
+#define OP_glFogxvOES 					1207
+#define OP_glFrustumxOES 					1208
+#define OP_glGetClipPlanexOES 					1209
+#define OP_glGetClipPlanex 					1210
+#define OP_glGetFixedvOES 					1211
+#define OP_glGetLightxvOES 					1212
+#define OP_glGetMaterialxvOES 					1213
+#define OP_glGetTexEnvxvOES 					1214
+#define OP_glGetTexParameterxvOES 					1215
+#define OP_glLightModelxOES 					1216
+#define OP_glLightModelxvOES 					1217
+#define OP_glLightxOES 					1218
+#define OP_glLightxvOES 					1219
+#define OP_glLineWidthxOES 					1220
+#define OP_glLoadMatrixxOES 					1221
+#define OP_glMaterialxOES 					1222
+#define OP_glMaterialxvOES 					1223
+#define OP_glMultMatrixxOES 					1224
+#define OP_glMultiTexCoord4xOES 					1225
+#define OP_glNormal3xOES 					1226
+#define OP_glOrthoxOES 					1227
+#define OP_glPointParameterxOES 					1228
+#define OP_glPointParameterxvOES 					1229
+#define OP_glPointSizexOES 					1230
+#define OP_glPolygonOffsetxOES 					1231
+#define OP_glRotatexOES 					1232
+#define OP_glSampleCoveragexOES 					1233
+#define OP_glScalexOES 					1234
+#define OP_glTexEnvxOES 					1235
+#define OP_glTexEnvxvOES 					1236
+#define OP_glTexParameterxOES 					1237
+#define OP_glTexParameterxvOES 					1238
+#define OP_glTranslatexOES 					1239
+#define OP_glIsRenderbufferOES 					1240
+#define OP_glBindRenderbufferOES 					1241
+#define OP_glDeleteRenderbuffersOES 					1242
+#define OP_glGenRenderbuffersOES 					1243
+#define OP_glRenderbufferStorageOES 					1244
+#define OP_glGetRenderbufferParameterivOES 					1245
+#define OP_glIsFramebufferOES 					1246
+#define OP_glBindFramebufferOES 					1247
+#define OP_glDeleteFramebuffersOES 					1248
+#define OP_glGenFramebuffersOES 					1249
+#define OP_glCheckFramebufferStatusOES 					1250
+#define OP_glFramebufferRenderbufferOES 					1251
+#define OP_glFramebufferTexture2DOES 					1252
+#define OP_glGetFramebufferAttachmentParameterivOES 					1253
+#define OP_glGenerateMipmapOES 					1254
+#define OP_glMapBufferOES 					1255
+#define OP_glUnmapBufferOES 					1256
+#define OP_glGetBufferPointervOES 					1257
+#define OP_glCurrentPaletteMatrixOES 					1258
+#define OP_glLoadPaletteFromModelViewMatrixOES 					1259
+#define OP_glMatrixIndexPointerOES 					1260
+#define OP_glWeightPointerOES 					1261
+#define OP_glQueryMatrixxOES 					1262
+#define OP_glDepthRangefOES 					1263
+#define OP_glFrustumfOES 					1264
+#define OP_glOrthofOES 					1265
+#define OP_glClipPlanefOES 					1266
+#define OP_glClipPlanefIMG 					1267
+#define OP_glGetClipPlanefOES 					1268
+#define OP_glClearDepthfOES 					1269
+#define OP_glTexGenfOES 					1270
+#define OP_glTexGenfvOES 					1271
+#define OP_glTexGeniOES 					1272
+#define OP_glTexGenivOES 					1273
+#define OP_glTexGenxOES 					1274
+#define OP_glTexGenxvOES 					1275
+#define OP_glGetTexGenfvOES 					1276
+#define OP_glGetTexGenivOES 					1277
+#define OP_glGetTexGenxvOES 					1278
+#define OP_glBindVertexArrayOES 					1279
+#define OP_glDeleteVertexArraysOES 					1280
+#define OP_glGenVertexArraysOES 					1281
+#define OP_glIsVertexArrayOES 					1282
+#define OP_glDiscardFramebufferEXT 					1283
+#define OP_glMultiDrawArraysEXT 					1284
+#define OP_glMultiDrawElementsEXT 					1285
+#define OP_glMultiDrawArraysSUN 					1286
+#define OP_glMultiDrawElementsSUN 					1287
+#define OP_glRenderbufferStorageMultisampleIMG 					1288
+#define OP_glFramebufferTexture2DMultisampleIMG 					1289
+#define OP_glDeleteFencesNV 					1290
+#define OP_glGenFencesNV 					1291
+#define OP_glIsFenceNV 					1292
+#define OP_glTestFenceNV 					1293
+#define OP_glGetFenceivNV 					1294
+#define OP_glFinishFenceNV 					1295
+#define OP_glSetFenceNV 					1296
+#define OP_glGetDriverControlsQCOM 					1297
+#define OP_glGetDriverControlStringQCOM 					1298
+#define OP_glEnableDriverControlQCOM 					1299
+#define OP_glDisableDriverControlQCOM 					1300
+#define OP_glExtGetTexturesQCOM 					1301
+#define OP_glExtGetBuffersQCOM 					1302
+#define OP_glExtGetRenderbuffersQCOM 					1303
+#define OP_glExtGetFramebuffersQCOM 					1304
+#define OP_glExtGetTexLevelParameterivQCOM 					1305
+#define OP_glExtTexObjectStateOverrideiQCOM 					1306
+#define OP_glExtGetTexSubImageQCOM 					1307
+#define OP_glExtGetBufferPointervQCOM 					1308
+#define OP_glExtGetShadersQCOM 					1309
+#define OP_glExtGetProgramsQCOM 					1310
+#define OP_glExtIsProgramBinaryQCOM 					1311
+#define OP_glExtGetProgramBinarySourceQCOM 					1312
+#define OP_glStartTilingQCOM 					1313
+#define OP_glEndTilingQCOM 					1314
+#define OP_last 					1315
+
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv2/gl2.cpp b/tools/emulator/opengl/system/GLESv2/gl2.cpp
index a014c1a..b32dd74 100644
--- a/tools/emulator/opengl/system/GLESv2/gl2.cpp
+++ b/tools/emulator/opengl/system/GLESv2/gl2.cpp
@@ -1,15 +1,30 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include "EGLClientIface.h"
 #include "HostConnection.h"
 #include "GL2Encoder.h"
 #include "GLES/gl.h"
 #include "GLES/glext.h"
 #include "ErrorLog.h"
-#include <private/ui/android_natives_priv.h>
 #include "gralloc_cb.h"
 #include "ThreadInfo.h"
 
 //XXX: fix this macro to get the context from fast tls path
-#define GET_CONTEXT gl2_client_context_t * ctx = getEGLThreadInfo()->hostConn->gl2Encoder();
+#define GET_CONTEXT GL2Encoder * ctx = getEGLThreadInfo()->hostConn->gl2Encoder();
 
 #include "gl2_entry.cpp"
 
@@ -23,19 +38,19 @@
 #define DEFINE_AND_VALIDATE_HOST_CONNECTION(ret) \
     HostConnection *hostCon = HostConnection::get(); \
     if (!hostCon) { \
-        LOGE("egl: Failed to get host connection\n"); \
+        ALOGE("egl: Failed to get host connection\n"); \
         return ret; \
     } \
     renderControl_encoder_context_t *rcEnc = hostCon->rcEncoder(); \
     if (!rcEnc) { \
-        LOGE("egl: Failed to get renderControl encoder context\n"); \
+        ALOGE("egl: Failed to get renderControl encoder context\n"); \
         return ret; \
     }
 
 //GL extensions
 void glEGLImageTargetTexture2DOES(void * self, GLenum target, GLeglImageOES image)
 {
-    DBG("glEGLImageTargetTexture2DOES v2 img=%p\n", image);
+    DBG("glEGLImageTargetTexture2DOES v2 target=%#x img=%p\n", target, image);
     //TODO: check error - we don't have a way to set gl error
     android_native_buffer_t* native_buffer = (android_native_buffer_t*)image;
 
@@ -47,8 +62,12 @@
         return;
     }
 
+    GET_CONTEXT;
     DEFINE_AND_VALIDATE_HOST_CONNECTION();
+
+    ctx->override2DTextureTarget(target);
     rcEnc->rcBindTexture(rcEnc, ((cb_handle_t *)(native_buffer->handle))->hostHandle);
+    ctx->restore2DTextureTarget();
 
     return;
 }
diff --git a/tools/emulator/opengl/system/GLESv2_enc/Android.mk b/tools/emulator/opengl/system/GLESv2_enc/Android.mk
index 2a4d2f4..e76a175 100644
--- a/tools/emulator/opengl/system/GLESv2_enc/Android.mk
+++ b/tools/emulator/opengl/system/GLESv2_enc/Android.mk
@@ -5,11 +5,13 @@
 
 LOCAL_SRC_FILES := \
     GL2EncoderUtils.cpp \
-    GL2Encoder.cpp
+    GL2Encoder.cpp \
+    gl2_client_context.cpp \
+    gl2_enc.cpp \
+    gl2_entry.cpp
 
 LOCAL_CFLAGS += -DLOG_TAG=\"emuglGLESv2_enc\"
 
-$(call emugl-gen-encoder,$(LOCAL_PATH),gl2)
 $(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
 $(call emugl-import,libOpenglCodecCommon)
 
diff --git a/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.cpp b/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.cpp
index 59fe1a2..d8fedf3 100644
--- a/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.cpp
+++ b/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.cpp
@@ -1,6 +1,26 @@
+/*
+* Copyright (C) 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include "GL2Encoder.h"
 #include <assert.h>
+#include <ctype.h>
 
+#ifndef MIN
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#endif
 
 static GLubyte *gVendorString= (GLubyte *) "Android";
 static GLubyte *gRendererString= (GLubyte *) "Android HW-GLES 2.0";
@@ -8,14 +28,14 @@
 static GLubyte *gExtensionsString= (GLubyte *) ""; // no extensions at this point;
 
 #define SET_ERROR_IF(condition,err) if((condition)) {                            \
-        LOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
+        ALOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
         ctx->setError(err);                                    \
         return;                                                  \
     }
 
 
 #define RET_AND_SET_ERROR_IF(condition,err,ret) if((condition)) {                \
-        LOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
+        ALOGE("%s:%s:%d GL error 0x%x\n", __FILE__, __FUNCTION__, __LINE__, err); \
         ctx->setError(err);                                    \
         return ret;                                              \
     }
@@ -57,6 +77,8 @@
     m_glCreateProgram_enc = set_glCreateProgram(s_glCreateProgram);
     m_glCreateShader_enc = set_glCreateShader(s_glCreateShader);
     m_glDeleteShader_enc = set_glDeleteShader(s_glDeleteShader);
+    m_glAttachShader_enc = set_glAttachShader(s_glAttachShader);
+    m_glDetachShader_enc = set_glDetachShader(s_glDetachShader);
     m_glGetUniformLocation_enc = set_glGetUniformLocation(s_glGetUniformLocation);
     m_glUseProgram_enc = set_glUseProgram(s_glUseProgram);
 
@@ -79,6 +101,16 @@
     m_glUniformMatrix2fv_enc = set_glUniformMatrix2fv(s_glUniformMatrix2fv);
     m_glUniformMatrix3fv_enc = set_glUniformMatrix3fv(s_glUniformMatrix3fv);
     m_glUniformMatrix4fv_enc = set_glUniformMatrix4fv(s_glUniformMatrix4fv);
+
+    m_glActiveTexture_enc = set_glActiveTexture(s_glActiveTexture);
+    m_glBindTexture_enc = set_glBindTexture(s_glBindTexture);
+    m_glDeleteTextures_enc = set_glDeleteTextures(s_glDeleteTextures);
+    m_glGetTexParameterfv_enc = set_glGetTexParameterfv(s_glGetTexParameterfv);
+    m_glGetTexParameteriv_enc = set_glGetTexParameteriv(s_glGetTexParameteriv);
+    m_glTexParameterf_enc = set_glTexParameterf(s_glTexParameterf);
+    m_glTexParameterfv_enc = set_glTexParameterfv(s_glTexParameterfv);
+    m_glTexParameteri_enc = set_glTexParameteri(s_glTexParameteri);
+    m_glTexParameteriv_enc = set_glTexParameteriv(s_glTexParameteriv);
 }
 
 GL2Encoder::~GL2Encoder()
@@ -184,21 +216,49 @@
     ctx->m_state->setState(indx, size, type, normalized, stride, ptr);
 }
 
-void GL2Encoder::s_glGetIntegerv(void *self, GLenum param, GLint *params)
+void GL2Encoder::s_glGetIntegerv(void *self, GLenum param, GLint *ptr)
 {
     GL2Encoder *ctx = (GL2Encoder *) self;
     assert(ctx->m_state != NULL);
-    if (param == GL_NUM_SHADER_BINARY_FORMATS) {
-        *params = 0;
-    } else if (param == GL_SHADER_BINARY_FORMATS) {
+    GLClientState* state = ctx->m_state;
+
+    switch (param) {
+    case GL_NUM_SHADER_BINARY_FORMATS:
+        *ptr = 0;
+        break;
+    case GL_SHADER_BINARY_FORMATS:
         // do nothing
-    } else  if (param == GL_COMPRESSED_TEXTURE_FORMATS) {
+        break;
+
+    case GL_COMPRESSED_TEXTURE_FORMATS: {
         GLint *compressedTextureFormats = ctx->getCompressedTextureFormats();
-        if (ctx->m_num_compressedTextureFormats > 0 && compressedTextureFormats != NULL) {
-            memcpy(params, compressedTextureFormats, ctx->m_num_compressedTextureFormats * sizeof(GLint));
+        if (ctx->m_num_compressedTextureFormats > 0 &&
+                compressedTextureFormats != NULL) {
+            memcpy(ptr, compressedTextureFormats,
+                    ctx->m_num_compressedTextureFormats * sizeof(GLint));
         }
-    } else if (!ctx->m_state->getClientStateParameter<GLint>(param, params)) {
-        ctx->m_glGetIntegerv_enc(self, param, params);
+        break;
+    }
+
+    case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
+    case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
+    case GL_MAX_TEXTURE_IMAGE_UNITS:
+        ctx->m_glGetIntegerv_enc(self, param, ptr);
+        *ptr = MIN(*ptr, GLClientState::MAX_TEXTURE_UNITS);
+        break;
+
+    case GL_TEXTURE_BINDING_2D:
+        *ptr = state->getBoundTexture(GL_TEXTURE_2D);
+        break;
+    case GL_TEXTURE_BINDING_EXTERNAL_OES:
+        *ptr = state->getBoundTexture(GL_TEXTURE_EXTERNAL_OES);
+        break;
+
+    default:
+        if (!ctx->m_state->getClientStateParameter<GLint>(param, ptr)) {
+            ctx->m_glGetIntegerv_enc(self, param, ptr);
+        }
+        break;
     }
 }
 
@@ -207,20 +267,46 @@
 {
     GL2Encoder *ctx = (GL2Encoder *)self;
     assert(ctx->m_state != NULL);
-    if (param == GL_NUM_SHADER_BINARY_FORMATS) {
+    GLClientState* state = ctx->m_state;
+
+    switch (param) {
+    case GL_NUM_SHADER_BINARY_FORMATS:
         *ptr = 0;
-    } else if (param == GL_SHADER_BINARY_FORMATS) {
-        // do nothing;
-    } else  if (param == GL_COMPRESSED_TEXTURE_FORMATS) {
-        GLint * compressedTextureFormats = ctx->getCompressedTextureFormats();
-        if (ctx->m_num_compressedTextureFormats > 0 && compressedTextureFormats != NULL) {
+        break;
+    case GL_SHADER_BINARY_FORMATS:
+        // do nothing
+        break;
+
+    case GL_COMPRESSED_TEXTURE_FORMATS: {
+        GLint *compressedTextureFormats = ctx->getCompressedTextureFormats();
+        if (ctx->m_num_compressedTextureFormats > 0 &&
+                compressedTextureFormats != NULL) {
             for (int i = 0; i < ctx->m_num_compressedTextureFormats; i++) {
                 ptr[i] = (GLfloat) compressedTextureFormats[i];
             }
         }
+        break;
     }
-    else if (!ctx->m_state->getClientStateParameter<GLfloat>(param,ptr)) {
+
+    case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS:
+    case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
+    case GL_MAX_TEXTURE_IMAGE_UNITS:
         ctx->m_glGetFloatv_enc(self, param, ptr);
+        *ptr = MIN(*ptr, (GLfloat)GLClientState::MAX_TEXTURE_UNITS);
+        break;
+
+    case GL_TEXTURE_BINDING_2D:
+        *ptr = (GLfloat)state->getBoundTexture(GL_TEXTURE_2D);
+        break;
+    case GL_TEXTURE_BINDING_EXTERNAL_OES:
+        *ptr = (GLfloat)state->getBoundTexture(GL_TEXTURE_EXTERNAL_OES);
+        break;
+
+    default:
+        if (!ctx->m_state->getClientStateParameter<GLfloat>(param, ptr)) {
+            ctx->m_glGetFloatv_enc(self, param, ptr);
+        }
+        break;
     }
 }
 
@@ -229,11 +315,40 @@
 {
     GL2Encoder *ctx = (GL2Encoder *)self;
     assert(ctx->m_state != NULL);
-    if (param == GL_COMPRESSED_TEXTURE_FORMATS) {
-        // ignore the command, although we should have generated a GLerror;
+    GLClientState* state = ctx->m_state;
+
+    switch (param) {
+    case GL_NUM_SHADER_BINARY_FORMATS:
+        *ptr = GL_FALSE;
+        break;
+    case GL_SHADER_BINARY_FORMATS:
+        // do nothing
+        break;
+
+    case GL_COMPRESSED_TEXTURE_FORMATS: {
+        GLint *compressedTextureFormats = ctx->getCompressedTextureFormats();
+        if (ctx->m_num_compressedTextureFormats > 0 &&
+                compressedTextureFormats != NULL) {
+            for (int i = 0; i < ctx->m_num_compressedTextureFormats; i++) {
+                ptr[i] = compressedTextureFormats[i] != 0 ? GL_TRUE : GL_FALSE;
+            }
+        }
+        break;
     }
-    else if (!ctx->m_state->getClientStateParameter<GLboolean>(param,ptr)) {
-        ctx->m_glGetBooleanv_enc(self, param, ptr);
+
+    case GL_TEXTURE_BINDING_2D:
+        *ptr = state->getBoundTexture(GL_TEXTURE_2D) != 0 ? GL_TRUE : GL_FALSE;
+        break;
+    case GL_TEXTURE_BINDING_EXTERNAL_OES:
+        *ptr = state->getBoundTexture(GL_TEXTURE_EXTERNAL_OES) != 0
+                ? GL_TRUE : GL_FALSE;
+        break;
+
+    default:
+        if (!ctx->m_state->getClientStateParameter<GLboolean>(param, ptr)) {
+            ctx->m_glGetBooleanv_enc(self, param, ptr);
+        }
+        break;
     }
 }
 
@@ -355,7 +470,7 @@
     }
 
     if (!has_immediate_arrays && !has_indirect_arrays) {
-        LOGE("glDrawElements: no data bound to the command - ignoring\n");
+        ALOGE("glDrawElements: no data bound to the command - ignoring\n");
         return;
     }
 
@@ -398,7 +513,7 @@
             }
             break;
         default:
-            LOGE("unsupported index buffer type %d\n", type);
+            ALOGE("unsupported index buffer type %d\n", type);
         }
         if (has_indirect_arrays || 1) {
             ctx->sendVertexAttributes(minIndex, maxIndex - minIndex + 1);
@@ -406,12 +521,12 @@
                                     count * glSizeof(type));
             // XXX - OPTIMIZATION (see the other else branch) should be implemented
             if(!has_indirect_arrays) {
-                //LOGD("unoptimized drawelements !!!\n");
+                //ALOGD("unoptimized drawelements !!!\n");
             }
         } else {
             // we are all direct arrays and immidate mode index array -
             // rebuild the arrays and the index array;
-            LOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n");
+            ALOGE("glDrawElements: direct index & direct buffer data - will be implemented in later versions;\n");
         }
     }
 }
@@ -431,13 +546,112 @@
     return m_compressedTextureFormats;
 }
 
+// Replace uses of samplerExternalOES with sampler2D, recording the names of
+// modified shaders in data. Also remove
+//   #extension GL_OES_EGL_image_external : require
+// statements.
+//
+// This implementation assumes the input has already been pre-processed. If not,
+// a few cases will be mishandled:
+//
+// 1. "mySampler" will be incorrectly recorded as being a samplerExternalOES in
+//    the following code:
+//      #if 1
+//      uniform sampler2D mySampler;
+//      #else
+//      uniform samplerExternalOES mySampler;
+//      #endif
+//
+// 2. Comments that look like sampler declarations will be incorrectly modified
+//    and recorded:
+//      // samplerExternalOES hahaFooledYou
+//
+// 3. However, GLSL ES does not have a concatentation operator, so things like
+//    this (valid in C) are invalid and not a problem:
+//      #define SAMPLER(TYPE, NAME) uniform sampler#TYPE NAME
+//      SAMPLER(ExternalOES, mySampler);
+//
+static bool replaceSamplerExternalWith2D(char* const str, ShaderData* const data)
+{
+    static const char STR_HASH_EXTENSION[] = "#extension";
+    static const char STR_GL_OES_EGL_IMAGE_EXTERNAL[] = "GL_OES_EGL_image_external";
+    static const char STR_SAMPLER_EXTERNAL_OES[] = "samplerExternalOES";
+    static const char STR_SAMPLER2D_SPACE[]      = "sampler2D         ";
+
+    // -- overwrite all "#extension GL_OES_EGL_image_external : xxx" statements
+    char* c = str;
+    while ((c = strstr(c, STR_HASH_EXTENSION))) {
+        char* start = c;
+        c += sizeof(STR_HASH_EXTENSION)-1;
+        while (isspace(*c) && *c != '\0') {
+            c++;
+        }
+        if (strncmp(c, STR_GL_OES_EGL_IMAGE_EXTERNAL,
+                sizeof(STR_GL_OES_EGL_IMAGE_EXTERNAL)-1) == 0)
+        {
+            // #extension statements are terminated by end of line
+            c = start;
+            while (*c != '\0' && *c != '\r' && *c != '\n') {
+                *c++ = ' ';
+            }
+        }
+    }
+
+    // -- replace "samplerExternalOES" with "sampler2D" and record name
+    c = str;
+    while ((c = strstr(c, STR_SAMPLER_EXTERNAL_OES))) {
+        // Make sure "samplerExternalOES" isn't a substring of a larger token
+        if (c == str || !isspace(*(c-1))) {
+            c++;
+            continue;
+        }
+        char* sampler_start = c;
+        c += sizeof(STR_SAMPLER_EXTERNAL_OES)-1;
+        if (!isspace(*c) && *c != '\0') {
+            continue;
+        }
+
+        // capture sampler name
+        while (isspace(*c) && *c != '\0') {
+            c++;
+        }
+        if (!isalpha(*c) && *c != '_') {
+            // not an identifier
+            return false;
+        }
+        char* name_start = c;
+        do {
+            c++;
+        } while (isalnum(*c) || *c == '_');
+        data->samplerExternalNames.push_back(
+                android::String8(name_start, c - name_start));
+
+        // memcpy instead of strcpy since we don't want the NUL terminator
+        memcpy(sampler_start, STR_SAMPLER2D_SPACE, sizeof(STR_SAMPLER2D_SPACE)-1);
+    }
+
+    return true;
+}
+
 void GL2Encoder::s_glShaderSource(void *self, GLuint shader, GLsizei count, const GLchar **string, const GLint *length)
 {
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    ShaderData* shaderData = ctx->m_shared->getShaderData(shader);
+    SET_ERROR_IF(!shaderData, GL_INVALID_VALUE);
+
     int len = glUtilsCalcShaderSourceLen((char**)string, (GLint*)length, count);
     char *str = new char[len + 1];
     glUtilsPackStrings(str, (char**)string, (GLint*)length, count);
 
-    GL2Encoder *ctx = (GL2Encoder *)self;
+    // TODO: pre-process str before calling replaceSamplerExternalWith2D().
+    // Perhaps we can borrow Mesa's pre-processor?
+
+    if (!replaceSamplerExternalWith2D(str, shaderData)) {
+        delete str;
+        ctx->setError(GL_OUT_OF_MEMORY);
+        return;
+    }
+
     ctx->glShaderString(ctx, shader, str, len + 1);
     delete str;
 }
@@ -476,7 +690,7 @@
     {
         ctx->glGetActiveUniform(self, program, i, maxLength, NULL, &size, &type, name);
         location = ctx->m_glGetUniformLocation_enc(self, program, name);
-        ctx->m_shared->setProgramIndexInfo(program, i, location, size, type);
+        ctx->m_shared->setProgramIndexInfo(program, i, location, size, type, name);
     }
     ctx->m_shared->setupLocationShiftWAR(program);
 
@@ -494,7 +708,7 @@
 void GL2Encoder::s_glGetUniformiv(void *self, GLuint program, GLint location, GLint* params)
 {
     GL2Encoder *ctx = (GL2Encoder*)self;
-    SET_ERROR_IF(!(ctx->m_shared->isProgram(program) || ctx->m_shared->isShader(program)), GL_INVALID_VALUE);
+    SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_VALUE);
     SET_ERROR_IF(!ctx->m_shared->isProgramInitialized(program), GL_INVALID_OPERATION);
     GLint hostLoc = ctx->m_shared->locationWARAppToHost(program, location);
     SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION);
@@ -503,7 +717,7 @@
 void GL2Encoder::s_glGetUniformfv(void *self, GLuint program, GLint location, GLfloat* params)
 {
     GL2Encoder *ctx = (GL2Encoder*)self;
-    SET_ERROR_IF(!(ctx->m_shared->isProgram(program) || ctx->m_shared->isShader(program)), GL_INVALID_VALUE);
+    SET_ERROR_IF(!ctx->m_shared->isProgram(program), GL_INVALID_VALUE);
     SET_ERROR_IF(!ctx->m_shared->isProgramInitialized(program), GL_INVALID_OPERATION);
     GLint hostLoc = ctx->m_shared->locationWARAppToHost(program,location);
     SET_ERROR_IF(ctx->m_shared->getProgramUniformType(program,hostLoc)==0, GL_INVALID_OPERATION);
@@ -523,8 +737,12 @@
 {
     GL2Encoder *ctx = (GL2Encoder*)self;
     GLuint shader = ctx->m_glCreateShader_enc(self, shaderType);
-    if (shader!=0)
-        ctx->m_shared->addShaderData(shader);
+    if (shader != 0) {
+        if (!ctx->m_shared->addShaderData(shader)) {
+            ctx->m_glDeleteShader_enc(self, shader);
+            return 0;
+        }
+    }
     return shader;
 }
 
@@ -532,7 +750,21 @@
 {
     GL2Encoder *ctx = (GL2Encoder*)self;
     ctx->m_glDeleteShader_enc(self,shader);
-    ctx->m_shared->deleteShaderData(shader);
+    ctx->m_shared->unrefShaderData(shader);
+}
+
+void GL2Encoder::s_glAttachShader(void *self, GLuint program, GLuint shader)
+{
+    GL2Encoder *ctx = (GL2Encoder*)self;
+    ctx->m_glAttachShader_enc(self, program, shader);
+    ctx->m_shared->attachShader(program, shader);
+}
+
+void GL2Encoder::s_glDetachShader(void *self, GLuint program, GLuint shader)
+{
+    GL2Encoder *ctx = (GL2Encoder*)self;
+    ctx->m_glDetachShader_enc(self, program, shader);
+    ctx->m_shared->detachShader(program, shader);
 }
 
 int GL2Encoder::s_glGetUniformLocation(void *self, GLuint program, const GLchar *name)
@@ -563,11 +795,58 @@
     return hostLoc;
 }
 
+bool GL2Encoder::updateHostTexture2DBinding(GLenum texUnit, GLenum newTarget)
+{
+    if (newTarget != GL_TEXTURE_2D && newTarget != GL_TEXTURE_EXTERNAL_OES)
+        return false;
+
+    m_state->setActiveTextureUnit(texUnit);
+
+    GLenum oldTarget = m_state->getPriorityEnabledTarget(GL_TEXTURE_2D);
+    if (newTarget != oldTarget) {
+        if (newTarget == GL_TEXTURE_EXTERNAL_OES) {
+            m_state->disableTextureTarget(GL_TEXTURE_2D);
+            m_state->enableTextureTarget(GL_TEXTURE_EXTERNAL_OES);
+        } else {
+            m_state->disableTextureTarget(GL_TEXTURE_EXTERNAL_OES);
+            m_state->enableTextureTarget(GL_TEXTURE_2D);
+        }
+        m_glActiveTexture_enc(this, texUnit);
+        m_glBindTexture_enc(this, GL_TEXTURE_2D,
+                m_state->getBoundTexture(newTarget));
+        return true;
+    }
+
+    return false;
+}
+
 void GL2Encoder::s_glUseProgram(void *self, GLuint program)
 {
     GL2Encoder *ctx = (GL2Encoder*)self;
+    GLClientState* state = ctx->m_state;
+    GLSharedGroupPtr shared = ctx->m_shared;
+
     ctx->m_glUseProgram_enc(self, program);
     ctx->m_state->setCurrentProgram(program);
+
+    GLenum origActiveTexture = state->getActiveTextureUnit();
+    GLenum hostActiveTexture = origActiveTexture;
+    GLint samplerIdx = -1;
+    GLint samplerVal;
+    GLenum samplerTarget;
+    while ((samplerIdx = shared->getNextSamplerUniform(program, samplerIdx, &samplerVal, &samplerTarget)) != -1) {
+        if (samplerVal < 0 || samplerVal >= GLClientState::MAX_TEXTURE_UNITS)
+            continue;
+        if (ctx->updateHostTexture2DBinding(GL_TEXTURE0 + samplerVal,
+                samplerTarget))
+        {
+            hostActiveTexture = GL_TEXTURE0 + samplerVal;
+        }
+    }
+    state->setActiveTextureUnit(origActiveTexture);
+    if (hostActiveTexture != origActiveTexture) {
+        ctx->m_glActiveTexture_enc(self, origActiveTexture);
+    }
 }
 
 void GL2Encoder::s_glUniform1f(void *self , GLint location, GLfloat x)
@@ -587,8 +866,20 @@
 void GL2Encoder::s_glUniform1i(void *self , GLint location, GLint x)
 {
     GL2Encoder *ctx = (GL2Encoder*)self;
+    GLClientState* state = ctx->m_state;
+    GLSharedGroupPtr shared = ctx->m_shared;
+
     GLint hostLoc = ctx->m_shared->locationWARAppToHost(ctx->m_state->currentProgram(),location);
     ctx->m_glUniform1i_enc(self, hostLoc, x);
+
+    GLenum target;
+    if (shared->setSamplerUniform(state->currentProgram(), location, x, &target)) {
+        GLenum origActiveTexture = state->getActiveTextureUnit();
+        if (ctx->updateHostTexture2DBinding(GL_TEXTURE0 + x, target)) {
+            ctx->m_glActiveTexture_enc(self, origActiveTexture);
+        }
+        state->setActiveTextureUnit(origActiveTexture);
+    }
 }
 
 void GL2Encoder::s_glUniform1iv(void *self , GLint location, GLsizei count, const GLint* v)
@@ -703,3 +994,204 @@
     ctx->m_glUniformMatrix4fv_enc(self, hostLoc, count, transpose, value);
 }
 
+void GL2Encoder::s_glActiveTexture(void* self, GLenum texture)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    GLClientState* state = ctx->m_state;
+    GLenum err;
+
+    SET_ERROR_IF((err = state->setActiveTextureUnit(texture)) != GL_NO_ERROR, err);
+
+    ctx->m_glActiveTexture_enc(ctx, texture);
+}
+
+void GL2Encoder::s_glBindTexture(void* self, GLenum target, GLuint texture)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    GLClientState* state = ctx->m_state;
+    GLenum err;
+    GLboolean firstUse;
+
+    SET_ERROR_IF((err = state->bindTexture(target, texture, &firstUse)) != GL_NO_ERROR, err);
+
+    if (target != GL_TEXTURE_2D && target != GL_TEXTURE_EXTERNAL_OES) {
+        ctx->m_glBindTexture_enc(ctx, target, texture);
+        return;
+    }
+
+    GLenum priorityTarget = state->getPriorityEnabledTarget(GL_TEXTURE_2D);
+
+    if (target == GL_TEXTURE_EXTERNAL_OES && firstUse) {
+        ctx->m_glBindTexture_enc(ctx, GL_TEXTURE_2D, texture);
+        ctx->m_glTexParameteri_enc(ctx, GL_TEXTURE_2D,
+                GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+        ctx->m_glTexParameteri_enc(ctx, GL_TEXTURE_2D,
+                GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+        ctx->m_glTexParameteri_enc(ctx, GL_TEXTURE_2D,
+                GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+
+        if (target != priorityTarget) {
+            ctx->m_glBindTexture_enc(ctx, GL_TEXTURE_2D,
+                    state->getBoundTexture(GL_TEXTURE_2D));
+        }
+    }
+
+    if (target == priorityTarget) {
+        ctx->m_glBindTexture_enc(ctx, GL_TEXTURE_2D, texture);
+    }
+}
+
+void GL2Encoder::s_glDeleteTextures(void* self, GLsizei n, const GLuint* textures)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    GLClientState* state = ctx->m_state;
+
+    state->deleteTextures(n, textures);
+    ctx->m_glDeleteTextures_enc(ctx, n, textures);
+}
+
+void GL2Encoder::s_glGetTexParameterfv(void* self,
+        GLenum target, GLenum pname, GLfloat* params)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    const GLClientState* state = ctx->m_state;
+
+    if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+        ctx->override2DTextureTarget(target);
+        ctx->m_glGetTexParameterfv_enc(ctx, GL_TEXTURE_2D, pname, params);
+        ctx->restore2DTextureTarget();
+    } else {
+        ctx->m_glGetTexParameterfv_enc(ctx, target, pname, params);
+    }
+}
+
+void GL2Encoder::s_glGetTexParameteriv(void* self,
+        GLenum target, GLenum pname, GLint* params)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    const GLClientState* state = ctx->m_state;
+
+    switch (pname) {
+    case GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES:
+        *params = 1;
+        break;
+
+    default:
+        if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+            ctx->override2DTextureTarget(target);
+            ctx->m_glGetTexParameteriv_enc(ctx, GL_TEXTURE_2D, pname, params);
+            ctx->restore2DTextureTarget();
+        } else {
+            ctx->m_glGetTexParameteriv_enc(ctx, target, pname, params);
+        }
+        break;
+    }
+}
+
+static bool isValidTextureExternalParam(GLenum pname, GLenum param)
+{
+    switch (pname) {
+    case GL_TEXTURE_MIN_FILTER:
+    case GL_TEXTURE_MAG_FILTER:
+        return param == GL_NEAREST || param == GL_LINEAR;
+
+    case GL_TEXTURE_WRAP_S:
+    case GL_TEXTURE_WRAP_T:
+        return param == GL_CLAMP_TO_EDGE;
+
+    default:
+        return true;
+    }
+}
+
+void GL2Encoder::s_glTexParameterf(void* self,
+        GLenum target, GLenum pname, GLfloat param)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    const GLClientState* state = ctx->m_state;
+
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)param)),
+            GL_INVALID_ENUM);
+
+    if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+        ctx->override2DTextureTarget(target);
+        ctx->m_glTexParameterf_enc(ctx, GL_TEXTURE_2D, pname, param);
+        ctx->restore2DTextureTarget();
+    } else {
+        ctx->m_glTexParameterf_enc(ctx, target, pname, param);
+    }
+}
+
+void GL2Encoder::s_glTexParameterfv(void* self,
+        GLenum target, GLenum pname, const GLfloat* params)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    const GLClientState* state = ctx->m_state;
+
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)params[0])),
+            GL_INVALID_ENUM);
+
+    if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+        ctx->override2DTextureTarget(target);
+        ctx->m_glTexParameterfv_enc(ctx, GL_TEXTURE_2D, pname, params);
+        ctx->restore2DTextureTarget();
+    } else {
+        ctx->m_glTexParameterfv_enc(ctx, target, pname, params);
+    }
+}
+
+void GL2Encoder::s_glTexParameteri(void* self,
+        GLenum target, GLenum pname, GLint param)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    const GLClientState* state = ctx->m_state;
+
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)param)),
+            GL_INVALID_ENUM);
+
+    if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+        ctx->override2DTextureTarget(target);
+        ctx->m_glTexParameteri_enc(ctx, GL_TEXTURE_2D, pname, param);
+        ctx->restore2DTextureTarget();
+    } else {
+        ctx->m_glTexParameteri_enc(ctx, target, pname, param);
+    }
+}
+
+void GL2Encoder::s_glTexParameteriv(void* self,
+        GLenum target, GLenum pname, const GLint* params)
+{
+    GL2Encoder* ctx = (GL2Encoder*)self;
+    const GLClientState* state = ctx->m_state;
+
+    SET_ERROR_IF((target == GL_TEXTURE_EXTERNAL_OES &&
+            !isValidTextureExternalParam(pname, (GLenum)params[0])),
+            GL_INVALID_ENUM);
+
+    if (target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) {
+        ctx->override2DTextureTarget(target);
+        ctx->m_glTexParameteriv_enc(ctx, GL_TEXTURE_2D, pname, params);
+        ctx->restore2DTextureTarget();
+    } else {
+        ctx->m_glTexParameteriv_enc(ctx, target, pname, params);
+    }
+}
+
+void GL2Encoder::override2DTextureTarget(GLenum target)
+{
+    if ((target == GL_TEXTURE_2D || target == GL_TEXTURE_EXTERNAL_OES) &&
+        target != m_state->getPriorityEnabledTarget(GL_TEXTURE_2D)) {
+            m_glBindTexture_enc(this, GL_TEXTURE_2D,
+                    m_state->getBoundTexture(target));
+    }
+}
+
+void GL2Encoder::restore2DTextureTarget()
+{
+    GLenum priorityTarget = m_state->getPriorityEnabledTarget(GL_TEXTURE_2D);
+    m_glBindTexture_enc(this, GL_TEXTURE_2D,
+            m_state->getBoundTexture(priorityTarget));
+}
diff --git a/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.h b/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.h
index 2914fa9..f9235d7 100644
--- a/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.h
+++ b/tools/emulator/opengl/system/GLESv2_enc/GL2Encoder.h
@@ -17,7 +17,6 @@
 #define _GL2_ENCODER_H_
 
 #include "gl2_enc.h"
-#include "IOStream.h"
 #include "GLClientState.h"
 #include "GLSharedGroup.h"
 #include "FixedBuffer.h"
@@ -33,9 +32,7 @@
     void setSharedGroup(GLSharedGroupPtr shared){ m_shared = shared; }
     const GLClientState *state() { return m_state; }
     const GLSharedGroupPtr shared() { return m_shared; }
-    void flush() {
-        gl2_encoder_context_t::m_stream->flush();
-    }
+    void flush() { m_stream->flush(); }
 
     void setInitialized(){ m_initialized = true; };
     bool isInitialized(){ return m_initialized; };
@@ -43,6 +40,9 @@
     virtual void setError(GLenum error){ m_error = error; };
     virtual GLenum getError() { return m_error; };
 
+    void override2DTextureTarget(GLenum target);
+    void restore2DTextureTarget();
+
 private:
 
     bool    m_initialized;
@@ -57,6 +57,7 @@
     FixedBuffer m_fixedBuffer;
 
     void sendVertexAttributes(GLint first, GLsizei count);
+    bool updateHostTexture2DBinding(GLenum texUnit, GLenum newTarget);
 
     glGetError_client_proc_t    m_glGetError_enc;
     static GLenum s_glGetError(void * self);
@@ -141,6 +142,12 @@
     glDeleteShader_client_proc_t m_glDeleteShader_enc;
     static void s_glDeleteShader(void *self, GLuint shader);
 
+    glAttachShader_client_proc_t m_glAttachShader_enc;
+    static void s_glAttachShader(void *self, GLuint program, GLuint shader);
+
+    glDetachShader_client_proc_t m_glDetachShader_enc;
+    static void s_glDetachShader(void *self, GLuint program, GLuint shader);
+
     glGetUniformLocation_client_proc_t m_glGetUniformLocation_enc;
     static int s_glGetUniformLocation(void *self, GLuint program, const GLchar *name);
     glUseProgram_client_proc_t m_glUseProgram_enc;
@@ -185,5 +192,25 @@
 	static void s_glUniformMatrix2fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
 	static void s_glUniformMatrix3fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
 	static void s_glUniformMatrix4fv(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+
+    glActiveTexture_client_proc_t m_glActiveTexture_enc;
+    glBindTexture_client_proc_t m_glBindTexture_enc;
+    glDeleteTextures_client_proc_t m_glDeleteTextures_enc;
+    glGetTexParameterfv_client_proc_t m_glGetTexParameterfv_enc;
+    glGetTexParameteriv_client_proc_t m_glGetTexParameteriv_enc;
+    glTexParameterf_client_proc_t m_glTexParameterf_enc;
+    glTexParameterfv_client_proc_t m_glTexParameterfv_enc;
+    glTexParameteri_client_proc_t m_glTexParameteri_enc;
+    glTexParameteriv_client_proc_t m_glTexParameteriv_enc;
+
+    static void s_glActiveTexture(void* self, GLenum texture);
+    static void s_glBindTexture(void* self, GLenum target, GLuint texture);
+    static void s_glDeleteTextures(void* self, GLsizei n, const GLuint* textures);
+    static void s_glGetTexParameterfv(void* self, GLenum target, GLenum pname, GLfloat* params);
+    static void s_glGetTexParameteriv(void* self, GLenum target, GLenum pname, GLint* params);
+    static void s_glTexParameterf(void* self, GLenum target, GLenum pname, GLfloat param);
+    static void s_glTexParameterfv(void* self, GLenum target, GLenum pname, const GLfloat* params);
+    static void s_glTexParameteri(void* self, GLenum target, GLenum pname, GLint param);
+    static void s_glTexParameteriv(void* self, GLenum target, GLenum pname, const GLint* params);
 };
 #endif
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2.attrib b/tools/emulator/opengl/system/GLESv2_enc/gl2.attrib
deleted file mode 100644
index 7fe9a66..0000000
--- a/tools/emulator/opengl/system/GLESv2_enc/gl2.attrib
+++ /dev/null
@@ -1,590 +0,0 @@
-GLOBAL
-	base_opcode 2048
-	encoder_headers <string.h> "glUtils.h" "GL2EncoderUtils.h"
-
-#void glBindAttribLocation(GLuint program, GLuint index, GLchar *name)
-glBindAttribLocation
-	len name (strlen(name) + 1)
-
-#void glBufferData(GLenum target, GLsizeiptr size, GLvoid *data, GLenum usage)
-glBufferData
-	len data size
-	var_flag data nullAllowed isLarge
-
-#void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data)
-glBufferSubData
-	len data size
-        var_flag data isLarge
-
-#void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, GLvoid *data)
-glCompressedTexImage2D
-	len data imageSize
-    var_flag data nullAllowed isLarge
-
-#void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, GLvoid *data)
-glCompressedTexSubImage2D
-	len data imageSize
-        var_flag data isLarge
-
-#void glDeleteBuffers(GLsizei n, GLuint *buffers)
-glDeleteBuffers
-	len buffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glDeleteFramebuffers(GLsizei n, GLuint *framebuffers)
-glDeleteFramebuffers
-	len framebuffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glDeleteRenderbuffers(GLsizei n, GLuint *renderbuffers)
-glDeleteRenderbuffers
-	len renderbuffers (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glDeleteTextures(GLsizei n, GLuint *textures)
-glDeleteTextures
-	len textures (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glDrawElements(GLenum mode, GLsizei count, GLenum type, GLvoid *indices)
-glDrawElements
-	flag unsupported
-
-#void glGenBuffers(GLsizei n, GLuint *buffers)
-glGenBuffers
-	len buffers (n * sizeof(GLuint))
-	dir buffers out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenFramebuffers(GLsizei n, GLuint *framebuffers)
-glGenFramebuffers
-	len framebuffers (n * sizeof(GLuint))
-	dir framebuffers out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenRenderbuffers(GLsizei n, GLuint *renderbuffers)
-glGenRenderbuffers
-	len renderbuffers (n * sizeof(GLuint))
-	dir renderbuffers out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenTextures(GLsizei n, GLuint *textures)
-glGenTextures
-	len textures (n * sizeof(GLuint))
-	dir textures out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
-glGetActiveAttrib
-	len name bufsize
-	dir name out
-	var_flag name nullAllowed
-	dir length out
-	len length (sizeof(GLsizei))
-	var_flag length nullAllowed
-	dir size out
-	len size (sizeof(GLint))
-	dir type out
-	len type (sizeof(GLenum))
-	
-#void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, GLchar *name)
-glGetActiveUniform
-	len name bufsize
-	dir name out
-	  var_flag name nullAllowed
-	dir length out
-	len length (sizeof(GLsizei))
-	var_flag length nullAllowed
-	dir size out
-	len size (sizeof(GLint))
-	dir type out
-	len type (sizeof(GLenum))
-
-
-#void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei *count, GLuint *shaders)
-glGetAttachedShaders
-	len shaders (maxcount*sizeof(GLuint))
-	dir shaders out
-	dir count out
-	var_flag count nullAllowed
-	len count (sizeof(GLsizei))
-
-#int glGetAttribLocation(GLuint program, GLchar *name)
-glGetAttribLocation
-	len name (strlen(name) + 1)
-
-#void glGetBooleanv(GLenum pname, GLboolean *params)
-glGetBooleanv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLboolean))
-
-#void glGetBufferParameteriv(GLenum target, GLenum pname, GLint *params)
-glGetBufferParameteriv
-	len params (sizeof(GLint))
-	dir params out
-
-#void glGetFloatv(GLenum pname, GLfloat *params)
-glGetFloatv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint *params)
-glGetFramebufferAttachmentParameteriv
-	dir params out
-	len params (sizeof(GLint))
-
-#void glGetIntegerv(GLenum pname, GLint *params)
-glGetIntegerv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glGetProgramiv(GLuint program, GLenum pname, GLint *params)
-glGetProgramiv
-	dir params out
-	len params sizeof(GLint)
-#XXX - might change if extension constants that return more then one value
-
-
-#void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei *length, GLchar *infolog)
-glGetProgramInfoLog
-	dir infolog out
-	len infolog bufsize
-	dir length out
-	len length sizeof(GLsizei)
-
-#void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint *params)
-glGetRenderbufferParameteriv
-	dir params out
-	len params sizeof(GLint)
-# XXX - might change if pname with value larger then one is added
-
-#void glGetShaderiv(GLuint shader, GLenum pname, GLint *params)
-glGetShaderiv
-	dir params out
-	len params sizeof(GLint)
-# XXX - might change if pname with value larger then one is added
-
-#void glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *infolog)
-glGetShaderInfoLog
-	dir length out
-	len length (sizeof(GLsizei))
-	var_flag length nullAllowed
-	dir infolog out
-	len infolog bufsize
-	
-
-#void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)
-glGetShaderPrecisionFormat
-	dir range out
-	len range (2 * sizeof(GLint))
-	dir precision out
-	len precision (sizeof(GLint))
-
-#void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source)
-glGetShaderSource
-	dir length out
-	len length (sizeof(GLsizei))
-	var_flag length nullAllowed
-	dir source out
-	len source bufsize
-
-#GLubyte* glGetString(GLenum name)
-glGetString
-	flag unsupported
-
-#void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
-glGetTexParameterfv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#void glGetTexParameteriv(GLenum target, GLenum pname, GLint *params)
-glGetTexParameteriv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glGetUniformfv(GLuint program, GLint location, GLfloat *params)
-glGetUniformfv
-	dir params out
-	len params glSizeof(uniformType(self, program, location))
-
-#void glGetUniformiv(GLuint program, GLint location, GLint *params)
-glGetUniformiv
-	dir params out
-	len params glSizeof(uniformType(self, program, location))
-
-#int glGetUniformLocation(GLuint program, GLchar *name)
-glGetUniformLocation
-	len name (strlen(name) + 1)
-
-# client-state shall be handled locally by the encoder in most cases.
-# however, GL_CURRENT_VERTEX_ATTRIB and potential others are handled by the server side,
-# thus we still need to implement it. 
-#void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat *params)
-glGetVertexAttribfv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-
-#see glGetVertexAttribfv for comments
-#void glGetVertexAttribiv(GLuint index, GLenum pname, GLint *params)
-glGetVertexAttribiv
-	dir params out
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-
-
-#void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
-glReadPixels
-	dir pixels out
-	len pixels pixelDataSize(self, width, height, format, type, 1)
-
-#void glShaderBinary(GLsizei n, GLuint *shaders, GLenum binaryformat, GLvoid *binary, GLsizei length)
-glShaderBinary
-	flag unsupported
-
-#void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, GLvoid *pixels)
-glTexImage2D
-	dir pixels in
-	len pixels pixelDataSize(self, width, height, format, type, 0)
-	var_flag pixels nullAllowed isLarge
-
-#void glTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
-glTexParameterfv
-	len params (glUtilsParamSize(pname) * sizeof(GLfloat))
-#void glTexParameteriv(GLenum target, GLenum pname, GLint *params)
-glTexParameteriv
-	len params (glUtilsParamSize(pname) * sizeof(GLint))
-
-#void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
-glTexSubImage2D
-	len pixels pixelDataSize(self, width, height, format, type, 0)
-        var_flag pixels isLarge
-	
-#void glUniform1fv(GLint location, GLsizei count, GLfloat *v)
-glUniform1fv
-	len v (count * sizeof(GLfloat))
-
-#void glUniform1iv(GLint location, GLsizei count, GLint *v)
-glUniform1iv
-	len v (count * sizeof(GLint))
-
-#void glUniform2fv(GLint location, GLsizei count, GLfloat *v)
-glUniform2fv
-	len v (count * 2 * sizeof(GLfloat))
-
-#void glUniform2iv(GLint location, GLsizei count, GLint *v)
-glUniform2iv
-	len v (count * 2 * sizeof(GLint))
-
-#void glUniform3fv(GLint location, GLsizei count, GLfloat *v)
-glUniform3fv
-	len v (count * 3 * sizeof(GLfloat))
-
-#void glUniform3iv(GLint location, GLsizei count, GLint *v)
-glUniform3iv
-	len v (3 * count * sizeof(GLint))
-
-#void glUniform4fv(GLint location, GLsizei count, GLfloat *v)
-glUniform4fv
-	len v (4 * count * sizeof(GLfloat))
-
-#void glUniform4iv(GLint location, GLsizei count, GLint *v)
-glUniform4iv
-	len v (4 * count * sizeof(GLint))
-
-#void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)
-glUniformMatrix2fv
-	len value (count * 4 * sizeof(GLfloat))
-
-#void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)
-glUniformMatrix3fv
-	len value (count * 9 * sizeof(GLfloat))
-	
-#void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, GLfloat *value)
-glUniformMatrix4fv
-	len value (count * 16 * sizeof(GLfloat))
-
-#void glVertexAttrib1fv(GLuint indx, GLfloat *values)
-glVertexAttrib1fv
-	len values (sizeof(GLfloat))
-#void glVertexAttrib2fv(GLuint indx, GLfloat *values)
-glVertexAttrib2fv
-	len values (2 * sizeof(GLfloat))
-
-#void glVertexAttrib3fv(GLuint indx, GLfloat *values)
-glVertexAttrib3fv
-	len values (3 * sizeof(GLfloat))
-
-#void glVertexAttrib4fv(GLuint indx, GLfloat *values)
-glVertexAttrib4fv
-	len values (4 * sizeof(GLfloat))
-
-#void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLvoid *ptr)
-glVertexAttribPointer
-	flag unsupported
-
-#void glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)
-glGetProgramBinaryOES
-	flag unsupported
-
-#void glProgramBinaryOES(GLuint program, GLenum binaryFormat, GLvoid *binary, GLint length)
-glProgramBinaryOES
-	flag unsupported
-
-#void* glMapBufferOES(GLenum target, GLenum access)
-glMapBufferOES
-	flag unsupported
-
-#void glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, GLvoid *pixels)
-glTexImage3DOES
-	len pixels pixelDataSize3D(self, width, height, depth, format, type, 0)
-	var_flag pixels nullAllowed isLarge
-
-#void glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *pixels)
-glTexSubImage3DOES
-	len pixels pixelDataSize3D(self, width, height, depth, format, type, 0)	
-        var_flag pixels isLarge
-
-#void glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, GLvoid *data)
-glCompressedTexImage3DOES
-	len data imageSize
-        var_flag data isLarge
-
-#void glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, GLvoid *data)
-glCompressedTexSubImage3DOES
-	len data imageSize
-        var_flag data isLarge
-
-#void glDeleteVertexArraysOES(GLsizei n, GLuint *arrays)
-glDeleteVertexArraysOES
-	len arrays (n * sizeof(GLuint))
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-#void glGenVertexArraysOES(GLsizei n, GLuint *arrays)
-glGenVertexArraysOES
-	len arrays (n * sizeof(GLuint))
-	dir arrays out
-    param_check n if(n<0){ ctx->setError(GL_INVALID_VALUE); return; } 
-
-
-#void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, GLenum *attachments)
-glDiscardFramebufferEXT
-	len attachments (numAttachments * sizeof(GLenum))
-
-#void glMultiDrawArraysEXT(GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
-glMultiDrawArraysEXT
-	flag unsupported
-#void glMultiDrawElementsEXT(GLenum mode, GLsizei *count, GLenum type, GLvoid *indices, GLsizei primcount)
-glMultiDrawElementsEXT
-	flag unsupported
-
-
-# handled by encoder
-#void glShaderSource(GLuint shader, GLsizei count, GLstr *string, const GLint *length)
-glShaderSource
-	flag unsupported
-
-
-
-#void glGetPerfMonitorGroupsAMD(GLint *numGroups, GLsizei groupsSize, GLuint *groups)
-glGetPerfMonitorGroupsAMD
-	flag unsupported
-
-#void glGetPerfMonitorCountersAMD(GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters)
-glGetPerfMonitorCountersAMD
-	flag unsupported
-
-#void glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString)
-glGetPerfMonitorGroupStringAMD
-	flag unsupported
-
-#void glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString)
-glGetPerfMonitorCounterStringAMD
-	flag unsupported
-
-#void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid *data)
-glGetPerfMonitorCounterInfoAMD
-	flag unsupported
-
-#void glGenPerfMonitorsAMD(GLsizei n, GLuint *monitors)
-glGenPerfMonitorsAMD
-	flag unsupported
-
-#void glDeletePerfMonitorsAMD(GLsizei n, GLuint *monitors)
-glDeletePerfMonitorsAMD
-	flag unsupported
-
-#void glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList)
-glSelectPerfMonitorCountersAMD
-	flag unsupported
-
-#void glBeginPerfMonitorAMD(GLuint monitor)
-glBeginPerfMonitorAMD
-	flag unsupported
-
-#void glEndPerfMonitorAMD(GLuint monitor)
-glEndPerfMonitorAMD
-	flag unsupported
-
-#void glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten)
-glGetPerfMonitorCounterDataAMD
-	flag unsupported
-
-#void glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-glRenderbufferStorageMultisampleIMG
-	flag unsupported
-
-#void glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
-glFramebufferTexture2DMultisampleIMG
-	flag unsupported
-
-#void glDeleteFencesNV(GLsizei n, GLuint *fences)
-glDeleteFencesNV
-	flag unsupported
-
-#void glGenFencesNV(GLsizei n, GLuint *fences)
-glGenFencesNV
-	flag unsupported
-
-#GLboolean glIsFenceNV(GLuint fence)
-glIsFenceNV
-	flag unsupported
-
-#GLboolean glTestFenceNV(GLuint fence)
-glTestFenceNV
-	flag unsupported
-
-#void glGetFenceivNV(GLuint fence, GLenum pname, GLint *params)
-glGetFenceivNV
-	flag unsupported
-
-#void glFinishFenceNV(GLuint fence)
-glFinishFenceNV
-	flag unsupported
-
-#void glSetFenceNV(GLuint fence, GLenum condition)
-glSetFenceNV
-	flag unsupported
-
-#void glCoverageMaskNV(GLboolean mask)
-glCoverageMaskNV
-	flag unsupported
-
-#void glCoverageOperationNV(GLenum operation)
-glCoverageOperationNV
-	flag unsupported
-
-#void glGetDriverControlsQCOM(GLint *num, GLsizei size, GLuint *driverControls)
-glGetDriverControlsQCOM
-	flag unsupported
-
-#void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)
-glGetDriverControlStringQCOM
-	flag unsupported
-
-#void glEnableDriverControlQCOM(GLuint driverControl)
-glEnableDriverControlQCOM
-	flag unsupported
-
-#void glDisableDriverControlQCOM(GLuint driverControl)
-glDisableDriverControlQCOM
-	flag unsupported
-
-#void glExtGetTexturesQCOM(GLuint *textures, GLint maxTextures, GLint *numTextures)
-glExtGetTexturesQCOM
-	flag unsupported
-
-#void glExtGetBuffersQCOM(GLuint *buffers, GLint maxBuffers, GLint *numBuffers)
-glExtGetBuffersQCOM
-	flag unsupported
-
-#void glExtGetRenderbuffersQCOM(GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers)
-glExtGetRenderbuffersQCOM
-	flag unsupported
-
-#void glExtGetFramebuffersQCOM(GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)
-glExtGetFramebuffersQCOM
-	flag unsupported
-
-#void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)
-glExtGetTexLevelParameterivQCOM
-	flag unsupported
-
-#void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param)
-glExtTexObjectStateOverrideiQCOM
-	flag unsupported
-
-#void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels)
-glExtGetTexSubImageQCOM
-	flag unsupported
-
-#void glExtGetBufferPointervQCOM(GLenum target, GLvoidptr *params)
-glExtGetBufferPointervQCOM
-	flag unsupported
-
-#void glExtGetShadersQCOM(GLuint *shaders, GLint maxShaders, GLint *numShaders)
-glExtGetShadersQCOM
-	flag unsupported
-
-#void glExtGetProgramsQCOM(GLuint *programs, GLint maxPrograms, GLint *numPrograms)
-glExtGetProgramsQCOM
-	flag unsupported
-
-#GLboolean glExtIsProgramBinaryQCOM(GLuint program)
-glExtIsProgramBinaryQCOM
-	flag unsupported
-
-#void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar *source, GLint *length)
-glExtGetProgramBinarySourceQCOM
-	flag unsupported
-
-#void glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
-glStartTilingQCOM
-	flag unsupported
-
-#void glEndTilingQCOM(GLbitfield preserveMask)
-glEndTilingQCOM
-	flag unsupported
-
-
-#void glVertexAttribPointerData(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride,  void * data, GLuint datalen)
-glVertexAttribPointerData
-	len data datalen
-	custom_pack data glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen) 
-	flag custom_decoder
-	flag not_api
-
-glVertexAttribPointerOffset
-	flag custom_decoder
-	flag not_api
-
-#client-state, handled by the encoder
-#GL_ENTRY(void, glGetVertexAttribPointerv, GLuint index, GLenum pname, GLvoid** pointer)
-glGetVertexAttribPointerv
-	flag unsupported
-
-glDrawElementsData
-	len data datalen
-	flag custom_decoder
-	flag not_api
-
-glDrawElementsOffset
-	flag custom_decoder
-	flag not_api
-
-#GL_ENTRY(void, glGetCompressedTextureFormats, int count, GLint *formats)
-glGetCompressedTextureFormats
-	dir formats out
-	len formats (count * sizeof(GLint))
-	flag custom_decoder
-	flag not_api
-
-#GL_ENTRY(void, glShaderString, GLuint shader, GLchar *string, GLsizei len)
-glShaderString
-	len string len
-	flag custom_decoder
-	flag not_api
-	
-glFinishRoundTrip
-	flag custom_decoder
-	flag not_api
-
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2.in b/tools/emulator/opengl/system/GLESv2_enc/gl2.in
deleted file mode 100644
index 916153b..0000000
--- a/tools/emulator/opengl/system/GLESv2_enc/gl2.in
+++ /dev/null
@@ -1,214 +0,0 @@
-GL_ENTRY(void, glActiveTexture, GLenum texture)
-GL_ENTRY(void, glAttachShader, GLuint program, GLuint shader)
-GL_ENTRY(void, glBindAttribLocation, GLuint program, GLuint index, const GLchar* name)
-GL_ENTRY(void, glBindBuffer, GLenum target, GLuint buffer)
-GL_ENTRY(void, glBindFramebuffer, GLenum target, GLuint framebuffer)
-GL_ENTRY(void, glBindRenderbuffer, GLenum target, GLuint renderbuffer)
-GL_ENTRY(void, glBindTexture, GLenum target, GLuint texture)
-GL_ENTRY(void, glBlendColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-GL_ENTRY(void, glBlendEquation,  GLenum mode )
-GL_ENTRY(void, glBlendEquationSeparate, GLenum modeRGB, GLenum modeAlpha)
-GL_ENTRY(void, glBlendFunc, GLenum sfactor, GLenum dfactor)
-GL_ENTRY(void, glBlendFuncSeparate, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
-GL_ENTRY(void, glBufferData, GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
-GL_ENTRY(void, glBufferSubData, GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
-GL_ENTRY(GLenum, glCheckFramebufferStatus, GLenum target)
-GL_ENTRY(void, glClear, GLbitfield mask)
-GL_ENTRY(void, glClearColor, GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-GL_ENTRY(void, glClearDepthf, GLclampf depth)
-GL_ENTRY(void, glClearStencil, GLint s)
-GL_ENTRY(void, glColorMask, GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
-GL_ENTRY(void, glCompileShader, GLuint shader)
-GL_ENTRY(void, glCompressedTexImage2D, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
-GL_ENTRY(void, glCompressedTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
-GL_ENTRY(void, glCopyTexImage2D, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
-GL_ENTRY(void, glCopyTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(GLuint, glCreateProgram, void)
-GL_ENTRY(GLuint, glCreateShader, GLenum type)
-GL_ENTRY(void, glCullFace, GLenum mode)
-GL_ENTRY(void, glDeleteBuffers, GLsizei n, const GLuint* buffers)
-GL_ENTRY(void, glDeleteFramebuffers, GLsizei n, const GLuint* framebuffers)
-GL_ENTRY(void, glDeleteProgram, GLuint program)
-GL_ENTRY(void, glDeleteRenderbuffers, GLsizei n, const GLuint* renderbuffers)
-GL_ENTRY(void, glDeleteShader, GLuint shader)
-GL_ENTRY(void, glDeleteTextures, GLsizei n, const GLuint* textures)
-GL_ENTRY(void, glDepthFunc, GLenum func)
-GL_ENTRY(void, glDepthMask, GLboolean flag)
-GL_ENTRY(void, glDepthRangef, GLclampf zNear, GLclampf zFar)
-GL_ENTRY(void, glDetachShader, GLuint program, GLuint shader)
-GL_ENTRY(void, glDisable, GLenum cap)
-GL_ENTRY(void, glDisableVertexAttribArray, GLuint index)
-GL_ENTRY(void, glDrawArrays, GLenum mode, GLint first, GLsizei count)
-GL_ENTRY(void, glDrawElements, GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
-GL_ENTRY(void, glEnable, GLenum cap)
-GL_ENTRY(void, glEnableVertexAttribArray, GLuint index)
-GL_ENTRY(void, glFinish, void)
-GL_ENTRY(void, glFlush, void)
-GL_ENTRY(void, glFramebufferRenderbuffer, GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
-GL_ENTRY(void, glFramebufferTexture2D, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-GL_ENTRY(void, glFrontFace, GLenum mode)
-GL_ENTRY(void, glGenBuffers, GLsizei n, GLuint* buffers)
-GL_ENTRY(void, glGenerateMipmap, GLenum target)
-GL_ENTRY(void, glGenFramebuffers, GLsizei n, GLuint* framebuffers)
-GL_ENTRY(void, glGenRenderbuffers, GLsizei n, GLuint* renderbuffers)
-GL_ENTRY(void, glGenTextures, GLsizei n, GLuint* textures)
-GL_ENTRY(void, glGetActiveAttrib, GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
-GL_ENTRY(void, glGetActiveUniform, GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
-GL_ENTRY(void, glGetAttachedShaders, GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
-GL_ENTRY(int, glGetAttribLocation, GLuint program, const GLchar* name)
-GL_ENTRY(void, glGetBooleanv, GLenum pname, GLboolean* params)
-GL_ENTRY(void, glGetBufferParameteriv, GLenum target, GLenum pname, GLint* params)
-GL_ENTRY(GLenum, glGetError, void)
-GL_ENTRY(void, glGetFloatv, GLenum pname, GLfloat* params)
-GL_ENTRY(void, glGetFramebufferAttachmentParameteriv, GLenum target, GLenum attachment, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetIntegerv, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetProgramiv, GLuint program, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetProgramInfoLog, GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
-GL_ENTRY(void, glGetRenderbufferParameteriv, GLenum target, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetShaderiv, GLuint shader, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetShaderInfoLog, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
-GL_ENTRY(void, glGetShaderPrecisionFormat, GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
-GL_ENTRY(void, glGetShaderSource, GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
-GL_ENTRY(const GLubyte*, glGetString, GLenum name)
-GL_ENTRY(void, glGetTexParameterfv, GLenum target, GLenum pname, GLfloat* params)
-GL_ENTRY(void, glGetTexParameteriv, GLenum target, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetUniformfv, GLuint program, GLint location, GLfloat* params)
-GL_ENTRY(void, glGetUniformiv, GLuint program, GLint location, GLint* params)
-GL_ENTRY(int, glGetUniformLocation, GLuint program, const GLchar* name)
-GL_ENTRY(void, glGetVertexAttribfv, GLuint index, GLenum pname, GLfloat* params)
-GL_ENTRY(void, glGetVertexAttribiv, GLuint index, GLenum pname, GLint* params)
-GL_ENTRY(void, glGetVertexAttribPointerv, GLuint index, GLenum pname, GLvoid** pointer)
-GL_ENTRY(void, glHint, GLenum target, GLenum mode)
-GL_ENTRY(GLboolean, glIsBuffer, GLuint buffer)
-GL_ENTRY(GLboolean, glIsEnabled, GLenum cap)
-GL_ENTRY(GLboolean, glIsFramebuffer, GLuint framebuffer)
-GL_ENTRY(GLboolean, glIsProgram, GLuint program)
-GL_ENTRY(GLboolean, glIsRenderbuffer, GLuint renderbuffer)
-GL_ENTRY(GLboolean, glIsShader, GLuint shader)
-GL_ENTRY(GLboolean, glIsTexture, GLuint texture)
-GL_ENTRY(void, glLineWidth, GLfloat width)
-GL_ENTRY(void, glLinkProgram, GLuint program)
-GL_ENTRY(void, glPixelStorei, GLenum pname, GLint param)
-GL_ENTRY(void, glPolygonOffset, GLfloat factor, GLfloat units)
-GL_ENTRY(void, glReadPixels, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
-GL_ENTRY(void, glReleaseShaderCompiler, void)
-GL_ENTRY(void, glRenderbufferStorage, GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
-GL_ENTRY(void, glSampleCoverage, GLclampf value, GLboolean invert)
-GL_ENTRY(void, glScissor, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(void, glShaderBinary, GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
-GL_ENTRY(void, glShaderSource, GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
-GL_ENTRY(void, glStencilFunc, GLenum func, GLint ref, GLuint mask)
-GL_ENTRY(void, glStencilFuncSeparate, GLenum face, GLenum func, GLint ref, GLuint mask)
-GL_ENTRY(void, glStencilMask, GLuint mask)
-GL_ENTRY(void, glStencilMaskSeparate, GLenum face, GLuint mask)
-GL_ENTRY(void, glStencilOp, GLenum fail, GLenum zfail, GLenum zpass)
-GL_ENTRY(void, glStencilOpSeparate, GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
-GL_ENTRY(void, glTexImage2D, GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
-GL_ENTRY(void, glTexParameterf, GLenum target, GLenum pname, GLfloat param)
-GL_ENTRY(void, glTexParameterfv, GLenum target, GLenum pname, const GLfloat* params)
-GL_ENTRY(void, glTexParameteri, GLenum target, GLenum pname, GLint param)
-GL_ENTRY(void, glTexParameteriv, GLenum target, GLenum pname, const GLint* params)
-GL_ENTRY(void, glTexSubImage2D, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
-GL_ENTRY(void, glUniform1f, GLint location, GLfloat x)
-GL_ENTRY(void, glUniform1fv, GLint location, GLsizei count, const GLfloat* v)
-GL_ENTRY(void, glUniform1i, GLint location, GLint x)
-GL_ENTRY(void, glUniform1iv, GLint location, GLsizei count, const GLint* v)
-GL_ENTRY(void, glUniform2f, GLint location, GLfloat x, GLfloat y)
-GL_ENTRY(void, glUniform2fv, GLint location, GLsizei count, const GLfloat* v)
-GL_ENTRY(void, glUniform2i, GLint location, GLint x, GLint y)
-GL_ENTRY(void, glUniform2iv, GLint location, GLsizei count, const GLint* v)
-GL_ENTRY(void, glUniform3f, GLint location, GLfloat x, GLfloat y, GLfloat z)
-GL_ENTRY(void, glUniform3fv, GLint location, GLsizei count, const GLfloat* v)
-GL_ENTRY(void, glUniform3i, GLint location, GLint x, GLint y, GLint z)
-GL_ENTRY(void, glUniform3iv, GLint location, GLsizei count, const GLint* v)
-GL_ENTRY(void, glUniform4f, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-GL_ENTRY(void, glUniform4fv, GLint location, GLsizei count, const GLfloat* v)
-GL_ENTRY(void, glUniform4i, GLint location, GLint x, GLint y, GLint z, GLint w)
-GL_ENTRY(void, glUniform4iv, GLint location, GLsizei count, const GLint* v)
-GL_ENTRY(void, glUniformMatrix2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-GL_ENTRY(void, glUniformMatrix3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-GL_ENTRY(void, glUniformMatrix4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
-GL_ENTRY(void, glUseProgram, GLuint program)
-GL_ENTRY(void, glValidateProgram, GLuint program)
-GL_ENTRY(void, glVertexAttrib1f, GLuint indx, GLfloat x)
-GL_ENTRY(void, glVertexAttrib1fv, GLuint indx, const GLfloat* values)
-GL_ENTRY(void, glVertexAttrib2f, GLuint indx, GLfloat x, GLfloat y)
-GL_ENTRY(void, glVertexAttrib2fv, GLuint indx, const GLfloat* values)
-GL_ENTRY(void, glVertexAttrib3f, GLuint indx, GLfloat x, GLfloat y, GLfloat z)
-GL_ENTRY(void, glVertexAttrib3fv, GLuint indx, const GLfloat* values)
-GL_ENTRY(void, glVertexAttrib4f, GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-GL_ENTRY(void, glVertexAttrib4fv, GLuint indx, const GLfloat* values)
-GL_ENTRY(void, glVertexAttribPointer, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
-GL_ENTRY(void, glViewport, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(void, glEGLImageTargetTexture2DOES, GLenum target, GLeglImageOES image)
-GL_ENTRY(void, glEGLImageTargetRenderbufferStorageOES, GLenum target, GLeglImageOES image)
-GL_ENTRY(void, glGetProgramBinaryOES, GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)
-GL_ENTRY(void, glProgramBinaryOES, GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length)
-GL_ENTRY(void*, glMapBufferOES, GLenum target, GLenum access)
-GL_ENTRY(GLboolean, glUnmapBufferOES, GLenum target)
-#GL_ENTRY(void, glGetBufferPointervOES, GLenum target, GLenum pname, GLvoid** params)
-GL_ENTRY(void, glTexImage3DOES, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
-GL_ENTRY(void, glTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
-GL_ENTRY(void, glCopyTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-GL_ENTRY(void, glCompressedTexImage3DOES, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
-GL_ENTRY(void, glCompressedTexSubImage3DOES, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
-GL_ENTRY(void, glFramebufferTexture3DOES, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
-GL_ENTRY(void, glBindVertexArrayOES, GLuint array)
-GL_ENTRY(void, glDeleteVertexArraysOES, GLsizei n, const GLuint *arrays)
-GL_ENTRY(void, glGenVertexArraysOES, GLsizei n, GLuint *arrays)
-GL_ENTRY(GLboolean, glIsVertexArrayOES, GLuint array)
-GL_ENTRY(void, glDiscardFramebufferEXT, GLenum target, GLsizei numAttachments, const GLenum *attachments)
-GL_ENTRY(void, glMultiDrawArraysEXT, GLenum mode, GLint *first, GLsizei *count, GLsizei primcount)
-GL_ENTRY(void, glMultiDrawElementsEXT, GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount)
-
-#not supported
-GL_ENTRY(void, glGetPerfMonitorGroupsAMD, GLint *numGroups, GLsizei groupsSize, GLuint *groups)
-GL_ENTRY(void, glGetPerfMonitorCountersAMD, GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters)
-GL_ENTRY(void, glGetPerfMonitorGroupStringAMD, GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString)
-GL_ENTRY(void, glGetPerfMonitorCounterStringAMD, GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString)
-GL_ENTRY(void, glGetPerfMonitorCounterInfoAMD, GLuint group, GLuint counter, GLenum pname, GLvoid *data)
-GL_ENTRY(void, glGenPerfMonitorsAMD, GLsizei n, GLuint *monitors)
-GL_ENTRY(void, glDeletePerfMonitorsAMD, GLsizei n, GLuint *monitors)
-GL_ENTRY(void, glSelectPerfMonitorCountersAMD, GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList)
-GL_ENTRY(void, glBeginPerfMonitorAMD, GLuint monitor)
-GL_ENTRY(void, glEndPerfMonitorAMD, GLuint monitor)
-GL_ENTRY(void, glGetPerfMonitorCounterDataAMD, GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten)
-
-GL_ENTRY(void, glRenderbufferStorageMultisampleIMG, GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-GL_ENTRY(void, glFramebufferTexture2DMultisampleIMG, GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
-GL_ENTRY(void, glDeleteFencesNV, GLsizei n, const GLuint *fences)
-GL_ENTRY(void, glGenFencesNV, GLsizei n, GLuint *fences)
-GL_ENTRY(GLboolean, glIsFenceNV, GLuint fence)
-GL_ENTRY(GLboolean, glTestFenceNV, GLuint fence)
-GL_ENTRY(void, glGetFenceivNV, GLuint fence, GLenum pname, GLint *params)
-GL_ENTRY(void, glFinishFenceNV, GLuint fence)
-GL_ENTRY(void, glSetFenceNV, GLuint fence, GLenum condition)
-GL_ENTRY(void, glCoverageMaskNV, GLboolean mask)
-GL_ENTRY(void, glCoverageOperationNV, GLenum operation)
-GL_ENTRY(void, glGetDriverControlsQCOM, GLint *num, GLsizei size, GLuint *driverControls)
-GL_ENTRY(void, glGetDriverControlStringQCOM, GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString)
-GL_ENTRY(void, glEnableDriverControlQCOM, GLuint driverControl)
-GL_ENTRY(void, glDisableDriverControlQCOM, GLuint driverControl)
-GL_ENTRY(void, glExtGetTexturesQCOM, GLuint *textures, GLint maxTextures, GLint *numTextures)
-GL_ENTRY(void, glExtGetBuffersQCOM, GLuint *buffers, GLint maxBuffers, GLint *numBuffers)
-GL_ENTRY(void, glExtGetRenderbuffersQCOM, GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers)
-GL_ENTRY(void, glExtGetFramebuffersQCOM, GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers)
-GL_ENTRY(void, glExtGetTexLevelParameterivQCOM, GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params)
-GL_ENTRY(void, glExtTexObjectStateOverrideiQCOM, GLenum target, GLenum pname, GLint param)
-GL_ENTRY(void, glExtGetTexSubImageQCOM, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels)
-GL_ENTRY(void, glExtGetBufferPointervQCOM, GLenum target, GLvoidptr *params)
-GL_ENTRY(void, glExtGetShadersQCOM, GLuint *shaders, GLint maxShaders, GLint *numShaders)
-GL_ENTRY(void, glExtGetProgramsQCOM, GLuint *programs, GLint maxPrograms, GLint *numPrograms)
-GL_ENTRY(GLboolean, glExtIsProgramBinaryQCOM, GLuint program)
-GL_ENTRY(void, glExtGetProgramBinarySourceQCOM, GLuint program, GLenum shadertype, GLchar *source, GLint *length)
-GL_ENTRY(void, glStartTilingQCOM, GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
-GL_ENTRY(void, glEndTilingQCOM, GLbitfield preserveMask)
-
-# add-ons
-GL_ENTRY(void, glVertexAttribPointerData, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride,  void * data, GLuint datalen)
-GL_ENTRY(void, glVertexAttribPointerOffset, GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride,  GLuint offset)
-GL_ENTRY(void, glDrawElementsOffset, GLenum mode, GLsizei count, GLenum type, GLuint offset)
-GL_ENTRY(void, glDrawElementsData, GLenum mode, GLsizei count, GLenum type, void *data, GLuint datalen)
-GL_ENTRY(void, glGetCompressedTextureFormats, int count, GLint *formats)
-GL_ENTRY(void, glShaderString, GLuint shader, const GLchar* string, GLsizei len)
-GL_ENTRY(int, glFinishRoundTrip, void)
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2.types b/tools/emulator/opengl/system/GLESv2_enc/gl2.types
deleted file mode 100644
index 4cee99e..0000000
--- a/tools/emulator/opengl/system/GLESv2_enc/gl2.types
+++ /dev/null
@@ -1,37 +0,0 @@
-GLbitfield 32 0x%08x false
-GLboolean 8 %d false
-GLclampf 32 %f false
-GLclampx 32 0x%08x false
-GLeglImageOES 32 %p false
-GLenum 32 0x%08x false
-GLfixed 32 0x%08x false
-GLfloat 32 %f false
-GLint 32 %d false
-GLintptr 32 %p false
-GLshort 16 %d false
-GLsizei 32 %d false
-GLsizeiptr 32 %p false
-GLubyte 8 0x%02x false
-GLuint 32 %u false
-GLvoid 0 %x false
-GLchar 8 %d false
-GLenum* 32 0x%08x true
-GLboolean* 32 0x%08x true
-GLclampf* 32 0x%08x true
-GLclampx* 32 0x%08x true
-GLeglImageOES* 32 0x%08x true
-GLfixed* 32 0x%08x true
-GLfloat* 32 0x%08x true
-GLint* 32 0x%08x true
-GLshort* 32 0x%08x true
-GLsizei* 32 0x%08x true
-GLubyte* 32 0x%08x true
-GLuint* 32 0x%08x true
-GLvoid* 32 0x%08x true
-GLchar* 32 0x%08x true
-GLchar** 32 0x%08x true
-GLvoid** 32 0x%08x true
-void* 32 0x%08x true
-GLstr 32 %s true
-GLstr* 32 0x%08x true
-GLvoidptr* 32 0x%08x true
\ No newline at end of file
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_client_context.cpp b/tools/emulator/opengl/system/GLESv2_enc/gl2_client_context.cpp
new file mode 100644
index 0000000..e4e08b2
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_client_context.cpp
@@ -0,0 +1,225 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+
+#include <string.h>
+#include "gl2_client_context.h"
+
+
+#include <stdio.h>
+
+int gl2_client_context_t::initDispatchByName(void *(*getProc)(const char *, void *userData), void *userData)
+{
+	void *ptr;
+
+	ptr = getProc("glActiveTexture", userData); set_glActiveTexture((glActiveTexture_client_proc_t)ptr);
+	ptr = getProc("glAttachShader", userData); set_glAttachShader((glAttachShader_client_proc_t)ptr);
+	ptr = getProc("glBindAttribLocation", userData); set_glBindAttribLocation((glBindAttribLocation_client_proc_t)ptr);
+	ptr = getProc("glBindBuffer", userData); set_glBindBuffer((glBindBuffer_client_proc_t)ptr);
+	ptr = getProc("glBindFramebuffer", userData); set_glBindFramebuffer((glBindFramebuffer_client_proc_t)ptr);
+	ptr = getProc("glBindRenderbuffer", userData); set_glBindRenderbuffer((glBindRenderbuffer_client_proc_t)ptr);
+	ptr = getProc("glBindTexture", userData); set_glBindTexture((glBindTexture_client_proc_t)ptr);
+	ptr = getProc("glBlendColor", userData); set_glBlendColor((glBlendColor_client_proc_t)ptr);
+	ptr = getProc("glBlendEquation", userData); set_glBlendEquation((glBlendEquation_client_proc_t)ptr);
+	ptr = getProc("glBlendEquationSeparate", userData); set_glBlendEquationSeparate((glBlendEquationSeparate_client_proc_t)ptr);
+	ptr = getProc("glBlendFunc", userData); set_glBlendFunc((glBlendFunc_client_proc_t)ptr);
+	ptr = getProc("glBlendFuncSeparate", userData); set_glBlendFuncSeparate((glBlendFuncSeparate_client_proc_t)ptr);
+	ptr = getProc("glBufferData", userData); set_glBufferData((glBufferData_client_proc_t)ptr);
+	ptr = getProc("glBufferSubData", userData); set_glBufferSubData((glBufferSubData_client_proc_t)ptr);
+	ptr = getProc("glCheckFramebufferStatus", userData); set_glCheckFramebufferStatus((glCheckFramebufferStatus_client_proc_t)ptr);
+	ptr = getProc("glClear", userData); set_glClear((glClear_client_proc_t)ptr);
+	ptr = getProc("glClearColor", userData); set_glClearColor((glClearColor_client_proc_t)ptr);
+	ptr = getProc("glClearDepthf", userData); set_glClearDepthf((glClearDepthf_client_proc_t)ptr);
+	ptr = getProc("glClearStencil", userData); set_glClearStencil((glClearStencil_client_proc_t)ptr);
+	ptr = getProc("glColorMask", userData); set_glColorMask((glColorMask_client_proc_t)ptr);
+	ptr = getProc("glCompileShader", userData); set_glCompileShader((glCompileShader_client_proc_t)ptr);
+	ptr = getProc("glCompressedTexImage2D", userData); set_glCompressedTexImage2D((glCompressedTexImage2D_client_proc_t)ptr);
+	ptr = getProc("glCompressedTexSubImage2D", userData); set_glCompressedTexSubImage2D((glCompressedTexSubImage2D_client_proc_t)ptr);
+	ptr = getProc("glCopyTexImage2D", userData); set_glCopyTexImage2D((glCopyTexImage2D_client_proc_t)ptr);
+	ptr = getProc("glCopyTexSubImage2D", userData); set_glCopyTexSubImage2D((glCopyTexSubImage2D_client_proc_t)ptr);
+	ptr = getProc("glCreateProgram", userData); set_glCreateProgram((glCreateProgram_client_proc_t)ptr);
+	ptr = getProc("glCreateShader", userData); set_glCreateShader((glCreateShader_client_proc_t)ptr);
+	ptr = getProc("glCullFace", userData); set_glCullFace((glCullFace_client_proc_t)ptr);
+	ptr = getProc("glDeleteBuffers", userData); set_glDeleteBuffers((glDeleteBuffers_client_proc_t)ptr);
+	ptr = getProc("glDeleteFramebuffers", userData); set_glDeleteFramebuffers((glDeleteFramebuffers_client_proc_t)ptr);
+	ptr = getProc("glDeleteProgram", userData); set_glDeleteProgram((glDeleteProgram_client_proc_t)ptr);
+	ptr = getProc("glDeleteRenderbuffers", userData); set_glDeleteRenderbuffers((glDeleteRenderbuffers_client_proc_t)ptr);
+	ptr = getProc("glDeleteShader", userData); set_glDeleteShader((glDeleteShader_client_proc_t)ptr);
+	ptr = getProc("glDeleteTextures", userData); set_glDeleteTextures((glDeleteTextures_client_proc_t)ptr);
+	ptr = getProc("glDepthFunc", userData); set_glDepthFunc((glDepthFunc_client_proc_t)ptr);
+	ptr = getProc("glDepthMask", userData); set_glDepthMask((glDepthMask_client_proc_t)ptr);
+	ptr = getProc("glDepthRangef", userData); set_glDepthRangef((glDepthRangef_client_proc_t)ptr);
+	ptr = getProc("glDetachShader", userData); set_glDetachShader((glDetachShader_client_proc_t)ptr);
+	ptr = getProc("glDisable", userData); set_glDisable((glDisable_client_proc_t)ptr);
+	ptr = getProc("glDisableVertexAttribArray", userData); set_glDisableVertexAttribArray((glDisableVertexAttribArray_client_proc_t)ptr);
+	ptr = getProc("glDrawArrays", userData); set_glDrawArrays((glDrawArrays_client_proc_t)ptr);
+	ptr = getProc("glDrawElements", userData); set_glDrawElements((glDrawElements_client_proc_t)ptr);
+	ptr = getProc("glEnable", userData); set_glEnable((glEnable_client_proc_t)ptr);
+	ptr = getProc("glEnableVertexAttribArray", userData); set_glEnableVertexAttribArray((glEnableVertexAttribArray_client_proc_t)ptr);
+	ptr = getProc("glFinish", userData); set_glFinish((glFinish_client_proc_t)ptr);
+	ptr = getProc("glFlush", userData); set_glFlush((glFlush_client_proc_t)ptr);
+	ptr = getProc("glFramebufferRenderbuffer", userData); set_glFramebufferRenderbuffer((glFramebufferRenderbuffer_client_proc_t)ptr);
+	ptr = getProc("glFramebufferTexture2D", userData); set_glFramebufferTexture2D((glFramebufferTexture2D_client_proc_t)ptr);
+	ptr = getProc("glFrontFace", userData); set_glFrontFace((glFrontFace_client_proc_t)ptr);
+	ptr = getProc("glGenBuffers", userData); set_glGenBuffers((glGenBuffers_client_proc_t)ptr);
+	ptr = getProc("glGenerateMipmap", userData); set_glGenerateMipmap((glGenerateMipmap_client_proc_t)ptr);
+	ptr = getProc("glGenFramebuffers", userData); set_glGenFramebuffers((glGenFramebuffers_client_proc_t)ptr);
+	ptr = getProc("glGenRenderbuffers", userData); set_glGenRenderbuffers((glGenRenderbuffers_client_proc_t)ptr);
+	ptr = getProc("glGenTextures", userData); set_glGenTextures((glGenTextures_client_proc_t)ptr);
+	ptr = getProc("glGetActiveAttrib", userData); set_glGetActiveAttrib((glGetActiveAttrib_client_proc_t)ptr);
+	ptr = getProc("glGetActiveUniform", userData); set_glGetActiveUniform((glGetActiveUniform_client_proc_t)ptr);
+	ptr = getProc("glGetAttachedShaders", userData); set_glGetAttachedShaders((glGetAttachedShaders_client_proc_t)ptr);
+	ptr = getProc("glGetAttribLocation", userData); set_glGetAttribLocation((glGetAttribLocation_client_proc_t)ptr);
+	ptr = getProc("glGetBooleanv", userData); set_glGetBooleanv((glGetBooleanv_client_proc_t)ptr);
+	ptr = getProc("glGetBufferParameteriv", userData); set_glGetBufferParameteriv((glGetBufferParameteriv_client_proc_t)ptr);
+	ptr = getProc("glGetError", userData); set_glGetError((glGetError_client_proc_t)ptr);
+	ptr = getProc("glGetFloatv", userData); set_glGetFloatv((glGetFloatv_client_proc_t)ptr);
+	ptr = getProc("glGetFramebufferAttachmentParameteriv", userData); set_glGetFramebufferAttachmentParameteriv((glGetFramebufferAttachmentParameteriv_client_proc_t)ptr);
+	ptr = getProc("glGetIntegerv", userData); set_glGetIntegerv((glGetIntegerv_client_proc_t)ptr);
+	ptr = getProc("glGetProgramiv", userData); set_glGetProgramiv((glGetProgramiv_client_proc_t)ptr);
+	ptr = getProc("glGetProgramInfoLog", userData); set_glGetProgramInfoLog((glGetProgramInfoLog_client_proc_t)ptr);
+	ptr = getProc("glGetRenderbufferParameteriv", userData); set_glGetRenderbufferParameteriv((glGetRenderbufferParameteriv_client_proc_t)ptr);
+	ptr = getProc("glGetShaderiv", userData); set_glGetShaderiv((glGetShaderiv_client_proc_t)ptr);
+	ptr = getProc("glGetShaderInfoLog", userData); set_glGetShaderInfoLog((glGetShaderInfoLog_client_proc_t)ptr);
+	ptr = getProc("glGetShaderPrecisionFormat", userData); set_glGetShaderPrecisionFormat((glGetShaderPrecisionFormat_client_proc_t)ptr);
+	ptr = getProc("glGetShaderSource", userData); set_glGetShaderSource((glGetShaderSource_client_proc_t)ptr);
+	ptr = getProc("glGetString", userData); set_glGetString((glGetString_client_proc_t)ptr);
+	ptr = getProc("glGetTexParameterfv", userData); set_glGetTexParameterfv((glGetTexParameterfv_client_proc_t)ptr);
+	ptr = getProc("glGetTexParameteriv", userData); set_glGetTexParameteriv((glGetTexParameteriv_client_proc_t)ptr);
+	ptr = getProc("glGetUniformfv", userData); set_glGetUniformfv((glGetUniformfv_client_proc_t)ptr);
+	ptr = getProc("glGetUniformiv", userData); set_glGetUniformiv((glGetUniformiv_client_proc_t)ptr);
+	ptr = getProc("glGetUniformLocation", userData); set_glGetUniformLocation((glGetUniformLocation_client_proc_t)ptr);
+	ptr = getProc("glGetVertexAttribfv", userData); set_glGetVertexAttribfv((glGetVertexAttribfv_client_proc_t)ptr);
+	ptr = getProc("glGetVertexAttribiv", userData); set_glGetVertexAttribiv((glGetVertexAttribiv_client_proc_t)ptr);
+	ptr = getProc("glGetVertexAttribPointerv", userData); set_glGetVertexAttribPointerv((glGetVertexAttribPointerv_client_proc_t)ptr);
+	ptr = getProc("glHint", userData); set_glHint((glHint_client_proc_t)ptr);
+	ptr = getProc("glIsBuffer", userData); set_glIsBuffer((glIsBuffer_client_proc_t)ptr);
+	ptr = getProc("glIsEnabled", userData); set_glIsEnabled((glIsEnabled_client_proc_t)ptr);
+	ptr = getProc("glIsFramebuffer", userData); set_glIsFramebuffer((glIsFramebuffer_client_proc_t)ptr);
+	ptr = getProc("glIsProgram", userData); set_glIsProgram((glIsProgram_client_proc_t)ptr);
+	ptr = getProc("glIsRenderbuffer", userData); set_glIsRenderbuffer((glIsRenderbuffer_client_proc_t)ptr);
+	ptr = getProc("glIsShader", userData); set_glIsShader((glIsShader_client_proc_t)ptr);
+	ptr = getProc("glIsTexture", userData); set_glIsTexture((glIsTexture_client_proc_t)ptr);
+	ptr = getProc("glLineWidth", userData); set_glLineWidth((glLineWidth_client_proc_t)ptr);
+	ptr = getProc("glLinkProgram", userData); set_glLinkProgram((glLinkProgram_client_proc_t)ptr);
+	ptr = getProc("glPixelStorei", userData); set_glPixelStorei((glPixelStorei_client_proc_t)ptr);
+	ptr = getProc("glPolygonOffset", userData); set_glPolygonOffset((glPolygonOffset_client_proc_t)ptr);
+	ptr = getProc("glReadPixels", userData); set_glReadPixels((glReadPixels_client_proc_t)ptr);
+	ptr = getProc("glReleaseShaderCompiler", userData); set_glReleaseShaderCompiler((glReleaseShaderCompiler_client_proc_t)ptr);
+	ptr = getProc("glRenderbufferStorage", userData); set_glRenderbufferStorage((glRenderbufferStorage_client_proc_t)ptr);
+	ptr = getProc("glSampleCoverage", userData); set_glSampleCoverage((glSampleCoverage_client_proc_t)ptr);
+	ptr = getProc("glScissor", userData); set_glScissor((glScissor_client_proc_t)ptr);
+	ptr = getProc("glShaderBinary", userData); set_glShaderBinary((glShaderBinary_client_proc_t)ptr);
+	ptr = getProc("glShaderSource", userData); set_glShaderSource((glShaderSource_client_proc_t)ptr);
+	ptr = getProc("glStencilFunc", userData); set_glStencilFunc((glStencilFunc_client_proc_t)ptr);
+	ptr = getProc("glStencilFuncSeparate", userData); set_glStencilFuncSeparate((glStencilFuncSeparate_client_proc_t)ptr);
+	ptr = getProc("glStencilMask", userData); set_glStencilMask((glStencilMask_client_proc_t)ptr);
+	ptr = getProc("glStencilMaskSeparate", userData); set_glStencilMaskSeparate((glStencilMaskSeparate_client_proc_t)ptr);
+	ptr = getProc("glStencilOp", userData); set_glStencilOp((glStencilOp_client_proc_t)ptr);
+	ptr = getProc("glStencilOpSeparate", userData); set_glStencilOpSeparate((glStencilOpSeparate_client_proc_t)ptr);
+	ptr = getProc("glTexImage2D", userData); set_glTexImage2D((glTexImage2D_client_proc_t)ptr);
+	ptr = getProc("glTexParameterf", userData); set_glTexParameterf((glTexParameterf_client_proc_t)ptr);
+	ptr = getProc("glTexParameterfv", userData); set_glTexParameterfv((glTexParameterfv_client_proc_t)ptr);
+	ptr = getProc("glTexParameteri", userData); set_glTexParameteri((glTexParameteri_client_proc_t)ptr);
+	ptr = getProc("glTexParameteriv", userData); set_glTexParameteriv((glTexParameteriv_client_proc_t)ptr);
+	ptr = getProc("glTexSubImage2D", userData); set_glTexSubImage2D((glTexSubImage2D_client_proc_t)ptr);
+	ptr = getProc("glUniform1f", userData); set_glUniform1f((glUniform1f_client_proc_t)ptr);
+	ptr = getProc("glUniform1fv", userData); set_glUniform1fv((glUniform1fv_client_proc_t)ptr);
+	ptr = getProc("glUniform1i", userData); set_glUniform1i((glUniform1i_client_proc_t)ptr);
+	ptr = getProc("glUniform1iv", userData); set_glUniform1iv((glUniform1iv_client_proc_t)ptr);
+	ptr = getProc("glUniform2f", userData); set_glUniform2f((glUniform2f_client_proc_t)ptr);
+	ptr = getProc("glUniform2fv", userData); set_glUniform2fv((glUniform2fv_client_proc_t)ptr);
+	ptr = getProc("glUniform2i", userData); set_glUniform2i((glUniform2i_client_proc_t)ptr);
+	ptr = getProc("glUniform2iv", userData); set_glUniform2iv((glUniform2iv_client_proc_t)ptr);
+	ptr = getProc("glUniform3f", userData); set_glUniform3f((glUniform3f_client_proc_t)ptr);
+	ptr = getProc("glUniform3fv", userData); set_glUniform3fv((glUniform3fv_client_proc_t)ptr);
+	ptr = getProc("glUniform3i", userData); set_glUniform3i((glUniform3i_client_proc_t)ptr);
+	ptr = getProc("glUniform3iv", userData); set_glUniform3iv((glUniform3iv_client_proc_t)ptr);
+	ptr = getProc("glUniform4f", userData); set_glUniform4f((glUniform4f_client_proc_t)ptr);
+	ptr = getProc("glUniform4fv", userData); set_glUniform4fv((glUniform4fv_client_proc_t)ptr);
+	ptr = getProc("glUniform4i", userData); set_glUniform4i((glUniform4i_client_proc_t)ptr);
+	ptr = getProc("glUniform4iv", userData); set_glUniform4iv((glUniform4iv_client_proc_t)ptr);
+	ptr = getProc("glUniformMatrix2fv", userData); set_glUniformMatrix2fv((glUniformMatrix2fv_client_proc_t)ptr);
+	ptr = getProc("glUniformMatrix3fv", userData); set_glUniformMatrix3fv((glUniformMatrix3fv_client_proc_t)ptr);
+	ptr = getProc("glUniformMatrix4fv", userData); set_glUniformMatrix4fv((glUniformMatrix4fv_client_proc_t)ptr);
+	ptr = getProc("glUseProgram", userData); set_glUseProgram((glUseProgram_client_proc_t)ptr);
+	ptr = getProc("glValidateProgram", userData); set_glValidateProgram((glValidateProgram_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib1f", userData); set_glVertexAttrib1f((glVertexAttrib1f_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib1fv", userData); set_glVertexAttrib1fv((glVertexAttrib1fv_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib2f", userData); set_glVertexAttrib2f((glVertexAttrib2f_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib2fv", userData); set_glVertexAttrib2fv((glVertexAttrib2fv_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib3f", userData); set_glVertexAttrib3f((glVertexAttrib3f_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib3fv", userData); set_glVertexAttrib3fv((glVertexAttrib3fv_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib4f", userData); set_glVertexAttrib4f((glVertexAttrib4f_client_proc_t)ptr);
+	ptr = getProc("glVertexAttrib4fv", userData); set_glVertexAttrib4fv((glVertexAttrib4fv_client_proc_t)ptr);
+	ptr = getProc("glVertexAttribPointer", userData); set_glVertexAttribPointer((glVertexAttribPointer_client_proc_t)ptr);
+	ptr = getProc("glViewport", userData); set_glViewport((glViewport_client_proc_t)ptr);
+	ptr = getProc("glEGLImageTargetTexture2DOES", userData); set_glEGLImageTargetTexture2DOES((glEGLImageTargetTexture2DOES_client_proc_t)ptr);
+	ptr = getProc("glEGLImageTargetRenderbufferStorageOES", userData); set_glEGLImageTargetRenderbufferStorageOES((glEGLImageTargetRenderbufferStorageOES_client_proc_t)ptr);
+	ptr = getProc("glGetProgramBinaryOES", userData); set_glGetProgramBinaryOES((glGetProgramBinaryOES_client_proc_t)ptr);
+	ptr = getProc("glProgramBinaryOES", userData); set_glProgramBinaryOES((glProgramBinaryOES_client_proc_t)ptr);
+	ptr = getProc("glMapBufferOES", userData); set_glMapBufferOES((glMapBufferOES_client_proc_t)ptr);
+	ptr = getProc("glUnmapBufferOES", userData); set_glUnmapBufferOES((glUnmapBufferOES_client_proc_t)ptr);
+	ptr = getProc("glTexImage3DOES", userData); set_glTexImage3DOES((glTexImage3DOES_client_proc_t)ptr);
+	ptr = getProc("glTexSubImage3DOES", userData); set_glTexSubImage3DOES((glTexSubImage3DOES_client_proc_t)ptr);
+	ptr = getProc("glCopyTexSubImage3DOES", userData); set_glCopyTexSubImage3DOES((glCopyTexSubImage3DOES_client_proc_t)ptr);
+	ptr = getProc("glCompressedTexImage3DOES", userData); set_glCompressedTexImage3DOES((glCompressedTexImage3DOES_client_proc_t)ptr);
+	ptr = getProc("glCompressedTexSubImage3DOES", userData); set_glCompressedTexSubImage3DOES((glCompressedTexSubImage3DOES_client_proc_t)ptr);
+	ptr = getProc("glFramebufferTexture3DOES", userData); set_glFramebufferTexture3DOES((glFramebufferTexture3DOES_client_proc_t)ptr);
+	ptr = getProc("glBindVertexArrayOES", userData); set_glBindVertexArrayOES((glBindVertexArrayOES_client_proc_t)ptr);
+	ptr = getProc("glDeleteVertexArraysOES", userData); set_glDeleteVertexArraysOES((glDeleteVertexArraysOES_client_proc_t)ptr);
+	ptr = getProc("glGenVertexArraysOES", userData); set_glGenVertexArraysOES((glGenVertexArraysOES_client_proc_t)ptr);
+	ptr = getProc("glIsVertexArrayOES", userData); set_glIsVertexArrayOES((glIsVertexArrayOES_client_proc_t)ptr);
+	ptr = getProc("glDiscardFramebufferEXT", userData); set_glDiscardFramebufferEXT((glDiscardFramebufferEXT_client_proc_t)ptr);
+	ptr = getProc("glMultiDrawArraysEXT", userData); set_glMultiDrawArraysEXT((glMultiDrawArraysEXT_client_proc_t)ptr);
+	ptr = getProc("glMultiDrawElementsEXT", userData); set_glMultiDrawElementsEXT((glMultiDrawElementsEXT_client_proc_t)ptr);
+	ptr = getProc("glGetPerfMonitorGroupsAMD", userData); set_glGetPerfMonitorGroupsAMD((glGetPerfMonitorGroupsAMD_client_proc_t)ptr);
+	ptr = getProc("glGetPerfMonitorCountersAMD", userData); set_glGetPerfMonitorCountersAMD((glGetPerfMonitorCountersAMD_client_proc_t)ptr);
+	ptr = getProc("glGetPerfMonitorGroupStringAMD", userData); set_glGetPerfMonitorGroupStringAMD((glGetPerfMonitorGroupStringAMD_client_proc_t)ptr);
+	ptr = getProc("glGetPerfMonitorCounterStringAMD", userData); set_glGetPerfMonitorCounterStringAMD((glGetPerfMonitorCounterStringAMD_client_proc_t)ptr);
+	ptr = getProc("glGetPerfMonitorCounterInfoAMD", userData); set_glGetPerfMonitorCounterInfoAMD((glGetPerfMonitorCounterInfoAMD_client_proc_t)ptr);
+	ptr = getProc("glGenPerfMonitorsAMD", userData); set_glGenPerfMonitorsAMD((glGenPerfMonitorsAMD_client_proc_t)ptr);
+	ptr = getProc("glDeletePerfMonitorsAMD", userData); set_glDeletePerfMonitorsAMD((glDeletePerfMonitorsAMD_client_proc_t)ptr);
+	ptr = getProc("glSelectPerfMonitorCountersAMD", userData); set_glSelectPerfMonitorCountersAMD((glSelectPerfMonitorCountersAMD_client_proc_t)ptr);
+	ptr = getProc("glBeginPerfMonitorAMD", userData); set_glBeginPerfMonitorAMD((glBeginPerfMonitorAMD_client_proc_t)ptr);
+	ptr = getProc("glEndPerfMonitorAMD", userData); set_glEndPerfMonitorAMD((glEndPerfMonitorAMD_client_proc_t)ptr);
+	ptr = getProc("glGetPerfMonitorCounterDataAMD", userData); set_glGetPerfMonitorCounterDataAMD((glGetPerfMonitorCounterDataAMD_client_proc_t)ptr);
+	ptr = getProc("glRenderbufferStorageMultisampleIMG", userData); set_glRenderbufferStorageMultisampleIMG((glRenderbufferStorageMultisampleIMG_client_proc_t)ptr);
+	ptr = getProc("glFramebufferTexture2DMultisampleIMG", userData); set_glFramebufferTexture2DMultisampleIMG((glFramebufferTexture2DMultisampleIMG_client_proc_t)ptr);
+	ptr = getProc("glDeleteFencesNV", userData); set_glDeleteFencesNV((glDeleteFencesNV_client_proc_t)ptr);
+	ptr = getProc("glGenFencesNV", userData); set_glGenFencesNV((glGenFencesNV_client_proc_t)ptr);
+	ptr = getProc("glIsFenceNV", userData); set_glIsFenceNV((glIsFenceNV_client_proc_t)ptr);
+	ptr = getProc("glTestFenceNV", userData); set_glTestFenceNV((glTestFenceNV_client_proc_t)ptr);
+	ptr = getProc("glGetFenceivNV", userData); set_glGetFenceivNV((glGetFenceivNV_client_proc_t)ptr);
+	ptr = getProc("glFinishFenceNV", userData); set_glFinishFenceNV((glFinishFenceNV_client_proc_t)ptr);
+	ptr = getProc("glSetFenceNV", userData); set_glSetFenceNV((glSetFenceNV_client_proc_t)ptr);
+	ptr = getProc("glCoverageMaskNV", userData); set_glCoverageMaskNV((glCoverageMaskNV_client_proc_t)ptr);
+	ptr = getProc("glCoverageOperationNV", userData); set_glCoverageOperationNV((glCoverageOperationNV_client_proc_t)ptr);
+	ptr = getProc("glGetDriverControlsQCOM", userData); set_glGetDriverControlsQCOM((glGetDriverControlsQCOM_client_proc_t)ptr);
+	ptr = getProc("glGetDriverControlStringQCOM", userData); set_glGetDriverControlStringQCOM((glGetDriverControlStringQCOM_client_proc_t)ptr);
+	ptr = getProc("glEnableDriverControlQCOM", userData); set_glEnableDriverControlQCOM((glEnableDriverControlQCOM_client_proc_t)ptr);
+	ptr = getProc("glDisableDriverControlQCOM", userData); set_glDisableDriverControlQCOM((glDisableDriverControlQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetTexturesQCOM", userData); set_glExtGetTexturesQCOM((glExtGetTexturesQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetBuffersQCOM", userData); set_glExtGetBuffersQCOM((glExtGetBuffersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetRenderbuffersQCOM", userData); set_glExtGetRenderbuffersQCOM((glExtGetRenderbuffersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetFramebuffersQCOM", userData); set_glExtGetFramebuffersQCOM((glExtGetFramebuffersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetTexLevelParameterivQCOM", userData); set_glExtGetTexLevelParameterivQCOM((glExtGetTexLevelParameterivQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtTexObjectStateOverrideiQCOM", userData); set_glExtTexObjectStateOverrideiQCOM((glExtTexObjectStateOverrideiQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetTexSubImageQCOM", userData); set_glExtGetTexSubImageQCOM((glExtGetTexSubImageQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetBufferPointervQCOM", userData); set_glExtGetBufferPointervQCOM((glExtGetBufferPointervQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetShadersQCOM", userData); set_glExtGetShadersQCOM((glExtGetShadersQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetProgramsQCOM", userData); set_glExtGetProgramsQCOM((glExtGetProgramsQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtIsProgramBinaryQCOM", userData); set_glExtIsProgramBinaryQCOM((glExtIsProgramBinaryQCOM_client_proc_t)ptr);
+	ptr = getProc("glExtGetProgramBinarySourceQCOM", userData); set_glExtGetProgramBinarySourceQCOM((glExtGetProgramBinarySourceQCOM_client_proc_t)ptr);
+	ptr = getProc("glStartTilingQCOM", userData); set_glStartTilingQCOM((glStartTilingQCOM_client_proc_t)ptr);
+	ptr = getProc("glEndTilingQCOM", userData); set_glEndTilingQCOM((glEndTilingQCOM_client_proc_t)ptr);
+	ptr = getProc("glVertexAttribPointerData", userData); set_glVertexAttribPointerData((glVertexAttribPointerData_client_proc_t)ptr);
+	ptr = getProc("glVertexAttribPointerOffset", userData); set_glVertexAttribPointerOffset((glVertexAttribPointerOffset_client_proc_t)ptr);
+	ptr = getProc("glDrawElementsOffset", userData); set_glDrawElementsOffset((glDrawElementsOffset_client_proc_t)ptr);
+	ptr = getProc("glDrawElementsData", userData); set_glDrawElementsData((glDrawElementsData_client_proc_t)ptr);
+	ptr = getProc("glGetCompressedTextureFormats", userData); set_glGetCompressedTextureFormats((glGetCompressedTextureFormats_client_proc_t)ptr);
+	ptr = getProc("glShaderString", userData); set_glShaderString((glShaderString_client_proc_t)ptr);
+	ptr = getProc("glFinishRoundTrip", userData); set_glFinishRoundTrip((glFinishRoundTrip_client_proc_t)ptr);
+	return 0;
+}
+
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_client_context.h b/tools/emulator/opengl/system/GLESv2_enc/gl2_client_context.h
new file mode 100644
index 0000000..7f0abcd
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_client_context.h
@@ -0,0 +1,437 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __gl2_client_context_t_h
+#define __gl2_client_context_t_h
+
+#include "gl2_client_proc.h"
+
+
+struct gl2_client_context_t {
+
+	glActiveTexture_client_proc_t glActiveTexture;
+	glAttachShader_client_proc_t glAttachShader;
+	glBindAttribLocation_client_proc_t glBindAttribLocation;
+	glBindBuffer_client_proc_t glBindBuffer;
+	glBindFramebuffer_client_proc_t glBindFramebuffer;
+	glBindRenderbuffer_client_proc_t glBindRenderbuffer;
+	glBindTexture_client_proc_t glBindTexture;
+	glBlendColor_client_proc_t glBlendColor;
+	glBlendEquation_client_proc_t glBlendEquation;
+	glBlendEquationSeparate_client_proc_t glBlendEquationSeparate;
+	glBlendFunc_client_proc_t glBlendFunc;
+	glBlendFuncSeparate_client_proc_t glBlendFuncSeparate;
+	glBufferData_client_proc_t glBufferData;
+	glBufferSubData_client_proc_t glBufferSubData;
+	glCheckFramebufferStatus_client_proc_t glCheckFramebufferStatus;
+	glClear_client_proc_t glClear;
+	glClearColor_client_proc_t glClearColor;
+	glClearDepthf_client_proc_t glClearDepthf;
+	glClearStencil_client_proc_t glClearStencil;
+	glColorMask_client_proc_t glColorMask;
+	glCompileShader_client_proc_t glCompileShader;
+	glCompressedTexImage2D_client_proc_t glCompressedTexImage2D;
+	glCompressedTexSubImage2D_client_proc_t glCompressedTexSubImage2D;
+	glCopyTexImage2D_client_proc_t glCopyTexImage2D;
+	glCopyTexSubImage2D_client_proc_t glCopyTexSubImage2D;
+	glCreateProgram_client_proc_t glCreateProgram;
+	glCreateShader_client_proc_t glCreateShader;
+	glCullFace_client_proc_t glCullFace;
+	glDeleteBuffers_client_proc_t glDeleteBuffers;
+	glDeleteFramebuffers_client_proc_t glDeleteFramebuffers;
+	glDeleteProgram_client_proc_t glDeleteProgram;
+	glDeleteRenderbuffers_client_proc_t glDeleteRenderbuffers;
+	glDeleteShader_client_proc_t glDeleteShader;
+	glDeleteTextures_client_proc_t glDeleteTextures;
+	glDepthFunc_client_proc_t glDepthFunc;
+	glDepthMask_client_proc_t glDepthMask;
+	glDepthRangef_client_proc_t glDepthRangef;
+	glDetachShader_client_proc_t glDetachShader;
+	glDisable_client_proc_t glDisable;
+	glDisableVertexAttribArray_client_proc_t glDisableVertexAttribArray;
+	glDrawArrays_client_proc_t glDrawArrays;
+	glDrawElements_client_proc_t glDrawElements;
+	glEnable_client_proc_t glEnable;
+	glEnableVertexAttribArray_client_proc_t glEnableVertexAttribArray;
+	glFinish_client_proc_t glFinish;
+	glFlush_client_proc_t glFlush;
+	glFramebufferRenderbuffer_client_proc_t glFramebufferRenderbuffer;
+	glFramebufferTexture2D_client_proc_t glFramebufferTexture2D;
+	glFrontFace_client_proc_t glFrontFace;
+	glGenBuffers_client_proc_t glGenBuffers;
+	glGenerateMipmap_client_proc_t glGenerateMipmap;
+	glGenFramebuffers_client_proc_t glGenFramebuffers;
+	glGenRenderbuffers_client_proc_t glGenRenderbuffers;
+	glGenTextures_client_proc_t glGenTextures;
+	glGetActiveAttrib_client_proc_t glGetActiveAttrib;
+	glGetActiveUniform_client_proc_t glGetActiveUniform;
+	glGetAttachedShaders_client_proc_t glGetAttachedShaders;
+	glGetAttribLocation_client_proc_t glGetAttribLocation;
+	glGetBooleanv_client_proc_t glGetBooleanv;
+	glGetBufferParameteriv_client_proc_t glGetBufferParameteriv;
+	glGetError_client_proc_t glGetError;
+	glGetFloatv_client_proc_t glGetFloatv;
+	glGetFramebufferAttachmentParameteriv_client_proc_t glGetFramebufferAttachmentParameteriv;
+	glGetIntegerv_client_proc_t glGetIntegerv;
+	glGetProgramiv_client_proc_t glGetProgramiv;
+	glGetProgramInfoLog_client_proc_t glGetProgramInfoLog;
+	glGetRenderbufferParameteriv_client_proc_t glGetRenderbufferParameteriv;
+	glGetShaderiv_client_proc_t glGetShaderiv;
+	glGetShaderInfoLog_client_proc_t glGetShaderInfoLog;
+	glGetShaderPrecisionFormat_client_proc_t glGetShaderPrecisionFormat;
+	glGetShaderSource_client_proc_t glGetShaderSource;
+	glGetString_client_proc_t glGetString;
+	glGetTexParameterfv_client_proc_t glGetTexParameterfv;
+	glGetTexParameteriv_client_proc_t glGetTexParameteriv;
+	glGetUniformfv_client_proc_t glGetUniformfv;
+	glGetUniformiv_client_proc_t glGetUniformiv;
+	glGetUniformLocation_client_proc_t glGetUniformLocation;
+	glGetVertexAttribfv_client_proc_t glGetVertexAttribfv;
+	glGetVertexAttribiv_client_proc_t glGetVertexAttribiv;
+	glGetVertexAttribPointerv_client_proc_t glGetVertexAttribPointerv;
+	glHint_client_proc_t glHint;
+	glIsBuffer_client_proc_t glIsBuffer;
+	glIsEnabled_client_proc_t glIsEnabled;
+	glIsFramebuffer_client_proc_t glIsFramebuffer;
+	glIsProgram_client_proc_t glIsProgram;
+	glIsRenderbuffer_client_proc_t glIsRenderbuffer;
+	glIsShader_client_proc_t glIsShader;
+	glIsTexture_client_proc_t glIsTexture;
+	glLineWidth_client_proc_t glLineWidth;
+	glLinkProgram_client_proc_t glLinkProgram;
+	glPixelStorei_client_proc_t glPixelStorei;
+	glPolygonOffset_client_proc_t glPolygonOffset;
+	glReadPixels_client_proc_t glReadPixels;
+	glReleaseShaderCompiler_client_proc_t glReleaseShaderCompiler;
+	glRenderbufferStorage_client_proc_t glRenderbufferStorage;
+	glSampleCoverage_client_proc_t glSampleCoverage;
+	glScissor_client_proc_t glScissor;
+	glShaderBinary_client_proc_t glShaderBinary;
+	glShaderSource_client_proc_t glShaderSource;
+	glStencilFunc_client_proc_t glStencilFunc;
+	glStencilFuncSeparate_client_proc_t glStencilFuncSeparate;
+	glStencilMask_client_proc_t glStencilMask;
+	glStencilMaskSeparate_client_proc_t glStencilMaskSeparate;
+	glStencilOp_client_proc_t glStencilOp;
+	glStencilOpSeparate_client_proc_t glStencilOpSeparate;
+	glTexImage2D_client_proc_t glTexImage2D;
+	glTexParameterf_client_proc_t glTexParameterf;
+	glTexParameterfv_client_proc_t glTexParameterfv;
+	glTexParameteri_client_proc_t glTexParameteri;
+	glTexParameteriv_client_proc_t glTexParameteriv;
+	glTexSubImage2D_client_proc_t glTexSubImage2D;
+	glUniform1f_client_proc_t glUniform1f;
+	glUniform1fv_client_proc_t glUniform1fv;
+	glUniform1i_client_proc_t glUniform1i;
+	glUniform1iv_client_proc_t glUniform1iv;
+	glUniform2f_client_proc_t glUniform2f;
+	glUniform2fv_client_proc_t glUniform2fv;
+	glUniform2i_client_proc_t glUniform2i;
+	glUniform2iv_client_proc_t glUniform2iv;
+	glUniform3f_client_proc_t glUniform3f;
+	glUniform3fv_client_proc_t glUniform3fv;
+	glUniform3i_client_proc_t glUniform3i;
+	glUniform3iv_client_proc_t glUniform3iv;
+	glUniform4f_client_proc_t glUniform4f;
+	glUniform4fv_client_proc_t glUniform4fv;
+	glUniform4i_client_proc_t glUniform4i;
+	glUniform4iv_client_proc_t glUniform4iv;
+	glUniformMatrix2fv_client_proc_t glUniformMatrix2fv;
+	glUniformMatrix3fv_client_proc_t glUniformMatrix3fv;
+	glUniformMatrix4fv_client_proc_t glUniformMatrix4fv;
+	glUseProgram_client_proc_t glUseProgram;
+	glValidateProgram_client_proc_t glValidateProgram;
+	glVertexAttrib1f_client_proc_t glVertexAttrib1f;
+	glVertexAttrib1fv_client_proc_t glVertexAttrib1fv;
+	glVertexAttrib2f_client_proc_t glVertexAttrib2f;
+	glVertexAttrib2fv_client_proc_t glVertexAttrib2fv;
+	glVertexAttrib3f_client_proc_t glVertexAttrib3f;
+	glVertexAttrib3fv_client_proc_t glVertexAttrib3fv;
+	glVertexAttrib4f_client_proc_t glVertexAttrib4f;
+	glVertexAttrib4fv_client_proc_t glVertexAttrib4fv;
+	glVertexAttribPointer_client_proc_t glVertexAttribPointer;
+	glViewport_client_proc_t glViewport;
+	glEGLImageTargetTexture2DOES_client_proc_t glEGLImageTargetTexture2DOES;
+	glEGLImageTargetRenderbufferStorageOES_client_proc_t glEGLImageTargetRenderbufferStorageOES;
+	glGetProgramBinaryOES_client_proc_t glGetProgramBinaryOES;
+	glProgramBinaryOES_client_proc_t glProgramBinaryOES;
+	glMapBufferOES_client_proc_t glMapBufferOES;
+	glUnmapBufferOES_client_proc_t glUnmapBufferOES;
+	glTexImage3DOES_client_proc_t glTexImage3DOES;
+	glTexSubImage3DOES_client_proc_t glTexSubImage3DOES;
+	glCopyTexSubImage3DOES_client_proc_t glCopyTexSubImage3DOES;
+	glCompressedTexImage3DOES_client_proc_t glCompressedTexImage3DOES;
+	glCompressedTexSubImage3DOES_client_proc_t glCompressedTexSubImage3DOES;
+	glFramebufferTexture3DOES_client_proc_t glFramebufferTexture3DOES;
+	glBindVertexArrayOES_client_proc_t glBindVertexArrayOES;
+	glDeleteVertexArraysOES_client_proc_t glDeleteVertexArraysOES;
+	glGenVertexArraysOES_client_proc_t glGenVertexArraysOES;
+	glIsVertexArrayOES_client_proc_t glIsVertexArrayOES;
+	glDiscardFramebufferEXT_client_proc_t glDiscardFramebufferEXT;
+	glMultiDrawArraysEXT_client_proc_t glMultiDrawArraysEXT;
+	glMultiDrawElementsEXT_client_proc_t glMultiDrawElementsEXT;
+	glGetPerfMonitorGroupsAMD_client_proc_t glGetPerfMonitorGroupsAMD;
+	glGetPerfMonitorCountersAMD_client_proc_t glGetPerfMonitorCountersAMD;
+	glGetPerfMonitorGroupStringAMD_client_proc_t glGetPerfMonitorGroupStringAMD;
+	glGetPerfMonitorCounterStringAMD_client_proc_t glGetPerfMonitorCounterStringAMD;
+	glGetPerfMonitorCounterInfoAMD_client_proc_t glGetPerfMonitorCounterInfoAMD;
+	glGenPerfMonitorsAMD_client_proc_t glGenPerfMonitorsAMD;
+	glDeletePerfMonitorsAMD_client_proc_t glDeletePerfMonitorsAMD;
+	glSelectPerfMonitorCountersAMD_client_proc_t glSelectPerfMonitorCountersAMD;
+	glBeginPerfMonitorAMD_client_proc_t glBeginPerfMonitorAMD;
+	glEndPerfMonitorAMD_client_proc_t glEndPerfMonitorAMD;
+	glGetPerfMonitorCounterDataAMD_client_proc_t glGetPerfMonitorCounterDataAMD;
+	glRenderbufferStorageMultisampleIMG_client_proc_t glRenderbufferStorageMultisampleIMG;
+	glFramebufferTexture2DMultisampleIMG_client_proc_t glFramebufferTexture2DMultisampleIMG;
+	glDeleteFencesNV_client_proc_t glDeleteFencesNV;
+	glGenFencesNV_client_proc_t glGenFencesNV;
+	glIsFenceNV_client_proc_t glIsFenceNV;
+	glTestFenceNV_client_proc_t glTestFenceNV;
+	glGetFenceivNV_client_proc_t glGetFenceivNV;
+	glFinishFenceNV_client_proc_t glFinishFenceNV;
+	glSetFenceNV_client_proc_t glSetFenceNV;
+	glCoverageMaskNV_client_proc_t glCoverageMaskNV;
+	glCoverageOperationNV_client_proc_t glCoverageOperationNV;
+	glGetDriverControlsQCOM_client_proc_t glGetDriverControlsQCOM;
+	glGetDriverControlStringQCOM_client_proc_t glGetDriverControlStringQCOM;
+	glEnableDriverControlQCOM_client_proc_t glEnableDriverControlQCOM;
+	glDisableDriverControlQCOM_client_proc_t glDisableDriverControlQCOM;
+	glExtGetTexturesQCOM_client_proc_t glExtGetTexturesQCOM;
+	glExtGetBuffersQCOM_client_proc_t glExtGetBuffersQCOM;
+	glExtGetRenderbuffersQCOM_client_proc_t glExtGetRenderbuffersQCOM;
+	glExtGetFramebuffersQCOM_client_proc_t glExtGetFramebuffersQCOM;
+	glExtGetTexLevelParameterivQCOM_client_proc_t glExtGetTexLevelParameterivQCOM;
+	glExtTexObjectStateOverrideiQCOM_client_proc_t glExtTexObjectStateOverrideiQCOM;
+	glExtGetTexSubImageQCOM_client_proc_t glExtGetTexSubImageQCOM;
+	glExtGetBufferPointervQCOM_client_proc_t glExtGetBufferPointervQCOM;
+	glExtGetShadersQCOM_client_proc_t glExtGetShadersQCOM;
+	glExtGetProgramsQCOM_client_proc_t glExtGetProgramsQCOM;
+	glExtIsProgramBinaryQCOM_client_proc_t glExtIsProgramBinaryQCOM;
+	glExtGetProgramBinarySourceQCOM_client_proc_t glExtGetProgramBinarySourceQCOM;
+	glStartTilingQCOM_client_proc_t glStartTilingQCOM;
+	glEndTilingQCOM_client_proc_t glEndTilingQCOM;
+	glVertexAttribPointerData_client_proc_t glVertexAttribPointerData;
+	glVertexAttribPointerOffset_client_proc_t glVertexAttribPointerOffset;
+	glDrawElementsOffset_client_proc_t glDrawElementsOffset;
+	glDrawElementsData_client_proc_t glDrawElementsData;
+	glGetCompressedTextureFormats_client_proc_t glGetCompressedTextureFormats;
+	glShaderString_client_proc_t glShaderString;
+	glFinishRoundTrip_client_proc_t glFinishRoundTrip;
+	//Accessors 
+	virtual glActiveTexture_client_proc_t set_glActiveTexture(glActiveTexture_client_proc_t f) { glActiveTexture_client_proc_t retval = glActiveTexture; glActiveTexture = f; return retval;}
+	virtual glAttachShader_client_proc_t set_glAttachShader(glAttachShader_client_proc_t f) { glAttachShader_client_proc_t retval = glAttachShader; glAttachShader = f; return retval;}
+	virtual glBindAttribLocation_client_proc_t set_glBindAttribLocation(glBindAttribLocation_client_proc_t f) { glBindAttribLocation_client_proc_t retval = glBindAttribLocation; glBindAttribLocation = f; return retval;}
+	virtual glBindBuffer_client_proc_t set_glBindBuffer(glBindBuffer_client_proc_t f) { glBindBuffer_client_proc_t retval = glBindBuffer; glBindBuffer = f; return retval;}
+	virtual glBindFramebuffer_client_proc_t set_glBindFramebuffer(glBindFramebuffer_client_proc_t f) { glBindFramebuffer_client_proc_t retval = glBindFramebuffer; glBindFramebuffer = f; return retval;}
+	virtual glBindRenderbuffer_client_proc_t set_glBindRenderbuffer(glBindRenderbuffer_client_proc_t f) { glBindRenderbuffer_client_proc_t retval = glBindRenderbuffer; glBindRenderbuffer = f; return retval;}
+	virtual glBindTexture_client_proc_t set_glBindTexture(glBindTexture_client_proc_t f) { glBindTexture_client_proc_t retval = glBindTexture; glBindTexture = f; return retval;}
+	virtual glBlendColor_client_proc_t set_glBlendColor(glBlendColor_client_proc_t f) { glBlendColor_client_proc_t retval = glBlendColor; glBlendColor = f; return retval;}
+	virtual glBlendEquation_client_proc_t set_glBlendEquation(glBlendEquation_client_proc_t f) { glBlendEquation_client_proc_t retval = glBlendEquation; glBlendEquation = f; return retval;}
+	virtual glBlendEquationSeparate_client_proc_t set_glBlendEquationSeparate(glBlendEquationSeparate_client_proc_t f) { glBlendEquationSeparate_client_proc_t retval = glBlendEquationSeparate; glBlendEquationSeparate = f; return retval;}
+	virtual glBlendFunc_client_proc_t set_glBlendFunc(glBlendFunc_client_proc_t f) { glBlendFunc_client_proc_t retval = glBlendFunc; glBlendFunc = f; return retval;}
+	virtual glBlendFuncSeparate_client_proc_t set_glBlendFuncSeparate(glBlendFuncSeparate_client_proc_t f) { glBlendFuncSeparate_client_proc_t retval = glBlendFuncSeparate; glBlendFuncSeparate = f; return retval;}
+	virtual glBufferData_client_proc_t set_glBufferData(glBufferData_client_proc_t f) { glBufferData_client_proc_t retval = glBufferData; glBufferData = f; return retval;}
+	virtual glBufferSubData_client_proc_t set_glBufferSubData(glBufferSubData_client_proc_t f) { glBufferSubData_client_proc_t retval = glBufferSubData; glBufferSubData = f; return retval;}
+	virtual glCheckFramebufferStatus_client_proc_t set_glCheckFramebufferStatus(glCheckFramebufferStatus_client_proc_t f) { glCheckFramebufferStatus_client_proc_t retval = glCheckFramebufferStatus; glCheckFramebufferStatus = f; return retval;}
+	virtual glClear_client_proc_t set_glClear(glClear_client_proc_t f) { glClear_client_proc_t retval = glClear; glClear = f; return retval;}
+	virtual glClearColor_client_proc_t set_glClearColor(glClearColor_client_proc_t f) { glClearColor_client_proc_t retval = glClearColor; glClearColor = f; return retval;}
+	virtual glClearDepthf_client_proc_t set_glClearDepthf(glClearDepthf_client_proc_t f) { glClearDepthf_client_proc_t retval = glClearDepthf; glClearDepthf = f; return retval;}
+	virtual glClearStencil_client_proc_t set_glClearStencil(glClearStencil_client_proc_t f) { glClearStencil_client_proc_t retval = glClearStencil; glClearStencil = f; return retval;}
+	virtual glColorMask_client_proc_t set_glColorMask(glColorMask_client_proc_t f) { glColorMask_client_proc_t retval = glColorMask; glColorMask = f; return retval;}
+	virtual glCompileShader_client_proc_t set_glCompileShader(glCompileShader_client_proc_t f) { glCompileShader_client_proc_t retval = glCompileShader; glCompileShader = f; return retval;}
+	virtual glCompressedTexImage2D_client_proc_t set_glCompressedTexImage2D(glCompressedTexImage2D_client_proc_t f) { glCompressedTexImage2D_client_proc_t retval = glCompressedTexImage2D; glCompressedTexImage2D = f; return retval;}
+	virtual glCompressedTexSubImage2D_client_proc_t set_glCompressedTexSubImage2D(glCompressedTexSubImage2D_client_proc_t f) { glCompressedTexSubImage2D_client_proc_t retval = glCompressedTexSubImage2D; glCompressedTexSubImage2D = f; return retval;}
+	virtual glCopyTexImage2D_client_proc_t set_glCopyTexImage2D(glCopyTexImage2D_client_proc_t f) { glCopyTexImage2D_client_proc_t retval = glCopyTexImage2D; glCopyTexImage2D = f; return retval;}
+	virtual glCopyTexSubImage2D_client_proc_t set_glCopyTexSubImage2D(glCopyTexSubImage2D_client_proc_t f) { glCopyTexSubImage2D_client_proc_t retval = glCopyTexSubImage2D; glCopyTexSubImage2D = f; return retval;}
+	virtual glCreateProgram_client_proc_t set_glCreateProgram(glCreateProgram_client_proc_t f) { glCreateProgram_client_proc_t retval = glCreateProgram; glCreateProgram = f; return retval;}
+	virtual glCreateShader_client_proc_t set_glCreateShader(glCreateShader_client_proc_t f) { glCreateShader_client_proc_t retval = glCreateShader; glCreateShader = f; return retval;}
+	virtual glCullFace_client_proc_t set_glCullFace(glCullFace_client_proc_t f) { glCullFace_client_proc_t retval = glCullFace; glCullFace = f; return retval;}
+	virtual glDeleteBuffers_client_proc_t set_glDeleteBuffers(glDeleteBuffers_client_proc_t f) { glDeleteBuffers_client_proc_t retval = glDeleteBuffers; glDeleteBuffers = f; return retval;}
+	virtual glDeleteFramebuffers_client_proc_t set_glDeleteFramebuffers(glDeleteFramebuffers_client_proc_t f) { glDeleteFramebuffers_client_proc_t retval = glDeleteFramebuffers; glDeleteFramebuffers = f; return retval;}
+	virtual glDeleteProgram_client_proc_t set_glDeleteProgram(glDeleteProgram_client_proc_t f) { glDeleteProgram_client_proc_t retval = glDeleteProgram; glDeleteProgram = f; return retval;}
+	virtual glDeleteRenderbuffers_client_proc_t set_glDeleteRenderbuffers(glDeleteRenderbuffers_client_proc_t f) { glDeleteRenderbuffers_client_proc_t retval = glDeleteRenderbuffers; glDeleteRenderbuffers = f; return retval;}
+	virtual glDeleteShader_client_proc_t set_glDeleteShader(glDeleteShader_client_proc_t f) { glDeleteShader_client_proc_t retval = glDeleteShader; glDeleteShader = f; return retval;}
+	virtual glDeleteTextures_client_proc_t set_glDeleteTextures(glDeleteTextures_client_proc_t f) { glDeleteTextures_client_proc_t retval = glDeleteTextures; glDeleteTextures = f; return retval;}
+	virtual glDepthFunc_client_proc_t set_glDepthFunc(glDepthFunc_client_proc_t f) { glDepthFunc_client_proc_t retval = glDepthFunc; glDepthFunc = f; return retval;}
+	virtual glDepthMask_client_proc_t set_glDepthMask(glDepthMask_client_proc_t f) { glDepthMask_client_proc_t retval = glDepthMask; glDepthMask = f; return retval;}
+	virtual glDepthRangef_client_proc_t set_glDepthRangef(glDepthRangef_client_proc_t f) { glDepthRangef_client_proc_t retval = glDepthRangef; glDepthRangef = f; return retval;}
+	virtual glDetachShader_client_proc_t set_glDetachShader(glDetachShader_client_proc_t f) { glDetachShader_client_proc_t retval = glDetachShader; glDetachShader = f; return retval;}
+	virtual glDisable_client_proc_t set_glDisable(glDisable_client_proc_t f) { glDisable_client_proc_t retval = glDisable; glDisable = f; return retval;}
+	virtual glDisableVertexAttribArray_client_proc_t set_glDisableVertexAttribArray(glDisableVertexAttribArray_client_proc_t f) { glDisableVertexAttribArray_client_proc_t retval = glDisableVertexAttribArray; glDisableVertexAttribArray = f; return retval;}
+	virtual glDrawArrays_client_proc_t set_glDrawArrays(glDrawArrays_client_proc_t f) { glDrawArrays_client_proc_t retval = glDrawArrays; glDrawArrays = f; return retval;}
+	virtual glDrawElements_client_proc_t set_glDrawElements(glDrawElements_client_proc_t f) { glDrawElements_client_proc_t retval = glDrawElements; glDrawElements = f; return retval;}
+	virtual glEnable_client_proc_t set_glEnable(glEnable_client_proc_t f) { glEnable_client_proc_t retval = glEnable; glEnable = f; return retval;}
+	virtual glEnableVertexAttribArray_client_proc_t set_glEnableVertexAttribArray(glEnableVertexAttribArray_client_proc_t f) { glEnableVertexAttribArray_client_proc_t retval = glEnableVertexAttribArray; glEnableVertexAttribArray = f; return retval;}
+	virtual glFinish_client_proc_t set_glFinish(glFinish_client_proc_t f) { glFinish_client_proc_t retval = glFinish; glFinish = f; return retval;}
+	virtual glFlush_client_proc_t set_glFlush(glFlush_client_proc_t f) { glFlush_client_proc_t retval = glFlush; glFlush = f; return retval;}
+	virtual glFramebufferRenderbuffer_client_proc_t set_glFramebufferRenderbuffer(glFramebufferRenderbuffer_client_proc_t f) { glFramebufferRenderbuffer_client_proc_t retval = glFramebufferRenderbuffer; glFramebufferRenderbuffer = f; return retval;}
+	virtual glFramebufferTexture2D_client_proc_t set_glFramebufferTexture2D(glFramebufferTexture2D_client_proc_t f) { glFramebufferTexture2D_client_proc_t retval = glFramebufferTexture2D; glFramebufferTexture2D = f; return retval;}
+	virtual glFrontFace_client_proc_t set_glFrontFace(glFrontFace_client_proc_t f) { glFrontFace_client_proc_t retval = glFrontFace; glFrontFace = f; return retval;}
+	virtual glGenBuffers_client_proc_t set_glGenBuffers(glGenBuffers_client_proc_t f) { glGenBuffers_client_proc_t retval = glGenBuffers; glGenBuffers = f; return retval;}
+	virtual glGenerateMipmap_client_proc_t set_glGenerateMipmap(glGenerateMipmap_client_proc_t f) { glGenerateMipmap_client_proc_t retval = glGenerateMipmap; glGenerateMipmap = f; return retval;}
+	virtual glGenFramebuffers_client_proc_t set_glGenFramebuffers(glGenFramebuffers_client_proc_t f) { glGenFramebuffers_client_proc_t retval = glGenFramebuffers; glGenFramebuffers = f; return retval;}
+	virtual glGenRenderbuffers_client_proc_t set_glGenRenderbuffers(glGenRenderbuffers_client_proc_t f) { glGenRenderbuffers_client_proc_t retval = glGenRenderbuffers; glGenRenderbuffers = f; return retval;}
+	virtual glGenTextures_client_proc_t set_glGenTextures(glGenTextures_client_proc_t f) { glGenTextures_client_proc_t retval = glGenTextures; glGenTextures = f; return retval;}
+	virtual glGetActiveAttrib_client_proc_t set_glGetActiveAttrib(glGetActiveAttrib_client_proc_t f) { glGetActiveAttrib_client_proc_t retval = glGetActiveAttrib; glGetActiveAttrib = f; return retval;}
+	virtual glGetActiveUniform_client_proc_t set_glGetActiveUniform(glGetActiveUniform_client_proc_t f) { glGetActiveUniform_client_proc_t retval = glGetActiveUniform; glGetActiveUniform = f; return retval;}
+	virtual glGetAttachedShaders_client_proc_t set_glGetAttachedShaders(glGetAttachedShaders_client_proc_t f) { glGetAttachedShaders_client_proc_t retval = glGetAttachedShaders; glGetAttachedShaders = f; return retval;}
+	virtual glGetAttribLocation_client_proc_t set_glGetAttribLocation(glGetAttribLocation_client_proc_t f) { glGetAttribLocation_client_proc_t retval = glGetAttribLocation; glGetAttribLocation = f; return retval;}
+	virtual glGetBooleanv_client_proc_t set_glGetBooleanv(glGetBooleanv_client_proc_t f) { glGetBooleanv_client_proc_t retval = glGetBooleanv; glGetBooleanv = f; return retval;}
+	virtual glGetBufferParameteriv_client_proc_t set_glGetBufferParameteriv(glGetBufferParameteriv_client_proc_t f) { glGetBufferParameteriv_client_proc_t retval = glGetBufferParameteriv; glGetBufferParameteriv = f; return retval;}
+	virtual glGetError_client_proc_t set_glGetError(glGetError_client_proc_t f) { glGetError_client_proc_t retval = glGetError; glGetError = f; return retval;}
+	virtual glGetFloatv_client_proc_t set_glGetFloatv(glGetFloatv_client_proc_t f) { glGetFloatv_client_proc_t retval = glGetFloatv; glGetFloatv = f; return retval;}
+	virtual glGetFramebufferAttachmentParameteriv_client_proc_t set_glGetFramebufferAttachmentParameteriv(glGetFramebufferAttachmentParameteriv_client_proc_t f) { glGetFramebufferAttachmentParameteriv_client_proc_t retval = glGetFramebufferAttachmentParameteriv; glGetFramebufferAttachmentParameteriv = f; return retval;}
+	virtual glGetIntegerv_client_proc_t set_glGetIntegerv(glGetIntegerv_client_proc_t f) { glGetIntegerv_client_proc_t retval = glGetIntegerv; glGetIntegerv = f; return retval;}
+	virtual glGetProgramiv_client_proc_t set_glGetProgramiv(glGetProgramiv_client_proc_t f) { glGetProgramiv_client_proc_t retval = glGetProgramiv; glGetProgramiv = f; return retval;}
+	virtual glGetProgramInfoLog_client_proc_t set_glGetProgramInfoLog(glGetProgramInfoLog_client_proc_t f) { glGetProgramInfoLog_client_proc_t retval = glGetProgramInfoLog; glGetProgramInfoLog = f; return retval;}
+	virtual glGetRenderbufferParameteriv_client_proc_t set_glGetRenderbufferParameteriv(glGetRenderbufferParameteriv_client_proc_t f) { glGetRenderbufferParameteriv_client_proc_t retval = glGetRenderbufferParameteriv; glGetRenderbufferParameteriv = f; return retval;}
+	virtual glGetShaderiv_client_proc_t set_glGetShaderiv(glGetShaderiv_client_proc_t f) { glGetShaderiv_client_proc_t retval = glGetShaderiv; glGetShaderiv = f; return retval;}
+	virtual glGetShaderInfoLog_client_proc_t set_glGetShaderInfoLog(glGetShaderInfoLog_client_proc_t f) { glGetShaderInfoLog_client_proc_t retval = glGetShaderInfoLog; glGetShaderInfoLog = f; return retval;}
+	virtual glGetShaderPrecisionFormat_client_proc_t set_glGetShaderPrecisionFormat(glGetShaderPrecisionFormat_client_proc_t f) { glGetShaderPrecisionFormat_client_proc_t retval = glGetShaderPrecisionFormat; glGetShaderPrecisionFormat = f; return retval;}
+	virtual glGetShaderSource_client_proc_t set_glGetShaderSource(glGetShaderSource_client_proc_t f) { glGetShaderSource_client_proc_t retval = glGetShaderSource; glGetShaderSource = f; return retval;}
+	virtual glGetString_client_proc_t set_glGetString(glGetString_client_proc_t f) { glGetString_client_proc_t retval = glGetString; glGetString = f; return retval;}
+	virtual glGetTexParameterfv_client_proc_t set_glGetTexParameterfv(glGetTexParameterfv_client_proc_t f) { glGetTexParameterfv_client_proc_t retval = glGetTexParameterfv; glGetTexParameterfv = f; return retval;}
+	virtual glGetTexParameteriv_client_proc_t set_glGetTexParameteriv(glGetTexParameteriv_client_proc_t f) { glGetTexParameteriv_client_proc_t retval = glGetTexParameteriv; glGetTexParameteriv = f; return retval;}
+	virtual glGetUniformfv_client_proc_t set_glGetUniformfv(glGetUniformfv_client_proc_t f) { glGetUniformfv_client_proc_t retval = glGetUniformfv; glGetUniformfv = f; return retval;}
+	virtual glGetUniformiv_client_proc_t set_glGetUniformiv(glGetUniformiv_client_proc_t f) { glGetUniformiv_client_proc_t retval = glGetUniformiv; glGetUniformiv = f; return retval;}
+	virtual glGetUniformLocation_client_proc_t set_glGetUniformLocation(glGetUniformLocation_client_proc_t f) { glGetUniformLocation_client_proc_t retval = glGetUniformLocation; glGetUniformLocation = f; return retval;}
+	virtual glGetVertexAttribfv_client_proc_t set_glGetVertexAttribfv(glGetVertexAttribfv_client_proc_t f) { glGetVertexAttribfv_client_proc_t retval = glGetVertexAttribfv; glGetVertexAttribfv = f; return retval;}
+	virtual glGetVertexAttribiv_client_proc_t set_glGetVertexAttribiv(glGetVertexAttribiv_client_proc_t f) { glGetVertexAttribiv_client_proc_t retval = glGetVertexAttribiv; glGetVertexAttribiv = f; return retval;}
+	virtual glGetVertexAttribPointerv_client_proc_t set_glGetVertexAttribPointerv(glGetVertexAttribPointerv_client_proc_t f) { glGetVertexAttribPointerv_client_proc_t retval = glGetVertexAttribPointerv; glGetVertexAttribPointerv = f; return retval;}
+	virtual glHint_client_proc_t set_glHint(glHint_client_proc_t f) { glHint_client_proc_t retval = glHint; glHint = f; return retval;}
+	virtual glIsBuffer_client_proc_t set_glIsBuffer(glIsBuffer_client_proc_t f) { glIsBuffer_client_proc_t retval = glIsBuffer; glIsBuffer = f; return retval;}
+	virtual glIsEnabled_client_proc_t set_glIsEnabled(glIsEnabled_client_proc_t f) { glIsEnabled_client_proc_t retval = glIsEnabled; glIsEnabled = f; return retval;}
+	virtual glIsFramebuffer_client_proc_t set_glIsFramebuffer(glIsFramebuffer_client_proc_t f) { glIsFramebuffer_client_proc_t retval = glIsFramebuffer; glIsFramebuffer = f; return retval;}
+	virtual glIsProgram_client_proc_t set_glIsProgram(glIsProgram_client_proc_t f) { glIsProgram_client_proc_t retval = glIsProgram; glIsProgram = f; return retval;}
+	virtual glIsRenderbuffer_client_proc_t set_glIsRenderbuffer(glIsRenderbuffer_client_proc_t f) { glIsRenderbuffer_client_proc_t retval = glIsRenderbuffer; glIsRenderbuffer = f; return retval;}
+	virtual glIsShader_client_proc_t set_glIsShader(glIsShader_client_proc_t f) { glIsShader_client_proc_t retval = glIsShader; glIsShader = f; return retval;}
+	virtual glIsTexture_client_proc_t set_glIsTexture(glIsTexture_client_proc_t f) { glIsTexture_client_proc_t retval = glIsTexture; glIsTexture = f; return retval;}
+	virtual glLineWidth_client_proc_t set_glLineWidth(glLineWidth_client_proc_t f) { glLineWidth_client_proc_t retval = glLineWidth; glLineWidth = f; return retval;}
+	virtual glLinkProgram_client_proc_t set_glLinkProgram(glLinkProgram_client_proc_t f) { glLinkProgram_client_proc_t retval = glLinkProgram; glLinkProgram = f; return retval;}
+	virtual glPixelStorei_client_proc_t set_glPixelStorei(glPixelStorei_client_proc_t f) { glPixelStorei_client_proc_t retval = glPixelStorei; glPixelStorei = f; return retval;}
+	virtual glPolygonOffset_client_proc_t set_glPolygonOffset(glPolygonOffset_client_proc_t f) { glPolygonOffset_client_proc_t retval = glPolygonOffset; glPolygonOffset = f; return retval;}
+	virtual glReadPixels_client_proc_t set_glReadPixels(glReadPixels_client_proc_t f) { glReadPixels_client_proc_t retval = glReadPixels; glReadPixels = f; return retval;}
+	virtual glReleaseShaderCompiler_client_proc_t set_glReleaseShaderCompiler(glReleaseShaderCompiler_client_proc_t f) { glReleaseShaderCompiler_client_proc_t retval = glReleaseShaderCompiler; glReleaseShaderCompiler = f; return retval;}
+	virtual glRenderbufferStorage_client_proc_t set_glRenderbufferStorage(glRenderbufferStorage_client_proc_t f) { glRenderbufferStorage_client_proc_t retval = glRenderbufferStorage; glRenderbufferStorage = f; return retval;}
+	virtual glSampleCoverage_client_proc_t set_glSampleCoverage(glSampleCoverage_client_proc_t f) { glSampleCoverage_client_proc_t retval = glSampleCoverage; glSampleCoverage = f; return retval;}
+	virtual glScissor_client_proc_t set_glScissor(glScissor_client_proc_t f) { glScissor_client_proc_t retval = glScissor; glScissor = f; return retval;}
+	virtual glShaderBinary_client_proc_t set_glShaderBinary(glShaderBinary_client_proc_t f) { glShaderBinary_client_proc_t retval = glShaderBinary; glShaderBinary = f; return retval;}
+	virtual glShaderSource_client_proc_t set_glShaderSource(glShaderSource_client_proc_t f) { glShaderSource_client_proc_t retval = glShaderSource; glShaderSource = f; return retval;}
+	virtual glStencilFunc_client_proc_t set_glStencilFunc(glStencilFunc_client_proc_t f) { glStencilFunc_client_proc_t retval = glStencilFunc; glStencilFunc = f; return retval;}
+	virtual glStencilFuncSeparate_client_proc_t set_glStencilFuncSeparate(glStencilFuncSeparate_client_proc_t f) { glStencilFuncSeparate_client_proc_t retval = glStencilFuncSeparate; glStencilFuncSeparate = f; return retval;}
+	virtual glStencilMask_client_proc_t set_glStencilMask(glStencilMask_client_proc_t f) { glStencilMask_client_proc_t retval = glStencilMask; glStencilMask = f; return retval;}
+	virtual glStencilMaskSeparate_client_proc_t set_glStencilMaskSeparate(glStencilMaskSeparate_client_proc_t f) { glStencilMaskSeparate_client_proc_t retval = glStencilMaskSeparate; glStencilMaskSeparate = f; return retval;}
+	virtual glStencilOp_client_proc_t set_glStencilOp(glStencilOp_client_proc_t f) { glStencilOp_client_proc_t retval = glStencilOp; glStencilOp = f; return retval;}
+	virtual glStencilOpSeparate_client_proc_t set_glStencilOpSeparate(glStencilOpSeparate_client_proc_t f) { glStencilOpSeparate_client_proc_t retval = glStencilOpSeparate; glStencilOpSeparate = f; return retval;}
+	virtual glTexImage2D_client_proc_t set_glTexImage2D(glTexImage2D_client_proc_t f) { glTexImage2D_client_proc_t retval = glTexImage2D; glTexImage2D = f; return retval;}
+	virtual glTexParameterf_client_proc_t set_glTexParameterf(glTexParameterf_client_proc_t f) { glTexParameterf_client_proc_t retval = glTexParameterf; glTexParameterf = f; return retval;}
+	virtual glTexParameterfv_client_proc_t set_glTexParameterfv(glTexParameterfv_client_proc_t f) { glTexParameterfv_client_proc_t retval = glTexParameterfv; glTexParameterfv = f; return retval;}
+	virtual glTexParameteri_client_proc_t set_glTexParameteri(glTexParameteri_client_proc_t f) { glTexParameteri_client_proc_t retval = glTexParameteri; glTexParameteri = f; return retval;}
+	virtual glTexParameteriv_client_proc_t set_glTexParameteriv(glTexParameteriv_client_proc_t f) { glTexParameteriv_client_proc_t retval = glTexParameteriv; glTexParameteriv = f; return retval;}
+	virtual glTexSubImage2D_client_proc_t set_glTexSubImage2D(glTexSubImage2D_client_proc_t f) { glTexSubImage2D_client_proc_t retval = glTexSubImage2D; glTexSubImage2D = f; return retval;}
+	virtual glUniform1f_client_proc_t set_glUniform1f(glUniform1f_client_proc_t f) { glUniform1f_client_proc_t retval = glUniform1f; glUniform1f = f; return retval;}
+	virtual glUniform1fv_client_proc_t set_glUniform1fv(glUniform1fv_client_proc_t f) { glUniform1fv_client_proc_t retval = glUniform1fv; glUniform1fv = f; return retval;}
+	virtual glUniform1i_client_proc_t set_glUniform1i(glUniform1i_client_proc_t f) { glUniform1i_client_proc_t retval = glUniform1i; glUniform1i = f; return retval;}
+	virtual glUniform1iv_client_proc_t set_glUniform1iv(glUniform1iv_client_proc_t f) { glUniform1iv_client_proc_t retval = glUniform1iv; glUniform1iv = f; return retval;}
+	virtual glUniform2f_client_proc_t set_glUniform2f(glUniform2f_client_proc_t f) { glUniform2f_client_proc_t retval = glUniform2f; glUniform2f = f; return retval;}
+	virtual glUniform2fv_client_proc_t set_glUniform2fv(glUniform2fv_client_proc_t f) { glUniform2fv_client_proc_t retval = glUniform2fv; glUniform2fv = f; return retval;}
+	virtual glUniform2i_client_proc_t set_glUniform2i(glUniform2i_client_proc_t f) { glUniform2i_client_proc_t retval = glUniform2i; glUniform2i = f; return retval;}
+	virtual glUniform2iv_client_proc_t set_glUniform2iv(glUniform2iv_client_proc_t f) { glUniform2iv_client_proc_t retval = glUniform2iv; glUniform2iv = f; return retval;}
+	virtual glUniform3f_client_proc_t set_glUniform3f(glUniform3f_client_proc_t f) { glUniform3f_client_proc_t retval = glUniform3f; glUniform3f = f; return retval;}
+	virtual glUniform3fv_client_proc_t set_glUniform3fv(glUniform3fv_client_proc_t f) { glUniform3fv_client_proc_t retval = glUniform3fv; glUniform3fv = f; return retval;}
+	virtual glUniform3i_client_proc_t set_glUniform3i(glUniform3i_client_proc_t f) { glUniform3i_client_proc_t retval = glUniform3i; glUniform3i = f; return retval;}
+	virtual glUniform3iv_client_proc_t set_glUniform3iv(glUniform3iv_client_proc_t f) { glUniform3iv_client_proc_t retval = glUniform3iv; glUniform3iv = f; return retval;}
+	virtual glUniform4f_client_proc_t set_glUniform4f(glUniform4f_client_proc_t f) { glUniform4f_client_proc_t retval = glUniform4f; glUniform4f = f; return retval;}
+	virtual glUniform4fv_client_proc_t set_glUniform4fv(glUniform4fv_client_proc_t f) { glUniform4fv_client_proc_t retval = glUniform4fv; glUniform4fv = f; return retval;}
+	virtual glUniform4i_client_proc_t set_glUniform4i(glUniform4i_client_proc_t f) { glUniform4i_client_proc_t retval = glUniform4i; glUniform4i = f; return retval;}
+	virtual glUniform4iv_client_proc_t set_glUniform4iv(glUniform4iv_client_proc_t f) { glUniform4iv_client_proc_t retval = glUniform4iv; glUniform4iv = f; return retval;}
+	virtual glUniformMatrix2fv_client_proc_t set_glUniformMatrix2fv(glUniformMatrix2fv_client_proc_t f) { glUniformMatrix2fv_client_proc_t retval = glUniformMatrix2fv; glUniformMatrix2fv = f; return retval;}
+	virtual glUniformMatrix3fv_client_proc_t set_glUniformMatrix3fv(glUniformMatrix3fv_client_proc_t f) { glUniformMatrix3fv_client_proc_t retval = glUniformMatrix3fv; glUniformMatrix3fv = f; return retval;}
+	virtual glUniformMatrix4fv_client_proc_t set_glUniformMatrix4fv(glUniformMatrix4fv_client_proc_t f) { glUniformMatrix4fv_client_proc_t retval = glUniformMatrix4fv; glUniformMatrix4fv = f; return retval;}
+	virtual glUseProgram_client_proc_t set_glUseProgram(glUseProgram_client_proc_t f) { glUseProgram_client_proc_t retval = glUseProgram; glUseProgram = f; return retval;}
+	virtual glValidateProgram_client_proc_t set_glValidateProgram(glValidateProgram_client_proc_t f) { glValidateProgram_client_proc_t retval = glValidateProgram; glValidateProgram = f; return retval;}
+	virtual glVertexAttrib1f_client_proc_t set_glVertexAttrib1f(glVertexAttrib1f_client_proc_t f) { glVertexAttrib1f_client_proc_t retval = glVertexAttrib1f; glVertexAttrib1f = f; return retval;}
+	virtual glVertexAttrib1fv_client_proc_t set_glVertexAttrib1fv(glVertexAttrib1fv_client_proc_t f) { glVertexAttrib1fv_client_proc_t retval = glVertexAttrib1fv; glVertexAttrib1fv = f; return retval;}
+	virtual glVertexAttrib2f_client_proc_t set_glVertexAttrib2f(glVertexAttrib2f_client_proc_t f) { glVertexAttrib2f_client_proc_t retval = glVertexAttrib2f; glVertexAttrib2f = f; return retval;}
+	virtual glVertexAttrib2fv_client_proc_t set_glVertexAttrib2fv(glVertexAttrib2fv_client_proc_t f) { glVertexAttrib2fv_client_proc_t retval = glVertexAttrib2fv; glVertexAttrib2fv = f; return retval;}
+	virtual glVertexAttrib3f_client_proc_t set_glVertexAttrib3f(glVertexAttrib3f_client_proc_t f) { glVertexAttrib3f_client_proc_t retval = glVertexAttrib3f; glVertexAttrib3f = f; return retval;}
+	virtual glVertexAttrib3fv_client_proc_t set_glVertexAttrib3fv(glVertexAttrib3fv_client_proc_t f) { glVertexAttrib3fv_client_proc_t retval = glVertexAttrib3fv; glVertexAttrib3fv = f; return retval;}
+	virtual glVertexAttrib4f_client_proc_t set_glVertexAttrib4f(glVertexAttrib4f_client_proc_t f) { glVertexAttrib4f_client_proc_t retval = glVertexAttrib4f; glVertexAttrib4f = f; return retval;}
+	virtual glVertexAttrib4fv_client_proc_t set_glVertexAttrib4fv(glVertexAttrib4fv_client_proc_t f) { glVertexAttrib4fv_client_proc_t retval = glVertexAttrib4fv; glVertexAttrib4fv = f; return retval;}
+	virtual glVertexAttribPointer_client_proc_t set_glVertexAttribPointer(glVertexAttribPointer_client_proc_t f) { glVertexAttribPointer_client_proc_t retval = glVertexAttribPointer; glVertexAttribPointer = f; return retval;}
+	virtual glViewport_client_proc_t set_glViewport(glViewport_client_proc_t f) { glViewport_client_proc_t retval = glViewport; glViewport = f; return retval;}
+	virtual glEGLImageTargetTexture2DOES_client_proc_t set_glEGLImageTargetTexture2DOES(glEGLImageTargetTexture2DOES_client_proc_t f) { glEGLImageTargetTexture2DOES_client_proc_t retval = glEGLImageTargetTexture2DOES; glEGLImageTargetTexture2DOES = f; return retval;}
+	virtual glEGLImageTargetRenderbufferStorageOES_client_proc_t set_glEGLImageTargetRenderbufferStorageOES(glEGLImageTargetRenderbufferStorageOES_client_proc_t f) { glEGLImageTargetRenderbufferStorageOES_client_proc_t retval = glEGLImageTargetRenderbufferStorageOES; glEGLImageTargetRenderbufferStorageOES = f; return retval;}
+	virtual glGetProgramBinaryOES_client_proc_t set_glGetProgramBinaryOES(glGetProgramBinaryOES_client_proc_t f) { glGetProgramBinaryOES_client_proc_t retval = glGetProgramBinaryOES; glGetProgramBinaryOES = f; return retval;}
+	virtual glProgramBinaryOES_client_proc_t set_glProgramBinaryOES(glProgramBinaryOES_client_proc_t f) { glProgramBinaryOES_client_proc_t retval = glProgramBinaryOES; glProgramBinaryOES = f; return retval;}
+	virtual glMapBufferOES_client_proc_t set_glMapBufferOES(glMapBufferOES_client_proc_t f) { glMapBufferOES_client_proc_t retval = glMapBufferOES; glMapBufferOES = f; return retval;}
+	virtual glUnmapBufferOES_client_proc_t set_glUnmapBufferOES(glUnmapBufferOES_client_proc_t f) { glUnmapBufferOES_client_proc_t retval = glUnmapBufferOES; glUnmapBufferOES = f; return retval;}
+	virtual glTexImage3DOES_client_proc_t set_glTexImage3DOES(glTexImage3DOES_client_proc_t f) { glTexImage3DOES_client_proc_t retval = glTexImage3DOES; glTexImage3DOES = f; return retval;}
+	virtual glTexSubImage3DOES_client_proc_t set_glTexSubImage3DOES(glTexSubImage3DOES_client_proc_t f) { glTexSubImage3DOES_client_proc_t retval = glTexSubImage3DOES; glTexSubImage3DOES = f; return retval;}
+	virtual glCopyTexSubImage3DOES_client_proc_t set_glCopyTexSubImage3DOES(glCopyTexSubImage3DOES_client_proc_t f) { glCopyTexSubImage3DOES_client_proc_t retval = glCopyTexSubImage3DOES; glCopyTexSubImage3DOES = f; return retval;}
+	virtual glCompressedTexImage3DOES_client_proc_t set_glCompressedTexImage3DOES(glCompressedTexImage3DOES_client_proc_t f) { glCompressedTexImage3DOES_client_proc_t retval = glCompressedTexImage3DOES; glCompressedTexImage3DOES = f; return retval;}
+	virtual glCompressedTexSubImage3DOES_client_proc_t set_glCompressedTexSubImage3DOES(glCompressedTexSubImage3DOES_client_proc_t f) { glCompressedTexSubImage3DOES_client_proc_t retval = glCompressedTexSubImage3DOES; glCompressedTexSubImage3DOES = f; return retval;}
+	virtual glFramebufferTexture3DOES_client_proc_t set_glFramebufferTexture3DOES(glFramebufferTexture3DOES_client_proc_t f) { glFramebufferTexture3DOES_client_proc_t retval = glFramebufferTexture3DOES; glFramebufferTexture3DOES = f; return retval;}
+	virtual glBindVertexArrayOES_client_proc_t set_glBindVertexArrayOES(glBindVertexArrayOES_client_proc_t f) { glBindVertexArrayOES_client_proc_t retval = glBindVertexArrayOES; glBindVertexArrayOES = f; return retval;}
+	virtual glDeleteVertexArraysOES_client_proc_t set_glDeleteVertexArraysOES(glDeleteVertexArraysOES_client_proc_t f) { glDeleteVertexArraysOES_client_proc_t retval = glDeleteVertexArraysOES; glDeleteVertexArraysOES = f; return retval;}
+	virtual glGenVertexArraysOES_client_proc_t set_glGenVertexArraysOES(glGenVertexArraysOES_client_proc_t f) { glGenVertexArraysOES_client_proc_t retval = glGenVertexArraysOES; glGenVertexArraysOES = f; return retval;}
+	virtual glIsVertexArrayOES_client_proc_t set_glIsVertexArrayOES(glIsVertexArrayOES_client_proc_t f) { glIsVertexArrayOES_client_proc_t retval = glIsVertexArrayOES; glIsVertexArrayOES = f; return retval;}
+	virtual glDiscardFramebufferEXT_client_proc_t set_glDiscardFramebufferEXT(glDiscardFramebufferEXT_client_proc_t f) { glDiscardFramebufferEXT_client_proc_t retval = glDiscardFramebufferEXT; glDiscardFramebufferEXT = f; return retval;}
+	virtual glMultiDrawArraysEXT_client_proc_t set_glMultiDrawArraysEXT(glMultiDrawArraysEXT_client_proc_t f) { glMultiDrawArraysEXT_client_proc_t retval = glMultiDrawArraysEXT; glMultiDrawArraysEXT = f; return retval;}
+	virtual glMultiDrawElementsEXT_client_proc_t set_glMultiDrawElementsEXT(glMultiDrawElementsEXT_client_proc_t f) { glMultiDrawElementsEXT_client_proc_t retval = glMultiDrawElementsEXT; glMultiDrawElementsEXT = f; return retval;}
+	virtual glGetPerfMonitorGroupsAMD_client_proc_t set_glGetPerfMonitorGroupsAMD(glGetPerfMonitorGroupsAMD_client_proc_t f) { glGetPerfMonitorGroupsAMD_client_proc_t retval = glGetPerfMonitorGroupsAMD; glGetPerfMonitorGroupsAMD = f; return retval;}
+	virtual glGetPerfMonitorCountersAMD_client_proc_t set_glGetPerfMonitorCountersAMD(glGetPerfMonitorCountersAMD_client_proc_t f) { glGetPerfMonitorCountersAMD_client_proc_t retval = glGetPerfMonitorCountersAMD; glGetPerfMonitorCountersAMD = f; return retval;}
+	virtual glGetPerfMonitorGroupStringAMD_client_proc_t set_glGetPerfMonitorGroupStringAMD(glGetPerfMonitorGroupStringAMD_client_proc_t f) { glGetPerfMonitorGroupStringAMD_client_proc_t retval = glGetPerfMonitorGroupStringAMD; glGetPerfMonitorGroupStringAMD = f; return retval;}
+	virtual glGetPerfMonitorCounterStringAMD_client_proc_t set_glGetPerfMonitorCounterStringAMD(glGetPerfMonitorCounterStringAMD_client_proc_t f) { glGetPerfMonitorCounterStringAMD_client_proc_t retval = glGetPerfMonitorCounterStringAMD; glGetPerfMonitorCounterStringAMD = f; return retval;}
+	virtual glGetPerfMonitorCounterInfoAMD_client_proc_t set_glGetPerfMonitorCounterInfoAMD(glGetPerfMonitorCounterInfoAMD_client_proc_t f) { glGetPerfMonitorCounterInfoAMD_client_proc_t retval = glGetPerfMonitorCounterInfoAMD; glGetPerfMonitorCounterInfoAMD = f; return retval;}
+	virtual glGenPerfMonitorsAMD_client_proc_t set_glGenPerfMonitorsAMD(glGenPerfMonitorsAMD_client_proc_t f) { glGenPerfMonitorsAMD_client_proc_t retval = glGenPerfMonitorsAMD; glGenPerfMonitorsAMD = f; return retval;}
+	virtual glDeletePerfMonitorsAMD_client_proc_t set_glDeletePerfMonitorsAMD(glDeletePerfMonitorsAMD_client_proc_t f) { glDeletePerfMonitorsAMD_client_proc_t retval = glDeletePerfMonitorsAMD; glDeletePerfMonitorsAMD = f; return retval;}
+	virtual glSelectPerfMonitorCountersAMD_client_proc_t set_glSelectPerfMonitorCountersAMD(glSelectPerfMonitorCountersAMD_client_proc_t f) { glSelectPerfMonitorCountersAMD_client_proc_t retval = glSelectPerfMonitorCountersAMD; glSelectPerfMonitorCountersAMD = f; return retval;}
+	virtual glBeginPerfMonitorAMD_client_proc_t set_glBeginPerfMonitorAMD(glBeginPerfMonitorAMD_client_proc_t f) { glBeginPerfMonitorAMD_client_proc_t retval = glBeginPerfMonitorAMD; glBeginPerfMonitorAMD = f; return retval;}
+	virtual glEndPerfMonitorAMD_client_proc_t set_glEndPerfMonitorAMD(glEndPerfMonitorAMD_client_proc_t f) { glEndPerfMonitorAMD_client_proc_t retval = glEndPerfMonitorAMD; glEndPerfMonitorAMD = f; return retval;}
+	virtual glGetPerfMonitorCounterDataAMD_client_proc_t set_glGetPerfMonitorCounterDataAMD(glGetPerfMonitorCounterDataAMD_client_proc_t f) { glGetPerfMonitorCounterDataAMD_client_proc_t retval = glGetPerfMonitorCounterDataAMD; glGetPerfMonitorCounterDataAMD = f; return retval;}
+	virtual glRenderbufferStorageMultisampleIMG_client_proc_t set_glRenderbufferStorageMultisampleIMG(glRenderbufferStorageMultisampleIMG_client_proc_t f) { glRenderbufferStorageMultisampleIMG_client_proc_t retval = glRenderbufferStorageMultisampleIMG; glRenderbufferStorageMultisampleIMG = f; return retval;}
+	virtual glFramebufferTexture2DMultisampleIMG_client_proc_t set_glFramebufferTexture2DMultisampleIMG(glFramebufferTexture2DMultisampleIMG_client_proc_t f) { glFramebufferTexture2DMultisampleIMG_client_proc_t retval = glFramebufferTexture2DMultisampleIMG; glFramebufferTexture2DMultisampleIMG = f; return retval;}
+	virtual glDeleteFencesNV_client_proc_t set_glDeleteFencesNV(glDeleteFencesNV_client_proc_t f) { glDeleteFencesNV_client_proc_t retval = glDeleteFencesNV; glDeleteFencesNV = f; return retval;}
+	virtual glGenFencesNV_client_proc_t set_glGenFencesNV(glGenFencesNV_client_proc_t f) { glGenFencesNV_client_proc_t retval = glGenFencesNV; glGenFencesNV = f; return retval;}
+	virtual glIsFenceNV_client_proc_t set_glIsFenceNV(glIsFenceNV_client_proc_t f) { glIsFenceNV_client_proc_t retval = glIsFenceNV; glIsFenceNV = f; return retval;}
+	virtual glTestFenceNV_client_proc_t set_glTestFenceNV(glTestFenceNV_client_proc_t f) { glTestFenceNV_client_proc_t retval = glTestFenceNV; glTestFenceNV = f; return retval;}
+	virtual glGetFenceivNV_client_proc_t set_glGetFenceivNV(glGetFenceivNV_client_proc_t f) { glGetFenceivNV_client_proc_t retval = glGetFenceivNV; glGetFenceivNV = f; return retval;}
+	virtual glFinishFenceNV_client_proc_t set_glFinishFenceNV(glFinishFenceNV_client_proc_t f) { glFinishFenceNV_client_proc_t retval = glFinishFenceNV; glFinishFenceNV = f; return retval;}
+	virtual glSetFenceNV_client_proc_t set_glSetFenceNV(glSetFenceNV_client_proc_t f) { glSetFenceNV_client_proc_t retval = glSetFenceNV; glSetFenceNV = f; return retval;}
+	virtual glCoverageMaskNV_client_proc_t set_glCoverageMaskNV(glCoverageMaskNV_client_proc_t f) { glCoverageMaskNV_client_proc_t retval = glCoverageMaskNV; glCoverageMaskNV = f; return retval;}
+	virtual glCoverageOperationNV_client_proc_t set_glCoverageOperationNV(glCoverageOperationNV_client_proc_t f) { glCoverageOperationNV_client_proc_t retval = glCoverageOperationNV; glCoverageOperationNV = f; return retval;}
+	virtual glGetDriverControlsQCOM_client_proc_t set_glGetDriverControlsQCOM(glGetDriverControlsQCOM_client_proc_t f) { glGetDriverControlsQCOM_client_proc_t retval = glGetDriverControlsQCOM; glGetDriverControlsQCOM = f; return retval;}
+	virtual glGetDriverControlStringQCOM_client_proc_t set_glGetDriverControlStringQCOM(glGetDriverControlStringQCOM_client_proc_t f) { glGetDriverControlStringQCOM_client_proc_t retval = glGetDriverControlStringQCOM; glGetDriverControlStringQCOM = f; return retval;}
+	virtual glEnableDriverControlQCOM_client_proc_t set_glEnableDriverControlQCOM(glEnableDriverControlQCOM_client_proc_t f) { glEnableDriverControlQCOM_client_proc_t retval = glEnableDriverControlQCOM; glEnableDriverControlQCOM = f; return retval;}
+	virtual glDisableDriverControlQCOM_client_proc_t set_glDisableDriverControlQCOM(glDisableDriverControlQCOM_client_proc_t f) { glDisableDriverControlQCOM_client_proc_t retval = glDisableDriverControlQCOM; glDisableDriverControlQCOM = f; return retval;}
+	virtual glExtGetTexturesQCOM_client_proc_t set_glExtGetTexturesQCOM(glExtGetTexturesQCOM_client_proc_t f) { glExtGetTexturesQCOM_client_proc_t retval = glExtGetTexturesQCOM; glExtGetTexturesQCOM = f; return retval;}
+	virtual glExtGetBuffersQCOM_client_proc_t set_glExtGetBuffersQCOM(glExtGetBuffersQCOM_client_proc_t f) { glExtGetBuffersQCOM_client_proc_t retval = glExtGetBuffersQCOM; glExtGetBuffersQCOM = f; return retval;}
+	virtual glExtGetRenderbuffersQCOM_client_proc_t set_glExtGetRenderbuffersQCOM(glExtGetRenderbuffersQCOM_client_proc_t f) { glExtGetRenderbuffersQCOM_client_proc_t retval = glExtGetRenderbuffersQCOM; glExtGetRenderbuffersQCOM = f; return retval;}
+	virtual glExtGetFramebuffersQCOM_client_proc_t set_glExtGetFramebuffersQCOM(glExtGetFramebuffersQCOM_client_proc_t f) { glExtGetFramebuffersQCOM_client_proc_t retval = glExtGetFramebuffersQCOM; glExtGetFramebuffersQCOM = f; return retval;}
+	virtual glExtGetTexLevelParameterivQCOM_client_proc_t set_glExtGetTexLevelParameterivQCOM(glExtGetTexLevelParameterivQCOM_client_proc_t f) { glExtGetTexLevelParameterivQCOM_client_proc_t retval = glExtGetTexLevelParameterivQCOM; glExtGetTexLevelParameterivQCOM = f; return retval;}
+	virtual glExtTexObjectStateOverrideiQCOM_client_proc_t set_glExtTexObjectStateOverrideiQCOM(glExtTexObjectStateOverrideiQCOM_client_proc_t f) { glExtTexObjectStateOverrideiQCOM_client_proc_t retval = glExtTexObjectStateOverrideiQCOM; glExtTexObjectStateOverrideiQCOM = f; return retval;}
+	virtual glExtGetTexSubImageQCOM_client_proc_t set_glExtGetTexSubImageQCOM(glExtGetTexSubImageQCOM_client_proc_t f) { glExtGetTexSubImageQCOM_client_proc_t retval = glExtGetTexSubImageQCOM; glExtGetTexSubImageQCOM = f; return retval;}
+	virtual glExtGetBufferPointervQCOM_client_proc_t set_glExtGetBufferPointervQCOM(glExtGetBufferPointervQCOM_client_proc_t f) { glExtGetBufferPointervQCOM_client_proc_t retval = glExtGetBufferPointervQCOM; glExtGetBufferPointervQCOM = f; return retval;}
+	virtual glExtGetShadersQCOM_client_proc_t set_glExtGetShadersQCOM(glExtGetShadersQCOM_client_proc_t f) { glExtGetShadersQCOM_client_proc_t retval = glExtGetShadersQCOM; glExtGetShadersQCOM = f; return retval;}
+	virtual glExtGetProgramsQCOM_client_proc_t set_glExtGetProgramsQCOM(glExtGetProgramsQCOM_client_proc_t f) { glExtGetProgramsQCOM_client_proc_t retval = glExtGetProgramsQCOM; glExtGetProgramsQCOM = f; return retval;}
+	virtual glExtIsProgramBinaryQCOM_client_proc_t set_glExtIsProgramBinaryQCOM(glExtIsProgramBinaryQCOM_client_proc_t f) { glExtIsProgramBinaryQCOM_client_proc_t retval = glExtIsProgramBinaryQCOM; glExtIsProgramBinaryQCOM = f; return retval;}
+	virtual glExtGetProgramBinarySourceQCOM_client_proc_t set_glExtGetProgramBinarySourceQCOM(glExtGetProgramBinarySourceQCOM_client_proc_t f) { glExtGetProgramBinarySourceQCOM_client_proc_t retval = glExtGetProgramBinarySourceQCOM; glExtGetProgramBinarySourceQCOM = f; return retval;}
+	virtual glStartTilingQCOM_client_proc_t set_glStartTilingQCOM(glStartTilingQCOM_client_proc_t f) { glStartTilingQCOM_client_proc_t retval = glStartTilingQCOM; glStartTilingQCOM = f; return retval;}
+	virtual glEndTilingQCOM_client_proc_t set_glEndTilingQCOM(glEndTilingQCOM_client_proc_t f) { glEndTilingQCOM_client_proc_t retval = glEndTilingQCOM; glEndTilingQCOM = f; return retval;}
+	virtual glVertexAttribPointerData_client_proc_t set_glVertexAttribPointerData(glVertexAttribPointerData_client_proc_t f) { glVertexAttribPointerData_client_proc_t retval = glVertexAttribPointerData; glVertexAttribPointerData = f; return retval;}
+	virtual glVertexAttribPointerOffset_client_proc_t set_glVertexAttribPointerOffset(glVertexAttribPointerOffset_client_proc_t f) { glVertexAttribPointerOffset_client_proc_t retval = glVertexAttribPointerOffset; glVertexAttribPointerOffset = f; return retval;}
+	virtual glDrawElementsOffset_client_proc_t set_glDrawElementsOffset(glDrawElementsOffset_client_proc_t f) { glDrawElementsOffset_client_proc_t retval = glDrawElementsOffset; glDrawElementsOffset = f; return retval;}
+	virtual glDrawElementsData_client_proc_t set_glDrawElementsData(glDrawElementsData_client_proc_t f) { glDrawElementsData_client_proc_t retval = glDrawElementsData; glDrawElementsData = f; return retval;}
+	virtual glGetCompressedTextureFormats_client_proc_t set_glGetCompressedTextureFormats(glGetCompressedTextureFormats_client_proc_t f) { glGetCompressedTextureFormats_client_proc_t retval = glGetCompressedTextureFormats; glGetCompressedTextureFormats = f; return retval;}
+	virtual glShaderString_client_proc_t set_glShaderString(glShaderString_client_proc_t f) { glShaderString_client_proc_t retval = glShaderString; glShaderString = f; return retval;}
+	virtual glFinishRoundTrip_client_proc_t set_glFinishRoundTrip(glFinishRoundTrip_client_proc_t f) { glFinishRoundTrip_client_proc_t retval = glFinishRoundTrip; glFinishRoundTrip = f; return retval;}
+	 virtual ~gl2_client_context_t() {}
+
+	typedef gl2_client_context_t *CONTEXT_ACCESSOR_TYPE(void);
+	static void setContextAccessor(CONTEXT_ACCESSOR_TYPE *f);
+	int initDispatchByName( void *(*getProc)(const char *name, void *userData), void *userData);
+	virtual void setError(unsigned int  error){};
+	virtual unsigned int getError(){ return 0; };
+};
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_client_proc.h b/tools/emulator/opengl/system/GLESv2_enc/gl2_client_proc.h
new file mode 100644
index 0000000..b8ff005
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_client_proc.h
@@ -0,0 +1,222 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __gl2_client_proc_t_h
+#define __gl2_client_proc_t_h
+
+
+
+#include "gl2_types.h"
+#ifndef gl2_APIENTRY
+#define gl2_APIENTRY 
+#endif
+typedef void (gl2_APIENTRY *glActiveTexture_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glAttachShader_client_proc_t) (void * ctx, GLuint, GLuint);
+typedef void (gl2_APIENTRY *glBindAttribLocation_client_proc_t) (void * ctx, GLuint, GLuint, const GLchar*);
+typedef void (gl2_APIENTRY *glBindBuffer_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glBindFramebuffer_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glBindRenderbuffer_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glBindTexture_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glBlendColor_client_proc_t) (void * ctx, GLclampf, GLclampf, GLclampf, GLclampf);
+typedef void (gl2_APIENTRY *glBlendEquation_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glBlendEquationSeparate_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef void (gl2_APIENTRY *glBlendFunc_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef void (gl2_APIENTRY *glBlendFuncSeparate_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLenum);
+typedef void (gl2_APIENTRY *glBufferData_client_proc_t) (void * ctx, GLenum, GLsizeiptr, const GLvoid*, GLenum);
+typedef void (gl2_APIENTRY *glBufferSubData_client_proc_t) (void * ctx, GLenum, GLintptr, GLsizeiptr, const GLvoid*);
+typedef GLenum (gl2_APIENTRY *glCheckFramebufferStatus_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glClear_client_proc_t) (void * ctx, GLbitfield);
+typedef void (gl2_APIENTRY *glClearColor_client_proc_t) (void * ctx, GLclampf, GLclampf, GLclampf, GLclampf);
+typedef void (gl2_APIENTRY *glClearDepthf_client_proc_t) (void * ctx, GLclampf);
+typedef void (gl2_APIENTRY *glClearStencil_client_proc_t) (void * ctx, GLint);
+typedef void (gl2_APIENTRY *glColorMask_client_proc_t) (void * ctx, GLboolean, GLboolean, GLboolean, GLboolean);
+typedef void (gl2_APIENTRY *glCompileShader_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glCompressedTexImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
+typedef void (gl2_APIENTRY *glCompressedTexSubImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
+typedef void (gl2_APIENTRY *glCopyTexImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
+typedef void (gl2_APIENTRY *glCopyTexSubImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+typedef GLuint (gl2_APIENTRY *glCreateProgram_client_proc_t) (void * ctx);
+typedef GLuint (gl2_APIENTRY *glCreateShader_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glCullFace_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glDeleteBuffers_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl2_APIENTRY *glDeleteFramebuffers_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl2_APIENTRY *glDeleteProgram_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glDeleteRenderbuffers_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl2_APIENTRY *glDeleteShader_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glDeleteTextures_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl2_APIENTRY *glDepthFunc_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glDepthMask_client_proc_t) (void * ctx, GLboolean);
+typedef void (gl2_APIENTRY *glDepthRangef_client_proc_t) (void * ctx, GLclampf, GLclampf);
+typedef void (gl2_APIENTRY *glDetachShader_client_proc_t) (void * ctx, GLuint, GLuint);
+typedef void (gl2_APIENTRY *glDisable_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glDisableVertexAttribArray_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glDrawArrays_client_proc_t) (void * ctx, GLenum, GLint, GLsizei);
+typedef void (gl2_APIENTRY *glDrawElements_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, const GLvoid*);
+typedef void (gl2_APIENTRY *glEnable_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glEnableVertexAttribArray_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glFinish_client_proc_t) (void * ctx);
+typedef void (gl2_APIENTRY *glFlush_client_proc_t) (void * ctx);
+typedef void (gl2_APIENTRY *glFramebufferRenderbuffer_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glFramebufferTexture2D_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint, GLint);
+typedef void (gl2_APIENTRY *glFrontFace_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glGenBuffers_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGenerateMipmap_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glGenFramebuffers_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGenRenderbuffers_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGenTextures_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGetActiveAttrib_client_proc_t) (void * ctx, GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*);
+typedef void (gl2_APIENTRY *glGetActiveUniform_client_proc_t) (void * ctx, GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*);
+typedef void (gl2_APIENTRY *glGetAttachedShaders_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLuint*);
+typedef int (gl2_APIENTRY *glGetAttribLocation_client_proc_t) (void * ctx, GLuint, const GLchar*);
+typedef void (gl2_APIENTRY *glGetBooleanv_client_proc_t) (void * ctx, GLenum, GLboolean*);
+typedef void (gl2_APIENTRY *glGetBufferParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef GLenum (gl2_APIENTRY *glGetError_client_proc_t) (void * ctx);
+typedef void (gl2_APIENTRY *glGetFloatv_client_proc_t) (void * ctx, GLenum, GLfloat*);
+typedef void (gl2_APIENTRY *glGetFramebufferAttachmentParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetIntegerv_client_proc_t) (void * ctx, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetProgramiv_client_proc_t) (void * ctx, GLuint, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetProgramInfoLog_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (gl2_APIENTRY *glGetRenderbufferParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetShaderiv_client_proc_t) (void * ctx, GLuint, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetShaderInfoLog_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (gl2_APIENTRY *glGetShaderPrecisionFormat_client_proc_t) (void * ctx, GLenum, GLenum, GLint*, GLint*);
+typedef void (gl2_APIENTRY *glGetShaderSource_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef const GLubyte* (gl2_APIENTRY *glGetString_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glGetTexParameterfv_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat*);
+typedef void (gl2_APIENTRY *glGetTexParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetUniformfv_client_proc_t) (void * ctx, GLuint, GLint, GLfloat*);
+typedef void (gl2_APIENTRY *glGetUniformiv_client_proc_t) (void * ctx, GLuint, GLint, GLint*);
+typedef int (gl2_APIENTRY *glGetUniformLocation_client_proc_t) (void * ctx, GLuint, const GLchar*);
+typedef void (gl2_APIENTRY *glGetVertexAttribfv_client_proc_t) (void * ctx, GLuint, GLenum, GLfloat*);
+typedef void (gl2_APIENTRY *glGetVertexAttribiv_client_proc_t) (void * ctx, GLuint, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glGetVertexAttribPointerv_client_proc_t) (void * ctx, GLuint, GLenum, GLvoid**);
+typedef void (gl2_APIENTRY *glHint_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef GLboolean (gl2_APIENTRY *glIsBuffer_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl2_APIENTRY *glIsEnabled_client_proc_t) (void * ctx, GLenum);
+typedef GLboolean (gl2_APIENTRY *glIsFramebuffer_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl2_APIENTRY *glIsProgram_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl2_APIENTRY *glIsRenderbuffer_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl2_APIENTRY *glIsShader_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl2_APIENTRY *glIsTexture_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glLineWidth_client_proc_t) (void * ctx, GLfloat);
+typedef void (gl2_APIENTRY *glLinkProgram_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glPixelStorei_client_proc_t) (void * ctx, GLenum, GLint);
+typedef void (gl2_APIENTRY *glPolygonOffset_client_proc_t) (void * ctx, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glReadPixels_client_proc_t) (void * ctx, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
+typedef void (gl2_APIENTRY *glReleaseShaderCompiler_client_proc_t) (void * ctx);
+typedef void (gl2_APIENTRY *glRenderbufferStorage_client_proc_t) (void * ctx, GLenum, GLenum, GLsizei, GLsizei);
+typedef void (gl2_APIENTRY *glSampleCoverage_client_proc_t) (void * ctx, GLclampf, GLboolean);
+typedef void (gl2_APIENTRY *glScissor_client_proc_t) (void * ctx, GLint, GLint, GLsizei, GLsizei);
+typedef void (gl2_APIENTRY *glShaderBinary_client_proc_t) (void * ctx, GLsizei, const GLuint*, GLenum, const GLvoid*, GLsizei);
+typedef void (gl2_APIENTRY *glShaderSource_client_proc_t) (void * ctx, GLuint, GLsizei, const GLchar**, const GLint*);
+typedef void (gl2_APIENTRY *glStencilFunc_client_proc_t) (void * ctx, GLenum, GLint, GLuint);
+typedef void (gl2_APIENTRY *glStencilFuncSeparate_client_proc_t) (void * ctx, GLenum, GLenum, GLint, GLuint);
+typedef void (gl2_APIENTRY *glStencilMask_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glStencilMaskSeparate_client_proc_t) (void * ctx, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glStencilOp_client_proc_t) (void * ctx, GLenum, GLenum, GLenum);
+typedef void (gl2_APIENTRY *glStencilOpSeparate_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLenum);
+typedef void (gl2_APIENTRY *glTexImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*);
+typedef void (gl2_APIENTRY *glTexParameterf_client_proc_t) (void * ctx, GLenum, GLenum, GLfloat);
+typedef void (gl2_APIENTRY *glTexParameterfv_client_proc_t) (void * ctx, GLenum, GLenum, const GLfloat*);
+typedef void (gl2_APIENTRY *glTexParameteri_client_proc_t) (void * ctx, GLenum, GLenum, GLint);
+typedef void (gl2_APIENTRY *glTexParameteriv_client_proc_t) (void * ctx, GLenum, GLenum, const GLint*);
+typedef void (gl2_APIENTRY *glTexSubImage2D_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*);
+typedef void (gl2_APIENTRY *glUniform1f_client_proc_t) (void * ctx, GLint, GLfloat);
+typedef void (gl2_APIENTRY *glUniform1fv_client_proc_t) (void * ctx, GLint, GLsizei, const GLfloat*);
+typedef void (gl2_APIENTRY *glUniform1i_client_proc_t) (void * ctx, GLint, GLint);
+typedef void (gl2_APIENTRY *glUniform1iv_client_proc_t) (void * ctx, GLint, GLsizei, const GLint*);
+typedef void (gl2_APIENTRY *glUniform2f_client_proc_t) (void * ctx, GLint, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glUniform2fv_client_proc_t) (void * ctx, GLint, GLsizei, const GLfloat*);
+typedef void (gl2_APIENTRY *glUniform2i_client_proc_t) (void * ctx, GLint, GLint, GLint);
+typedef void (gl2_APIENTRY *glUniform2iv_client_proc_t) (void * ctx, GLint, GLsizei, const GLint*);
+typedef void (gl2_APIENTRY *glUniform3f_client_proc_t) (void * ctx, GLint, GLfloat, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glUniform3fv_client_proc_t) (void * ctx, GLint, GLsizei, const GLfloat*);
+typedef void (gl2_APIENTRY *glUniform3i_client_proc_t) (void * ctx, GLint, GLint, GLint, GLint);
+typedef void (gl2_APIENTRY *glUniform3iv_client_proc_t) (void * ctx, GLint, GLsizei, const GLint*);
+typedef void (gl2_APIENTRY *glUniform4f_client_proc_t) (void * ctx, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glUniform4fv_client_proc_t) (void * ctx, GLint, GLsizei, const GLfloat*);
+typedef void (gl2_APIENTRY *glUniform4i_client_proc_t) (void * ctx, GLint, GLint, GLint, GLint, GLint);
+typedef void (gl2_APIENTRY *glUniform4iv_client_proc_t) (void * ctx, GLint, GLsizei, const GLint*);
+typedef void (gl2_APIENTRY *glUniformMatrix2fv_client_proc_t) (void * ctx, GLint, GLsizei, GLboolean, const GLfloat*);
+typedef void (gl2_APIENTRY *glUniformMatrix3fv_client_proc_t) (void * ctx, GLint, GLsizei, GLboolean, const GLfloat*);
+typedef void (gl2_APIENTRY *glUniformMatrix4fv_client_proc_t) (void * ctx, GLint, GLsizei, GLboolean, const GLfloat*);
+typedef void (gl2_APIENTRY *glUseProgram_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glValidateProgram_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glVertexAttrib1f_client_proc_t) (void * ctx, GLuint, GLfloat);
+typedef void (gl2_APIENTRY *glVertexAttrib1fv_client_proc_t) (void * ctx, GLuint, const GLfloat*);
+typedef void (gl2_APIENTRY *glVertexAttrib2f_client_proc_t) (void * ctx, GLuint, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glVertexAttrib2fv_client_proc_t) (void * ctx, GLuint, const GLfloat*);
+typedef void (gl2_APIENTRY *glVertexAttrib3f_client_proc_t) (void * ctx, GLuint, GLfloat, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glVertexAttrib3fv_client_proc_t) (void * ctx, GLuint, const GLfloat*);
+typedef void (gl2_APIENTRY *glVertexAttrib4f_client_proc_t) (void * ctx, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
+typedef void (gl2_APIENTRY *glVertexAttrib4fv_client_proc_t) (void * ctx, GLuint, const GLfloat*);
+typedef void (gl2_APIENTRY *glVertexAttribPointer_client_proc_t) (void * ctx, GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*);
+typedef void (gl2_APIENTRY *glViewport_client_proc_t) (void * ctx, GLint, GLint, GLsizei, GLsizei);
+typedef void (gl2_APIENTRY *glEGLImageTargetTexture2DOES_client_proc_t) (void * ctx, GLenum, GLeglImageOES);
+typedef void (gl2_APIENTRY *glEGLImageTargetRenderbufferStorageOES_client_proc_t) (void * ctx, GLenum, GLeglImageOES);
+typedef void (gl2_APIENTRY *glGetProgramBinaryOES_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLenum*, GLvoid*);
+typedef void (gl2_APIENTRY *glProgramBinaryOES_client_proc_t) (void * ctx, GLuint, GLenum, const GLvoid*, GLint);
+typedef void* (gl2_APIENTRY *glMapBufferOES_client_proc_t) (void * ctx, GLenum, GLenum);
+typedef GLboolean (gl2_APIENTRY *glUnmapBufferOES_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glTexImage3DOES_client_proc_t) (void * ctx, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid*);
+typedef void (gl2_APIENTRY *glTexSubImage3DOES_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid*);
+typedef void (gl2_APIENTRY *glCopyTexSubImage3DOES_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+typedef void (gl2_APIENTRY *glCompressedTexImage3DOES_client_proc_t) (void * ctx, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid*);
+typedef void (gl2_APIENTRY *glCompressedTexSubImage3DOES_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid*);
+typedef void (gl2_APIENTRY *glFramebufferTexture3DOES_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint, GLint, GLint);
+typedef void (gl2_APIENTRY *glBindVertexArrayOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glDeleteVertexArraysOES_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl2_APIENTRY *glGenVertexArraysOES_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef GLboolean (gl2_APIENTRY *glIsVertexArrayOES_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glDiscardFramebufferEXT_client_proc_t) (void * ctx, GLenum, GLsizei, const GLenum*);
+typedef void (gl2_APIENTRY *glMultiDrawArraysEXT_client_proc_t) (void * ctx, GLenum, GLint*, GLsizei*, GLsizei);
+typedef void (gl2_APIENTRY *glMultiDrawElementsEXT_client_proc_t) (void * ctx, GLenum, const GLsizei*, GLenum, const GLvoid**, GLsizei);
+typedef void (gl2_APIENTRY *glGetPerfMonitorGroupsAMD_client_proc_t) (void * ctx, GLint*, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGetPerfMonitorCountersAMD_client_proc_t) (void * ctx, GLuint, GLint*, GLint*, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGetPerfMonitorGroupStringAMD_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (gl2_APIENTRY *glGetPerfMonitorCounterStringAMD_client_proc_t) (void * ctx, GLuint, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (gl2_APIENTRY *glGetPerfMonitorCounterInfoAMD_client_proc_t) (void * ctx, GLuint, GLuint, GLenum, GLvoid*);
+typedef void (gl2_APIENTRY *glGenPerfMonitorsAMD_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glDeletePerfMonitorsAMD_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glSelectPerfMonitorCountersAMD_client_proc_t) (void * ctx, GLuint, GLboolean, GLuint, GLint, GLuint*);
+typedef void (gl2_APIENTRY *glBeginPerfMonitorAMD_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glEndPerfMonitorAMD_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glGetPerfMonitorCounterDataAMD_client_proc_t) (void * ctx, GLuint, GLenum, GLsizei, GLuint*, GLint*);
+typedef void (gl2_APIENTRY *glRenderbufferStorageMultisampleIMG_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+typedef void (gl2_APIENTRY *glFramebufferTexture2DMultisampleIMG_client_proc_t) (void * ctx, GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
+typedef void (gl2_APIENTRY *glDeleteFencesNV_client_proc_t) (void * ctx, GLsizei, const GLuint*);
+typedef void (gl2_APIENTRY *glGenFencesNV_client_proc_t) (void * ctx, GLsizei, GLuint*);
+typedef GLboolean (gl2_APIENTRY *glIsFenceNV_client_proc_t) (void * ctx, GLuint);
+typedef GLboolean (gl2_APIENTRY *glTestFenceNV_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glGetFenceivNV_client_proc_t) (void * ctx, GLuint, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glFinishFenceNV_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glSetFenceNV_client_proc_t) (void * ctx, GLuint, GLenum);
+typedef void (gl2_APIENTRY *glCoverageMaskNV_client_proc_t) (void * ctx, GLboolean);
+typedef void (gl2_APIENTRY *glCoverageOperationNV_client_proc_t) (void * ctx, GLenum);
+typedef void (gl2_APIENTRY *glGetDriverControlsQCOM_client_proc_t) (void * ctx, GLint*, GLsizei, GLuint*);
+typedef void (gl2_APIENTRY *glGetDriverControlStringQCOM_client_proc_t) (void * ctx, GLuint, GLsizei, GLsizei*, GLchar*);
+typedef void (gl2_APIENTRY *glEnableDriverControlQCOM_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glDisableDriverControlQCOM_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glExtGetTexturesQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl2_APIENTRY *glExtGetBuffersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl2_APIENTRY *glExtGetRenderbuffersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl2_APIENTRY *glExtGetFramebuffersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl2_APIENTRY *glExtGetTexLevelParameterivQCOM_client_proc_t) (void * ctx, GLuint, GLenum, GLint, GLenum, GLint*);
+typedef void (gl2_APIENTRY *glExtTexObjectStateOverrideiQCOM_client_proc_t) (void * ctx, GLenum, GLenum, GLint);
+typedef void (gl2_APIENTRY *glExtGetTexSubImageQCOM_client_proc_t) (void * ctx, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, GLvoid*);
+typedef void (gl2_APIENTRY *glExtGetBufferPointervQCOM_client_proc_t) (void * ctx, GLenum, GLvoidptr*);
+typedef void (gl2_APIENTRY *glExtGetShadersQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef void (gl2_APIENTRY *glExtGetProgramsQCOM_client_proc_t) (void * ctx, GLuint*, GLint, GLint*);
+typedef GLboolean (gl2_APIENTRY *glExtIsProgramBinaryQCOM_client_proc_t) (void * ctx, GLuint);
+typedef void (gl2_APIENTRY *glExtGetProgramBinarySourceQCOM_client_proc_t) (void * ctx, GLuint, GLenum, GLchar*, GLint*);
+typedef void (gl2_APIENTRY *glStartTilingQCOM_client_proc_t) (void * ctx, GLuint, GLuint, GLuint, GLuint, GLbitfield);
+typedef void (gl2_APIENTRY *glEndTilingQCOM_client_proc_t) (void * ctx, GLbitfield);
+typedef void (gl2_APIENTRY *glVertexAttribPointerData_client_proc_t) (void * ctx, GLuint, GLint, GLenum, GLboolean, GLsizei, void*, GLuint);
+typedef void (gl2_APIENTRY *glVertexAttribPointerOffset_client_proc_t) (void * ctx, GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint);
+typedef void (gl2_APIENTRY *glDrawElementsOffset_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, GLuint);
+typedef void (gl2_APIENTRY *glDrawElementsData_client_proc_t) (void * ctx, GLenum, GLsizei, GLenum, void*, GLuint);
+typedef void (gl2_APIENTRY *glGetCompressedTextureFormats_client_proc_t) (void * ctx, int, GLint*);
+typedef void (gl2_APIENTRY *glShaderString_client_proc_t) (void * ctx, GLuint, const GLchar*, GLsizei);
+typedef int (gl2_APIENTRY *glFinishRoundTrip_client_proc_t) (void * ctx);
+
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_enc.cpp b/tools/emulator/opengl/system/GLESv2_enc/gl2_enc.cpp
new file mode 100644
index 0000000..46684e9
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_enc.cpp
@@ -0,0 +1,3130 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+
+#include <string.h>
+#include "gl2_opcodes.h"
+
+#include "gl2_enc.h"
+
+
+#include <stdio.h>
+static void enc_unsupported()
+{
+	ALOGE("Function is unsupported\n");
+}
+
+void glActiveTexture_enc(void *self , GLenum texture)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glActiveTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &texture, 4); ptr += 4;
+}
+
+void glAttachShader_enc(void *self , GLuint program, GLuint shader)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glAttachShader;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &shader, 4); ptr += 4;
+}
+
+void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_name =  (strlen(name) + 1);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_name + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &index, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_name; ptr += 4;
+	memcpy(ptr, name, __size_name);ptr += __size_name;
+}
+
+void glBindBuffer_enc(void *self , GLenum target, GLuint buffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &buffer, 4); ptr += 4;
+}
+
+void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &framebuffer, 4); ptr += 4;
+}
+
+void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &renderbuffer, 4); ptr += 4;
+}
+
+void glBindTexture_enc(void *self , GLenum target, GLuint texture)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &texture, 4); ptr += 4;
+}
+
+void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendColor;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glBlendEquation_enc(void *self , GLenum mode)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendEquation;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendEquationSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &modeRGB, 4); ptr += 4;
+		memcpy(ptr, &modeAlpha, 4); ptr += 4;
+}
+
+void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &sfactor, 4); ptr += 4;
+		memcpy(ptr, &dfactor, 4); ptr += 4;
+}
+
+void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBlendFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &srcRGB, 4); ptr += 4;
+		memcpy(ptr, &dstRGB, 4); ptr += 4;
+		memcpy(ptr, &srcAlpha, 4); ptr += 4;
+		memcpy(ptr, &dstAlpha, 4); ptr += 4;
+}
+
+void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data = ((data != NULL) ?  size : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(8 + 4 + 4);
+	int tmp = OP_glBufferData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_data,4);
+	if (data != NULL) stream->writeFully(data, __size_data);
+	ptr = stream->alloc(4);
+		memcpy(ptr, &usage, 4); ptr += 4;
+}
+
+void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  size;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4);
+	int tmp = OP_glBufferSubData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_data,4);
+	stream->writeFully(data, __size_data);
+}
+
+GLenum glCheckFramebufferStatus_enc(void *self , GLenum target)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCheckFramebufferStatus;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+
+	GLenum retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glClear_enc(void *self , GLbitfield mask)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClear;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearColor;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 4); ptr += 4;
+		memcpy(ptr, &green, 4); ptr += 4;
+		memcpy(ptr, &blue, 4); ptr += 4;
+		memcpy(ptr, &alpha, 4); ptr += 4;
+}
+
+void glClearDepthf_enc(void *self , GLclampf depth)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearDepthf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &depth, 4); ptr += 4;
+}
+
+void glClearStencil_enc(void *self , GLint s)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glClearStencil;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &s, 4); ptr += 4;
+}
+
+void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 1 + 1 + 1 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glColorMask;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &red, 1); ptr += 1;
+		memcpy(ptr, &green, 1); ptr += 1;
+		memcpy(ptr, &blue, 1); ptr += 1;
+		memcpy(ptr, &alpha, 1); ptr += 1;
+}
+
+void glCompileShader_enc(void *self , GLuint shader)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCompileShader;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+}
+
+void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data = ((data != NULL) ?  imageSize : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glCompressedTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+		memcpy(ptr, &imageSize, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_data,4);
+	if (data != NULL) stream->writeFully(data, __size_data);
+}
+
+void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  imageSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glCompressedTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &imageSize, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_data,4);
+	stream->writeFully(data, __size_data);
+}
+
+void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCopyTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+}
+
+void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCopyTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+GLuint glCreateProgram_enc(void *self )
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCreateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+
+	GLuint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+GLuint glCreateShader_enc(void *self , GLenum type)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCreateShader;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &type, 4); ptr += 4;
+
+	GLuint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glCullFace_enc(void *self , GLenum mode)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCullFace;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+	memcpy(ptr, buffers, __size_buffers);ptr += __size_buffers;
+}
+
+void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+	memcpy(ptr, framebuffers, __size_framebuffers);ptr += __size_framebuffers;
+}
+
+void glDeleteProgram_enc(void *self , GLuint program)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteProgram;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+}
+
+void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+	memcpy(ptr, renderbuffers, __size_renderbuffers);ptr += __size_renderbuffers;
+}
+
+void glDeleteShader_enc(void *self , GLuint shader)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteShader;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+}
+
+void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_textures =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_textures + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteTextures;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+	memcpy(ptr, textures, __size_textures);ptr += __size_textures;
+}
+
+void glDepthFunc_enc(void *self , GLenum func)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+}
+
+void glDepthMask_enc(void *self , GLboolean flag)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthMask;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &flag, 1); ptr += 1;
+}
+
+void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDepthRangef;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &zNear, 4); ptr += 4;
+		memcpy(ptr, &zFar, 4); ptr += 4;
+}
+
+void glDetachShader_enc(void *self , GLuint program, GLuint shader)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDetachShader;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &shader, 4); ptr += 4;
+}
+
+void glDisable_enc(void *self , GLenum cap)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDisable;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &cap, 4); ptr += 4;
+}
+
+void glDisableVertexAttribArray_enc(void *self , GLuint index)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDisableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &index, 4); ptr += 4;
+}
+
+void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawArrays;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+		memcpy(ptr, &first, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+}
+
+void glEnable_enc(void *self , GLenum cap)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEnable;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &cap, 4); ptr += 4;
+}
+
+void glEnableVertexAttribArray_enc(void *self , GLuint index)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEnableVertexAttribArray;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &index, 4); ptr += 4;
+}
+
+void glFinish_enc(void *self )
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFinish;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glFlush_enc(void *self )
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFlush;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFramebufferRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &renderbuffertarget, 4); ptr += 4;
+		memcpy(ptr, &renderbuffer, 4); ptr += 4;
+}
+
+void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFramebufferTexture2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &textarget, 4); ptr += 4;
+		memcpy(ptr, &texture, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+}
+
+void glFrontFace_enc(void *self , GLenum mode)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFrontFace;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenBuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffers; ptr += 4;
+	stream->readback(buffers, __size_buffers);
+}
+
+void glGenerateMipmap_enc(void *self , GLenum target)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenerateMipmap;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+}
+
+void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_framebuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_framebuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenFramebuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_framebuffers; ptr += 4;
+	stream->readback(framebuffers, __size_framebuffers);
+}
+
+void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_renderbuffers =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_renderbuffers + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenRenderbuffers;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_renderbuffers; ptr += 4;
+	stream->readback(renderbuffers, __size_renderbuffers);
+}
+
+void glGenTextures_enc(void *self , GLsizei n, GLuint* textures)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_textures =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_textures + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenTextures;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_textures; ptr += 4;
+	stream->readback(textures, __size_textures);
+}
+
+void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
+	const unsigned int __size_size =  (sizeof(GLint));
+	const unsigned int __size_type =  (sizeof(GLenum));
+	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_length + __size_size + __size_type + __size_name + 4*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetActiveAttrib;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &index, 4); ptr += 4;
+		memcpy(ptr, &bufsize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_length; ptr += 4;
+	*(unsigned int *)(ptr) = __size_size; ptr += 4;
+	*(unsigned int *)(ptr) = __size_type; ptr += 4;
+	*(unsigned int *)(ptr) = __size_name; ptr += 4;
+	if (length != NULL) stream->readback(length, __size_length);
+	stream->readback(size, __size_size);
+	stream->readback(type, __size_type);
+	if (name != NULL) stream->readback(name, __size_name);
+}
+
+void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
+	const unsigned int __size_size =  (sizeof(GLint));
+	const unsigned int __size_type =  (sizeof(GLenum));
+	const unsigned int __size_name = ((name != NULL) ?  bufsize : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_length + __size_size + __size_type + __size_name + 4*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetActiveUniform;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &index, 4); ptr += 4;
+		memcpy(ptr, &bufsize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_length; ptr += 4;
+	*(unsigned int *)(ptr) = __size_size; ptr += 4;
+	*(unsigned int *)(ptr) = __size_type; ptr += 4;
+	*(unsigned int *)(ptr) = __size_name; ptr += 4;
+	if (length != NULL) stream->readback(length, __size_length);
+	stream->readback(size, __size_size);
+	stream->readback(type, __size_type);
+	if (name != NULL) stream->readback(name, __size_name);
+}
+
+void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_count = ((count != NULL) ?  (sizeof(GLsizei)) : 0);
+	const unsigned int __size_shaders =  (maxcount*sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_count + __size_shaders + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetAttachedShaders;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &maxcount, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_count; ptr += 4;
+	*(unsigned int *)(ptr) = __size_shaders; ptr += 4;
+	if (count != NULL) stream->readback(count, __size_count);
+	stream->readback(shaders, __size_shaders);
+}
+
+int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_name =  (strlen(name) + 1);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_name + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetAttribLocation;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_name; ptr += 4;
+	memcpy(ptr, name, __size_name);ptr += __size_name;
+
+	int retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLboolean));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetBooleanv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetBufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+GLenum glGetError_enc(void *self )
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetError;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+
+	GLenum retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFloatv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetFramebufferAttachmentParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetIntegerv_enc(void *self , GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetIntegerv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  sizeof(GLint);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetProgramiv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_length =  sizeof(GLsizei);
+	const unsigned int __size_infolog =  bufsize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_length + __size_infolog + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetProgramInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &bufsize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_length; ptr += 4;
+	*(unsigned int *)(ptr) = __size_infolog; ptr += 4;
+	stream->readback(length, __size_length);
+	stream->readback(infolog, __size_infolog);
+}
+
+void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  sizeof(GLint);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetRenderbufferParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  sizeof(GLint);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetShaderiv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
+	const unsigned int __size_infolog =  bufsize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_length + __size_infolog + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetShaderInfoLog;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+		memcpy(ptr, &bufsize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_length; ptr += 4;
+	*(unsigned int *)(ptr) = __size_infolog; ptr += 4;
+	if (length != NULL) stream->readback(length, __size_length);
+	stream->readback(infolog, __size_infolog);
+}
+
+void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_range =  (2 * sizeof(GLint));
+	const unsigned int __size_precision =  (sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_range + __size_precision + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetShaderPrecisionFormat;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shadertype, 4); ptr += 4;
+		memcpy(ptr, &precisiontype, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_range; ptr += 4;
+	*(unsigned int *)(ptr) = __size_precision; ptr += 4;
+	stream->readback(range, __size_range);
+	stream->readback(precision, __size_precision);
+}
+
+void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_length = ((length != NULL) ?  (sizeof(GLsizei)) : 0);
+	const unsigned int __size_source =  bufsize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_length + __size_source + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetShaderSource;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+		memcpy(ptr, &bufsize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_length; ptr += 4;
+	*(unsigned int *)(ptr) = __size_source; ptr += 4;
+	if (length != NULL) stream->readback(length, __size_length);
+	stream->readback(source, __size_source);
+}
+
+void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  glSizeof(uniformType(self, program, location));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetUniformfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &location, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  glSizeof(uniformType(self, program, location));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetUniformiv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+		memcpy(ptr, &location, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_name =  (strlen(name) + 1);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_name + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetUniformLocation;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_name; ptr += 4;
+	memcpy(ptr, name, __size_name);ptr += __size_name;
+
+	int retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetVertexAttribfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &index, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetVertexAttribiv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &index, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	stream->readback(params, __size_params);
+}
+
+void glHint_enc(void *self , GLenum target, GLenum mode)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glHint;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &mode, 4); ptr += 4;
+}
+
+GLboolean glIsBuffer_enc(void *self , GLuint buffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &buffer, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsEnabled_enc(void *self , GLenum cap)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsEnabled;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &cap, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsFramebuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &framebuffer, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsProgram_enc(void *self , GLuint program)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsProgram;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &renderbuffer, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsShader_enc(void *self , GLuint shader)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsShader;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+GLboolean glIsTexture_enc(void *self , GLuint texture)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &texture, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glLineWidth_enc(void *self , GLfloat width)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLineWidth;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &width, 4); ptr += 4;
+}
+
+void glLinkProgram_enc(void *self , GLuint program)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glLinkProgram;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+}
+
+void glPixelStorei_enc(void *self , GLenum pname, GLint param)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPixelStorei;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glPolygonOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &factor, 4); ptr += 4;
+		memcpy(ptr, &units, 4); ptr += 4;
+}
+
+void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  pixelDataSize(self, width, height, format, type, 1);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glReadPixels;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
+	stream->readback(pixels, __size_pixels);
+}
+
+void glReleaseShaderCompiler_enc(void *self )
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glReleaseShaderCompiler;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+}
+
+void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glRenderbufferStorage;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 1;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glSampleCoverage;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &value, 4); ptr += 4;
+		memcpy(ptr, &invert, 1); ptr += 1;
+}
+
+void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glScissor;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilFunc;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &func, 4); ptr += 4;
+		memcpy(ptr, &ref, 4); ptr += 4;
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilFuncSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &func, 4); ptr += 4;
+		memcpy(ptr, &ref, 4); ptr += 4;
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glStencilMask_enc(void *self , GLuint mask)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilMask;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilMaskSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &mask, 4); ptr += 4;
+}
+
+void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilOp;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &fail, 4); ptr += 4;
+		memcpy(ptr, &zfail, 4); ptr += 4;
+		memcpy(ptr, &zpass, 4); ptr += 4;
+}
+
+void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glStencilOpSeparate;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &face, 4); ptr += 4;
+		memcpy(ptr, &fail, 4); ptr += 4;
+		memcpy(ptr, &zfail, 4); ptr += 4;
+		memcpy(ptr, &zpass, 4); ptr += 4;
+}
+
+void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels = ((pixels != NULL) ?  pixelDataSize(self, width, height, format, type, 0) : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glTexImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+}
+
+void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterf;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameterfv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameteri;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+		memcpy(ptr, &param, 4); ptr += 4;
+}
+
+void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_params =  (glUtilsParamSize(pname) * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_params + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glTexParameteriv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &pname, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_params; ptr += 4;
+	memcpy(ptr, params, __size_params);ptr += __size_params;
+}
+
+void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  pixelDataSize(self, width, height, format, type, 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glTexSubImage2D;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	stream->writeFully(pixels, __size_pixels);
+}
+
+void glUniform1f_enc(void *self , GLint location, GLfloat x)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform1f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+}
+
+void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (count * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform1fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform1i_enc(void *self , GLint location, GLint x)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform1i;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+}
+
+void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (count * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform1iv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform2f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+}
+
+void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (count * 2 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform2fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform2i_enc(void *self , GLint location, GLint x, GLint y)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform2i;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+}
+
+void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (count * 2 * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform2iv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform3f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (count * 3 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform3fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform3i;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (3 * count * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform3iv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform4f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+		memcpy(ptr, &w, 4); ptr += 4;
+}
+
+void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (4 * count * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform4fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform4i;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+		memcpy(ptr, &w, 4); ptr += 4;
+}
+
+void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_v =  (4 * count * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_v + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniform4iv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_v; ptr += 4;
+	memcpy(ptr, v, __size_v);ptr += __size_v;
+}
+
+void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_value =  (count * 4 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 1 + __size_value + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniformMatrix2fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &transpose, 1); ptr += 1;
+	*(unsigned int *)(ptr) = __size_value; ptr += 4;
+	memcpy(ptr, value, __size_value);ptr += __size_value;
+}
+
+void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_value =  (count * 9 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 1 + __size_value + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniformMatrix3fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &transpose, 1); ptr += 1;
+	*(unsigned int *)(ptr) = __size_value; ptr += 4;
+	memcpy(ptr, value, __size_value);ptr += __size_value;
+}
+
+void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_value =  (count * 16 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 1 + __size_value + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUniformMatrix4fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &location, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &transpose, 1); ptr += 1;
+	*(unsigned int *)(ptr) = __size_value; ptr += 4;
+	memcpy(ptr, value, __size_value);ptr += __size_value;
+}
+
+void glUseProgram_enc(void *self , GLuint program)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUseProgram;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+}
+
+void glValidateProgram_enc(void *self , GLuint program)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glValidateProgram;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &program, 4); ptr += 4;
+}
+
+void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib1f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+}
+
+void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_values =  (sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_values + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib1fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_values; ptr += 4;
+	memcpy(ptr, values, __size_values);ptr += __size_values;
+}
+
+void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib2f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+}
+
+void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_values =  (2 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_values + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib2fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_values; ptr += 4;
+	memcpy(ptr, values, __size_values);ptr += __size_values;
+}
+
+void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib3f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+}
+
+void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_values =  (3 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_values + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib3fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_values; ptr += 4;
+	memcpy(ptr, values, __size_values);ptr += __size_values;
+}
+
+void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib4f;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &z, 4); ptr += 4;
+		memcpy(ptr, &w, 4); ptr += 4;
+}
+
+void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_values =  (4 * sizeof(GLfloat));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_values + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttrib4fv;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_values; ptr += 4;
+	memcpy(ptr, values, __size_values);ptr += __size_values;
+}
+
+void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glViewport;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEGLImageTargetTexture2DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &image, 4); ptr += 4;
+}
+
+void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glEGLImageTargetRenderbufferStorageOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &image, 4); ptr += 4;
+}
+
+GLboolean glUnmapBufferOES_enc(void *self , GLenum target)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glUnmapBufferOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels = ((pixels != NULL) ?  pixelDataSize3D(self, width, height, depth, format, type, 0) : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &depth, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	if (pixels != NULL) stream->writeFully(pixels, __size_pixels);
+}
+
+void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  pixelDataSize3D(self, width, height, depth, format, type, 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &zoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &depth, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	stream->writeFully(pixels, __size_pixels);
+}
+
+void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glCopyTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &zoffset, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+}
+
+void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  imageSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glCompressedTexImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &internalformat, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &depth, 4); ptr += 4;
+		memcpy(ptr, &border, 4); ptr += 4;
+		memcpy(ptr, &imageSize, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_data,4);
+	stream->writeFully(data, __size_data);
+}
+
+void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  imageSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_data + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_glCompressedTexSubImage3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &xoffset, 4); ptr += 4;
+		memcpy(ptr, &yoffset, 4); ptr += 4;
+		memcpy(ptr, &zoffset, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &depth, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &imageSize, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_data,4);
+	stream->writeFully(data, __size_data);
+}
+
+void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFramebufferTexture3DOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &attachment, 4); ptr += 4;
+		memcpy(ptr, &textarget, 4); ptr += 4;
+		memcpy(ptr, &texture, 4); ptr += 4;
+		memcpy(ptr, &level, 4); ptr += 4;
+		memcpy(ptr, &zoffset, 4); ptr += 4;
+}
+
+void glBindVertexArrayOES_enc(void *self , GLuint array)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glBindVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &array, 4); ptr += 4;
+}
+
+void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_arrays =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDeleteVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
+	memcpy(ptr, arrays, __size_arrays);ptr += __size_arrays;
+}
+
+void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_arrays =  (n * sizeof(GLuint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_arrays + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGenVertexArraysOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &n, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_arrays; ptr += 4;
+	stream->readback(arrays, __size_arrays);
+}
+
+GLboolean glIsVertexArrayOES_enc(void *self , GLuint array)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glIsVertexArrayOES;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &array, 4); ptr += 4;
+
+	GLboolean retval;
+	stream->readback(&retval, 1);
+	return retval;
+}
+
+void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_attachments =  (numAttachments * sizeof(GLenum));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + __size_attachments + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDiscardFramebufferEXT;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &target, 4); ptr += 4;
+		memcpy(ptr, &numAttachments, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_attachments; ptr += 4;
+	memcpy(ptr, attachments, __size_attachments);ptr += __size_attachments;
+}
+
+void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 1 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttribPointerData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &normalized, 1); ptr += 1;
+		memcpy(ptr, &stride, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	 glUtilsPackPointerData((unsigned char *)ptr, (unsigned char *)data, size, type, stride, datalen);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 1 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glVertexAttribPointerOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &indx, 4); ptr += 4;
+		memcpy(ptr, &size, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &normalized, 1); ptr += 1;
+		memcpy(ptr, &stride, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawElementsOffset;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+		memcpy(ptr, &offset, 4); ptr += 4;
+}
+
+void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_data =  datalen;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + __size_data + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glDrawElementsData;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &mode, 4); ptr += 4;
+		memcpy(ptr, &count, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_data; ptr += 4;
+	memcpy(ptr, data, __size_data);ptr += __size_data;
+		memcpy(ptr, &datalen, 4); ptr += 4;
+}
+
+void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_formats =  (count * sizeof(GLint));
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_formats + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glGetCompressedTextureFormats;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &count, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_formats; ptr += 4;
+	stream->readback(formats, __size_formats);
+}
+
+void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len)
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_string =  len;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_string + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glShaderString;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &shader, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_string; ptr += 4;
+	memcpy(ptr, string, __size_string);ptr += __size_string;
+		memcpy(ptr, &len, 4); ptr += 4;
+}
+
+int glFinishRoundTrip_enc(void *self )
+{
+
+	gl2_encoder_context_t *ctx = (gl2_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 0;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_glFinishRoundTrip;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+
+	int retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+gl2_encoder_context_t::gl2_encoder_context_t(IOStream *stream)
+{
+	m_stream = stream;
+
+	set_glActiveTexture(glActiveTexture_enc);
+	set_glAttachShader(glAttachShader_enc);
+	set_glBindAttribLocation(glBindAttribLocation_enc);
+	set_glBindBuffer(glBindBuffer_enc);
+	set_glBindFramebuffer(glBindFramebuffer_enc);
+	set_glBindRenderbuffer(glBindRenderbuffer_enc);
+	set_glBindTexture(glBindTexture_enc);
+	set_glBlendColor(glBlendColor_enc);
+	set_glBlendEquation(glBlendEquation_enc);
+	set_glBlendEquationSeparate(glBlendEquationSeparate_enc);
+	set_glBlendFunc(glBlendFunc_enc);
+	set_glBlendFuncSeparate(glBlendFuncSeparate_enc);
+	set_glBufferData(glBufferData_enc);
+	set_glBufferSubData(glBufferSubData_enc);
+	set_glCheckFramebufferStatus(glCheckFramebufferStatus_enc);
+	set_glClear(glClear_enc);
+	set_glClearColor(glClearColor_enc);
+	set_glClearDepthf(glClearDepthf_enc);
+	set_glClearStencil(glClearStencil_enc);
+	set_glColorMask(glColorMask_enc);
+	set_glCompileShader(glCompileShader_enc);
+	set_glCompressedTexImage2D(glCompressedTexImage2D_enc);
+	set_glCompressedTexSubImage2D(glCompressedTexSubImage2D_enc);
+	set_glCopyTexImage2D(glCopyTexImage2D_enc);
+	set_glCopyTexSubImage2D(glCopyTexSubImage2D_enc);
+	set_glCreateProgram(glCreateProgram_enc);
+	set_glCreateShader(glCreateShader_enc);
+	set_glCullFace(glCullFace_enc);
+	set_glDeleteBuffers(glDeleteBuffers_enc);
+	set_glDeleteFramebuffers(glDeleteFramebuffers_enc);
+	set_glDeleteProgram(glDeleteProgram_enc);
+	set_glDeleteRenderbuffers(glDeleteRenderbuffers_enc);
+	set_glDeleteShader(glDeleteShader_enc);
+	set_glDeleteTextures(glDeleteTextures_enc);
+	set_glDepthFunc(glDepthFunc_enc);
+	set_glDepthMask(glDepthMask_enc);
+	set_glDepthRangef(glDepthRangef_enc);
+	set_glDetachShader(glDetachShader_enc);
+	set_glDisable(glDisable_enc);
+	set_glDisableVertexAttribArray(glDisableVertexAttribArray_enc);
+	set_glDrawArrays(glDrawArrays_enc);
+	set_glDrawElements((glDrawElements_client_proc_t)(enc_unsupported));
+	set_glEnable(glEnable_enc);
+	set_glEnableVertexAttribArray(glEnableVertexAttribArray_enc);
+	set_glFinish(glFinish_enc);
+	set_glFlush(glFlush_enc);
+	set_glFramebufferRenderbuffer(glFramebufferRenderbuffer_enc);
+	set_glFramebufferTexture2D(glFramebufferTexture2D_enc);
+	set_glFrontFace(glFrontFace_enc);
+	set_glGenBuffers(glGenBuffers_enc);
+	set_glGenerateMipmap(glGenerateMipmap_enc);
+	set_glGenFramebuffers(glGenFramebuffers_enc);
+	set_glGenRenderbuffers(glGenRenderbuffers_enc);
+	set_glGenTextures(glGenTextures_enc);
+	set_glGetActiveAttrib(glGetActiveAttrib_enc);
+	set_glGetActiveUniform(glGetActiveUniform_enc);
+	set_glGetAttachedShaders(glGetAttachedShaders_enc);
+	set_glGetAttribLocation(glGetAttribLocation_enc);
+	set_glGetBooleanv(glGetBooleanv_enc);
+	set_glGetBufferParameteriv(glGetBufferParameteriv_enc);
+	set_glGetError(glGetError_enc);
+	set_glGetFloatv(glGetFloatv_enc);
+	set_glGetFramebufferAttachmentParameteriv(glGetFramebufferAttachmentParameteriv_enc);
+	set_glGetIntegerv(glGetIntegerv_enc);
+	set_glGetProgramiv(glGetProgramiv_enc);
+	set_glGetProgramInfoLog(glGetProgramInfoLog_enc);
+	set_glGetRenderbufferParameteriv(glGetRenderbufferParameteriv_enc);
+	set_glGetShaderiv(glGetShaderiv_enc);
+	set_glGetShaderInfoLog(glGetShaderInfoLog_enc);
+	set_glGetShaderPrecisionFormat(glGetShaderPrecisionFormat_enc);
+	set_glGetShaderSource(glGetShaderSource_enc);
+	set_glGetString((glGetString_client_proc_t)(enc_unsupported));
+	set_glGetTexParameterfv(glGetTexParameterfv_enc);
+	set_glGetTexParameteriv(glGetTexParameteriv_enc);
+	set_glGetUniformfv(glGetUniformfv_enc);
+	set_glGetUniformiv(glGetUniformiv_enc);
+	set_glGetUniformLocation(glGetUniformLocation_enc);
+	set_glGetVertexAttribfv(glGetVertexAttribfv_enc);
+	set_glGetVertexAttribiv(glGetVertexAttribiv_enc);
+	set_glGetVertexAttribPointerv((glGetVertexAttribPointerv_client_proc_t)(enc_unsupported));
+	set_glHint(glHint_enc);
+	set_glIsBuffer(glIsBuffer_enc);
+	set_glIsEnabled(glIsEnabled_enc);
+	set_glIsFramebuffer(glIsFramebuffer_enc);
+	set_glIsProgram(glIsProgram_enc);
+	set_glIsRenderbuffer(glIsRenderbuffer_enc);
+	set_glIsShader(glIsShader_enc);
+	set_glIsTexture(glIsTexture_enc);
+	set_glLineWidth(glLineWidth_enc);
+	set_glLinkProgram(glLinkProgram_enc);
+	set_glPixelStorei(glPixelStorei_enc);
+	set_glPolygonOffset(glPolygonOffset_enc);
+	set_glReadPixels(glReadPixels_enc);
+	set_glReleaseShaderCompiler(glReleaseShaderCompiler_enc);
+	set_glRenderbufferStorage(glRenderbufferStorage_enc);
+	set_glSampleCoverage(glSampleCoverage_enc);
+	set_glScissor(glScissor_enc);
+	set_glShaderBinary((glShaderBinary_client_proc_t)(enc_unsupported));
+	set_glShaderSource((glShaderSource_client_proc_t)(enc_unsupported));
+	set_glStencilFunc(glStencilFunc_enc);
+	set_glStencilFuncSeparate(glStencilFuncSeparate_enc);
+	set_glStencilMask(glStencilMask_enc);
+	set_glStencilMaskSeparate(glStencilMaskSeparate_enc);
+	set_glStencilOp(glStencilOp_enc);
+	set_glStencilOpSeparate(glStencilOpSeparate_enc);
+	set_glTexImage2D(glTexImage2D_enc);
+	set_glTexParameterf(glTexParameterf_enc);
+	set_glTexParameterfv(glTexParameterfv_enc);
+	set_glTexParameteri(glTexParameteri_enc);
+	set_glTexParameteriv(glTexParameteriv_enc);
+	set_glTexSubImage2D(glTexSubImage2D_enc);
+	set_glUniform1f(glUniform1f_enc);
+	set_glUniform1fv(glUniform1fv_enc);
+	set_glUniform1i(glUniform1i_enc);
+	set_glUniform1iv(glUniform1iv_enc);
+	set_glUniform2f(glUniform2f_enc);
+	set_glUniform2fv(glUniform2fv_enc);
+	set_glUniform2i(glUniform2i_enc);
+	set_glUniform2iv(glUniform2iv_enc);
+	set_glUniform3f(glUniform3f_enc);
+	set_glUniform3fv(glUniform3fv_enc);
+	set_glUniform3i(glUniform3i_enc);
+	set_glUniform3iv(glUniform3iv_enc);
+	set_glUniform4f(glUniform4f_enc);
+	set_glUniform4fv(glUniform4fv_enc);
+	set_glUniform4i(glUniform4i_enc);
+	set_glUniform4iv(glUniform4iv_enc);
+	set_glUniformMatrix2fv(glUniformMatrix2fv_enc);
+	set_glUniformMatrix3fv(glUniformMatrix3fv_enc);
+	set_glUniformMatrix4fv(glUniformMatrix4fv_enc);
+	set_glUseProgram(glUseProgram_enc);
+	set_glValidateProgram(glValidateProgram_enc);
+	set_glVertexAttrib1f(glVertexAttrib1f_enc);
+	set_glVertexAttrib1fv(glVertexAttrib1fv_enc);
+	set_glVertexAttrib2f(glVertexAttrib2f_enc);
+	set_glVertexAttrib2fv(glVertexAttrib2fv_enc);
+	set_glVertexAttrib3f(glVertexAttrib3f_enc);
+	set_glVertexAttrib3fv(glVertexAttrib3fv_enc);
+	set_glVertexAttrib4f(glVertexAttrib4f_enc);
+	set_glVertexAttrib4fv(glVertexAttrib4fv_enc);
+	set_glVertexAttribPointer((glVertexAttribPointer_client_proc_t)(enc_unsupported));
+	set_glViewport(glViewport_enc);
+	set_glEGLImageTargetTexture2DOES(glEGLImageTargetTexture2DOES_enc);
+	set_glEGLImageTargetRenderbufferStorageOES(glEGLImageTargetRenderbufferStorageOES_enc);
+	set_glGetProgramBinaryOES((glGetProgramBinaryOES_client_proc_t)(enc_unsupported));
+	set_glProgramBinaryOES((glProgramBinaryOES_client_proc_t)(enc_unsupported));
+	set_glMapBufferOES((glMapBufferOES_client_proc_t)(enc_unsupported));
+	set_glUnmapBufferOES(glUnmapBufferOES_enc);
+	set_glTexImage3DOES(glTexImage3DOES_enc);
+	set_glTexSubImage3DOES(glTexSubImage3DOES_enc);
+	set_glCopyTexSubImage3DOES(glCopyTexSubImage3DOES_enc);
+	set_glCompressedTexImage3DOES(glCompressedTexImage3DOES_enc);
+	set_glCompressedTexSubImage3DOES(glCompressedTexSubImage3DOES_enc);
+	set_glFramebufferTexture3DOES(glFramebufferTexture3DOES_enc);
+	set_glBindVertexArrayOES(glBindVertexArrayOES_enc);
+	set_glDeleteVertexArraysOES(glDeleteVertexArraysOES_enc);
+	set_glGenVertexArraysOES(glGenVertexArraysOES_enc);
+	set_glIsVertexArrayOES(glIsVertexArrayOES_enc);
+	set_glDiscardFramebufferEXT(glDiscardFramebufferEXT_enc);
+	set_glMultiDrawArraysEXT((glMultiDrawArraysEXT_client_proc_t)(enc_unsupported));
+	set_glMultiDrawElementsEXT((glMultiDrawElementsEXT_client_proc_t)(enc_unsupported));
+	set_glGetPerfMonitorGroupsAMD((glGetPerfMonitorGroupsAMD_client_proc_t)(enc_unsupported));
+	set_glGetPerfMonitorCountersAMD((glGetPerfMonitorCountersAMD_client_proc_t)(enc_unsupported));
+	set_glGetPerfMonitorGroupStringAMD((glGetPerfMonitorGroupStringAMD_client_proc_t)(enc_unsupported));
+	set_glGetPerfMonitorCounterStringAMD((glGetPerfMonitorCounterStringAMD_client_proc_t)(enc_unsupported));
+	set_glGetPerfMonitorCounterInfoAMD((glGetPerfMonitorCounterInfoAMD_client_proc_t)(enc_unsupported));
+	set_glGenPerfMonitorsAMD((glGenPerfMonitorsAMD_client_proc_t)(enc_unsupported));
+	set_glDeletePerfMonitorsAMD((glDeletePerfMonitorsAMD_client_proc_t)(enc_unsupported));
+	set_glSelectPerfMonitorCountersAMD((glSelectPerfMonitorCountersAMD_client_proc_t)(enc_unsupported));
+	set_glBeginPerfMonitorAMD((glBeginPerfMonitorAMD_client_proc_t)(enc_unsupported));
+	set_glEndPerfMonitorAMD((glEndPerfMonitorAMD_client_proc_t)(enc_unsupported));
+	set_glGetPerfMonitorCounterDataAMD((glGetPerfMonitorCounterDataAMD_client_proc_t)(enc_unsupported));
+	set_glRenderbufferStorageMultisampleIMG((glRenderbufferStorageMultisampleIMG_client_proc_t)(enc_unsupported));
+	set_glFramebufferTexture2DMultisampleIMG((glFramebufferTexture2DMultisampleIMG_client_proc_t)(enc_unsupported));
+	set_glDeleteFencesNV((glDeleteFencesNV_client_proc_t)(enc_unsupported));
+	set_glGenFencesNV((glGenFencesNV_client_proc_t)(enc_unsupported));
+	set_glIsFenceNV((glIsFenceNV_client_proc_t)(enc_unsupported));
+	set_glTestFenceNV((glTestFenceNV_client_proc_t)(enc_unsupported));
+	set_glGetFenceivNV((glGetFenceivNV_client_proc_t)(enc_unsupported));
+	set_glFinishFenceNV((glFinishFenceNV_client_proc_t)(enc_unsupported));
+	set_glSetFenceNV((glSetFenceNV_client_proc_t)(enc_unsupported));
+	set_glCoverageMaskNV((glCoverageMaskNV_client_proc_t)(enc_unsupported));
+	set_glCoverageOperationNV((glCoverageOperationNV_client_proc_t)(enc_unsupported));
+	set_glGetDriverControlsQCOM((glGetDriverControlsQCOM_client_proc_t)(enc_unsupported));
+	set_glGetDriverControlStringQCOM((glGetDriverControlStringQCOM_client_proc_t)(enc_unsupported));
+	set_glEnableDriverControlQCOM((glEnableDriverControlQCOM_client_proc_t)(enc_unsupported));
+	set_glDisableDriverControlQCOM((glDisableDriverControlQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetTexturesQCOM((glExtGetTexturesQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetBuffersQCOM((glExtGetBuffersQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetRenderbuffersQCOM((glExtGetRenderbuffersQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetFramebuffersQCOM((glExtGetFramebuffersQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetTexLevelParameterivQCOM((glExtGetTexLevelParameterivQCOM_client_proc_t)(enc_unsupported));
+	set_glExtTexObjectStateOverrideiQCOM((glExtTexObjectStateOverrideiQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetTexSubImageQCOM((glExtGetTexSubImageQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetBufferPointervQCOM((glExtGetBufferPointervQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetShadersQCOM((glExtGetShadersQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetProgramsQCOM((glExtGetProgramsQCOM_client_proc_t)(enc_unsupported));
+	set_glExtIsProgramBinaryQCOM((glExtIsProgramBinaryQCOM_client_proc_t)(enc_unsupported));
+	set_glExtGetProgramBinarySourceQCOM((glExtGetProgramBinarySourceQCOM_client_proc_t)(enc_unsupported));
+	set_glStartTilingQCOM((glStartTilingQCOM_client_proc_t)(enc_unsupported));
+	set_glEndTilingQCOM((glEndTilingQCOM_client_proc_t)(enc_unsupported));
+	set_glVertexAttribPointerData(glVertexAttribPointerData_enc);
+	set_glVertexAttribPointerOffset(glVertexAttribPointerOffset_enc);
+	set_glDrawElementsOffset(glDrawElementsOffset_enc);
+	set_glDrawElementsData(glDrawElementsData_enc);
+	set_glGetCompressedTextureFormats(glGetCompressedTextureFormats_enc);
+	set_glShaderString(glShaderString_enc);
+	set_glFinishRoundTrip(glFinishRoundTrip_enc);
+}
+
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_enc.h b/tools/emulator/opengl/system/GLESv2_enc/gl2_enc.h
new file mode 100644
index 0000000..f422c11
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_enc.h
@@ -0,0 +1,234 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+#ifndef GUARD_gl2_encoder_context_t
+#define GUARD_gl2_encoder_context_t
+
+#include "IOStream.h"
+#include "gl2_client_context.h"
+
+
+#include <string.h>
+#include "glUtils.h"
+#include "GL2EncoderUtils.h"
+
+struct gl2_encoder_context_t : public gl2_client_context_t {
+
+	IOStream *m_stream;
+
+	gl2_encoder_context_t(IOStream *stream);
+
+
+};
+
+extern "C" {
+	void glActiveTexture_enc(void *self , GLenum texture);
+	void glAttachShader_enc(void *self , GLuint program, GLuint shader);
+	void glBindAttribLocation_enc(void *self , GLuint program, GLuint index, const GLchar* name);
+	void glBindBuffer_enc(void *self , GLenum target, GLuint buffer);
+	void glBindFramebuffer_enc(void *self , GLenum target, GLuint framebuffer);
+	void glBindRenderbuffer_enc(void *self , GLenum target, GLuint renderbuffer);
+	void glBindTexture_enc(void *self , GLenum target, GLuint texture);
+	void glBlendColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void glBlendEquation_enc(void *self , GLenum mode);
+	void glBlendEquationSeparate_enc(void *self , GLenum modeRGB, GLenum modeAlpha);
+	void glBlendFunc_enc(void *self , GLenum sfactor, GLenum dfactor);
+	void glBlendFuncSeparate_enc(void *self , GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void glBufferData_enc(void *self , GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void glBufferSubData_enc(void *self , GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	GLenum glCheckFramebufferStatus_enc(void *self , GLenum target);
+	void glClear_enc(void *self , GLbitfield mask);
+	void glClearColor_enc(void *self , GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void glClearDepthf_enc(void *self , GLclampf depth);
+	void glClearStencil_enc(void *self , GLint s);
+	void glColorMask_enc(void *self , GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void glCompileShader_enc(void *self , GLuint shader);
+	void glCompressedTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
+	void glCompressedTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
+	void glCopyTexImage2D_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void glCopyTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	GLuint glCreateProgram_enc(void *self );
+	GLuint glCreateShader_enc(void *self , GLenum type);
+	void glCullFace_enc(void *self , GLenum mode);
+	void glDeleteBuffers_enc(void *self , GLsizei n, const GLuint* buffers);
+	void glDeleteFramebuffers_enc(void *self , GLsizei n, const GLuint* framebuffers);
+	void glDeleteProgram_enc(void *self , GLuint program);
+	void glDeleteRenderbuffers_enc(void *self , GLsizei n, const GLuint* renderbuffers);
+	void glDeleteShader_enc(void *self , GLuint shader);
+	void glDeleteTextures_enc(void *self , GLsizei n, const GLuint* textures);
+	void glDepthFunc_enc(void *self , GLenum func);
+	void glDepthMask_enc(void *self , GLboolean flag);
+	void glDepthRangef_enc(void *self , GLclampf zNear, GLclampf zFar);
+	void glDetachShader_enc(void *self , GLuint program, GLuint shader);
+	void glDisable_enc(void *self , GLenum cap);
+	void glDisableVertexAttribArray_enc(void *self , GLuint index);
+	void glDrawArrays_enc(void *self , GLenum mode, GLint first, GLsizei count);
+	void glDrawElements_enc(void *self , GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void glEnable_enc(void *self , GLenum cap);
+	void glEnableVertexAttribArray_enc(void *self , GLuint index);
+	void glFinish_enc(void *self );
+	void glFlush_enc(void *self );
+	void glFramebufferRenderbuffer_enc(void *self , GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void glFramebufferTexture2D_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void glFrontFace_enc(void *self , GLenum mode);
+	void glGenBuffers_enc(void *self , GLsizei n, GLuint* buffers);
+	void glGenerateMipmap_enc(void *self , GLenum target);
+	void glGenFramebuffers_enc(void *self , GLsizei n, GLuint* framebuffers);
+	void glGenRenderbuffers_enc(void *self , GLsizei n, GLuint* renderbuffers);
+	void glGenTextures_enc(void *self , GLsizei n, GLuint* textures);
+	void glGetActiveAttrib_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+	void glGetActiveUniform_enc(void *self , GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+	void glGetAttachedShaders_enc(void *self , GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
+	int glGetAttribLocation_enc(void *self , GLuint program, const GLchar* name);
+	void glGetBooleanv_enc(void *self , GLenum pname, GLboolean* params);
+	void glGetBufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params);
+	GLenum glGetError_enc(void *self );
+	void glGetFloatv_enc(void *self , GLenum pname, GLfloat* params);
+	void glGetFramebufferAttachmentParameteriv_enc(void *self , GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void glGetIntegerv_enc(void *self , GLenum pname, GLint* params);
+	void glGetProgramiv_enc(void *self , GLuint program, GLenum pname, GLint* params);
+	void glGetProgramInfoLog_enc(void *self , GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void glGetRenderbufferParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params);
+	void glGetShaderiv_enc(void *self , GLuint shader, GLenum pname, GLint* params);
+	void glGetShaderInfoLog_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void glGetShaderPrecisionFormat_enc(void *self , GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
+	void glGetShaderSource_enc(void *self , GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+	const GLubyte* glGetString_enc(void *self , GLenum name);
+	void glGetTexParameterfv_enc(void *self , GLenum target, GLenum pname, GLfloat* params);
+	void glGetTexParameteriv_enc(void *self , GLenum target, GLenum pname, GLint* params);
+	void glGetUniformfv_enc(void *self , GLuint program, GLint location, GLfloat* params);
+	void glGetUniformiv_enc(void *self , GLuint program, GLint location, GLint* params);
+	int glGetUniformLocation_enc(void *self , GLuint program, const GLchar* name);
+	void glGetVertexAttribfv_enc(void *self , GLuint index, GLenum pname, GLfloat* params);
+	void glGetVertexAttribiv_enc(void *self , GLuint index, GLenum pname, GLint* params);
+	void glGetVertexAttribPointerv_enc(void *self , GLuint index, GLenum pname, GLvoid** pointer);
+	void glHint_enc(void *self , GLenum target, GLenum mode);
+	GLboolean glIsBuffer_enc(void *self , GLuint buffer);
+	GLboolean glIsEnabled_enc(void *self , GLenum cap);
+	GLboolean glIsFramebuffer_enc(void *self , GLuint framebuffer);
+	GLboolean glIsProgram_enc(void *self , GLuint program);
+	GLboolean glIsRenderbuffer_enc(void *self , GLuint renderbuffer);
+	GLboolean glIsShader_enc(void *self , GLuint shader);
+	GLboolean glIsTexture_enc(void *self , GLuint texture);
+	void glLineWidth_enc(void *self , GLfloat width);
+	void glLinkProgram_enc(void *self , GLuint program);
+	void glPixelStorei_enc(void *self , GLenum pname, GLint param);
+	void glPolygonOffset_enc(void *self , GLfloat factor, GLfloat units);
+	void glReadPixels_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void glReleaseShaderCompiler_enc(void *self );
+	void glRenderbufferStorage_enc(void *self , GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void glSampleCoverage_enc(void *self , GLclampf value, GLboolean invert);
+	void glScissor_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height);
+	void glShaderBinary_enc(void *self , GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
+	void glShaderSource_enc(void *self , GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
+	void glStencilFunc_enc(void *self , GLenum func, GLint ref, GLuint mask);
+	void glStencilFuncSeparate_enc(void *self , GLenum face, GLenum func, GLint ref, GLuint mask);
+	void glStencilMask_enc(void *self , GLuint mask);
+	void glStencilMaskSeparate_enc(void *self , GLenum face, GLuint mask);
+	void glStencilOp_enc(void *self , GLenum fail, GLenum zfail, GLenum zpass);
+	void glStencilOpSeparate_enc(void *self , GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
+	void glTexImage2D_enc(void *self , GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTexParameterf_enc(void *self , GLenum target, GLenum pname, GLfloat param);
+	void glTexParameterfv_enc(void *self , GLenum target, GLenum pname, const GLfloat* params);
+	void glTexParameteri_enc(void *self , GLenum target, GLenum pname, GLint param);
+	void glTexParameteriv_enc(void *self , GLenum target, GLenum pname, const GLint* params);
+	void glTexSubImage2D_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+	void glUniform1f_enc(void *self , GLint location, GLfloat x);
+	void glUniform1fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v);
+	void glUniform1i_enc(void *self , GLint location, GLint x);
+	void glUniform1iv_enc(void *self , GLint location, GLsizei count, const GLint* v);
+	void glUniform2f_enc(void *self , GLint location, GLfloat x, GLfloat y);
+	void glUniform2fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v);
+	void glUniform2i_enc(void *self , GLint location, GLint x, GLint y);
+	void glUniform2iv_enc(void *self , GLint location, GLsizei count, const GLint* v);
+	void glUniform3f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z);
+	void glUniform3fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v);
+	void glUniform3i_enc(void *self , GLint location, GLint x, GLint y, GLint z);
+	void glUniform3iv_enc(void *self , GLint location, GLsizei count, const GLint* v);
+	void glUniform4f_enc(void *self , GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void glUniform4fv_enc(void *self , GLint location, GLsizei count, const GLfloat* v);
+	void glUniform4i_enc(void *self , GLint location, GLint x, GLint y, GLint z, GLint w);
+	void glUniform4iv_enc(void *self , GLint location, GLsizei count, const GLint* v);
+	void glUniformMatrix2fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void glUniformMatrix3fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void glUniformMatrix4fv_enc(void *self , GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void glUseProgram_enc(void *self , GLuint program);
+	void glValidateProgram_enc(void *self , GLuint program);
+	void glVertexAttrib1f_enc(void *self , GLuint indx, GLfloat x);
+	void glVertexAttrib1fv_enc(void *self , GLuint indx, const GLfloat* values);
+	void glVertexAttrib2f_enc(void *self , GLuint indx, GLfloat x, GLfloat y);
+	void glVertexAttrib2fv_enc(void *self , GLuint indx, const GLfloat* values);
+	void glVertexAttrib3f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z);
+	void glVertexAttrib3fv_enc(void *self , GLuint indx, const GLfloat* values);
+	void glVertexAttrib4f_enc(void *self , GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void glVertexAttrib4fv_enc(void *self , GLuint indx, const GLfloat* values);
+	void glVertexAttribPointer_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
+	void glViewport_enc(void *self , GLint x, GLint y, GLsizei width, GLsizei height);
+	void glEGLImageTargetTexture2DOES_enc(void *self , GLenum target, GLeglImageOES image);
+	void glEGLImageTargetRenderbufferStorageOES_enc(void *self , GLenum target, GLeglImageOES image);
+	void glGetProgramBinaryOES_enc(void *self , GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary);
+	void glProgramBinaryOES_enc(void *self , GLuint program, GLenum binaryFormat, const GLvoid* binary, GLint length);
+	void* glMapBufferOES_enc(void *self , GLenum target, GLenum access);
+	GLboolean glUnmapBufferOES_enc(void *self , GLenum target);
+	void glTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
+	void glCopyTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void glCompressedTexImage3DOES_enc(void *self , GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
+	void glCompressedTexSubImage3DOES_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
+	void glFramebufferTexture3DOES_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+	void glBindVertexArrayOES_enc(void *self , GLuint array);
+	void glDeleteVertexArraysOES_enc(void *self , GLsizei n, const GLuint* arrays);
+	void glGenVertexArraysOES_enc(void *self , GLsizei n, GLuint* arrays);
+	GLboolean glIsVertexArrayOES_enc(void *self , GLuint array);
+	void glDiscardFramebufferEXT_enc(void *self , GLenum target, GLsizei numAttachments, const GLenum* attachments);
+	void glMultiDrawArraysEXT_enc(void *self , GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
+	void glMultiDrawElementsEXT_enc(void *self , GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
+	void glGetPerfMonitorGroupsAMD_enc(void *self , GLint* numGroups, GLsizei groupsSize, GLuint* groups);
+	void glGetPerfMonitorCountersAMD_enc(void *self , GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters);
+	void glGetPerfMonitorGroupStringAMD_enc(void *self , GLuint group, GLsizei bufSize, GLsizei* length, GLchar* groupString);
+	void glGetPerfMonitorCounterStringAMD_enc(void *self , GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar* counterString);
+	void glGetPerfMonitorCounterInfoAMD_enc(void *self , GLuint group, GLuint counter, GLenum pname, GLvoid* data);
+	void glGenPerfMonitorsAMD_enc(void *self , GLsizei n, GLuint* monitors);
+	void glDeletePerfMonitorsAMD_enc(void *self , GLsizei n, GLuint* monitors);
+	void glSelectPerfMonitorCountersAMD_enc(void *self , GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList);
+	void glBeginPerfMonitorAMD_enc(void *self , GLuint monitor);
+	void glEndPerfMonitorAMD_enc(void *self , GLuint monitor);
+	void glGetPerfMonitorCounterDataAMD_enc(void *self , GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten);
+	void glRenderbufferStorageMultisampleIMG_enc(void *self , GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void glFramebufferTexture2DMultisampleIMG_enc(void *self , GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+	void glDeleteFencesNV_enc(void *self , GLsizei n, const GLuint* fences);
+	void glGenFencesNV_enc(void *self , GLsizei n, GLuint* fences);
+	GLboolean glIsFenceNV_enc(void *self , GLuint fence);
+	GLboolean glTestFenceNV_enc(void *self , GLuint fence);
+	void glGetFenceivNV_enc(void *self , GLuint fence, GLenum pname, GLint* params);
+	void glFinishFenceNV_enc(void *self , GLuint fence);
+	void glSetFenceNV_enc(void *self , GLuint fence, GLenum condition);
+	void glCoverageMaskNV_enc(void *self , GLboolean mask);
+	void glCoverageOperationNV_enc(void *self , GLenum operation);
+	void glGetDriverControlsQCOM_enc(void *self , GLint* num, GLsizei size, GLuint* driverControls);
+	void glGetDriverControlStringQCOM_enc(void *self , GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString);
+	void glEnableDriverControlQCOM_enc(void *self , GLuint driverControl);
+	void glDisableDriverControlQCOM_enc(void *self , GLuint driverControl);
+	void glExtGetTexturesQCOM_enc(void *self , GLuint* textures, GLint maxTextures, GLint* numTextures);
+	void glExtGetBuffersQCOM_enc(void *self , GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
+	void glExtGetRenderbuffersQCOM_enc(void *self , GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
+	void glExtGetFramebuffersQCOM_enc(void *self , GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
+	void glExtGetTexLevelParameterivQCOM_enc(void *self , GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
+	void glExtTexObjectStateOverrideiQCOM_enc(void *self , GLenum target, GLenum pname, GLint param);
+	void glExtGetTexSubImageQCOM_enc(void *self , GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels);
+	void glExtGetBufferPointervQCOM_enc(void *self , GLenum target, GLvoidptr* params);
+	void glExtGetShadersQCOM_enc(void *self , GLuint* shaders, GLint maxShaders, GLint* numShaders);
+	void glExtGetProgramsQCOM_enc(void *self , GLuint* programs, GLint maxPrograms, GLint* numPrograms);
+	GLboolean glExtIsProgramBinaryQCOM_enc(void *self , GLuint program);
+	void glExtGetProgramBinarySourceQCOM_enc(void *self , GLuint program, GLenum shadertype, GLchar* source, GLint* length);
+	void glStartTilingQCOM_enc(void *self , GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+	void glEndTilingQCOM_enc(void *self , GLbitfield preserveMask);
+	void glVertexAttribPointerData_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen);
+	void glVertexAttribPointerOffset_enc(void *self , GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset);
+	void glDrawElementsOffset_enc(void *self , GLenum mode, GLsizei count, GLenum type, GLuint offset);
+	void glDrawElementsData_enc(void *self , GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen);
+	void glGetCompressedTextureFormats_enc(void *self , int count, GLint* formats);
+	void glShaderString_enc(void *self , GLuint shader, const GLchar* string, GLsizei len);
+	int glFinishRoundTrip_enc(void *self );
+};
+#endif
\ No newline at end of file
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_entry.cpp b/tools/emulator/opengl/system/GLESv2_enc/gl2_entry.cpp
new file mode 100644
index 0000000..f98fe75
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_entry.cpp
@@ -0,0 +1,1483 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#include <stdio.h>
+#include <stdlib.h>
+#include "gl2_client_context.h"
+
+#ifndef GL_TRUE
+extern "C" {
+	void glActiveTexture(GLenum texture);
+	void glAttachShader(GLuint program, GLuint shader);
+	void glBindAttribLocation(GLuint program, GLuint index, const GLchar* name);
+	void glBindBuffer(GLenum target, GLuint buffer);
+	void glBindFramebuffer(GLenum target, GLuint framebuffer);
+	void glBindRenderbuffer(GLenum target, GLuint renderbuffer);
+	void glBindTexture(GLenum target, GLuint texture);
+	void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void glBlendEquation(GLenum mode);
+	void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
+	void glBlendFunc(GLenum sfactor, GLenum dfactor);
+	void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+	void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
+	void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
+	GLenum glCheckFramebufferStatus(GLenum target);
+	void glClear(GLbitfield mask);
+	void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+	void glClearDepthf(GLclampf depth);
+	void glClearStencil(GLint s);
+	void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+	void glCompileShader(GLuint shader);
+	void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data);
+	void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data);
+	void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+	void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	GLuint glCreateProgram();
+	GLuint glCreateShader(GLenum type);
+	void glCullFace(GLenum mode);
+	void glDeleteBuffers(GLsizei n, const GLuint* buffers);
+	void glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers);
+	void glDeleteProgram(GLuint program);
+	void glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers);
+	void glDeleteShader(GLuint shader);
+	void glDeleteTextures(GLsizei n, const GLuint* textures);
+	void glDepthFunc(GLenum func);
+	void glDepthMask(GLboolean flag);
+	void glDepthRangef(GLclampf zNear, GLclampf zFar);
+	void glDetachShader(GLuint program, GLuint shader);
+	void glDisable(GLenum cap);
+	void glDisableVertexAttribArray(GLuint index);
+	void glDrawArrays(GLenum mode, GLint first, GLsizei count);
+	void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
+	void glEnable(GLenum cap);
+	void glEnableVertexAttribArray(GLuint index);
+	void glFinish();
+	void glFlush();
+	void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+	void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+	void glFrontFace(GLenum mode);
+	void glGenBuffers(GLsizei n, GLuint* buffers);
+	void glGenerateMipmap(GLenum target);
+	void glGenFramebuffers(GLsizei n, GLuint* framebuffers);
+	void glGenRenderbuffers(GLsizei n, GLuint* renderbuffers);
+	void glGenTextures(GLsizei n, GLuint* textures);
+	void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+	void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
+	void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
+	int glGetAttribLocation(GLuint program, const GLchar* name);
+	void glGetBooleanv(GLenum pname, GLboolean* params);
+	void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params);
+	GLenum glGetError();
+	void glGetFloatv(GLenum pname, GLfloat* params);
+	void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+	void glGetIntegerv(GLenum pname, GLint* params);
+	void glGetProgramiv(GLuint program, GLenum pname, GLint* params);
+	void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params);
+	void glGetShaderiv(GLuint shader, GLenum pname, GLint* params);
+	void glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog);
+	void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
+	void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source);
+	const GLubyte* glGetString(GLenum name);
+	void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params);
+	void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params);
+	void glGetUniformfv(GLuint program, GLint location, GLfloat* params);
+	void glGetUniformiv(GLuint program, GLint location, GLint* params);
+	int glGetUniformLocation(GLuint program, const GLchar* name);
+	void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params);
+	void glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params);
+	void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer);
+	void glHint(GLenum target, GLenum mode);
+	GLboolean glIsBuffer(GLuint buffer);
+	GLboolean glIsEnabled(GLenum cap);
+	GLboolean glIsFramebuffer(GLuint framebuffer);
+	GLboolean glIsProgram(GLuint program);
+	GLboolean glIsRenderbuffer(GLuint renderbuffer);
+	GLboolean glIsShader(GLuint shader);
+	GLboolean glIsTexture(GLuint texture);
+	void glLineWidth(GLfloat width);
+	void glLinkProgram(GLuint program);
+	void glPixelStorei(GLenum pname, GLint param);
+	void glPolygonOffset(GLfloat factor, GLfloat units);
+	void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
+	void glReleaseShaderCompiler();
+	void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+	void glSampleCoverage(GLclampf value, GLboolean invert);
+	void glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
+	void glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length);
+	void glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length);
+	void glStencilFunc(GLenum func, GLint ref, GLuint mask);
+	void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
+	void glStencilMask(GLuint mask);
+	void glStencilMaskSeparate(GLenum face, GLuint mask);
+	void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
+	void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
+	void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTexParameterf(GLenum target, GLenum pname, GLfloat param);
+	void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params);
+	void glTexParameteri(GLenum target, GLenum pname, GLint param);
+	void glTexParameteriv(GLenum target, GLenum pname, const GLint* params);
+	void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
+	void glUniform1f(GLint location, GLfloat x);
+	void glUniform1fv(GLint location, GLsizei count, const GLfloat* v);
+	void glUniform1i(GLint location, GLint x);
+	void glUniform1iv(GLint location, GLsizei count, const GLint* v);
+	void glUniform2f(GLint location, GLfloat x, GLfloat y);
+	void glUniform2fv(GLint location, GLsizei count, const GLfloat* v);
+	void glUniform2i(GLint location, GLint x, GLint y);
+	void glUniform2iv(GLint location, GLsizei count, const GLint* v);
+	void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z);
+	void glUniform3fv(GLint location, GLsizei count, const GLfloat* v);
+	void glUniform3i(GLint location, GLint x, GLint y, GLint z);
+	void glUniform3iv(GLint location, GLsizei count, const GLint* v);
+	void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void glUniform4fv(GLint location, GLsizei count, const GLfloat* v);
+	void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w);
+	void glUniform4iv(GLint location, GLsizei count, const GLint* v);
+	void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
+	void glUseProgram(GLuint program);
+	void glValidateProgram(GLuint program);
+	void glVertexAttrib1f(GLuint indx, GLfloat x);
+	void glVertexAttrib1fv(GLuint indx, const GLfloat* values);
+	void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y);
+	void glVertexAttrib2fv(GLuint indx, const GLfloat* values);
+	void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
+	void glVertexAttrib3fv(GLuint indx, const GLfloat* values);
+	void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+	void glVertexAttrib4fv(GLuint indx, const GLfloat* values);
+	void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr);
+	void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
+	void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);
+	void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
+	void glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary);
+	void glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLint length);
+	void* glMapBufferOES(GLenum target, GLenum access);
+	GLboolean glUnmapBufferOES(GLenum target);
+	void glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
+	void glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
+	void glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+	void glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
+	void glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
+	void glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+	void glBindVertexArrayOES(GLuint array);
+	void glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays);
+	void glGenVertexArraysOES(GLsizei n, GLuint* arrays);
+	GLboolean glIsVertexArrayOES(GLuint array);
+	void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum* attachments);
+	void glMultiDrawArraysEXT(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
+	void glMultiDrawElementsEXT(GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
+	void glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups);
+	void glGetPerfMonitorCountersAMD(GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters);
+	void glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei* length, GLchar* groupString);
+	void glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar* counterString);
+	void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid* data);
+	void glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors);
+	void glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors);
+	void glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList);
+	void glBeginPerfMonitorAMD(GLuint monitor);
+	void glEndPerfMonitorAMD(GLuint monitor);
+	void glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten);
+	void glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+	void glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples);
+	void glDeleteFencesNV(GLsizei n, const GLuint* fences);
+	void glGenFencesNV(GLsizei n, GLuint* fences);
+	GLboolean glIsFenceNV(GLuint fence);
+	GLboolean glTestFenceNV(GLuint fence);
+	void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params);
+	void glFinishFenceNV(GLuint fence);
+	void glSetFenceNV(GLuint fence, GLenum condition);
+	void glCoverageMaskNV(GLboolean mask);
+	void glCoverageOperationNV(GLenum operation);
+	void glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls);
+	void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString);
+	void glEnableDriverControlQCOM(GLuint driverControl);
+	void glDisableDriverControlQCOM(GLuint driverControl);
+	void glExtGetTexturesQCOM(GLuint* textures, GLint maxTextures, GLint* numTextures);
+	void glExtGetBuffersQCOM(GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
+	void glExtGetRenderbuffersQCOM(GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
+	void glExtGetFramebuffersQCOM(GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
+	void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
+	void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param);
+	void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels);
+	void glExtGetBufferPointervQCOM(GLenum target, GLvoidptr* params);
+	void glExtGetShadersQCOM(GLuint* shaders, GLint maxShaders, GLint* numShaders);
+	void glExtGetProgramsQCOM(GLuint* programs, GLint maxPrograms, GLint* numPrograms);
+	GLboolean glExtIsProgramBinaryQCOM(GLuint program);
+	void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar* source, GLint* length);
+	void glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
+	void glEndTilingQCOM(GLbitfield preserveMask);
+	void glVertexAttribPointerData(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen);
+	void glVertexAttribPointerOffset(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset);
+	void glDrawElementsOffset(GLenum mode, GLsizei count, GLenum type, GLuint offset);
+	void glDrawElementsData(GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen);
+	void glGetCompressedTextureFormats(int count, GLint* formats);
+	void glShaderString(GLuint shader, const GLchar* string, GLsizei len);
+	int glFinishRoundTrip();
+};
+
+#endif
+#ifndef GET_CONTEXT
+static gl2_client_context_t::CONTEXT_ACCESSOR_TYPE *getCurrentContext = NULL;
+void gl2_client_context_t::setContextAccessor(CONTEXT_ACCESSOR_TYPE *f) { getCurrentContext = f; }
+#define GET_CONTEXT gl2_client_context_t * ctx = getCurrentContext() 
+#endif
+
+void glActiveTexture(GLenum texture)
+{
+	GET_CONTEXT; 
+	 ctx->glActiveTexture(ctx, texture);
+}
+
+void glAttachShader(GLuint program, GLuint shader)
+{
+	GET_CONTEXT; 
+	 ctx->glAttachShader(ctx, program, shader);
+}
+
+void glBindAttribLocation(GLuint program, GLuint index, const GLchar* name)
+{
+	GET_CONTEXT; 
+	 ctx->glBindAttribLocation(ctx, program, index, name);
+}
+
+void glBindBuffer(GLenum target, GLuint buffer)
+{
+	GET_CONTEXT; 
+	 ctx->glBindBuffer(ctx, target, buffer);
+}
+
+void glBindFramebuffer(GLenum target, GLuint framebuffer)
+{
+	GET_CONTEXT; 
+	 ctx->glBindFramebuffer(ctx, target, framebuffer);
+}
+
+void glBindRenderbuffer(GLenum target, GLuint renderbuffer)
+{
+	GET_CONTEXT; 
+	 ctx->glBindRenderbuffer(ctx, target, renderbuffer);
+}
+
+void glBindTexture(GLenum target, GLuint texture)
+{
+	GET_CONTEXT; 
+	 ctx->glBindTexture(ctx, target, texture);
+}
+
+void glBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendColor(ctx, red, green, blue, alpha);
+}
+
+void glBlendEquation(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendEquation(ctx, mode);
+}
+
+void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendEquationSeparate(ctx, modeRGB, modeAlpha);
+}
+
+void glBlendFunc(GLenum sfactor, GLenum dfactor)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendFunc(ctx, sfactor, dfactor);
+}
+
+void glBlendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
+{
+	GET_CONTEXT; 
+	 ctx->glBlendFuncSeparate(ctx, srcRGB, dstRGB, srcAlpha, dstAlpha);
+}
+
+void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage)
+{
+	GET_CONTEXT; 
+	 ctx->glBufferData(ctx, target, size, data, usage);
+}
+
+void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glBufferSubData(ctx, target, offset, size, data);
+}
+
+GLenum glCheckFramebufferStatus(GLenum target)
+{
+	GET_CONTEXT; 
+	 return ctx->glCheckFramebufferStatus(ctx, target);
+}
+
+void glClear(GLbitfield mask)
+{
+	GET_CONTEXT; 
+	 ctx->glClear(ctx, mask);
+}
+
+void glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glClearColor(ctx, red, green, blue, alpha);
+}
+
+void glClearDepthf(GLclampf depth)
+{
+	GET_CONTEXT; 
+	 ctx->glClearDepthf(ctx, depth);
+}
+
+void glClearStencil(GLint s)
+{
+	GET_CONTEXT; 
+	 ctx->glClearStencil(ctx, s);
+}
+
+void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+	GET_CONTEXT; 
+	 ctx->glColorMask(ctx, red, green, blue, alpha);
+}
+
+void glCompileShader(GLuint shader)
+{
+	GET_CONTEXT; 
+	 ctx->glCompileShader(ctx, shader);
+}
+
+void glCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glCompressedTexImage2D(ctx, target, level, internalformat, width, height, border, imageSize, data);
+}
+
+void glCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glCompressedTexSubImage2D(ctx, target, level, xoffset, yoffset, width, height, format, imageSize, data);
+}
+
+void glCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+	GET_CONTEXT; 
+	 ctx->glCopyTexImage2D(ctx, target, level, internalformat, x, y, width, height, border);
+}
+
+void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glCopyTexSubImage2D(ctx, target, level, xoffset, yoffset, x, y, width, height);
+}
+
+GLuint glCreateProgram()
+{
+	GET_CONTEXT; 
+	 return ctx->glCreateProgram(ctx);
+}
+
+GLuint glCreateShader(GLenum type)
+{
+	GET_CONTEXT; 
+	 return ctx->glCreateShader(ctx, type);
+}
+
+void glCullFace(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glCullFace(ctx, mode);
+}
+
+void glDeleteBuffers(GLsizei n, const GLuint* buffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteBuffers(ctx, n, buffers);
+}
+
+void glDeleteFramebuffers(GLsizei n, const GLuint* framebuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteFramebuffers(ctx, n, framebuffers);
+}
+
+void glDeleteProgram(GLuint program)
+{
+	GET_CONTEXT; 
+	 ctx->glDeleteProgram(ctx, program);
+}
+
+void glDeleteRenderbuffers(GLsizei n, const GLuint* renderbuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteRenderbuffers(ctx, n, renderbuffers);
+}
+
+void glDeleteShader(GLuint shader)
+{
+	GET_CONTEXT; 
+	 ctx->glDeleteShader(ctx, shader);
+}
+
+void glDeleteTextures(GLsizei n, const GLuint* textures)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteTextures(ctx, n, textures);
+}
+
+void glDepthFunc(GLenum func)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthFunc(ctx, func);
+}
+
+void glDepthMask(GLboolean flag)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthMask(ctx, flag);
+}
+
+void glDepthRangef(GLclampf zNear, GLclampf zFar)
+{
+	GET_CONTEXT; 
+	 ctx->glDepthRangef(ctx, zNear, zFar);
+}
+
+void glDetachShader(GLuint program, GLuint shader)
+{
+	GET_CONTEXT; 
+	 ctx->glDetachShader(ctx, program, shader);
+}
+
+void glDisable(GLenum cap)
+{
+	GET_CONTEXT; 
+	 ctx->glDisable(ctx, cap);
+}
+
+void glDisableVertexAttribArray(GLuint index)
+{
+	GET_CONTEXT; 
+	 ctx->glDisableVertexAttribArray(ctx, index);
+}
+
+void glDrawArrays(GLenum mode, GLint first, GLsizei count)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawArrays(ctx, mode, first, count);
+}
+
+void glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawElements(ctx, mode, count, type, indices);
+}
+
+void glEnable(GLenum cap)
+{
+	GET_CONTEXT; 
+	 ctx->glEnable(ctx, cap);
+}
+
+void glEnableVertexAttribArray(GLuint index)
+{
+	GET_CONTEXT; 
+	 ctx->glEnableVertexAttribArray(ctx, index);
+}
+
+void glFinish()
+{
+	GET_CONTEXT; 
+	 ctx->glFinish(ctx);
+}
+
+void glFlush()
+{
+	GET_CONTEXT; 
+	 ctx->glFlush(ctx);
+}
+
+void glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferRenderbuffer(ctx, target, attachment, renderbuffertarget, renderbuffer);
+}
+
+void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferTexture2D(ctx, target, attachment, textarget, texture, level);
+}
+
+void glFrontFace(GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glFrontFace(ctx, mode);
+}
+
+void glGenBuffers(GLsizei n, GLuint* buffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenBuffers(ctx, n, buffers);
+}
+
+void glGenerateMipmap(GLenum target)
+{
+	GET_CONTEXT; 
+	 ctx->glGenerateMipmap(ctx, target);
+}
+
+void glGenFramebuffers(GLsizei n, GLuint* framebuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenFramebuffers(ctx, n, framebuffers);
+}
+
+void glGenRenderbuffers(GLsizei n, GLuint* renderbuffers)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenRenderbuffers(ctx, n, renderbuffers);
+}
+
+void glGenTextures(GLsizei n, GLuint* textures)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenTextures(ctx, n, textures);
+}
+
+void glGetActiveAttrib(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+{
+	GET_CONTEXT; 
+	 ctx->glGetActiveAttrib(ctx, program, index, bufsize, length, size, type, name);
+}
+
+void glGetActiveUniform(GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name)
+{
+	GET_CONTEXT; 
+	 ctx->glGetActiveUniform(ctx, program, index, bufsize, length, size, type, name);
+}
+
+void glGetAttachedShaders(GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders)
+{
+	GET_CONTEXT; 
+	 ctx->glGetAttachedShaders(ctx, program, maxcount, count, shaders);
+}
+
+int glGetAttribLocation(GLuint program, const GLchar* name)
+{
+	GET_CONTEXT; 
+	 return ctx->glGetAttribLocation(ctx, program, name);
+}
+
+void glGetBooleanv(GLenum pname, GLboolean* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetBooleanv(ctx, pname, params);
+}
+
+void glGetBufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetBufferParameteriv(ctx, target, pname, params);
+}
+
+GLenum glGetError()
+{
+	GET_CONTEXT; 
+	 return ctx->glGetError(ctx);
+}
+
+void glGetFloatv(GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFloatv(ctx, pname, params);
+}
+
+void glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFramebufferAttachmentParameteriv(ctx, target, attachment, pname, params);
+}
+
+void glGetIntegerv(GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetIntegerv(ctx, pname, params);
+}
+
+void glGetProgramiv(GLuint program, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetProgramiv(ctx, program, pname, params);
+}
+
+void glGetProgramInfoLog(GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+{
+	GET_CONTEXT; 
+	 ctx->glGetProgramInfoLog(ctx, program, bufsize, length, infolog);
+}
+
+void glGetRenderbufferParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetRenderbufferParameteriv(ctx, target, pname, params);
+}
+
+void glGetShaderiv(GLuint shader, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetShaderiv(ctx, shader, pname, params);
+}
+
+void glGetShaderInfoLog(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog)
+{
+	GET_CONTEXT; 
+	 ctx->glGetShaderInfoLog(ctx, shader, bufsize, length, infolog);
+}
+
+void glGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision)
+{
+	GET_CONTEXT; 
+	 ctx->glGetShaderPrecisionFormat(ctx, shadertype, precisiontype, range, precision);
+}
+
+void glGetShaderSource(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source)
+{
+	GET_CONTEXT; 
+	 ctx->glGetShaderSource(ctx, shader, bufsize, length, source);
+}
+
+const GLubyte* glGetString(GLenum name)
+{
+	GET_CONTEXT; 
+	 return ctx->glGetString(ctx, name);
+}
+
+void glGetTexParameterfv(GLenum target, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexParameterfv(ctx, target, pname, params);
+}
+
+void glGetTexParameteriv(GLenum target, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetTexParameteriv(ctx, target, pname, params);
+}
+
+void glGetUniformfv(GLuint program, GLint location, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetUniformfv(ctx, program, location, params);
+}
+
+void glGetUniformiv(GLuint program, GLint location, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetUniformiv(ctx, program, location, params);
+}
+
+int glGetUniformLocation(GLuint program, const GLchar* name)
+{
+	GET_CONTEXT; 
+	 return ctx->glGetUniformLocation(ctx, program, name);
+}
+
+void glGetVertexAttribfv(GLuint index, GLenum pname, GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetVertexAttribfv(ctx, index, pname, params);
+}
+
+void glGetVertexAttribiv(GLuint index, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetVertexAttribiv(ctx, index, pname, params);
+}
+
+void glGetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid** pointer)
+{
+	GET_CONTEXT; 
+	 ctx->glGetVertexAttribPointerv(ctx, index, pname, pointer);
+}
+
+void glHint(GLenum target, GLenum mode)
+{
+	GET_CONTEXT; 
+	 ctx->glHint(ctx, target, mode);
+}
+
+GLboolean glIsBuffer(GLuint buffer)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsBuffer(ctx, buffer);
+}
+
+GLboolean glIsEnabled(GLenum cap)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsEnabled(ctx, cap);
+}
+
+GLboolean glIsFramebuffer(GLuint framebuffer)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsFramebuffer(ctx, framebuffer);
+}
+
+GLboolean glIsProgram(GLuint program)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsProgram(ctx, program);
+}
+
+GLboolean glIsRenderbuffer(GLuint renderbuffer)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsRenderbuffer(ctx, renderbuffer);
+}
+
+GLboolean glIsShader(GLuint shader)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsShader(ctx, shader);
+}
+
+GLboolean glIsTexture(GLuint texture)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsTexture(ctx, texture);
+}
+
+void glLineWidth(GLfloat width)
+{
+	GET_CONTEXT; 
+	 ctx->glLineWidth(ctx, width);
+}
+
+void glLinkProgram(GLuint program)
+{
+	GET_CONTEXT; 
+	 ctx->glLinkProgram(ctx, program);
+}
+
+void glPixelStorei(GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glPixelStorei(ctx, pname, param);
+}
+
+void glPolygonOffset(GLfloat factor, GLfloat units)
+{
+	GET_CONTEXT; 
+	 ctx->glPolygonOffset(ctx, factor, units);
+}
+
+void glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glReadPixels(ctx, x, y, width, height, format, type, pixels);
+}
+
+void glReleaseShaderCompiler()
+{
+	GET_CONTEXT; 
+	 ctx->glReleaseShaderCompiler(ctx);
+}
+
+void glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glRenderbufferStorage(ctx, target, internalformat, width, height);
+}
+
+void glSampleCoverage(GLclampf value, GLboolean invert)
+{
+	GET_CONTEXT; 
+	 ctx->glSampleCoverage(ctx, value, invert);
+}
+
+void glScissor(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glScissor(ctx, x, y, width, height);
+}
+
+void glShaderBinary(GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length)
+{
+	GET_CONTEXT; 
+	 ctx->glShaderBinary(ctx, n, shaders, binaryformat, binary, length);
+}
+
+void glShaderSource(GLuint shader, GLsizei count, const GLchar** string, const GLint* length)
+{
+	GET_CONTEXT; 
+	 ctx->glShaderSource(ctx, shader, count, string, length);
+}
+
+void glStencilFunc(GLenum func, GLint ref, GLuint mask)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilFunc(ctx, func, ref, mask);
+}
+
+void glStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilFuncSeparate(ctx, face, func, ref, mask);
+}
+
+void glStencilMask(GLuint mask)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilMask(ctx, mask);
+}
+
+void glStencilMaskSeparate(GLenum face, GLuint mask)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilMaskSeparate(ctx, face, mask);
+}
+
+void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilOp(ctx, fail, zfail, zpass);
+}
+
+void glStencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass)
+{
+	GET_CONTEXT; 
+	 ctx->glStencilOpSeparate(ctx, face, fail, zfail, zpass);
+}
+
+void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glTexImage2D(ctx, target, level, internalformat, width, height, border, format, type, pixels);
+}
+
+void glTexParameterf(GLenum target, GLenum pname, GLfloat param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterf(ctx, target, pname, param);
+}
+
+void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameterfv(ctx, target, pname, params);
+}
+
+void glTexParameteri(GLenum target, GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameteri(ctx, target, pname, param);
+}
+
+void glTexParameteriv(GLenum target, GLenum pname, const GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glTexParameteriv(ctx, target, pname, params);
+}
+
+void glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glTexSubImage2D(ctx, target, level, xoffset, yoffset, width, height, format, type, pixels);
+}
+
+void glUniform1f(GLint location, GLfloat x)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform1f(ctx, location, x);
+}
+
+void glUniform1fv(GLint location, GLsizei count, const GLfloat* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform1fv(ctx, location, count, v);
+}
+
+void glUniform1i(GLint location, GLint x)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform1i(ctx, location, x);
+}
+
+void glUniform1iv(GLint location, GLsizei count, const GLint* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform1iv(ctx, location, count, v);
+}
+
+void glUniform2f(GLint location, GLfloat x, GLfloat y)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform2f(ctx, location, x, y);
+}
+
+void glUniform2fv(GLint location, GLsizei count, const GLfloat* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform2fv(ctx, location, count, v);
+}
+
+void glUniform2i(GLint location, GLint x, GLint y)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform2i(ctx, location, x, y);
+}
+
+void glUniform2iv(GLint location, GLsizei count, const GLint* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform2iv(ctx, location, count, v);
+}
+
+void glUniform3f(GLint location, GLfloat x, GLfloat y, GLfloat z)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform3f(ctx, location, x, y, z);
+}
+
+void glUniform3fv(GLint location, GLsizei count, const GLfloat* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform3fv(ctx, location, count, v);
+}
+
+void glUniform3i(GLint location, GLint x, GLint y, GLint z)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform3i(ctx, location, x, y, z);
+}
+
+void glUniform3iv(GLint location, GLsizei count, const GLint* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform3iv(ctx, location, count, v);
+}
+
+void glUniform4f(GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform4f(ctx, location, x, y, z, w);
+}
+
+void glUniform4fv(GLint location, GLsizei count, const GLfloat* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform4fv(ctx, location, count, v);
+}
+
+void glUniform4i(GLint location, GLint x, GLint y, GLint z, GLint w)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform4i(ctx, location, x, y, z, w);
+}
+
+void glUniform4iv(GLint location, GLsizei count, const GLint* v)
+{
+	GET_CONTEXT; 
+	 ctx->glUniform4iv(ctx, location, count, v);
+}
+
+void glUniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+	GET_CONTEXT; 
+	 ctx->glUniformMatrix2fv(ctx, location, count, transpose, value);
+}
+
+void glUniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+	GET_CONTEXT; 
+	 ctx->glUniformMatrix3fv(ctx, location, count, transpose, value);
+}
+
+void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+	GET_CONTEXT; 
+	 ctx->glUniformMatrix4fv(ctx, location, count, transpose, value);
+}
+
+void glUseProgram(GLuint program)
+{
+	GET_CONTEXT; 
+	 ctx->glUseProgram(ctx, program);
+}
+
+void glValidateProgram(GLuint program)
+{
+	GET_CONTEXT; 
+	 ctx->glValidateProgram(ctx, program);
+}
+
+void glVertexAttrib1f(GLuint indx, GLfloat x)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib1f(ctx, indx, x);
+}
+
+void glVertexAttrib1fv(GLuint indx, const GLfloat* values)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib1fv(ctx, indx, values);
+}
+
+void glVertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib2f(ctx, indx, x, y);
+}
+
+void glVertexAttrib2fv(GLuint indx, const GLfloat* values)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib2fv(ctx, indx, values);
+}
+
+void glVertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib3f(ctx, indx, x, y, z);
+}
+
+void glVertexAttrib3fv(GLuint indx, const GLfloat* values)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib3fv(ctx, indx, values);
+}
+
+void glVertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib4f(ctx, indx, x, y, z, w);
+}
+
+void glVertexAttrib4fv(GLuint indx, const GLfloat* values)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttrib4fv(ctx, indx, values);
+}
+
+void glVertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttribPointer(ctx, indx, size, type, normalized, stride, ptr);
+}
+
+void glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glViewport(ctx, x, y, width, height);
+}
+
+void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image)
+{
+	GET_CONTEXT; 
+	 ctx->glEGLImageTargetTexture2DOES(ctx, target, image);
+}
+
+void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image)
+{
+	GET_CONTEXT; 
+	 ctx->glEGLImageTargetRenderbufferStorageOES(ctx, target, image);
+}
+
+void glGetProgramBinaryOES(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary)
+{
+	GET_CONTEXT; 
+	 ctx->glGetProgramBinaryOES(ctx, program, bufSize, length, binaryFormat, binary);
+}
+
+void glProgramBinaryOES(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLint length)
+{
+	GET_CONTEXT; 
+	 ctx->glProgramBinaryOES(ctx, program, binaryFormat, binary, length);
+}
+
+void* glMapBufferOES(GLenum target, GLenum access)
+{
+	GET_CONTEXT; 
+	 return ctx->glMapBufferOES(ctx, target, access);
+}
+
+GLboolean glUnmapBufferOES(GLenum target)
+{
+	GET_CONTEXT; 
+	 return ctx->glUnmapBufferOES(ctx, target);
+}
+
+void glTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glTexImage3DOES(ctx, target, level, internalformat, width, height, depth, border, format, type, pixels);
+}
+
+void glTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->glTexSubImage3DOES(ctx, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
+}
+
+void glCopyTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glCopyTexSubImage3DOES(ctx, target, level, xoffset, yoffset, zoffset, x, y, width, height);
+}
+
+void glCompressedTexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glCompressedTexImage3DOES(ctx, target, level, internalformat, width, height, depth, border, imageSize, data);
+}
+
+void glCompressedTexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glCompressedTexSubImage3DOES(ctx, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
+}
+
+void glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferTexture3DOES(ctx, target, attachment, textarget, texture, level, zoffset);
+}
+
+void glBindVertexArrayOES(GLuint array)
+{
+	GET_CONTEXT; 
+	 ctx->glBindVertexArrayOES(ctx, array);
+}
+
+void glDeleteVertexArraysOES(GLsizei n, const GLuint* arrays)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glDeleteVertexArraysOES(ctx, n, arrays);
+}
+
+void glGenVertexArraysOES(GLsizei n, GLuint* arrays)
+{
+	GET_CONTEXT; 
+	 if(n<0){ ctx->setError(GL_INVALID_VALUE); return; }
+	 ctx->glGenVertexArraysOES(ctx, n, arrays);
+}
+
+GLboolean glIsVertexArrayOES(GLuint array)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsVertexArrayOES(ctx, array);
+}
+
+void glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum* attachments)
+{
+	GET_CONTEXT; 
+	 ctx->glDiscardFramebufferEXT(ctx, target, numAttachments, attachments);
+}
+
+void glMultiDrawArraysEXT(GLenum mode, GLint* first, GLsizei* count, GLsizei primcount)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiDrawArraysEXT(ctx, mode, first, count, primcount);
+}
+
+void glMultiDrawElementsEXT(GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount)
+{
+	GET_CONTEXT; 
+	 ctx->glMultiDrawElementsEXT(ctx, mode, count, type, indices, primcount);
+}
+
+void glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPerfMonitorGroupsAMD(ctx, numGroups, groupsSize, groups);
+}
+
+void glGetPerfMonitorCountersAMD(GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPerfMonitorCountersAMD(ctx, group, numCounters, maxActiveCounters, counterSize, counters);
+}
+
+void glGetPerfMonitorGroupStringAMD(GLuint group, GLsizei bufSize, GLsizei* length, GLchar* groupString)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPerfMonitorGroupStringAMD(ctx, group, bufSize, length, groupString);
+}
+
+void glGetPerfMonitorCounterStringAMD(GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, GLchar* counterString)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPerfMonitorCounterStringAMD(ctx, group, counter, bufSize, length, counterString);
+}
+
+void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, GLvoid* data)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPerfMonitorCounterInfoAMD(ctx, group, counter, pname, data);
+}
+
+void glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors)
+{
+	GET_CONTEXT; 
+	 ctx->glGenPerfMonitorsAMD(ctx, n, monitors);
+}
+
+void glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors)
+{
+	GET_CONTEXT; 
+	 ctx->glDeletePerfMonitorsAMD(ctx, n, monitors);
+}
+
+void glSelectPerfMonitorCountersAMD(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList)
+{
+	GET_CONTEXT; 
+	 ctx->glSelectPerfMonitorCountersAMD(ctx, monitor, enable, group, numCounters, countersList);
+}
+
+void glBeginPerfMonitorAMD(GLuint monitor)
+{
+	GET_CONTEXT; 
+	 ctx->glBeginPerfMonitorAMD(ctx, monitor);
+}
+
+void glEndPerfMonitorAMD(GLuint monitor)
+{
+	GET_CONTEXT; 
+	 ctx->glEndPerfMonitorAMD(ctx, monitor);
+}
+
+void glGetPerfMonitorCounterDataAMD(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten)
+{
+	GET_CONTEXT; 
+	 ctx->glGetPerfMonitorCounterDataAMD(ctx, monitor, pname, dataSize, data, bytesWritten);
+}
+
+void glRenderbufferStorageMultisampleIMG(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+	GET_CONTEXT; 
+	 ctx->glRenderbufferStorageMultisampleIMG(ctx, target, samples, internalformat, width, height);
+}
+
+void glFramebufferTexture2DMultisampleIMG(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
+{
+	GET_CONTEXT; 
+	 ctx->glFramebufferTexture2DMultisampleIMG(ctx, target, attachment, textarget, texture, level, samples);
+}
+
+void glDeleteFencesNV(GLsizei n, const GLuint* fences)
+{
+	GET_CONTEXT; 
+	 ctx->glDeleteFencesNV(ctx, n, fences);
+}
+
+void glGenFencesNV(GLsizei n, GLuint* fences)
+{
+	GET_CONTEXT; 
+	 ctx->glGenFencesNV(ctx, n, fences);
+}
+
+GLboolean glIsFenceNV(GLuint fence)
+{
+	GET_CONTEXT; 
+	 return ctx->glIsFenceNV(ctx, fence);
+}
+
+GLboolean glTestFenceNV(GLuint fence)
+{
+	GET_CONTEXT; 
+	 return ctx->glTestFenceNV(ctx, fence);
+}
+
+void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glGetFenceivNV(ctx, fence, pname, params);
+}
+
+void glFinishFenceNV(GLuint fence)
+{
+	GET_CONTEXT; 
+	 ctx->glFinishFenceNV(ctx, fence);
+}
+
+void glSetFenceNV(GLuint fence, GLenum condition)
+{
+	GET_CONTEXT; 
+	 ctx->glSetFenceNV(ctx, fence, condition);
+}
+
+void glCoverageMaskNV(GLboolean mask)
+{
+	GET_CONTEXT; 
+	 ctx->glCoverageMaskNV(ctx, mask);
+}
+
+void glCoverageOperationNV(GLenum operation)
+{
+	GET_CONTEXT; 
+	 ctx->glCoverageOperationNV(ctx, operation);
+}
+
+void glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls)
+{
+	GET_CONTEXT; 
+	 ctx->glGetDriverControlsQCOM(ctx, num, size, driverControls);
+}
+
+void glGetDriverControlStringQCOM(GLuint driverControl, GLsizei bufSize, GLsizei* length, GLchar* driverControlString)
+{
+	GET_CONTEXT; 
+	 ctx->glGetDriverControlStringQCOM(ctx, driverControl, bufSize, length, driverControlString);
+}
+
+void glEnableDriverControlQCOM(GLuint driverControl)
+{
+	GET_CONTEXT; 
+	 ctx->glEnableDriverControlQCOM(ctx, driverControl);
+}
+
+void glDisableDriverControlQCOM(GLuint driverControl)
+{
+	GET_CONTEXT; 
+	 ctx->glDisableDriverControlQCOM(ctx, driverControl);
+}
+
+void glExtGetTexturesQCOM(GLuint* textures, GLint maxTextures, GLint* numTextures)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetTexturesQCOM(ctx, textures, maxTextures, numTextures);
+}
+
+void glExtGetBuffersQCOM(GLuint* buffers, GLint maxBuffers, GLint* numBuffers)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetBuffersQCOM(ctx, buffers, maxBuffers, numBuffers);
+}
+
+void glExtGetRenderbuffersQCOM(GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetRenderbuffersQCOM(ctx, renderbuffers, maxRenderbuffers, numRenderbuffers);
+}
+
+void glExtGetFramebuffersQCOM(GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetFramebuffersQCOM(ctx, framebuffers, maxFramebuffers, numFramebuffers);
+}
+
+void glExtGetTexLevelParameterivQCOM(GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetTexLevelParameterivQCOM(ctx, texture, face, level, pname, params);
+}
+
+void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param)
+{
+	GET_CONTEXT; 
+	 ctx->glExtTexObjectStateOverrideiQCOM(ctx, target, pname, param);
+}
+
+void glExtGetTexSubImageQCOM(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid* texels)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetTexSubImageQCOM(ctx, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, texels);
+}
+
+void glExtGetBufferPointervQCOM(GLenum target, GLvoidptr* params)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetBufferPointervQCOM(ctx, target, params);
+}
+
+void glExtGetShadersQCOM(GLuint* shaders, GLint maxShaders, GLint* numShaders)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetShadersQCOM(ctx, shaders, maxShaders, numShaders);
+}
+
+void glExtGetProgramsQCOM(GLuint* programs, GLint maxPrograms, GLint* numPrograms)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetProgramsQCOM(ctx, programs, maxPrograms, numPrograms);
+}
+
+GLboolean glExtIsProgramBinaryQCOM(GLuint program)
+{
+	GET_CONTEXT; 
+	 return ctx->glExtIsProgramBinaryQCOM(ctx, program);
+}
+
+void glExtGetProgramBinarySourceQCOM(GLuint program, GLenum shadertype, GLchar* source, GLint* length)
+{
+	GET_CONTEXT; 
+	 ctx->glExtGetProgramBinarySourceQCOM(ctx, program, shadertype, source, length);
+}
+
+void glStartTilingQCOM(GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask)
+{
+	GET_CONTEXT; 
+	 ctx->glStartTilingQCOM(ctx, x, y, width, height, preserveMask);
+}
+
+void glEndTilingQCOM(GLbitfield preserveMask)
+{
+	GET_CONTEXT; 
+	 ctx->glEndTilingQCOM(ctx, preserveMask);
+}
+
+void glVertexAttribPointerData(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttribPointerData(ctx, indx, size, type, normalized, stride, data, datalen);
+}
+
+void glVertexAttribPointerOffset(GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glVertexAttribPointerOffset(ctx, indx, size, type, normalized, stride, offset);
+}
+
+void glDrawElementsOffset(GLenum mode, GLsizei count, GLenum type, GLuint offset)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawElementsOffset(ctx, mode, count, type, offset);
+}
+
+void glDrawElementsData(GLenum mode, GLsizei count, GLenum type, void* data, GLuint datalen)
+{
+	GET_CONTEXT; 
+	 ctx->glDrawElementsData(ctx, mode, count, type, data, datalen);
+}
+
+void glGetCompressedTextureFormats(int count, GLint* formats)
+{
+	GET_CONTEXT; 
+	 ctx->glGetCompressedTextureFormats(ctx, count, formats);
+}
+
+void glShaderString(GLuint shader, const GLchar* string, GLsizei len)
+{
+	GET_CONTEXT; 
+	 ctx->glShaderString(ctx, shader, string, len);
+}
+
+int glFinishRoundTrip()
+{
+	GET_CONTEXT; 
+	 return ctx->glFinishRoundTrip(ctx);
+}
+
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_ftable.h b/tools/emulator/opengl/system/GLESv2_enc/gl2_ftable.h
new file mode 100644
index 0000000..4cbda78
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_ftable.h
@@ -0,0 +1,216 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __gl2_client_ftable_t_h
+#define __gl2_client_ftable_t_h
+
+
+static struct _gl2_funcs_by_name {
+	const char *name;
+	void *proc;
+} gl2_funcs_by_name[] = {
+	{"glActiveTexture", (void*)glActiveTexture},
+	{"glAttachShader", (void*)glAttachShader},
+	{"glBindAttribLocation", (void*)glBindAttribLocation},
+	{"glBindBuffer", (void*)glBindBuffer},
+	{"glBindFramebuffer", (void*)glBindFramebuffer},
+	{"glBindRenderbuffer", (void*)glBindRenderbuffer},
+	{"glBindTexture", (void*)glBindTexture},
+	{"glBlendColor", (void*)glBlendColor},
+	{"glBlendEquation", (void*)glBlendEquation},
+	{"glBlendEquationSeparate", (void*)glBlendEquationSeparate},
+	{"glBlendFunc", (void*)glBlendFunc},
+	{"glBlendFuncSeparate", (void*)glBlendFuncSeparate},
+	{"glBufferData", (void*)glBufferData},
+	{"glBufferSubData", (void*)glBufferSubData},
+	{"glCheckFramebufferStatus", (void*)glCheckFramebufferStatus},
+	{"glClear", (void*)glClear},
+	{"glClearColor", (void*)glClearColor},
+	{"glClearDepthf", (void*)glClearDepthf},
+	{"glClearStencil", (void*)glClearStencil},
+	{"glColorMask", (void*)glColorMask},
+	{"glCompileShader", (void*)glCompileShader},
+	{"glCompressedTexImage2D", (void*)glCompressedTexImage2D},
+	{"glCompressedTexSubImage2D", (void*)glCompressedTexSubImage2D},
+	{"glCopyTexImage2D", (void*)glCopyTexImage2D},
+	{"glCopyTexSubImage2D", (void*)glCopyTexSubImage2D},
+	{"glCreateProgram", (void*)glCreateProgram},
+	{"glCreateShader", (void*)glCreateShader},
+	{"glCullFace", (void*)glCullFace},
+	{"glDeleteBuffers", (void*)glDeleteBuffers},
+	{"glDeleteFramebuffers", (void*)glDeleteFramebuffers},
+	{"glDeleteProgram", (void*)glDeleteProgram},
+	{"glDeleteRenderbuffers", (void*)glDeleteRenderbuffers},
+	{"glDeleteShader", (void*)glDeleteShader},
+	{"glDeleteTextures", (void*)glDeleteTextures},
+	{"glDepthFunc", (void*)glDepthFunc},
+	{"glDepthMask", (void*)glDepthMask},
+	{"glDepthRangef", (void*)glDepthRangef},
+	{"glDetachShader", (void*)glDetachShader},
+	{"glDisable", (void*)glDisable},
+	{"glDisableVertexAttribArray", (void*)glDisableVertexAttribArray},
+	{"glDrawArrays", (void*)glDrawArrays},
+	{"glDrawElements", (void*)glDrawElements},
+	{"glEnable", (void*)glEnable},
+	{"glEnableVertexAttribArray", (void*)glEnableVertexAttribArray},
+	{"glFinish", (void*)glFinish},
+	{"glFlush", (void*)glFlush},
+	{"glFramebufferRenderbuffer", (void*)glFramebufferRenderbuffer},
+	{"glFramebufferTexture2D", (void*)glFramebufferTexture2D},
+	{"glFrontFace", (void*)glFrontFace},
+	{"glGenBuffers", (void*)glGenBuffers},
+	{"glGenerateMipmap", (void*)glGenerateMipmap},
+	{"glGenFramebuffers", (void*)glGenFramebuffers},
+	{"glGenRenderbuffers", (void*)glGenRenderbuffers},
+	{"glGenTextures", (void*)glGenTextures},
+	{"glGetActiveAttrib", (void*)glGetActiveAttrib},
+	{"glGetActiveUniform", (void*)glGetActiveUniform},
+	{"glGetAttachedShaders", (void*)glGetAttachedShaders},
+	{"glGetAttribLocation", (void*)glGetAttribLocation},
+	{"glGetBooleanv", (void*)glGetBooleanv},
+	{"glGetBufferParameteriv", (void*)glGetBufferParameteriv},
+	{"glGetError", (void*)glGetError},
+	{"glGetFloatv", (void*)glGetFloatv},
+	{"glGetFramebufferAttachmentParameteriv", (void*)glGetFramebufferAttachmentParameteriv},
+	{"glGetIntegerv", (void*)glGetIntegerv},
+	{"glGetProgramiv", (void*)glGetProgramiv},
+	{"glGetProgramInfoLog", (void*)glGetProgramInfoLog},
+	{"glGetRenderbufferParameteriv", (void*)glGetRenderbufferParameteriv},
+	{"glGetShaderiv", (void*)glGetShaderiv},
+	{"glGetShaderInfoLog", (void*)glGetShaderInfoLog},
+	{"glGetShaderPrecisionFormat", (void*)glGetShaderPrecisionFormat},
+	{"glGetShaderSource", (void*)glGetShaderSource},
+	{"glGetString", (void*)glGetString},
+	{"glGetTexParameterfv", (void*)glGetTexParameterfv},
+	{"glGetTexParameteriv", (void*)glGetTexParameteriv},
+	{"glGetUniformfv", (void*)glGetUniformfv},
+	{"glGetUniformiv", (void*)glGetUniformiv},
+	{"glGetUniformLocation", (void*)glGetUniformLocation},
+	{"glGetVertexAttribfv", (void*)glGetVertexAttribfv},
+	{"glGetVertexAttribiv", (void*)glGetVertexAttribiv},
+	{"glGetVertexAttribPointerv", (void*)glGetVertexAttribPointerv},
+	{"glHint", (void*)glHint},
+	{"glIsBuffer", (void*)glIsBuffer},
+	{"glIsEnabled", (void*)glIsEnabled},
+	{"glIsFramebuffer", (void*)glIsFramebuffer},
+	{"glIsProgram", (void*)glIsProgram},
+	{"glIsRenderbuffer", (void*)glIsRenderbuffer},
+	{"glIsShader", (void*)glIsShader},
+	{"glIsTexture", (void*)glIsTexture},
+	{"glLineWidth", (void*)glLineWidth},
+	{"glLinkProgram", (void*)glLinkProgram},
+	{"glPixelStorei", (void*)glPixelStorei},
+	{"glPolygonOffset", (void*)glPolygonOffset},
+	{"glReadPixels", (void*)glReadPixels},
+	{"glReleaseShaderCompiler", (void*)glReleaseShaderCompiler},
+	{"glRenderbufferStorage", (void*)glRenderbufferStorage},
+	{"glSampleCoverage", (void*)glSampleCoverage},
+	{"glScissor", (void*)glScissor},
+	{"glShaderBinary", (void*)glShaderBinary},
+	{"glShaderSource", (void*)glShaderSource},
+	{"glStencilFunc", (void*)glStencilFunc},
+	{"glStencilFuncSeparate", (void*)glStencilFuncSeparate},
+	{"glStencilMask", (void*)glStencilMask},
+	{"glStencilMaskSeparate", (void*)glStencilMaskSeparate},
+	{"glStencilOp", (void*)glStencilOp},
+	{"glStencilOpSeparate", (void*)glStencilOpSeparate},
+	{"glTexImage2D", (void*)glTexImage2D},
+	{"glTexParameterf", (void*)glTexParameterf},
+	{"glTexParameterfv", (void*)glTexParameterfv},
+	{"glTexParameteri", (void*)glTexParameteri},
+	{"glTexParameteriv", (void*)glTexParameteriv},
+	{"glTexSubImage2D", (void*)glTexSubImage2D},
+	{"glUniform1f", (void*)glUniform1f},
+	{"glUniform1fv", (void*)glUniform1fv},
+	{"glUniform1i", (void*)glUniform1i},
+	{"glUniform1iv", (void*)glUniform1iv},
+	{"glUniform2f", (void*)glUniform2f},
+	{"glUniform2fv", (void*)glUniform2fv},
+	{"glUniform2i", (void*)glUniform2i},
+	{"glUniform2iv", (void*)glUniform2iv},
+	{"glUniform3f", (void*)glUniform3f},
+	{"glUniform3fv", (void*)glUniform3fv},
+	{"glUniform3i", (void*)glUniform3i},
+	{"glUniform3iv", (void*)glUniform3iv},
+	{"glUniform4f", (void*)glUniform4f},
+	{"glUniform4fv", (void*)glUniform4fv},
+	{"glUniform4i", (void*)glUniform4i},
+	{"glUniform4iv", (void*)glUniform4iv},
+	{"glUniformMatrix2fv", (void*)glUniformMatrix2fv},
+	{"glUniformMatrix3fv", (void*)glUniformMatrix3fv},
+	{"glUniformMatrix4fv", (void*)glUniformMatrix4fv},
+	{"glUseProgram", (void*)glUseProgram},
+	{"glValidateProgram", (void*)glValidateProgram},
+	{"glVertexAttrib1f", (void*)glVertexAttrib1f},
+	{"glVertexAttrib1fv", (void*)glVertexAttrib1fv},
+	{"glVertexAttrib2f", (void*)glVertexAttrib2f},
+	{"glVertexAttrib2fv", (void*)glVertexAttrib2fv},
+	{"glVertexAttrib3f", (void*)glVertexAttrib3f},
+	{"glVertexAttrib3fv", (void*)glVertexAttrib3fv},
+	{"glVertexAttrib4f", (void*)glVertexAttrib4f},
+	{"glVertexAttrib4fv", (void*)glVertexAttrib4fv},
+	{"glVertexAttribPointer", (void*)glVertexAttribPointer},
+	{"glViewport", (void*)glViewport},
+	{"glEGLImageTargetTexture2DOES", (void*)glEGLImageTargetTexture2DOES},
+	{"glEGLImageTargetRenderbufferStorageOES", (void*)glEGLImageTargetRenderbufferStorageOES},
+	{"glGetProgramBinaryOES", (void*)glGetProgramBinaryOES},
+	{"glProgramBinaryOES", (void*)glProgramBinaryOES},
+	{"glMapBufferOES", (void*)glMapBufferOES},
+	{"glUnmapBufferOES", (void*)glUnmapBufferOES},
+	{"glTexImage3DOES", (void*)glTexImage3DOES},
+	{"glTexSubImage3DOES", (void*)glTexSubImage3DOES},
+	{"glCopyTexSubImage3DOES", (void*)glCopyTexSubImage3DOES},
+	{"glCompressedTexImage3DOES", (void*)glCompressedTexImage3DOES},
+	{"glCompressedTexSubImage3DOES", (void*)glCompressedTexSubImage3DOES},
+	{"glFramebufferTexture3DOES", (void*)glFramebufferTexture3DOES},
+	{"glBindVertexArrayOES", (void*)glBindVertexArrayOES},
+	{"glDeleteVertexArraysOES", (void*)glDeleteVertexArraysOES},
+	{"glGenVertexArraysOES", (void*)glGenVertexArraysOES},
+	{"glIsVertexArrayOES", (void*)glIsVertexArrayOES},
+	{"glDiscardFramebufferEXT", (void*)glDiscardFramebufferEXT},
+	{"glMultiDrawArraysEXT", (void*)glMultiDrawArraysEXT},
+	{"glMultiDrawElementsEXT", (void*)glMultiDrawElementsEXT},
+	{"glGetPerfMonitorGroupsAMD", (void*)glGetPerfMonitorGroupsAMD},
+	{"glGetPerfMonitorCountersAMD", (void*)glGetPerfMonitorCountersAMD},
+	{"glGetPerfMonitorGroupStringAMD", (void*)glGetPerfMonitorGroupStringAMD},
+	{"glGetPerfMonitorCounterStringAMD", (void*)glGetPerfMonitorCounterStringAMD},
+	{"glGetPerfMonitorCounterInfoAMD", (void*)glGetPerfMonitorCounterInfoAMD},
+	{"glGenPerfMonitorsAMD", (void*)glGenPerfMonitorsAMD},
+	{"glDeletePerfMonitorsAMD", (void*)glDeletePerfMonitorsAMD},
+	{"glSelectPerfMonitorCountersAMD", (void*)glSelectPerfMonitorCountersAMD},
+	{"glBeginPerfMonitorAMD", (void*)glBeginPerfMonitorAMD},
+	{"glEndPerfMonitorAMD", (void*)glEndPerfMonitorAMD},
+	{"glGetPerfMonitorCounterDataAMD", (void*)glGetPerfMonitorCounterDataAMD},
+	{"glRenderbufferStorageMultisampleIMG", (void*)glRenderbufferStorageMultisampleIMG},
+	{"glFramebufferTexture2DMultisampleIMG", (void*)glFramebufferTexture2DMultisampleIMG},
+	{"glDeleteFencesNV", (void*)glDeleteFencesNV},
+	{"glGenFencesNV", (void*)glGenFencesNV},
+	{"glIsFenceNV", (void*)glIsFenceNV},
+	{"glTestFenceNV", (void*)glTestFenceNV},
+	{"glGetFenceivNV", (void*)glGetFenceivNV},
+	{"glFinishFenceNV", (void*)glFinishFenceNV},
+	{"glSetFenceNV", (void*)glSetFenceNV},
+	{"glCoverageMaskNV", (void*)glCoverageMaskNV},
+	{"glCoverageOperationNV", (void*)glCoverageOperationNV},
+	{"glGetDriverControlsQCOM", (void*)glGetDriverControlsQCOM},
+	{"glGetDriverControlStringQCOM", (void*)glGetDriverControlStringQCOM},
+	{"glEnableDriverControlQCOM", (void*)glEnableDriverControlQCOM},
+	{"glDisableDriverControlQCOM", (void*)glDisableDriverControlQCOM},
+	{"glExtGetTexturesQCOM", (void*)glExtGetTexturesQCOM},
+	{"glExtGetBuffersQCOM", (void*)glExtGetBuffersQCOM},
+	{"glExtGetRenderbuffersQCOM", (void*)glExtGetRenderbuffersQCOM},
+	{"glExtGetFramebuffersQCOM", (void*)glExtGetFramebuffersQCOM},
+	{"glExtGetTexLevelParameterivQCOM", (void*)glExtGetTexLevelParameterivQCOM},
+	{"glExtTexObjectStateOverrideiQCOM", (void*)glExtTexObjectStateOverrideiQCOM},
+	{"glExtGetTexSubImageQCOM", (void*)glExtGetTexSubImageQCOM},
+	{"glExtGetBufferPointervQCOM", (void*)glExtGetBufferPointervQCOM},
+	{"glExtGetShadersQCOM", (void*)glExtGetShadersQCOM},
+	{"glExtGetProgramsQCOM", (void*)glExtGetProgramsQCOM},
+	{"glExtIsProgramBinaryQCOM", (void*)glExtIsProgramBinaryQCOM},
+	{"glExtGetProgramBinarySourceQCOM", (void*)glExtGetProgramBinarySourceQCOM},
+	{"glStartTilingQCOM", (void*)glStartTilingQCOM},
+	{"glEndTilingQCOM", (void*)glEndTilingQCOM},
+};
+static int gl2_num_funcs = sizeof(gl2_funcs_by_name) / sizeof(struct _gl2_funcs_by_name);
+
+
+#endif
diff --git a/tools/emulator/opengl/system/GLESv2_enc/gl2_opcodes.h b/tools/emulator/opengl/system/GLESv2_enc/gl2_opcodes.h
new file mode 100644
index 0000000..5e7857f
--- /dev/null
+++ b/tools/emulator/opengl/system/GLESv2_enc/gl2_opcodes.h
@@ -0,0 +1,217 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __GUARD_gl2_opcodes_h_
+#define __GUARD_gl2_opcodes_h_
+
+#define OP_glActiveTexture 					2048
+#define OP_glAttachShader 					2049
+#define OP_glBindAttribLocation 					2050
+#define OP_glBindBuffer 					2051
+#define OP_glBindFramebuffer 					2052
+#define OP_glBindRenderbuffer 					2053
+#define OP_glBindTexture 					2054
+#define OP_glBlendColor 					2055
+#define OP_glBlendEquation 					2056
+#define OP_glBlendEquationSeparate 					2057
+#define OP_glBlendFunc 					2058
+#define OP_glBlendFuncSeparate 					2059
+#define OP_glBufferData 					2060
+#define OP_glBufferSubData 					2061
+#define OP_glCheckFramebufferStatus 					2062
+#define OP_glClear 					2063
+#define OP_glClearColor 					2064
+#define OP_glClearDepthf 					2065
+#define OP_glClearStencil 					2066
+#define OP_glColorMask 					2067
+#define OP_glCompileShader 					2068
+#define OP_glCompressedTexImage2D 					2069
+#define OP_glCompressedTexSubImage2D 					2070
+#define OP_glCopyTexImage2D 					2071
+#define OP_glCopyTexSubImage2D 					2072
+#define OP_glCreateProgram 					2073
+#define OP_glCreateShader 					2074
+#define OP_glCullFace 					2075
+#define OP_glDeleteBuffers 					2076
+#define OP_glDeleteFramebuffers 					2077
+#define OP_glDeleteProgram 					2078
+#define OP_glDeleteRenderbuffers 					2079
+#define OP_glDeleteShader 					2080
+#define OP_glDeleteTextures 					2081
+#define OP_glDepthFunc 					2082
+#define OP_glDepthMask 					2083
+#define OP_glDepthRangef 					2084
+#define OP_glDetachShader 					2085
+#define OP_glDisable 					2086
+#define OP_glDisableVertexAttribArray 					2087
+#define OP_glDrawArrays 					2088
+#define OP_glDrawElements 					2089
+#define OP_glEnable 					2090
+#define OP_glEnableVertexAttribArray 					2091
+#define OP_glFinish 					2092
+#define OP_glFlush 					2093
+#define OP_glFramebufferRenderbuffer 					2094
+#define OP_glFramebufferTexture2D 					2095
+#define OP_glFrontFace 					2096
+#define OP_glGenBuffers 					2097
+#define OP_glGenerateMipmap 					2098
+#define OP_glGenFramebuffers 					2099
+#define OP_glGenRenderbuffers 					2100
+#define OP_glGenTextures 					2101
+#define OP_glGetActiveAttrib 					2102
+#define OP_glGetActiveUniform 					2103
+#define OP_glGetAttachedShaders 					2104
+#define OP_glGetAttribLocation 					2105
+#define OP_glGetBooleanv 					2106
+#define OP_glGetBufferParameteriv 					2107
+#define OP_glGetError 					2108
+#define OP_glGetFloatv 					2109
+#define OP_glGetFramebufferAttachmentParameteriv 					2110
+#define OP_glGetIntegerv 					2111
+#define OP_glGetProgramiv 					2112
+#define OP_glGetProgramInfoLog 					2113
+#define OP_glGetRenderbufferParameteriv 					2114
+#define OP_glGetShaderiv 					2115
+#define OP_glGetShaderInfoLog 					2116
+#define OP_glGetShaderPrecisionFormat 					2117
+#define OP_glGetShaderSource 					2118
+#define OP_glGetString 					2119
+#define OP_glGetTexParameterfv 					2120
+#define OP_glGetTexParameteriv 					2121
+#define OP_glGetUniformfv 					2122
+#define OP_glGetUniformiv 					2123
+#define OP_glGetUniformLocation 					2124
+#define OP_glGetVertexAttribfv 					2125
+#define OP_glGetVertexAttribiv 					2126
+#define OP_glGetVertexAttribPointerv 					2127
+#define OP_glHint 					2128
+#define OP_glIsBuffer 					2129
+#define OP_glIsEnabled 					2130
+#define OP_glIsFramebuffer 					2131
+#define OP_glIsProgram 					2132
+#define OP_glIsRenderbuffer 					2133
+#define OP_glIsShader 					2134
+#define OP_glIsTexture 					2135
+#define OP_glLineWidth 					2136
+#define OP_glLinkProgram 					2137
+#define OP_glPixelStorei 					2138
+#define OP_glPolygonOffset 					2139
+#define OP_glReadPixels 					2140
+#define OP_glReleaseShaderCompiler 					2141
+#define OP_glRenderbufferStorage 					2142
+#define OP_glSampleCoverage 					2143
+#define OP_glScissor 					2144
+#define OP_glShaderBinary 					2145
+#define OP_glShaderSource 					2146
+#define OP_glStencilFunc 					2147
+#define OP_glStencilFuncSeparate 					2148
+#define OP_glStencilMask 					2149
+#define OP_glStencilMaskSeparate 					2150
+#define OP_glStencilOp 					2151
+#define OP_glStencilOpSeparate 					2152
+#define OP_glTexImage2D 					2153
+#define OP_glTexParameterf 					2154
+#define OP_glTexParameterfv 					2155
+#define OP_glTexParameteri 					2156
+#define OP_glTexParameteriv 					2157
+#define OP_glTexSubImage2D 					2158
+#define OP_glUniform1f 					2159
+#define OP_glUniform1fv 					2160
+#define OP_glUniform1i 					2161
+#define OP_glUniform1iv 					2162
+#define OP_glUniform2f 					2163
+#define OP_glUniform2fv 					2164
+#define OP_glUniform2i 					2165
+#define OP_glUniform2iv 					2166
+#define OP_glUniform3f 					2167
+#define OP_glUniform3fv 					2168
+#define OP_glUniform3i 					2169
+#define OP_glUniform3iv 					2170
+#define OP_glUniform4f 					2171
+#define OP_glUniform4fv 					2172
+#define OP_glUniform4i 					2173
+#define OP_glUniform4iv 					2174
+#define OP_glUniformMatrix2fv 					2175
+#define OP_glUniformMatrix3fv 					2176
+#define OP_glUniformMatrix4fv 					2177
+#define OP_glUseProgram 					2178
+#define OP_glValidateProgram 					2179
+#define OP_glVertexAttrib1f 					2180
+#define OP_glVertexAttrib1fv 					2181
+#define OP_glVertexAttrib2f 					2182
+#define OP_glVertexAttrib2fv 					2183
+#define OP_glVertexAttrib3f 					2184
+#define OP_glVertexAttrib3fv 					2185
+#define OP_glVertexAttrib4f 					2186
+#define OP_glVertexAttrib4fv 					2187
+#define OP_glVertexAttribPointer 					2188
+#define OP_glViewport 					2189
+#define OP_glEGLImageTargetTexture2DOES 					2190
+#define OP_glEGLImageTargetRenderbufferStorageOES 					2191
+#define OP_glGetProgramBinaryOES 					2192
+#define OP_glProgramBinaryOES 					2193
+#define OP_glMapBufferOES 					2194
+#define OP_glUnmapBufferOES 					2195
+#define OP_glTexImage3DOES 					2196
+#define OP_glTexSubImage3DOES 					2197
+#define OP_glCopyTexSubImage3DOES 					2198
+#define OP_glCompressedTexImage3DOES 					2199
+#define OP_glCompressedTexSubImage3DOES 					2200
+#define OP_glFramebufferTexture3DOES 					2201
+#define OP_glBindVertexArrayOES 					2202
+#define OP_glDeleteVertexArraysOES 					2203
+#define OP_glGenVertexArraysOES 					2204
+#define OP_glIsVertexArrayOES 					2205
+#define OP_glDiscardFramebufferEXT 					2206
+#define OP_glMultiDrawArraysEXT 					2207
+#define OP_glMultiDrawElementsEXT 					2208
+#define OP_glGetPerfMonitorGroupsAMD 					2209
+#define OP_glGetPerfMonitorCountersAMD 					2210
+#define OP_glGetPerfMonitorGroupStringAMD 					2211
+#define OP_glGetPerfMonitorCounterStringAMD 					2212
+#define OP_glGetPerfMonitorCounterInfoAMD 					2213
+#define OP_glGenPerfMonitorsAMD 					2214
+#define OP_glDeletePerfMonitorsAMD 					2215
+#define OP_glSelectPerfMonitorCountersAMD 					2216
+#define OP_glBeginPerfMonitorAMD 					2217
+#define OP_glEndPerfMonitorAMD 					2218
+#define OP_glGetPerfMonitorCounterDataAMD 					2219
+#define OP_glRenderbufferStorageMultisampleIMG 					2220
+#define OP_glFramebufferTexture2DMultisampleIMG 					2221
+#define OP_glDeleteFencesNV 					2222
+#define OP_glGenFencesNV 					2223
+#define OP_glIsFenceNV 					2224
+#define OP_glTestFenceNV 					2225
+#define OP_glGetFenceivNV 					2226
+#define OP_glFinishFenceNV 					2227
+#define OP_glSetFenceNV 					2228
+#define OP_glCoverageMaskNV 					2229
+#define OP_glCoverageOperationNV 					2230
+#define OP_glGetDriverControlsQCOM 					2231
+#define OP_glGetDriverControlStringQCOM 					2232
+#define OP_glEnableDriverControlQCOM 					2233
+#define OP_glDisableDriverControlQCOM 					2234
+#define OP_glExtGetTexturesQCOM 					2235
+#define OP_glExtGetBuffersQCOM 					2236
+#define OP_glExtGetRenderbuffersQCOM 					2237
+#define OP_glExtGetFramebuffersQCOM 					2238
+#define OP_glExtGetTexLevelParameterivQCOM 					2239
+#define OP_glExtTexObjectStateOverrideiQCOM 					2240
+#define OP_glExtGetTexSubImageQCOM 					2241
+#define OP_glExtGetBufferPointervQCOM 					2242
+#define OP_glExtGetShadersQCOM 					2243
+#define OP_glExtGetProgramsQCOM 					2244
+#define OP_glExtIsProgramBinaryQCOM 					2245
+#define OP_glExtGetProgramBinarySourceQCOM 					2246
+#define OP_glStartTilingQCOM 					2247
+#define OP_glEndTilingQCOM 					2248
+#define OP_glVertexAttribPointerData 					2249
+#define OP_glVertexAttribPointerOffset 					2250
+#define OP_glDrawElementsOffset 					2251
+#define OP_glDrawElementsData 					2252
+#define OP_glGetCompressedTextureFormats 					2253
+#define OP_glShaderString 					2254
+#define OP_glFinishRoundTrip 					2255
+#define OP_last 					2256
+
+
+#endif
diff --git a/tools/emulator/opengl/system/OpenglSystemCommon/EGLClientIface.h b/tools/emulator/opengl/system/OpenglSystemCommon/EGLClientIface.h
index 1089340..3c8cb55 100644
--- a/tools/emulator/opengl/system/OpenglSystemCommon/EGLClientIface.h
+++ b/tools/emulator/opengl/system/OpenglSystemCommon/EGLClientIface.h
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #ifndef _SYSTEM_COMMON_EGL_CLIENT_IFACE_H
 #define _SYSTEM_COMMON_EGL_CLIENT_IFACE_H
 
diff --git a/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp b/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp
index 3355d9f..940f5ae 100644
--- a/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp
+++ b/tools/emulator/opengl/system/OpenglSystemCommon/HostConnection.cpp
@@ -63,12 +63,12 @@
         if (useQemuPipe) {
             QemuPipeStream *stream = new QemuPipeStream(STREAM_BUFFER_SIZE);
             if (!stream) {
-                LOGE("Failed to create QemuPipeStream for host connection!!!\n");
+                ALOGE("Failed to create QemuPipeStream for host connection!!!\n");
                 delete con;
                 return NULL;
             }
             if (stream->connect() < 0) {
-                LOGE("Failed to connect to host (QemuPipeStream)!!!\n");
+                ALOGE("Failed to connect to host (QemuPipeStream)!!!\n");
                 delete stream;
                 delete con;
                 return NULL;
@@ -79,13 +79,13 @@
         {
             TcpStream *stream = new TcpStream(STREAM_BUFFER_SIZE);
             if (!stream) {
-                LOGE("Failed to create TcpStream for host connection!!!\n");
+                ALOGE("Failed to create TcpStream for host connection!!!\n");
                 delete con;
                 return NULL;
             }
 
             if (stream->connect("10.0.2.2", STREAM_PORT_NUM) < 0) {
-                LOGE("Failed to connect to host (TcpStream)!!!\n");
+                ALOGE("Failed to connect to host (TcpStream)!!!\n");
                 delete stream;
                 delete con;
                 return NULL;
@@ -99,7 +99,7 @@
         *pClientFlags = 0;
         con->m_stream->commitBuffer(sizeof(unsigned int));
 
-        LOGD("HostConnection::get() New Host Connection established %p, tid %d\n", con, gettid());
+        ALOGD("HostConnection::get() New Host Connection established %p, tid %d\n", con, gettid());
         tinfo->hostConn = con;
     }
 
diff --git a/tools/emulator/opengl/system/OpenglSystemCommon/gralloc_cb.h b/tools/emulator/opengl/system/OpenglSystemCommon/gralloc_cb.h
index 530e004..e879409 100644
--- a/tools/emulator/opengl/system/OpenglSystemCommon/gralloc_cb.h
+++ b/tools/emulator/opengl/system/OpenglSystemCommon/gralloc_cb.h
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #ifndef __GRALLOC_CB_H__
 #define __GRALLOC_CB_H__
 
diff --git a/tools/emulator/opengl/system/egl/Android.mk b/tools/emulator/opengl/system/egl/Android.mk
index 867773f..cf55b48 100644
--- a/tools/emulator/opengl/system/egl/Android.mk
+++ b/tools/emulator/opengl/system/egl/Android.mk
@@ -26,7 +26,7 @@
 # Other builds are device-specific and will provide their own
 # version of this file to point to the appropriate HW EGL libraries.
 #
-ifneq (,$(filter full full_x86 sdk sdk_x86,$(TARGET_PRODUCT)))
+ifneq (,$(filter full full_x86 full_mips sdk sdk_x86 sdk_mips google_sdk google_sdk_x86 google_sdk_mips,$(TARGET_PRODUCT)))
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := egl.cfg
@@ -37,6 +37,6 @@
 LOCAL_MODULE_CLASS := ETC
 
 include $(BUILD_PREBUILT)
-endif # TARGET_PRODUCT in 'full sdk full_x86 sdk_x86)
+endif # TARGET_PRODUCT in 'full full_x86 full_mips sdk sdk_x86 sdk_mips google_sdk google_sdk_x86 google_sdk_mips')
 
 endif # BUILD_EMULATOR_OPENGL_DRIVER != false
diff --git a/tools/emulator/opengl/system/egl/egl.cfg b/tools/emulator/opengl/system/egl/egl.cfg
index 951a2e8..9d3f2dc 100644
--- a/tools/emulator/opengl/system/egl/egl.cfg
+++ b/tools/emulator/opengl/system/egl/egl.cfg
@@ -1,2 +1 @@
-0 1 emulation
-0 0 android
+0 0 emulation
diff --git a/tools/emulator/opengl/system/egl/egl.cpp b/tools/emulator/opengl/system/egl/egl.cpp
index 93f8681..ee195ac 100644
--- a/tools/emulator/opengl/system/egl/egl.cpp
+++ b/tools/emulator/opengl/system/egl/egl.cpp
@@ -13,6 +13,7 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
+
 #include "HostConnection.h"
 #include "ThreadInfo.h"
 #include "eglDisplay.h"
@@ -29,7 +30,7 @@
 #include "GL2Encoder.h"
 #endif
 
-#include <private/ui/android_natives_priv.h>
+#include <system/window.h>
 
 template<typename T>
 static T setErrorFunc(GLint error, T returnValue) {
@@ -65,12 +66,12 @@
 
 #define setErrorReturn(error, retVal)     \
     {                                                \
-        LOGE("tid %d: %s(%d): error 0x%x (%s)", gettid(), __FUNCTION__, __LINE__, error, eglStrError(error));     \
+        ALOGE("tid %d: %s(%d): error 0x%x (%s)", gettid(), __FUNCTION__, __LINE__, error, eglStrError(error));     \
         return setErrorFunc(error, retVal);            \
     }
 
 #define RETURN_ERROR(ret,err)           \
-    LOGE("tid %d: %s(%d): error 0x%x (%s)", gettid(), __FUNCTION__, __LINE__, err, eglStrError(err));    \
+    ALOGE("tid %d: %s(%d): error 0x%x (%s)", gettid(), __FUNCTION__, __LINE__, err, eglStrError(err));    \
     getEGLThreadInfo()->eglError = err;    \
     return ret;
 
@@ -107,12 +108,12 @@
 #define DEFINE_AND_VALIDATE_HOST_CONNECTION(ret) \
     HostConnection *hostCon = HostConnection::get(); \
     if (!hostCon) { \
-        LOGE("egl: Failed to get host connection\n"); \
+        ALOGE("egl: Failed to get host connection\n"); \
         return ret; \
     } \
     renderControl_encoder_context_t *rcEnc = hostCon->rcEncoder(); \
     if (!rcEnc) { \
-        LOGE("egl: Failed to get renderControl encoder context\n"); \
+        ALOGE("egl: Failed to get renderControl encoder context\n"); \
         return ret; \
     }
 
@@ -124,8 +125,6 @@
 #define VALIDATE_SURFACE_RETURN(surface, ret)    \
     if (surface != EGL_NO_SURFACE) {    \
         egl_surface_t* s( static_cast<egl_surface_t*>(surface) );    \
-        if (!s->isValid())    \
-            setErrorReturn(EGL_BAD_SURFACE, EGL_FALSE);    \
         if (s->dpy != (EGLDisplay)&s_display)    \
             setErrorReturn(EGL_BAD_DISPLAY, EGL_FALSE);    \
     }
@@ -175,48 +174,39 @@
     egl_surface_t(EGLDisplay dpy, EGLConfig config, EGLint surfaceType);
     virtual     ~egl_surface_t();
 
-    virtual     EGLBoolean         rcCreate() = 0;
-    virtual     EGLBoolean         rcDestroy() = 0;
+    virtual     void        setSwapInterval(int interval) = 0;
+    virtual     EGLBoolean  swapBuffers() = 0;
 
-    virtual     EGLBoolean  connect() { return EGL_TRUE; }
-    virtual     void        disconnect() {}
-    virtual     EGLBoolean     swapBuffers() { return EGL_TRUE; }
-    virtual     EGLint        getSwapBehavior() const;
+    EGLint      getSwapBehavior() const;
+    uint32_t    getRcSurface()   { return rcSurface; }
+    EGLint      getSurfaceType() { return surfaceType; }
 
-    void         setRcSurface(uint32_t handle){ rcSurface = handle; }
-    uint32_t     getRcSurface(){ return rcSurface; }
-
-    virtual     EGLBoolean    isValid(){ return valid; }
-    EGLint        getSurfaceType(){ return surfaceType; }
-
-    void        setWidth(EGLint w){ width = w; }
     EGLint      getWidth(){ return width; }
-    void         setHeight(EGLint h){ height = h; }
     EGLint      getHeight(){ return height; }
-    void        setTextureFormat(EGLint _texFormat){ texFormat = _texFormat; }
-    EGLint        getTextureFormat(){ return texFormat; }
-    void         setTextureTarget(EGLint _texTarget){ texTarget = _texTarget; }
-    EGLint        getTextureTarget(){ return texTarget; }
+    void        setTextureFormat(EGLint _texFormat) { texFormat = _texFormat; }
+    EGLint      getTextureFormat() { return texFormat; }
+    void        setTextureTarget(EGLint _texTarget) { texTarget = _texTarget; }
+    EGLint      getTextureTarget() { return texTarget; }
 
 private:
     //
     //Surface attributes
     //
-    EGLint     width;
-    EGLint     height;
-    EGLint    texFormat;
-    EGLint    texTarget;
+    EGLint      width;
+    EGLint      height;
+    EGLint      texFormat;
+    EGLint      texTarget;
 
 protected:
-    EGLint        surfaceType;
-    EGLBoolean    valid;
-    uint32_t     rcSurface; //handle to surface created via remote control
+    void        setWidth(EGLint w)  { width = w;  }
+    void        setHeight(EGLint h) { height = h; }
 
-
+    EGLint      surfaceType;
+    uint32_t    rcSurface; //handle to surface created via remote control
 };
 
 egl_surface_t::egl_surface_t(EGLDisplay dpy, EGLConfig config, EGLint surfaceType)
-    : dpy(dpy), config(config), surfaceType(surfaceType), valid(EGL_FALSE), rcSurface(0)
+    : dpy(dpy), config(config), surfaceType(surfaceType), rcSurface(0)
 {
     width = 0;
     height = 0;
@@ -225,7 +215,7 @@
 }
 
 EGLint egl_surface_t::getSwapBehavior() const {
-        return EGL_BUFFER_PRESERVED;
+    return EGL_BUFFER_PRESERVED;
 }
 
 egl_surface_t::~egl_surface_t()
@@ -236,31 +226,29 @@
 // egl_window_surface_t
 
 struct egl_window_surface_t : public egl_surface_t {
-
-    egl_window_surface_t(
+    static egl_window_surface_t* create(
             EGLDisplay dpy, EGLConfig config, EGLint surfType,
             ANativeWindow* window);
 
-    ~egl_window_surface_t();
+    virtual ~egl_window_surface_t();
 
-    virtual     EGLBoolean     rcCreate();
-    virtual     EGLBoolean     rcDestroy();
-
-    virtual     EGLBoolean  connect();
-    virtual     void        disconnect();
-    virtual     EGLBoolean  swapBuffers();
+    virtual void       setSwapInterval(int interval);
+    virtual EGLBoolean swapBuffers();
 
 private:
-    ANativeWindow*     nativeWindow;
-    android_native_buffer_t*   buffer;
+    egl_window_surface_t(
+            EGLDisplay dpy, EGLConfig config, EGLint surfType,
+            ANativeWindow* window);
+    EGLBoolean init();
 
+    ANativeWindow*              nativeWindow;
+    android_native_buffer_t*    buffer;
 };
 
-
 egl_window_surface_t::egl_window_surface_t (
-            EGLDisplay dpy, EGLConfig config, EGLint surfType,
-            ANativeWindow* window)
-    : egl_surface_t(dpy, config, surfType),
+        EGLDisplay dpy, EGLConfig config, EGLint surfType,
+        ANativeWindow* window)
+:   egl_surface_t(dpy, config, surfType),
     nativeWindow(window),
     buffer(NULL)
 {
@@ -273,82 +261,70 @@
     setHeight(h);
 }
 
-egl_window_surface_t::~egl_window_surface_t() {
-    nativeWindow->common.decRef(&nativeWindow->common);
-}
-
-EGLBoolean egl_window_surface_t::rcCreate()
+EGLBoolean egl_window_surface_t::init()
 {
-    DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
-    rcSurface = rcEnc->rcCreateWindowSurface(rcEnc, (uint32_t)config, getWidth(), getHeight());
-    if (!rcSurface) {
-        LOGE("rcCreateWindowSurface returned 0");
-        return EGL_FALSE;
-    }
-    valid = EGL_TRUE;
-    return EGL_TRUE;
-}
-
-EGLBoolean egl_window_surface_t::rcDestroy()
-{
-    if (!rcSurface) {
-        LOGE("rcDestroy called on invalid rcSurface");
-        return EGL_FALSE;
-    }
-
-    DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
-    rcEnc->rcDestroyWindowSurface(rcEnc, rcSurface);
-    rcSurface = 0;
-
-    return EGL_TRUE;
-}
-
-EGLBoolean egl_window_surface_t::connect()
-{
-    // dequeue a buffer
     if (nativeWindow->dequeueBuffer(nativeWindow, &buffer) != NO_ERROR) {
         setErrorReturn(EGL_BAD_ALLOC, EGL_FALSE);
     }
-
-    // lock the buffer
     nativeWindow->lockBuffer(nativeWindow, buffer);
 
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
-    rcEnc->rcSetWindowColorBuffer(rcEnc, rcSurface, ((cb_handle_t *)(buffer->handle))->hostHandle);
+    rcSurface = rcEnc->rcCreateWindowSurface(rcEnc, (uint32_t)config,
+            getWidth(), getHeight());
+    if (!rcSurface) {
+        ALOGE("rcCreateWindowSurface returned 0");
+        return EGL_FALSE;
+    }
+    rcEnc->rcSetWindowColorBuffer(rcEnc, rcSurface,
+            ((cb_handle_t*)(buffer->handle))->hostHandle);
 
     return EGL_TRUE;
 }
 
-void egl_window_surface_t::disconnect()
+egl_window_surface_t* egl_window_surface_t::create(
+        EGLDisplay dpy, EGLConfig config, EGLint surfType,
+        ANativeWindow* window)
 {
-    if (buffer) {
-        nativeWindow->queueBuffer(nativeWindow, buffer);
-        buffer = 0;
+    egl_window_surface_t* wnd = new egl_window_surface_t(
+            dpy, config, surfType, window);
+    if (wnd && !wnd->init()) {
+        delete wnd;
+        wnd = NULL;
     }
+    return wnd;
+}
+
+egl_window_surface_t::~egl_window_surface_t() {
+    DEFINE_HOST_CONNECTION;
+    if (rcSurface && rcEnc) {
+        rcEnc->rcDestroyWindowSurface(rcEnc, rcSurface);
+    }
+    if (buffer) {
+        nativeWindow->cancelBuffer(nativeWindow, buffer);
+    }
+    nativeWindow->common.decRef(&nativeWindow->common);
+}
+
+void egl_window_surface_t::setSwapInterval(int interval)
+{
+    nativeWindow->setSwapInterval(nativeWindow, interval);
 }
 
 EGLBoolean egl_window_surface_t::swapBuffers()
 {
-    if (!buffer) {
-        setErrorReturn(EGL_BAD_ACCESS, EGL_FALSE);
-    }
-
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
 
     rcEnc->rcFlushWindowColorBuffer(rcEnc, rcSurface);
 
-    //post the back buffer
     nativeWindow->queueBuffer(nativeWindow, buffer);
-
-    // dequeue a new buffer
     if (nativeWindow->dequeueBuffer(nativeWindow, &buffer)) {
+        buffer = NULL;
         setErrorReturn(EGL_BAD_ALLOC, EGL_FALSE);
     }
-
-    // lock the buffer
     nativeWindow->lockBuffer(nativeWindow, buffer);
 
-    rcEnc->rcSetWindowColorBuffer(rcEnc, rcSurface, ((cb_handle_t *)(buffer->handle))->hostHandle);
+    rcEnc->rcSetWindowColorBuffer(rcEnc, rcSurface,
+            ((cb_handle_t *)(buffer->handle))->hostHandle);
 
     return EGL_TRUE;
 }
@@ -357,29 +333,28 @@
 //egl_pbuffer_surface_t
 
 struct egl_pbuffer_surface_t : public egl_surface_t {
-
-    GLenum    format;
-
-    egl_pbuffer_surface_t(
-            EGLDisplay dpy, EGLConfig config, EGLint surfType,
-            int32_t w, int32_t h, GLenum format);
+    static egl_pbuffer_surface_t* create(EGLDisplay dpy, EGLConfig config,
+            EGLint surfType, int32_t w, int32_t h, GLenum pixelFormat);
 
     virtual ~egl_pbuffer_surface_t();
-    virtual     EGLBoolean     rcCreate();
-    virtual     EGLBoolean     rcDestroy();
 
-    virtual     EGLBoolean    connect();
+    virtual void       setSwapInterval(int interval) {}
+    virtual EGLBoolean swapBuffers() { return EGL_TRUE; }
 
-    uint32_t    getRcColorBuffer(){ return rcColorBuffer; }
-    void         setRcColorBuffer(uint32_t colorBuffer){ rcColorBuffer = colorBuffer; }
+    uint32_t getRcColorBuffer() { return rcColorBuffer; }
+
 private:
+    egl_pbuffer_surface_t(EGLDisplay dpy, EGLConfig config, EGLint surfType,
+            int32_t w, int32_t h);
+    EGLBoolean init(GLenum format);
+
     uint32_t rcColorBuffer;
 };
 
-egl_pbuffer_surface_t::egl_pbuffer_surface_t(
-        EGLDisplay dpy, EGLConfig config, EGLint surfType,
-        int32_t w, int32_t h, GLenum pixelFormat)
-    : egl_surface_t(dpy, config, surfType), format(pixelFormat)
+egl_pbuffer_surface_t::egl_pbuffer_surface_t(EGLDisplay dpy, EGLConfig config,
+        EGLint surfType, int32_t w, int32_t h)
+:   egl_surface_t(dpy, config, surfType),
+    rcColorBuffer(0)
 {
     setWidth(w);
     setHeight(h);
@@ -387,50 +362,49 @@
 
 egl_pbuffer_surface_t::~egl_pbuffer_surface_t()
 {
-    rcColorBuffer = 0;
+    DEFINE_HOST_CONNECTION;
+    if (rcEnc) {
+        if (rcColorBuffer) rcEnc->rcCloseColorBuffer(rcEnc, rcColorBuffer);
+        if (rcSurface)     rcEnc->rcDestroyWindowSurface(rcEnc, rcSurface);
+    }
 }
 
-EGLBoolean egl_pbuffer_surface_t::rcCreate()
+EGLBoolean egl_pbuffer_surface_t::init(GLenum pixelFormat)
 {
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
-    rcSurface = rcEnc->rcCreateWindowSurface(rcEnc, (uint32_t)config, getWidth(), getHeight());
+
+    rcSurface = rcEnc->rcCreateWindowSurface(rcEnc, (uint32_t)config,
+            getWidth(), getHeight());
     if (!rcSurface) {
-        LOGE("rcCreateWindowSurface returned 0");
+        ALOGE("rcCreateWindowSurface returned 0");
         return EGL_FALSE;
     }
-    rcColorBuffer = rcEnc->rcCreateColorBuffer(rcEnc, getWidth(), getHeight(), format);
+
+    rcColorBuffer = rcEnc->rcCreateColorBuffer(rcEnc, getWidth(), getHeight(),
+            pixelFormat);
     if (!rcColorBuffer) {
-        LOGE("rcCreateColorBuffer returned 0");
+        ALOGE("rcCreateColorBuffer returned 0");
         return EGL_FALSE;
     }
 
-    valid = EGL_TRUE;
-    return EGL_TRUE;
-}
-
-EGLBoolean egl_pbuffer_surface_t::rcDestroy()
-{
-    if ((!rcSurface)||(!rcColorBuffer)) {
-        LOGE("destroyRc called on invalid rcSurface");
-        return EGL_FALSE;
-    }
-
-    DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
-    rcEnc->rcDestroyWindowSurface(rcEnc, rcSurface);
-    rcEnc->rcDestroyColorBuffer(rcEnc, rcColorBuffer);
-    rcSurface = 0;
-
-    return EGL_TRUE;
-}
-
-EGLBoolean egl_pbuffer_surface_t::connect()
-{
-    DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
     rcEnc->rcSetWindowColorBuffer(rcEnc, rcSurface, rcColorBuffer);
 
     return EGL_TRUE;
 }
 
+egl_pbuffer_surface_t* egl_pbuffer_surface_t::create(EGLDisplay dpy,
+        EGLConfig config, EGLint surfType, int32_t w, int32_t h,
+        GLenum pixelFormat)
+{
+    egl_pbuffer_surface_t* pb = new egl_pbuffer_surface_t(dpy, config, surfType,
+            w, h);
+    if (pb && !pb->init(pixelFormat)) {
+        delete pb;
+        pb = NULL;
+    }
+    return pb;
+}
+
 static const char *getGLString(int glEnum)
 {
     EGLThreadInfo *tInfo = getEGLThreadInfo();
@@ -653,12 +627,9 @@
         setErrorReturn(EGL_BAD_NATIVE_WINDOW, EGL_NO_SURFACE);
     }
 
-    egl_surface_t* surface;
-    surface = new egl_window_surface_t(&s_display, config, surfaceType, static_cast<ANativeWindow*>(win));
-    if (!surface)
-        setErrorReturn(EGL_BAD_ALLOC, EGL_NO_SURFACE);
-    if (!surface->rcCreate()) {
-        delete surface;
+    egl_surface_t* surface = egl_window_surface_t::create(
+            &s_display, config, surfaceType, static_cast<ANativeWindow*>(win));
+    if (!surface) {
         setErrorReturn(EGL_BAD_ALLOC, EGL_NO_SURFACE);
     }
 
@@ -710,11 +681,9 @@
     if (s_display.getConfigGLPixelFormat(config, &pixelFormat) == EGL_FALSE)
         setErrorReturn(EGL_BAD_MATCH, EGL_NO_SURFACE);
 
-    egl_surface_t* surface = new egl_pbuffer_surface_t(dpy, config, surfaceType, w, h, pixelFormat);
-    if (!surface)
-        setErrorReturn(EGL_BAD_ALLOC, EGL_NO_SURFACE);
-    if (!surface->rcCreate()) {
-        delete surface;
+    egl_surface_t* surface = egl_pbuffer_surface_t::create(dpy, config,
+            surfaceType, w, h, pixelFormat);
+    if (!surface) {
         setErrorReturn(EGL_BAD_ALLOC, EGL_NO_SURFACE);
     }
 
@@ -740,10 +709,7 @@
     VALIDATE_DISPLAY_INIT(dpy, EGL_FALSE);
     VALIDATE_SURFACE_RETURN(eglSurface, EGL_FALSE);
 
-    egl_surface_t* surface( static_cast<egl_surface_t*>(eglSurface) );
-
-    surface->disconnect();
-    surface->rcDestroy();
+    egl_surface_t* surface(static_cast<egl_surface_t*>(eglSurface));
     delete surface;
 
     return EGL_TRUE;
@@ -782,7 +748,7 @@
             break;
         //TODO: complete other attributes
         default:
-            LOGE("eglQuerySurface %x  EGL_BAD_ATTRIBUTE", attribute);
+            ALOGE("eglQuerySurface %x  EGL_BAD_ATTRIBUTE", attribute);
             ret = setErrorFunc(EGL_BAD_ATTRIBUTE, EGL_FALSE);
             break;
     }
@@ -819,14 +785,14 @@
 EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
 {
     //TODO
-    LOGW("%s not implemented", __FUNCTION__);
+    ALOGW("%s not implemented", __FUNCTION__);
     return 0;
 }
 
 EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
 {
     //TODO
-    LOGW("%s not implemented", __FUNCTION__);
+    ALOGW("%s not implemented", __FUNCTION__);
     return 0;
 }
 
@@ -864,16 +830,27 @@
 EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
 {
     //TODO
-    LOGW("%s not implemented", __FUNCTION__);
+    ALOGW("%s not implemented", __FUNCTION__);
     return 0;
 }
 
 EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval)
 {
     VALIDATE_DISPLAY_INIT(dpy, EGL_FALSE);
-
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
+
+    EGLContext_t* ctx = getEGLThreadInfo()->currentContext;
+    if (!ctx) {
+        setErrorReturn(EGL_BAD_CONTEXT, EGL_FALSE);
+    }
+    if (!ctx->draw) {
+        setErrorReturn(EGL_BAD_SURFACE, EGL_FALSE);
+    }
+    egl_surface_t* draw(static_cast<egl_surface_t*>(ctx->draw));
+    draw->setSwapInterval(interval);
+
     rcEnc->rcFBSetSwapInterval(rcEnc, interval); //TODO: implement on the host
+
     return EGL_TRUE;
 }
 
@@ -900,7 +877,7 @@
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_NO_CONTEXT);
     uint32_t rcContext = rcEnc->rcCreateContext(rcEnc, (uint32_t)config, rcShareCtx, version);
     if (!rcContext) {
-        LOGE("rcCreateContext returned 0");
+        ALOGE("rcCreateContext returned 0");
         setErrorReturn(EGL_BAD_ALLOC, EGL_NO_CONTEXT);
     }
 
@@ -972,18 +949,10 @@
 
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
     if (rcEnc->rcMakeCurrent(rcEnc, ctxHandle, drawHandle, readHandle) == EGL_FALSE) {
-        LOGE("rcMakeCurrent returned EGL_FALSE");
+        ALOGE("rcMakeCurrent returned EGL_FALSE");
         setErrorReturn(EGL_BAD_CONTEXT, EGL_FALSE);
     }
 
-    //
-    // Disconnect from the previous drawable
-    //
-    if (tInfo->currentContext && tInfo->currentContext->draw) {
-        egl_surface_t * prevDrawSurf = static_cast<egl_surface_t *>(tInfo->currentContext->draw);
-        prevDrawSurf->disconnect();
-    }
-
     //Now make the local bind
     if (context) {
         context->draw = draw;
@@ -1036,10 +1005,6 @@
         }
     }
 
-    //connect the color buffer
-    if (drawSurf)
-        drawSurf->connect();
-
     return EGL_TRUE;
 }
 
@@ -1098,7 +1063,7 @@
                 *value = EGL_BACK_BUFFER; //single buffer not supported
             break;
         default:
-            LOGE("eglQueryContext %x  EGL_BAD_ATTRIBUTE", attribute);
+            ALOGE("eglQueryContext %x  EGL_BAD_ATTRIBUTE", attribute);
             setErrorReturn(EGL_BAD_ATTRIBUTE, EGL_FALSE);
             break;
     }
@@ -1137,8 +1102,6 @@
     DEFINE_AND_VALIDATE_HOST_CONNECTION(EGL_FALSE);
 
     egl_surface_t* d = static_cast<egl_surface_t*>(eglSurface);
-    if (!d->isValid())
-        setErrorReturn(EGL_BAD_SURFACE, EGL_FALSE);
     if (d->dpy != dpy)
         setErrorReturn(EGL_BAD_DISPLAY, EGL_FALSE);
 
@@ -1218,32 +1181,74 @@
     return EGL_TRUE;
 }
 
-EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
+#define FENCE_SYNC_HANDLE (EGLSyncKHR)0xFE4CE
+
+EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type,
+        const EGLint *attrib_list)
 {
-    //TODO later
-    return 0;
+    // TODO: This implementation could be faster. We should require the host EGL
+    // to support KHR_fence_sync, or at least pipe the fence command to the host
+    // and wait for it (probably involving a glFinish on the host) in
+    // eglClientWaitSyncKHR.
+
+    VALIDATE_DISPLAY(dpy, EGL_NO_SYNC_KHR);
+
+    if (type != EGL_SYNC_FENCE_KHR ||
+            (attrib_list != NULL && attrib_list[0] != EGL_NONE)) {
+        setErrorReturn(EGL_BAD_ATTRIBUTE, EGL_NO_SYNC_KHR);
+    }
+
+    EGLThreadInfo *tInfo = getEGLThreadInfo();
+    if (!tInfo || !tInfo->currentContext) {
+        setErrorReturn(EGL_BAD_MATCH, EGL_NO_SYNC_KHR);
+    }
+
+    if (tInfo->currentContext->version == 2) {
+        s_display.gles2_iface()->finish();
+    } else {
+        s_display.gles_iface()->finish();
+    }
+
+    return FENCE_SYNC_HANDLE;
 }
 
 EGLBoolean eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
 {
-    //TODO later
-    return 0;
+    if (sync != FENCE_SYNC_HANDLE) {
+        setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
+    }
+
+    return EGL_TRUE;
 }
 
-EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
+EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags,
+        EGLTimeKHR timeout)
 {
-    //TODO
-    return 0;
+    if (sync != FENCE_SYNC_HANDLE) {
+        setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
+    }
+
+    return EGL_CONDITION_SATISFIED_KHR;
 }
 
-EGLBoolean eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
+EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync,
+        EGLint attribute, EGLint *value)
 {
-    //TODO later
-    return 0;
-}
+    if (sync != FENCE_SYNC_HANDLE) {
+        setErrorReturn(EGL_BAD_PARAMETER, EGL_FALSE);
+    }
 
-EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
-{
-    //TODO later
-    return 0;
+    switch (attribute) {
+    case EGL_SYNC_TYPE_KHR:
+        *value = EGL_SYNC_FENCE_KHR;
+        return EGL_TRUE;
+    case EGL_SYNC_STATUS_KHR:
+        *value = EGL_SIGNALED_KHR;
+        return EGL_TRUE;
+    case EGL_SYNC_CONDITION_KHR:
+        *value = EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR;
+        return EGL_TRUE;
+    default:
+        setErrorReturn(EGL_BAD_ATTRIBUTE, EGL_FALSE);
+    }
 }
diff --git a/tools/emulator/opengl/system/egl/eglDisplay.cpp b/tools/emulator/opengl/system/egl/eglDisplay.cpp
index 7beeb8e..bcb0d4b 100644
--- a/tools/emulator/opengl/system/egl/eglDisplay.cpp
+++ b/tools/emulator/opengl/system/egl/eglDisplay.cpp
@@ -24,7 +24,8 @@
 // list of extensions supported by this EGL implementation
 //  NOTE that each extension name should be suffixed with space
 static const char systemStaticEGLExtensions[] =
-            "EGL_ANDROID_image_native_buffer ";
+            "EGL_ANDROID_image_native_buffer "
+            "EGL_KHR_fence_sync ";
 
 // list of extensions supported by this EGL implementation only if supported
 // on the host implementation.
@@ -88,7 +89,7 @@
                                          &s_gles_lib);
         if (!m_gles_iface) {
             pthread_mutex_unlock(&m_lock);
-            LOGE("Failed to load gles1 iface");
+            ALOGE("Failed to load gles1 iface");
             return false;
         }
 
@@ -106,7 +107,7 @@
         HostConnection *hcon = HostConnection::get();
         if (!hcon) {
             pthread_mutex_unlock(&m_lock);
-            LOGE("Failed to establish connection with the host\n");
+            ALOGE("Failed to establish connection with the host\n");
             return false;
         }
 
@@ -116,7 +117,7 @@
         renderControl_encoder_context_t *rcEnc = hcon->rcEncoder();
         if (!rcEnc) {
             pthread_mutex_unlock(&m_lock);
-            LOGE("Failed to get renderControl encoder instance");
+            ALOGE("Failed to get renderControl encoder instance");
             return false;
         }
 
@@ -228,13 +229,13 @@
 {
     void *lib = dlopen(libName, RTLD_NOW);
     if (!lib) {
-        LOGE("Failed to dlopen %s", libName);
+        ALOGE("Failed to dlopen %s", libName);
         return NULL;
     }
 
     init_emul_gles_t init_gles_func = (init_emul_gles_t)dlsym(lib,"init_emul_gles");
     if (!init_gles_func) {
-        LOGE("Failed to find init_emul_gles");
+        ALOGE("Failed to find init_emul_gles");
         dlclose((void*)lib);
         return NULL;
     }
@@ -385,7 +386,7 @@
         return m_extensionString;
     }
     else {
-        LOGE("[%s] Unknown name %d\n", __FUNCTION__, name);
+        ALOGE("[%s] Unknown name %d\n", __FUNCTION__, name);
         return NULL;
     }
 }
@@ -397,7 +398,7 @@
 {
     if (attribIdx == ATTRIBUTE_NONE)
     {
-        LOGE("[%s] Bad attribute idx\n", __FUNCTION__);
+        ALOGE("[%s] Bad attribute idx\n", __FUNCTION__);
         return EGL_FALSE;
     }
     *value = *(m_configs + (int)config*m_numConfigAttribs + attribIdx);
@@ -430,7 +431,7 @@
 {
     if (attribIdx == ATTRIBUTE_NONE)
     {
-        LOGE("[%s] Bad attribute idx\n", __FUNCTION__);
+        ALOGE("[%s] Bad attribute idx\n", __FUNCTION__);
         return EGL_FALSE;
     }
     *(m_configs + (int)config*m_numConfigAttribs + attribIdx) = value;
@@ -456,7 +457,7 @@
         getAttribValue(config, m_attribs.valueFor(EGL_GREEN_SIZE), &greenSize) &&
         getAttribValue(config, m_attribs.valueFor(EGL_ALPHA_SIZE), &alphaSize)) )
     {
-        LOGE("Couldn't find value for one of the pixel format attributes");
+        ALOGE("Couldn't find value for one of the pixel format attributes");
         return EGL_FALSE;
     }
 
@@ -480,7 +481,7 @@
         getAttribValue(config, m_attribs.valueFor(EGL_GREEN_SIZE), &greenSize) &&
         getAttribValue(config, m_attribs.valueFor(EGL_ALPHA_SIZE), &alphaSize)) )
     {
-        LOGE("Couldn't find value for one of the pixel format attributes");
+        ALOGE("Couldn't find value for one of the pixel format attributes");
         return EGL_FALSE;
     }
 
diff --git a/tools/emulator/opengl/system/egl/egl_ftable.h b/tools/emulator/opengl/system/egl/egl_ftable.h
index b21da72..16d130c 100644
--- a/tools/emulator/opengl/system/egl/egl_ftable.h
+++ b/tools/emulator/opengl/system/egl/egl_ftable.h
@@ -58,7 +58,6 @@
     {"eglCreateSyncKHR", (void *)eglCreateSyncKHR},
     {"eglDestroySyncKHR", (void *)eglDestroySyncKHR},
     {"eglClientWaitSyncKHR", (void *)eglClientWaitSyncKHR},
-    {"eglSignalSyncKHR", (void *)eglSignalSyncKHR},
     {"eglGetSyncAttribKHR", (void *)eglGetSyncAttribKHR}
 };
 
diff --git a/tools/emulator/opengl/system/gralloc/gralloc.cpp b/tools/emulator/opengl/system/gralloc/gralloc.cpp
index b27eaa3..4334835 100644
--- a/tools/emulator/opengl/system/gralloc/gralloc.cpp
+++ b/tools/emulator/opengl/system/gralloc/gralloc.cpp
@@ -35,13 +35,13 @@
 #define DEBUG  0
 
 #if DEBUG >= 1
-#  define D(...)   LOGD(__VA_ARGS__)
+#  define D(...)   ALOGD(__VA_ARGS__)
 #else
 #  define D(...)   ((void)0)
 #endif
 
 #if DEBUG >= 2
-#  define DD(...)  LOGD(__VA_ARGS__)
+#  define DD(...)  ALOGD(__VA_ARGS__)
 #else
 #  define DD(...)  ((void)0)
 #endif
@@ -113,12 +113,12 @@
 #define DEFINE_AND_VALIDATE_HOST_CONNECTION \
     HostConnection *hostCon = HostConnection::get(); \
     if (!hostCon) { \
-        LOGE("gralloc: Failed to get host connection\n"); \
+        ALOGE("gralloc: Failed to get host connection\n"); \
         return -EIO; \
     } \
     renderControl_encoder_context_t *rcEnc = hostCon->rcEncoder(); \
     if (!rcEnc) { \
-        LOGE("gralloc: Failed to get renderControl encoder context\n"); \
+        ALOGE("gralloc: Failed to get renderControl encoder context\n"); \
         return -EIO; \
     }
 
@@ -144,13 +144,16 @@
     if (hw_write && sw_write) {
         return -EINVAL;
     }
+    bool sw_read = (0 != (usage & GRALLOC_USAGE_SW_READ_MASK));
 
     int ashmem_size = 0;
-    *pStride = 0;
+    int stride = w;
+
     GLenum glFormat = 0;
     GLenum glType = 0;
 
     int bpp = 0;
+    int align = 1;
     switch (format) {
         case HAL_PIXEL_FORMAT_RGBA_8888:
         case HAL_PIXEL_FORMAT_RGBX_8888:
@@ -179,7 +182,16 @@
             glFormat = GL_RGBA4_OES;
             glType = GL_UNSIGNED_SHORT_4_4_4_4;
             break;
-
+        case HAL_PIXEL_FORMAT_RAW_SENSOR:
+            bpp = 2;
+            align = 16*bpp;
+            if (! (sw_read && sw_write) ) {
+                // Raw sensor data cannot be used by HW
+                return -EINVAL;
+            }
+            glFormat = GL_LUMINANCE;
+            glType = GL_UNSIGNED_SHORT;
+            break;
         default:
             return -EINVAL;
     }
@@ -189,15 +201,16 @@
         ashmem_size += sizeof(uint32_t);
     }
 
-    if (usage & (GRALLOC_USAGE_SW_READ_MASK | GRALLOC_USAGE_SW_WRITE_MASK)) {
+    if (sw_read || sw_write) {
         // keep space for image on guest memory if SW access is needed
-        int align = 1;
+
         size_t bpr = (w*bpp + (align-1)) & ~(align-1);
         ashmem_size += (bpr * h);
-        *pStride = bpr / bpp;
+        stride = bpr / bpp;
     }
 
-    D("gralloc_alloc ashmem_size=%d, tid %d\n", ashmem_size, gettid());
+    D("gralloc_alloc ashmem_size=%d, stride=%d, tid %d\n", ashmem_size, stride,
+            gettid());
 
     //
     // Allocate space in ashmem if needed
@@ -209,7 +222,8 @@
 
         fd = ashmem_create_region("gralloc-buffer", ashmem_size);
         if (fd < 0) {
-            LOGE("gralloc_alloc failed to create ashmem region: %s\n", strerror(errno));
+            ALOGE("gralloc_alloc failed to create ashmem region: %s\n",
+                    strerror(errno));
             return -errno;
         }
     }
@@ -265,6 +279,7 @@
     pthread_mutex_unlock(&grdev->lock);
 
     *pHandle = cb;
+    *pStride = stride;
     return 0;
 }
 
@@ -279,8 +294,8 @@
 
     if (cb->hostHandle != 0) {
         DEFINE_AND_VALIDATE_HOST_CONNECTION;
-        D("Destroying host ColorBuffer 0x%x\n", cb->hostHandle);
-        rcEnc->rcDestroyColorBuffer(rcEnc, cb->hostHandle);
+        D("Closing host ColorBuffer 0x%x\n", cb->hostHandle);
+        rcEnc->rcCloseColorBuffer(rcEnc, cb->hostHandle);
     }
 
     //
@@ -440,6 +455,12 @@
         return -EINVAL;
     }
 
+    if (cb->hostHandle != 0) {
+        DEFINE_AND_VALIDATE_HOST_CONNECTION;
+        D("Opening host ColorBuffer 0x%x\n", cb->hostHandle);
+        rcEnc->rcOpenColorBuffer(rcEnc, cb->hostHandle);
+    }
+
     //
     // if the color buffer has ashmem region and it is not mapped in this
     // process map it now.
@@ -471,6 +492,12 @@
         return -EINVAL;
     }
 
+    if (cb->hostHandle != 0) {
+        DEFINE_AND_VALIDATE_HOST_CONNECTION;
+        D("Closing host ColorBuffer 0x%x\n", cb->hostHandle);
+        rcEnc->rcCloseColorBuffer(rcEnc, cb->hostHandle);
+    }
+
     //
     // unmap ashmem region if it was previously mapped in this process
     // (through register_buffer)
@@ -503,7 +530,7 @@
     private_module_t *gr = (private_module_t *)module;
     cb_handle_t *cb = (cb_handle_t *)handle;
     if (!gr || !cb_handle_t::validate(cb)) {
-        LOGE("gralloc_lock bad handle\n");
+        ALOGE("gralloc_lock bad handle\n");
         return -EINVAL;
     }
 
@@ -522,7 +549,7 @@
          (!sw_read && !sw_write) ||
          (sw_read && !sw_read_allowed) ||
          (sw_write && !sw_write_allowed) ) {
-        LOGE("gralloc_lock usage mismatch usage=0x%x cb->usage=0x%x\n", usage, cb->usage);
+        ALOGE("gralloc_lock usage mismatch usage=0x%x cb->usage=0x%x\n", usage, cb->usage);
         return -EINVAL;
     }
 
@@ -559,17 +586,18 @@
         if (hostSyncStatus < 0) {
             // host failed the color buffer sync - probably since it was already
             // locked for write access. fail the lock.
-            LOGE("gralloc_lock cacheFlush failed postCount=%d sw_read=%d\n",
+            ALOGE("gralloc_lock cacheFlush failed postCount=%d sw_read=%d\n",
                  postCount, sw_read);
             return -EBUSY;
         }
 
-        //
-        // is virtual address required ?
-        //
-        if (sw_read || sw_write) {
-            *vaddr = cpu_addr;
-        }
+    }
+
+    //
+    // is virtual address required ?
+    //
+    if (sw_read || sw_write) {
+        *vaddr = cpu_addr;
     }
 
     if (sw_write) {
@@ -669,7 +697,7 @@
         // return error if connection with host can not be established
         HostConnection *hostCon = HostConnection::get();
         if (!hostCon) {
-            LOGE("gralloc: failed to get host connection while opening %s\n", name);
+            ALOGE("gralloc: failed to get host connection while opening %s\n", name);
             return -EIO;
         }
 
@@ -805,7 +833,7 @@
     if (atoi(prop) > 0) {
         return;
     }
-    LOGD("Emulator without GPU emulation detected.");
+    ALOGD("Emulator without GPU emulation detected.");
     module = dlopen("/system/lib/hw/gralloc.default.so", RTLD_LAZY|RTLD_LOCAL);
     if (module != NULL) {
         sFallback = reinterpret_cast<gralloc_module_t*>(dlsym(module, HAL_MODULE_INFO_SYM_AS_STR));
@@ -814,6 +842,6 @@
         }
     }
     if (sFallback == NULL) {
-        LOGE("Could not find software fallback module!?");
+        ALOGE("Could not find software fallback module!?");
     }
 }
diff --git a/tools/emulator/opengl/system/renderControl_enc/Android.mk b/tools/emulator/opengl/system/renderControl_enc/Android.mk
index 96f15a2..5792440 100644
--- a/tools/emulator/opengl/system/renderControl_enc/Android.mk
+++ b/tools/emulator/opengl/system/renderControl_enc/Android.mk
@@ -1,7 +1,12 @@
 LOCAL_PATH := $(call my-dir)
 
 $(call emugl-begin-shared-library,lib_renderControl_enc)
-$(call emugl-gen-encoder,$(LOCAL_PATH),renderControl)
+
+LOCAL_SRC_FILES := \
+    renderControl_client_context.cpp \
+    renderControl_enc.cpp \
+    renderControl_entry.cpp
+
 $(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
 $(call emugl-import,libOpenglCodecCommon)
 $(call emugl-end-module)
diff --git a/tools/emulator/opengl/system/renderControl_enc/README b/tools/emulator/opengl/system/renderControl_enc/README
index df870f6..2ee1a57 100644
--- a/tools/emulator/opengl/system/renderControl_enc/README
+++ b/tools/emulator/opengl/system/renderControl_enc/README
@@ -76,13 +76,19 @@
        be specified as a render target for a window surface through 
        rcSetWindowColorBuffer or to be displayed on the framebuffer window
        through rcFBPost.
-       The function returns a handle to the colorBuffer object.
+       The function returns a handle to the colorBuffer object, with an initial
+       reference count of 1.
 
-void rcDestroyColorBuffer(uint32_t colorbuffer);
-       destroyes a colorBuffer object.
+void rcOpenColorBuffer(uint32_t colorbuffer);
+       Adds an additional reference to the colorbuffer, typically from a
+       different Android process than the one which created it.
+
+void rcCloseColorBuffer(uint32_t colorbuffer);
+       Removes a reference to the colorbuffer. When the reference count drops
+       to zero the colorbuffer is automatically destroyed.
 
 void rcFlushWindowColorBuffer(uint32_t windowSurface, uint32_t colorBuffer);
-	   This flushes the current window color buffer
+       This flushes the current window color buffer
 
 void rcSetWindowColorBuffer(uint32_t windowSurface, uint32_t colorBuffer);
        This set the target color buffer for a windowSurface, when set the
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl.in b/tools/emulator/opengl/system/renderControl_enc/renderControl.in
index 18ce8a4..8281fd9 100644
--- a/tools/emulator/opengl/system/renderControl_enc/renderControl.in
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl.in
@@ -11,7 +11,8 @@
 GL_ENTRY(uint32_t, rcCreateWindowSurface, uint32_t config, uint32_t width, uint32_t height)
 GL_ENTRY(void, rcDestroyWindowSurface, uint32_t windowSurface)
 GL_ENTRY(uint32_t, rcCreateColorBuffer, uint32_t width, uint32_t height, GLenum internalFormat)
-GL_ENTRY(void, rcDestroyColorBuffer, uint32_t colorbuffer)
+GL_ENTRY(void, rcOpenColorBuffer, uint32_t colorbuffer)
+GL_ENTRY(void, rcCloseColorBuffer, uint32_t colorbuffer)
 GL_ENTRY(void, rcSetWindowColorBuffer, uint32_t windowSurface, uint32_t colorBuffer)
 GL_ENTRY(int, rcFlushWindowColorBuffer, uint32_t windowSurface)
 GL_ENTRY(EGLint, rcMakeCurrent, uint32_t context, uint32_t drawSurf, uint32_t readSurf)
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_client_context.cpp b/tools/emulator/opengl/system/renderControl_enc/renderControl_client_context.cpp
new file mode 100644
index 0000000..9488248
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_client_context.cpp
@@ -0,0 +1,42 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+
+#include <string.h>
+#include "renderControl_client_context.h"
+
+
+#include <stdio.h>
+
+int renderControl_client_context_t::initDispatchByName(void *(*getProc)(const char *, void *userData), void *userData)
+{
+	void *ptr;
+
+	ptr = getProc("rcGetRendererVersion", userData); set_rcGetRendererVersion((rcGetRendererVersion_client_proc_t)ptr);
+	ptr = getProc("rcGetEGLVersion", userData); set_rcGetEGLVersion((rcGetEGLVersion_client_proc_t)ptr);
+	ptr = getProc("rcQueryEGLString", userData); set_rcQueryEGLString((rcQueryEGLString_client_proc_t)ptr);
+	ptr = getProc("rcGetGLString", userData); set_rcGetGLString((rcGetGLString_client_proc_t)ptr);
+	ptr = getProc("rcGetNumConfigs", userData); set_rcGetNumConfigs((rcGetNumConfigs_client_proc_t)ptr);
+	ptr = getProc("rcGetConfigs", userData); set_rcGetConfigs((rcGetConfigs_client_proc_t)ptr);
+	ptr = getProc("rcChooseConfig", userData); set_rcChooseConfig((rcChooseConfig_client_proc_t)ptr);
+	ptr = getProc("rcGetFBParam", userData); set_rcGetFBParam((rcGetFBParam_client_proc_t)ptr);
+	ptr = getProc("rcCreateContext", userData); set_rcCreateContext((rcCreateContext_client_proc_t)ptr);
+	ptr = getProc("rcDestroyContext", userData); set_rcDestroyContext((rcDestroyContext_client_proc_t)ptr);
+	ptr = getProc("rcCreateWindowSurface", userData); set_rcCreateWindowSurface((rcCreateWindowSurface_client_proc_t)ptr);
+	ptr = getProc("rcDestroyWindowSurface", userData); set_rcDestroyWindowSurface((rcDestroyWindowSurface_client_proc_t)ptr);
+	ptr = getProc("rcCreateColorBuffer", userData); set_rcCreateColorBuffer((rcCreateColorBuffer_client_proc_t)ptr);
+	ptr = getProc("rcOpenColorBuffer", userData); set_rcOpenColorBuffer((rcOpenColorBuffer_client_proc_t)ptr);
+	ptr = getProc("rcCloseColorBuffer", userData); set_rcCloseColorBuffer((rcCloseColorBuffer_client_proc_t)ptr);
+	ptr = getProc("rcSetWindowColorBuffer", userData); set_rcSetWindowColorBuffer((rcSetWindowColorBuffer_client_proc_t)ptr);
+	ptr = getProc("rcFlushWindowColorBuffer", userData); set_rcFlushWindowColorBuffer((rcFlushWindowColorBuffer_client_proc_t)ptr);
+	ptr = getProc("rcMakeCurrent", userData); set_rcMakeCurrent((rcMakeCurrent_client_proc_t)ptr);
+	ptr = getProc("rcFBPost", userData); set_rcFBPost((rcFBPost_client_proc_t)ptr);
+	ptr = getProc("rcFBSetSwapInterval", userData); set_rcFBSetSwapInterval((rcFBSetSwapInterval_client_proc_t)ptr);
+	ptr = getProc("rcBindTexture", userData); set_rcBindTexture((rcBindTexture_client_proc_t)ptr);
+	ptr = getProc("rcBindRenderbuffer", userData); set_rcBindRenderbuffer((rcBindRenderbuffer_client_proc_t)ptr);
+	ptr = getProc("rcColorBufferCacheFlush", userData); set_rcColorBufferCacheFlush((rcColorBufferCacheFlush_client_proc_t)ptr);
+	ptr = getProc("rcReadColorBuffer", userData); set_rcReadColorBuffer((rcReadColorBuffer_client_proc_t)ptr);
+	ptr = getProc("rcUpdateColorBuffer", userData); set_rcUpdateColorBuffer((rcUpdateColorBuffer_client_proc_t)ptr);
+	return 0;
+}
+
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_client_context.h b/tools/emulator/opengl/system/renderControl_enc/renderControl_client_context.h
new file mode 100644
index 0000000..ed2b1fb
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_client_context.h
@@ -0,0 +1,71 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __renderControl_client_context_t_h
+#define __renderControl_client_context_t_h
+
+#include "renderControl_client_proc.h"
+
+
+struct renderControl_client_context_t {
+
+	rcGetRendererVersion_client_proc_t rcGetRendererVersion;
+	rcGetEGLVersion_client_proc_t rcGetEGLVersion;
+	rcQueryEGLString_client_proc_t rcQueryEGLString;
+	rcGetGLString_client_proc_t rcGetGLString;
+	rcGetNumConfigs_client_proc_t rcGetNumConfigs;
+	rcGetConfigs_client_proc_t rcGetConfigs;
+	rcChooseConfig_client_proc_t rcChooseConfig;
+	rcGetFBParam_client_proc_t rcGetFBParam;
+	rcCreateContext_client_proc_t rcCreateContext;
+	rcDestroyContext_client_proc_t rcDestroyContext;
+	rcCreateWindowSurface_client_proc_t rcCreateWindowSurface;
+	rcDestroyWindowSurface_client_proc_t rcDestroyWindowSurface;
+	rcCreateColorBuffer_client_proc_t rcCreateColorBuffer;
+	rcOpenColorBuffer_client_proc_t rcOpenColorBuffer;
+	rcCloseColorBuffer_client_proc_t rcCloseColorBuffer;
+	rcSetWindowColorBuffer_client_proc_t rcSetWindowColorBuffer;
+	rcFlushWindowColorBuffer_client_proc_t rcFlushWindowColorBuffer;
+	rcMakeCurrent_client_proc_t rcMakeCurrent;
+	rcFBPost_client_proc_t rcFBPost;
+	rcFBSetSwapInterval_client_proc_t rcFBSetSwapInterval;
+	rcBindTexture_client_proc_t rcBindTexture;
+	rcBindRenderbuffer_client_proc_t rcBindRenderbuffer;
+	rcColorBufferCacheFlush_client_proc_t rcColorBufferCacheFlush;
+	rcReadColorBuffer_client_proc_t rcReadColorBuffer;
+	rcUpdateColorBuffer_client_proc_t rcUpdateColorBuffer;
+	//Accessors 
+	virtual rcGetRendererVersion_client_proc_t set_rcGetRendererVersion(rcGetRendererVersion_client_proc_t f) { rcGetRendererVersion_client_proc_t retval = rcGetRendererVersion; rcGetRendererVersion = f; return retval;}
+	virtual rcGetEGLVersion_client_proc_t set_rcGetEGLVersion(rcGetEGLVersion_client_proc_t f) { rcGetEGLVersion_client_proc_t retval = rcGetEGLVersion; rcGetEGLVersion = f; return retval;}
+	virtual rcQueryEGLString_client_proc_t set_rcQueryEGLString(rcQueryEGLString_client_proc_t f) { rcQueryEGLString_client_proc_t retval = rcQueryEGLString; rcQueryEGLString = f; return retval;}
+	virtual rcGetGLString_client_proc_t set_rcGetGLString(rcGetGLString_client_proc_t f) { rcGetGLString_client_proc_t retval = rcGetGLString; rcGetGLString = f; return retval;}
+	virtual rcGetNumConfigs_client_proc_t set_rcGetNumConfigs(rcGetNumConfigs_client_proc_t f) { rcGetNumConfigs_client_proc_t retval = rcGetNumConfigs; rcGetNumConfigs = f; return retval;}
+	virtual rcGetConfigs_client_proc_t set_rcGetConfigs(rcGetConfigs_client_proc_t f) { rcGetConfigs_client_proc_t retval = rcGetConfigs; rcGetConfigs = f; return retval;}
+	virtual rcChooseConfig_client_proc_t set_rcChooseConfig(rcChooseConfig_client_proc_t f) { rcChooseConfig_client_proc_t retval = rcChooseConfig; rcChooseConfig = f; return retval;}
+	virtual rcGetFBParam_client_proc_t set_rcGetFBParam(rcGetFBParam_client_proc_t f) { rcGetFBParam_client_proc_t retval = rcGetFBParam; rcGetFBParam = f; return retval;}
+	virtual rcCreateContext_client_proc_t set_rcCreateContext(rcCreateContext_client_proc_t f) { rcCreateContext_client_proc_t retval = rcCreateContext; rcCreateContext = f; return retval;}
+	virtual rcDestroyContext_client_proc_t set_rcDestroyContext(rcDestroyContext_client_proc_t f) { rcDestroyContext_client_proc_t retval = rcDestroyContext; rcDestroyContext = f; return retval;}
+	virtual rcCreateWindowSurface_client_proc_t set_rcCreateWindowSurface(rcCreateWindowSurface_client_proc_t f) { rcCreateWindowSurface_client_proc_t retval = rcCreateWindowSurface; rcCreateWindowSurface = f; return retval;}
+	virtual rcDestroyWindowSurface_client_proc_t set_rcDestroyWindowSurface(rcDestroyWindowSurface_client_proc_t f) { rcDestroyWindowSurface_client_proc_t retval = rcDestroyWindowSurface; rcDestroyWindowSurface = f; return retval;}
+	virtual rcCreateColorBuffer_client_proc_t set_rcCreateColorBuffer(rcCreateColorBuffer_client_proc_t f) { rcCreateColorBuffer_client_proc_t retval = rcCreateColorBuffer; rcCreateColorBuffer = f; return retval;}
+	virtual rcOpenColorBuffer_client_proc_t set_rcOpenColorBuffer(rcOpenColorBuffer_client_proc_t f) { rcOpenColorBuffer_client_proc_t retval = rcOpenColorBuffer; rcOpenColorBuffer = f; return retval;}
+	virtual rcCloseColorBuffer_client_proc_t set_rcCloseColorBuffer(rcCloseColorBuffer_client_proc_t f) { rcCloseColorBuffer_client_proc_t retval = rcCloseColorBuffer; rcCloseColorBuffer = f; return retval;}
+	virtual rcSetWindowColorBuffer_client_proc_t set_rcSetWindowColorBuffer(rcSetWindowColorBuffer_client_proc_t f) { rcSetWindowColorBuffer_client_proc_t retval = rcSetWindowColorBuffer; rcSetWindowColorBuffer = f; return retval;}
+	virtual rcFlushWindowColorBuffer_client_proc_t set_rcFlushWindowColorBuffer(rcFlushWindowColorBuffer_client_proc_t f) { rcFlushWindowColorBuffer_client_proc_t retval = rcFlushWindowColorBuffer; rcFlushWindowColorBuffer = f; return retval;}
+	virtual rcMakeCurrent_client_proc_t set_rcMakeCurrent(rcMakeCurrent_client_proc_t f) { rcMakeCurrent_client_proc_t retval = rcMakeCurrent; rcMakeCurrent = f; return retval;}
+	virtual rcFBPost_client_proc_t set_rcFBPost(rcFBPost_client_proc_t f) { rcFBPost_client_proc_t retval = rcFBPost; rcFBPost = f; return retval;}
+	virtual rcFBSetSwapInterval_client_proc_t set_rcFBSetSwapInterval(rcFBSetSwapInterval_client_proc_t f) { rcFBSetSwapInterval_client_proc_t retval = rcFBSetSwapInterval; rcFBSetSwapInterval = f; return retval;}
+	virtual rcBindTexture_client_proc_t set_rcBindTexture(rcBindTexture_client_proc_t f) { rcBindTexture_client_proc_t retval = rcBindTexture; rcBindTexture = f; return retval;}
+	virtual rcBindRenderbuffer_client_proc_t set_rcBindRenderbuffer(rcBindRenderbuffer_client_proc_t f) { rcBindRenderbuffer_client_proc_t retval = rcBindRenderbuffer; rcBindRenderbuffer = f; return retval;}
+	virtual rcColorBufferCacheFlush_client_proc_t set_rcColorBufferCacheFlush(rcColorBufferCacheFlush_client_proc_t f) { rcColorBufferCacheFlush_client_proc_t retval = rcColorBufferCacheFlush; rcColorBufferCacheFlush = f; return retval;}
+	virtual rcReadColorBuffer_client_proc_t set_rcReadColorBuffer(rcReadColorBuffer_client_proc_t f) { rcReadColorBuffer_client_proc_t retval = rcReadColorBuffer; rcReadColorBuffer = f; return retval;}
+	virtual rcUpdateColorBuffer_client_proc_t set_rcUpdateColorBuffer(rcUpdateColorBuffer_client_proc_t f) { rcUpdateColorBuffer_client_proc_t retval = rcUpdateColorBuffer; rcUpdateColorBuffer = f; return retval;}
+	 virtual ~renderControl_client_context_t() {}
+
+	typedef renderControl_client_context_t *CONTEXT_ACCESSOR_TYPE(void);
+	static void setContextAccessor(CONTEXT_ACCESSOR_TYPE *f);
+	int initDispatchByName( void *(*getProc)(const char *name, void *userData), void *userData);
+	virtual void setError(unsigned int  error){};
+	virtual unsigned int getError(){ return 0; };
+};
+
+#endif
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_client_proc.h b/tools/emulator/opengl/system/renderControl_enc/renderControl_client_proc.h
new file mode 100644
index 0000000..3e00290
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_client_proc.h
@@ -0,0 +1,39 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __renderControl_client_proc_t_h
+#define __renderControl_client_proc_t_h
+
+
+
+#include "renderControl_types.h"
+#ifndef renderControl_APIENTRY
+#define renderControl_APIENTRY 
+#endif
+typedef GLint (renderControl_APIENTRY *rcGetRendererVersion_client_proc_t) (void * ctx);
+typedef EGLint (renderControl_APIENTRY *rcGetEGLVersion_client_proc_t) (void * ctx, EGLint*, EGLint*);
+typedef EGLint (renderControl_APIENTRY *rcQueryEGLString_client_proc_t) (void * ctx, EGLenum, void*, EGLint);
+typedef EGLint (renderControl_APIENTRY *rcGetGLString_client_proc_t) (void * ctx, EGLenum, void*, EGLint);
+typedef EGLint (renderControl_APIENTRY *rcGetNumConfigs_client_proc_t) (void * ctx, uint32_t*);
+typedef EGLint (renderControl_APIENTRY *rcGetConfigs_client_proc_t) (void * ctx, uint32_t, GLuint*);
+typedef EGLint (renderControl_APIENTRY *rcChooseConfig_client_proc_t) (void * ctx, EGLint*, uint32_t, uint32_t*, uint32_t);
+typedef EGLint (renderControl_APIENTRY *rcGetFBParam_client_proc_t) (void * ctx, EGLint);
+typedef uint32_t (renderControl_APIENTRY *rcCreateContext_client_proc_t) (void * ctx, uint32_t, uint32_t, uint32_t);
+typedef void (renderControl_APIENTRY *rcDestroyContext_client_proc_t) (void * ctx, uint32_t);
+typedef uint32_t (renderControl_APIENTRY *rcCreateWindowSurface_client_proc_t) (void * ctx, uint32_t, uint32_t, uint32_t);
+typedef void (renderControl_APIENTRY *rcDestroyWindowSurface_client_proc_t) (void * ctx, uint32_t);
+typedef uint32_t (renderControl_APIENTRY *rcCreateColorBuffer_client_proc_t) (void * ctx, uint32_t, uint32_t, GLenum);
+typedef void (renderControl_APIENTRY *rcOpenColorBuffer_client_proc_t) (void * ctx, uint32_t);
+typedef void (renderControl_APIENTRY *rcCloseColorBuffer_client_proc_t) (void * ctx, uint32_t);
+typedef void (renderControl_APIENTRY *rcSetWindowColorBuffer_client_proc_t) (void * ctx, uint32_t, uint32_t);
+typedef int (renderControl_APIENTRY *rcFlushWindowColorBuffer_client_proc_t) (void * ctx, uint32_t);
+typedef EGLint (renderControl_APIENTRY *rcMakeCurrent_client_proc_t) (void * ctx, uint32_t, uint32_t, uint32_t);
+typedef void (renderControl_APIENTRY *rcFBPost_client_proc_t) (void * ctx, uint32_t);
+typedef void (renderControl_APIENTRY *rcFBSetSwapInterval_client_proc_t) (void * ctx, EGLint);
+typedef void (renderControl_APIENTRY *rcBindTexture_client_proc_t) (void * ctx, uint32_t);
+typedef void (renderControl_APIENTRY *rcBindRenderbuffer_client_proc_t) (void * ctx, uint32_t);
+typedef EGLint (renderControl_APIENTRY *rcColorBufferCacheFlush_client_proc_t) (void * ctx, uint32_t, EGLint, int);
+typedef void (renderControl_APIENTRY *rcReadColorBuffer_client_proc_t) (void * ctx, uint32_t, GLint, GLint, GLint, GLint, GLenum, GLenum, void*);
+typedef int (renderControl_APIENTRY *rcUpdateColorBuffer_client_proc_t) (void * ctx, uint32_t, GLint, GLint, GLint, GLint, GLenum, GLenum, void*);
+
+
+#endif
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_enc.cpp b/tools/emulator/opengl/system/renderControl_enc/renderControl_enc.cpp
new file mode 100644
index 0000000..94e256a
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_enc.cpp
@@ -0,0 +1,536 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+
+#include <string.h>
+#include "renderControl_opcodes.h"
+
+#include "renderControl_enc.h"
+
+
+#include <stdio.h>
+static void enc_unsupported()
+{
+	ALOGE("Function is unsupported\n");
+}
+
+GLint rcGetRendererVersion_enc(void *self )
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcGetRendererVersion;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+
+	GLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_major =  sizeof(EGLint);
+	const unsigned int __size_minor =  sizeof(EGLint);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_major + __size_minor + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcGetEGLVersion;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_major; ptr += 4;
+	*(unsigned int *)(ptr) = __size_minor; ptr += 4;
+	stream->readback(major, __size_major);
+	stream->readback(minor, __size_minor);
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferSize)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffer =  bufferSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffer + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcQueryEGLString;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &name, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffer; ptr += 4;
+		memcpy(ptr, &bufferSize, 4); ptr += 4;
+	stream->readback(buffer, __size_buffer);
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferSize)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffer =  bufferSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffer + 4 + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcGetGLString;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &name, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffer; ptr += 4;
+		memcpy(ptr, &bufferSize, 4); ptr += 4;
+	stream->readback(buffer, __size_buffer);
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_numAttribs =  sizeof(uint32_t);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_numAttribs + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcGetNumConfigs;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_numAttribs; ptr += 4;
+	stream->readback(numAttribs, __size_numAttribs);
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_buffer =  bufSize;
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + __size_buffer + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcGetConfigs;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &bufSize, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_buffer; ptr += 4;
+	stream->readback(buffer, __size_buffer);
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, uint32_t* configs, uint32_t configs_size)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_attribs =  attribs_size;
+	const unsigned int __size_configs = ((configs != NULL) ?  configs_size*sizeof(uint32_t) : 0);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + __size_attribs + 4 + __size_configs + 4 + 2*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcChooseConfig;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+	*(unsigned int *)(ptr) = __size_attribs; ptr += 4;
+	memcpy(ptr, attribs, __size_attribs);ptr += __size_attribs;
+		memcpy(ptr, &attribs_size, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_configs; ptr += 4;
+		memcpy(ptr, &configs_size, 4); ptr += 4;
+	if (configs != NULL) stream->readback(configs, __size_configs);
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcGetFBParam_enc(void *self , EGLint param)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcGetFBParam;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &param, 4); ptr += 4;
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+uint32_t rcCreateContext_enc(void *self , uint32_t config, uint32_t share, uint32_t glVersion)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcCreateContext;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &config, 4); ptr += 4;
+		memcpy(ptr, &share, 4); ptr += 4;
+		memcpy(ptr, &glVersion, 4); ptr += 4;
+
+	uint32_t retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void rcDestroyContext_enc(void *self , uint32_t context)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcDestroyContext;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &context, 4); ptr += 4;
+}
+
+uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width, uint32_t height)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcCreateWindowSurface;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &config, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+
+	uint32_t retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void rcDestroyWindowSurface_enc(void *self , uint32_t windowSurface)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcDestroyWindowSurface;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &windowSurface, 4); ptr += 4;
+}
+
+uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, GLenum internalFormat)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcCreateColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &internalFormat, 4); ptr += 4;
+
+	uint32_t retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void rcOpenColorBuffer_enc(void *self , uint32_t colorbuffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcOpenColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorbuffer, 4); ptr += 4;
+}
+
+void rcCloseColorBuffer_enc(void *self , uint32_t colorbuffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcCloseColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorbuffer, 4); ptr += 4;
+}
+
+void rcSetWindowColorBuffer_enc(void *self , uint32_t windowSurface, uint32_t colorBuffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcSetWindowColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &windowSurface, 4); ptr += 4;
+		memcpy(ptr, &colorBuffer, 4); ptr += 4;
+}
+
+int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcFlushWindowColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &windowSurface, 4); ptr += 4;
+
+	int retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+EGLint rcMakeCurrent_enc(void *self , uint32_t context, uint32_t drawSurf, uint32_t readSurf)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcMakeCurrent;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &context, 4); ptr += 4;
+		memcpy(ptr, &drawSurf, 4); ptr += 4;
+		memcpy(ptr, &readSurf, 4); ptr += 4;
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void rcFBPost_enc(void *self , uint32_t colorBuffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcFBPost;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorBuffer, 4); ptr += 4;
+}
+
+void rcFBSetSwapInterval_enc(void *self , EGLint interval)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcFBSetSwapInterval;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &interval, 4); ptr += 4;
+}
+
+void rcBindTexture_enc(void *self , uint32_t colorBuffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcBindTexture;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorBuffer, 4); ptr += 4;
+}
+
+void rcBindRenderbuffer_enc(void *self , uint32_t colorBuffer)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcBindRenderbuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorBuffer, 4); ptr += 4;
+}
+
+EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint postCount, int forRead)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcColorBufferCacheFlush;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorbuffer, 4); ptr += 4;
+		memcpy(ptr, &postCount, 4); ptr += 4;
+		memcpy(ptr, &forRead, 4); ptr += 4;
+
+	EGLint retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  (((glUtilsPixelBitSize(format, type) * width) >> 3) * height);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(packetSize);
+	int tmp = OP_rcReadColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorbuffer, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	*(unsigned int *)(ptr) = __size_pixels; ptr += 4;
+	stream->readback(pixels, __size_pixels);
+}
+
+int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels)
+{
+
+	renderControl_encoder_context_t *ctx = (renderControl_encoder_context_t *)self;
+	IOStream *stream = ctx->m_stream;
+
+	const unsigned int __size_pixels =  (((glUtilsPixelBitSize(format, type) * width) >> 3) * height);
+	 unsigned char *ptr;
+	 const size_t packetSize = 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + __size_pixels + 1*4;
+	ptr = stream->alloc(8 + 4 + 4 + 4 + 4 + 4 + 4 + 4);
+	int tmp = OP_rcUpdateColorBuffer;memcpy(ptr, &tmp, 4); ptr += 4;
+	memcpy(ptr, &packetSize, 4);  ptr += 4;
+
+		memcpy(ptr, &colorbuffer, 4); ptr += 4;
+		memcpy(ptr, &x, 4); ptr += 4;
+		memcpy(ptr, &y, 4); ptr += 4;
+		memcpy(ptr, &width, 4); ptr += 4;
+		memcpy(ptr, &height, 4); ptr += 4;
+		memcpy(ptr, &format, 4); ptr += 4;
+		memcpy(ptr, &type, 4); ptr += 4;
+	stream->flush();
+	stream->writeFully(&__size_pixels,4);
+	stream->writeFully(pixels, __size_pixels);
+
+	int retval;
+	stream->readback(&retval, 4);
+	return retval;
+}
+
+renderControl_encoder_context_t::renderControl_encoder_context_t(IOStream *stream)
+{
+	m_stream = stream;
+
+	set_rcGetRendererVersion(rcGetRendererVersion_enc);
+	set_rcGetEGLVersion(rcGetEGLVersion_enc);
+	set_rcQueryEGLString(rcQueryEGLString_enc);
+	set_rcGetGLString(rcGetGLString_enc);
+	set_rcGetNumConfigs(rcGetNumConfigs_enc);
+	set_rcGetConfigs(rcGetConfigs_enc);
+	set_rcChooseConfig(rcChooseConfig_enc);
+	set_rcGetFBParam(rcGetFBParam_enc);
+	set_rcCreateContext(rcCreateContext_enc);
+	set_rcDestroyContext(rcDestroyContext_enc);
+	set_rcCreateWindowSurface(rcCreateWindowSurface_enc);
+	set_rcDestroyWindowSurface(rcDestroyWindowSurface_enc);
+	set_rcCreateColorBuffer(rcCreateColorBuffer_enc);
+	set_rcOpenColorBuffer(rcOpenColorBuffer_enc);
+	set_rcCloseColorBuffer(rcCloseColorBuffer_enc);
+	set_rcSetWindowColorBuffer(rcSetWindowColorBuffer_enc);
+	set_rcFlushWindowColorBuffer(rcFlushWindowColorBuffer_enc);
+	set_rcMakeCurrent(rcMakeCurrent_enc);
+	set_rcFBPost(rcFBPost_enc);
+	set_rcFBSetSwapInterval(rcFBSetSwapInterval_enc);
+	set_rcBindTexture(rcBindTexture_enc);
+	set_rcBindRenderbuffer(rcBindRenderbuffer_enc);
+	set_rcColorBufferCacheFlush(rcColorBufferCacheFlush_enc);
+	set_rcReadColorBuffer(rcReadColorBuffer_enc);
+	set_rcUpdateColorBuffer(rcUpdateColorBuffer_enc);
+}
+
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_enc.h b/tools/emulator/opengl/system/renderControl_enc/renderControl_enc.h
new file mode 100644
index 0000000..712eeb9
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_enc.h
@@ -0,0 +1,51 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+
+#ifndef GUARD_renderControl_encoder_context_t
+#define GUARD_renderControl_encoder_context_t
+
+#include "IOStream.h"
+#include "renderControl_client_context.h"
+
+
+#include <stdint.h>
+#include <EGL/egl.h>
+#include "glUtils.h"
+
+struct renderControl_encoder_context_t : public renderControl_client_context_t {
+
+	IOStream *m_stream;
+
+	renderControl_encoder_context_t(IOStream *stream);
+
+
+};
+
+extern "C" {
+	GLint rcGetRendererVersion_enc(void *self );
+	EGLint rcGetEGLVersion_enc(void *self , EGLint* major, EGLint* minor);
+	EGLint rcQueryEGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferSize);
+	EGLint rcGetGLString_enc(void *self , EGLenum name, void* buffer, EGLint bufferSize);
+	EGLint rcGetNumConfigs_enc(void *self , uint32_t* numAttribs);
+	EGLint rcGetConfigs_enc(void *self , uint32_t bufSize, GLuint* buffer);
+	EGLint rcChooseConfig_enc(void *self , EGLint* attribs, uint32_t attribs_size, uint32_t* configs, uint32_t configs_size);
+	EGLint rcGetFBParam_enc(void *self , EGLint param);
+	uint32_t rcCreateContext_enc(void *self , uint32_t config, uint32_t share, uint32_t glVersion);
+	void rcDestroyContext_enc(void *self , uint32_t context);
+	uint32_t rcCreateWindowSurface_enc(void *self , uint32_t config, uint32_t width, uint32_t height);
+	void rcDestroyWindowSurface_enc(void *self , uint32_t windowSurface);
+	uint32_t rcCreateColorBuffer_enc(void *self , uint32_t width, uint32_t height, GLenum internalFormat);
+	void rcOpenColorBuffer_enc(void *self , uint32_t colorbuffer);
+	void rcCloseColorBuffer_enc(void *self , uint32_t colorbuffer);
+	void rcSetWindowColorBuffer_enc(void *self , uint32_t windowSurface, uint32_t colorBuffer);
+	int rcFlushWindowColorBuffer_enc(void *self , uint32_t windowSurface);
+	EGLint rcMakeCurrent_enc(void *self , uint32_t context, uint32_t drawSurf, uint32_t readSurf);
+	void rcFBPost_enc(void *self , uint32_t colorBuffer);
+	void rcFBSetSwapInterval_enc(void *self , EGLint interval);
+	void rcBindTexture_enc(void *self , uint32_t colorBuffer);
+	void rcBindRenderbuffer_enc(void *self , uint32_t colorBuffer);
+	EGLint rcColorBufferCacheFlush_enc(void *self , uint32_t colorbuffer, EGLint postCount, int forRead);
+	void rcReadColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels);
+	int rcUpdateColorBuffer_enc(void *self , uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels);
+};
+#endif
\ No newline at end of file
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_entry.cpp b/tools/emulator/opengl/system/renderControl_enc/renderControl_entry.cpp
new file mode 100644
index 0000000..9a0bba9
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_entry.cpp
@@ -0,0 +1,192 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#include <stdio.h>
+#include <stdlib.h>
+#include "renderControl_client_context.h"
+
+#ifndef GL_TRUE
+extern "C" {
+	GLint rcGetRendererVersion();
+	EGLint rcGetEGLVersion(EGLint* major, EGLint* minor);
+	EGLint rcQueryEGLString(EGLenum name, void* buffer, EGLint bufferSize);
+	EGLint rcGetGLString(EGLenum name, void* buffer, EGLint bufferSize);
+	EGLint rcGetNumConfigs(uint32_t* numAttribs);
+	EGLint rcGetConfigs(uint32_t bufSize, GLuint* buffer);
+	EGLint rcChooseConfig(EGLint* attribs, uint32_t attribs_size, uint32_t* configs, uint32_t configs_size);
+	EGLint rcGetFBParam(EGLint param);
+	uint32_t rcCreateContext(uint32_t config, uint32_t share, uint32_t glVersion);
+	void rcDestroyContext(uint32_t context);
+	uint32_t rcCreateWindowSurface(uint32_t config, uint32_t width, uint32_t height);
+	void rcDestroyWindowSurface(uint32_t windowSurface);
+	uint32_t rcCreateColorBuffer(uint32_t width, uint32_t height, GLenum internalFormat);
+	void rcOpenColorBuffer(uint32_t colorbuffer);
+	void rcCloseColorBuffer(uint32_t colorbuffer);
+	void rcSetWindowColorBuffer(uint32_t windowSurface, uint32_t colorBuffer);
+	int rcFlushWindowColorBuffer(uint32_t windowSurface);
+	EGLint rcMakeCurrent(uint32_t context, uint32_t drawSurf, uint32_t readSurf);
+	void rcFBPost(uint32_t colorBuffer);
+	void rcFBSetSwapInterval(EGLint interval);
+	void rcBindTexture(uint32_t colorBuffer);
+	void rcBindRenderbuffer(uint32_t colorBuffer);
+	EGLint rcColorBufferCacheFlush(uint32_t colorbuffer, EGLint postCount, int forRead);
+	void rcReadColorBuffer(uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels);
+	int rcUpdateColorBuffer(uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels);
+};
+
+#endif
+#ifndef GET_CONTEXT
+static renderControl_client_context_t::CONTEXT_ACCESSOR_TYPE *getCurrentContext = NULL;
+void renderControl_client_context_t::setContextAccessor(CONTEXT_ACCESSOR_TYPE *f) { getCurrentContext = f; }
+#define GET_CONTEXT renderControl_client_context_t * ctx = getCurrentContext() 
+#endif
+
+GLint rcGetRendererVersion()
+{
+	GET_CONTEXT; 
+	 return ctx->rcGetRendererVersion(ctx);
+}
+
+EGLint rcGetEGLVersion(EGLint* major, EGLint* minor)
+{
+	GET_CONTEXT; 
+	 return ctx->rcGetEGLVersion(ctx, major, minor);
+}
+
+EGLint rcQueryEGLString(EGLenum name, void* buffer, EGLint bufferSize)
+{
+	GET_CONTEXT; 
+	 return ctx->rcQueryEGLString(ctx, name, buffer, bufferSize);
+}
+
+EGLint rcGetGLString(EGLenum name, void* buffer, EGLint bufferSize)
+{
+	GET_CONTEXT; 
+	 return ctx->rcGetGLString(ctx, name, buffer, bufferSize);
+}
+
+EGLint rcGetNumConfigs(uint32_t* numAttribs)
+{
+	GET_CONTEXT; 
+	 return ctx->rcGetNumConfigs(ctx, numAttribs);
+}
+
+EGLint rcGetConfigs(uint32_t bufSize, GLuint* buffer)
+{
+	GET_CONTEXT; 
+	 return ctx->rcGetConfigs(ctx, bufSize, buffer);
+}
+
+EGLint rcChooseConfig(EGLint* attribs, uint32_t attribs_size, uint32_t* configs, uint32_t configs_size)
+{
+	GET_CONTEXT; 
+	 return ctx->rcChooseConfig(ctx, attribs, attribs_size, configs, configs_size);
+}
+
+EGLint rcGetFBParam(EGLint param)
+{
+	GET_CONTEXT; 
+	 return ctx->rcGetFBParam(ctx, param);
+}
+
+uint32_t rcCreateContext(uint32_t config, uint32_t share, uint32_t glVersion)
+{
+	GET_CONTEXT; 
+	 return ctx->rcCreateContext(ctx, config, share, glVersion);
+}
+
+void rcDestroyContext(uint32_t context)
+{
+	GET_CONTEXT; 
+	 ctx->rcDestroyContext(ctx, context);
+}
+
+uint32_t rcCreateWindowSurface(uint32_t config, uint32_t width, uint32_t height)
+{
+	GET_CONTEXT; 
+	 return ctx->rcCreateWindowSurface(ctx, config, width, height);
+}
+
+void rcDestroyWindowSurface(uint32_t windowSurface)
+{
+	GET_CONTEXT; 
+	 ctx->rcDestroyWindowSurface(ctx, windowSurface);
+}
+
+uint32_t rcCreateColorBuffer(uint32_t width, uint32_t height, GLenum internalFormat)
+{
+	GET_CONTEXT; 
+	 return ctx->rcCreateColorBuffer(ctx, width, height, internalFormat);
+}
+
+void rcOpenColorBuffer(uint32_t colorbuffer)
+{
+	GET_CONTEXT; 
+	 ctx->rcOpenColorBuffer(ctx, colorbuffer);
+}
+
+void rcCloseColorBuffer(uint32_t colorbuffer)
+{
+	GET_CONTEXT; 
+	 ctx->rcCloseColorBuffer(ctx, colorbuffer);
+}
+
+void rcSetWindowColorBuffer(uint32_t windowSurface, uint32_t colorBuffer)
+{
+	GET_CONTEXT; 
+	 ctx->rcSetWindowColorBuffer(ctx, windowSurface, colorBuffer);
+}
+
+int rcFlushWindowColorBuffer(uint32_t windowSurface)
+{
+	GET_CONTEXT; 
+	 return ctx->rcFlushWindowColorBuffer(ctx, windowSurface);
+}
+
+EGLint rcMakeCurrent(uint32_t context, uint32_t drawSurf, uint32_t readSurf)
+{
+	GET_CONTEXT; 
+	 return ctx->rcMakeCurrent(ctx, context, drawSurf, readSurf);
+}
+
+void rcFBPost(uint32_t colorBuffer)
+{
+	GET_CONTEXT; 
+	 ctx->rcFBPost(ctx, colorBuffer);
+}
+
+void rcFBSetSwapInterval(EGLint interval)
+{
+	GET_CONTEXT; 
+	 ctx->rcFBSetSwapInterval(ctx, interval);
+}
+
+void rcBindTexture(uint32_t colorBuffer)
+{
+	GET_CONTEXT; 
+	 ctx->rcBindTexture(ctx, colorBuffer);
+}
+
+void rcBindRenderbuffer(uint32_t colorBuffer)
+{
+	GET_CONTEXT; 
+	 ctx->rcBindRenderbuffer(ctx, colorBuffer);
+}
+
+EGLint rcColorBufferCacheFlush(uint32_t colorbuffer, EGLint postCount, int forRead)
+{
+	GET_CONTEXT; 
+	 return ctx->rcColorBufferCacheFlush(ctx, colorbuffer, postCount, forRead);
+}
+
+void rcReadColorBuffer(uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels)
+{
+	GET_CONTEXT; 
+	 ctx->rcReadColorBuffer(ctx, colorbuffer, x, y, width, height, format, type, pixels);
+}
+
+int rcUpdateColorBuffer(uint32_t colorbuffer, GLint x, GLint y, GLint width, GLint height, GLenum format, GLenum type, void* pixels)
+{
+	GET_CONTEXT; 
+	 return ctx->rcUpdateColorBuffer(ctx, colorbuffer, x, y, width, height, format, type, pixels);
+}
+
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_ftable.h b/tools/emulator/opengl/system/renderControl_enc/renderControl_ftable.h
new file mode 100644
index 0000000..1e9e2f9
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_ftable.h
@@ -0,0 +1,40 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __renderControl_client_ftable_t_h
+#define __renderControl_client_ftable_t_h
+
+
+static struct _renderControl_funcs_by_name {
+	const char *name;
+	void *proc;
+} renderControl_funcs_by_name[] = {
+	{"rcGetRendererVersion", (void*)rcGetRendererVersion},
+	{"rcGetEGLVersion", (void*)rcGetEGLVersion},
+	{"rcQueryEGLString", (void*)rcQueryEGLString},
+	{"rcGetGLString", (void*)rcGetGLString},
+	{"rcGetNumConfigs", (void*)rcGetNumConfigs},
+	{"rcGetConfigs", (void*)rcGetConfigs},
+	{"rcChooseConfig", (void*)rcChooseConfig},
+	{"rcGetFBParam", (void*)rcGetFBParam},
+	{"rcCreateContext", (void*)rcCreateContext},
+	{"rcDestroyContext", (void*)rcDestroyContext},
+	{"rcCreateWindowSurface", (void*)rcCreateWindowSurface},
+	{"rcDestroyWindowSurface", (void*)rcDestroyWindowSurface},
+	{"rcCreateColorBuffer", (void*)rcCreateColorBuffer},
+	{"rcOpenColorBuffer", (void*)rcOpenColorBuffer},
+	{"rcCloseColorBuffer", (void*)rcCloseColorBuffer},
+	{"rcSetWindowColorBuffer", (void*)rcSetWindowColorBuffer},
+	{"rcFlushWindowColorBuffer", (void*)rcFlushWindowColorBuffer},
+	{"rcMakeCurrent", (void*)rcMakeCurrent},
+	{"rcFBPost", (void*)rcFBPost},
+	{"rcFBSetSwapInterval", (void*)rcFBSetSwapInterval},
+	{"rcBindTexture", (void*)rcBindTexture},
+	{"rcBindRenderbuffer", (void*)rcBindRenderbuffer},
+	{"rcColorBufferCacheFlush", (void*)rcColorBufferCacheFlush},
+	{"rcReadColorBuffer", (void*)rcReadColorBuffer},
+	{"rcUpdateColorBuffer", (void*)rcUpdateColorBuffer},
+};
+static int renderControl_num_funcs = sizeof(renderControl_funcs_by_name) / sizeof(struct _renderControl_funcs_by_name);
+
+
+#endif
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_opcodes.h b/tools/emulator/opengl/system/renderControl_enc/renderControl_opcodes.h
new file mode 100644
index 0000000..b44f5d0
--- /dev/null
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_opcodes.h
@@ -0,0 +1,34 @@
+// Generated Code - DO NOT EDIT !!
+// generated by 'emugen'
+#ifndef __GUARD_renderControl_opcodes_h_
+#define __GUARD_renderControl_opcodes_h_
+
+#define OP_rcGetRendererVersion 					10000
+#define OP_rcGetEGLVersion 					10001
+#define OP_rcQueryEGLString 					10002
+#define OP_rcGetGLString 					10003
+#define OP_rcGetNumConfigs 					10004
+#define OP_rcGetConfigs 					10005
+#define OP_rcChooseConfig 					10006
+#define OP_rcGetFBParam 					10007
+#define OP_rcCreateContext 					10008
+#define OP_rcDestroyContext 					10009
+#define OP_rcCreateWindowSurface 					10010
+#define OP_rcDestroyWindowSurface 					10011
+#define OP_rcCreateColorBuffer 					10012
+#define OP_rcOpenColorBuffer 					10013
+#define OP_rcCloseColorBuffer 					10014
+#define OP_rcSetWindowColorBuffer 					10015
+#define OP_rcFlushWindowColorBuffer 					10016
+#define OP_rcMakeCurrent 					10017
+#define OP_rcFBPost 					10018
+#define OP_rcFBSetSwapInterval 					10019
+#define OP_rcBindTexture 					10020
+#define OP_rcBindRenderbuffer 					10021
+#define OP_rcColorBufferCacheFlush 					10022
+#define OP_rcReadColorBuffer 					10023
+#define OP_rcUpdateColorBuffer 					10024
+#define OP_last 					10025
+
+
+#endif
diff --git a/tools/emulator/opengl/system/renderControl_enc/renderControl_types.h b/tools/emulator/opengl/system/renderControl_enc/renderControl_types.h
index cb8e416..da215bb 100644
--- a/tools/emulator/opengl/system/renderControl_enc/renderControl_types.h
+++ b/tools/emulator/opengl/system/renderControl_enc/renderControl_types.h
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include <stdint.h>
 #include <EGL/egl.h>
 #include "glUtils.h"
diff --git a/tools/emulator/opengl/tests/EGL_host_wrapper/Android.mk b/tools/emulator/opengl/tests/EGL_host_wrapper/Android.mk
deleted file mode 100644
index 19d8794..0000000
--- a/tools/emulator/opengl/tests/EGL_host_wrapper/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-ifeq ($(HOST_OS),linux)
-
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-host-static-library,libEGL_host_wrapper)
-
-LOCAL_SRC_FILES :=  \
-        egl.cpp \
-        egl_dispatch.cpp
-
-$(call emugl-export,LDLIBS,-ldl -pthread)
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-$(call emugl-end-module)
-
-endif # HOST_OS == linux
diff --git a/tools/emulator/opengl/tests/EGL_host_wrapper/egl.cpp b/tools/emulator/opengl/tests/EGL_host_wrapper/egl.cpp
deleted file mode 100644
index 6fa27ac..0000000
--- a/tools/emulator/opengl/tests/EGL_host_wrapper/egl.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "egl_dispatch.h"
-#include "egl_ftable.h"
-#include <pthread.h>
-
-#define EGL_LIB "ANDROID_EGL_LIB"
-
-static struct egl_dispatch *s_dispatch = NULL;
-static pthread_once_t eglDispatchInitialized = PTHREAD_ONCE_INIT;
-
-void initEglDispatch()
-{
-    //
-    // Load back-end EGL implementation library
-    //
-    char *eglLib = (char *) "libEGL.so";
-    if (getenv(EGL_LIB) != NULL) {
-        eglLib = getenv(EGL_LIB);
-    }
-
-    s_dispatch = loadEGL(eglLib);
-    if (!s_dispatch) {
-        fprintf(stderr,"FATAL ERROR: Could not load EGL lib [%s]\n", eglLib);
-        exit(-1);
-    }
-}
-
-static struct egl_dispatch *getDispatch()
-{
-    pthread_once(&eglDispatchInitialized, initEglDispatch);
-    return s_dispatch;
-}
-
-__eglMustCastToProperFunctionPointerType eglGetProcAddress(const char *procname)
-{
-     for (int i=0; i<egl_num_funcs; i++) {
-         if (!strcmp(egl_funcs_by_name[i].name, procname)) {
-             return (__eglMustCastToProperFunctionPointerType)egl_funcs_by_name[i].proc;
-         }
-     }
-
-     return getDispatch()->eglGetProcAddress(procname);
-}
-
-////////////////  Path through functions //////////
-
-EGLint eglGetError()
-{
-     return getDispatch()->eglGetError();
-}
-
-EGLDisplay eglGetDisplay(EGLNativeDisplayType display_id)
-{
-    return getDispatch()->eglGetDisplay(display_id);
-}
-
-EGLBoolean eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
-{
-     return getDispatch()->eglInitialize(dpy, major, minor);
-}
-
-EGLBoolean eglTerminate(EGLDisplay dpy)
-{
-     return getDispatch()->eglTerminate(dpy);
-}
-
-const char* eglQueryString(EGLDisplay dpy, EGLint name)
-{
-     return getDispatch()->eglQueryString(dpy, name);
-}
-
-EGLBoolean eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, EGLint config_size, EGLint *num_config)
-{
-     return getDispatch()->eglGetConfigs(dpy, configs, config_size, num_config);
-}
-
-EGLBoolean eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, EGLConfig *configs, EGLint config_size, EGLint *num_config)
-{
-     return getDispatch()->eglChooseConfig(dpy, attrib_list, configs, config_size, num_config);
-}
-
-EGLBoolean eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint *value)
-{
-     return getDispatch()->eglGetConfigAttrib(dpy, config, attribute, value);
-}
-
-EGLSurface eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreateWindowSurface(dpy, config, win, attrib_list);
-}
-
-EGLSurface eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreatePbufferSurface(dpy, config, attrib_list);
-}
-
-EGLSurface eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreatePixmapSurface(dpy, config, pixmap, attrib_list);
-}
-
-EGLBoolean eglDestroySurface(EGLDisplay dpy, EGLSurface surface)
-{
-     return getDispatch()->eglDestroySurface(dpy, surface);
-}
-
-EGLBoolean eglQuerySurface(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint *value)
-{
-     return getDispatch()->eglQuerySurface(dpy, surface, attribute, value);
-}
-
-EGLBoolean eglBindAPI(EGLenum api)
-{
-     return getDispatch()->eglBindAPI(api);
-}
-
-EGLenum eglQueryAPI()
-{
-     return getDispatch()->eglQueryAPI();
-}
-
-EGLBoolean eglWaitClient()
-{
-     return getDispatch()->eglWaitClient();
-}
-
-EGLBoolean eglReleaseThread()
-{
-     return getDispatch()->eglReleaseThread();
-}
-
-EGLSurface eglCreatePbufferFromClientBuffer(EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, EGLConfig config, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreatePbufferFromClientBuffer(dpy, buftype, buffer, config, attrib_list);
-}
-
-EGLBoolean eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, EGLint attribute, EGLint value)
-{
-     return getDispatch()->eglSurfaceAttrib(dpy, surface, attribute, value);
-}
-
-EGLBoolean eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
-{
-     return getDispatch()->eglBindTexImage(dpy, surface, buffer);
-}
-
-EGLBoolean eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer)
-{
-     return getDispatch()->eglReleaseTexImage(dpy, surface, buffer);
-}
-
-EGLBoolean eglSwapInterval(EGLDisplay dpy, EGLint interval)
-{
-     return getDispatch()->eglSwapInterval(dpy, interval);
-}
-
-EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_context, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreateContext(dpy, config, share_context, attrib_list);
-}
-
-EGLBoolean eglDestroyContext(EGLDisplay dpy, EGLContext ctx)
-{
-     return getDispatch()->eglDestroyContext(dpy, ctx);
-}
-
-EGLBoolean eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx)
-{
-     return getDispatch()->eglMakeCurrent(dpy, draw, read, ctx);
-}
-
-EGLContext eglGetCurrentContext()
-{
-     return getDispatch()->eglGetCurrentContext();
-}
-
-EGLSurface eglGetCurrentSurface(EGLint readdraw)
-{
-     return getDispatch()->eglGetCurrentSurface(readdraw);
-}
-
-EGLDisplay eglGetCurrentDisplay()
-{
-     return getDispatch()->eglGetCurrentDisplay();
-}
-
-EGLBoolean eglQueryContext(EGLDisplay dpy, EGLContext ctx, EGLint attribute, EGLint *value)
-{
-     return getDispatch()->eglQueryContext(dpy, ctx, attribute, value);
-}
-
-EGLBoolean eglWaitGL()
-{
-     return getDispatch()->eglWaitGL();
-}
-
-EGLBoolean eglWaitNative(EGLint engine)
-{
-     return getDispatch()->eglWaitNative(engine);
-}
-
-EGLBoolean eglSwapBuffers(EGLDisplay dpy, EGLSurface surface)
-{
-     return getDispatch()->eglSwapBuffers(dpy, surface);
-}
-
-EGLBoolean eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target)
-{
-     return getDispatch()->eglCopyBuffers(dpy, surface, target);
-}
-
-EGLBoolean eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list)
-{
-     return getDispatch()->eglLockSurfaceKHR(display, surface, attrib_list);
-}
-
-EGLBoolean eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface)
-{
-     return getDispatch()->eglUnlockSurfaceKHR(display, surface);
-}
-
-EGLImageKHR eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreateImageKHR(dpy, ctx, target, buffer, attrib_list);
-}
-
-EGLBoolean eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
-{
-     return getDispatch()->eglDestroyImageKHR(dpy, image);
-}
-
-EGLSyncKHR eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list)
-{
-     return getDispatch()->eglCreateSyncKHR(dpy, type, attrib_list);
-}
-
-EGLBoolean eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync)
-{
-     return getDispatch()->eglDestroySyncKHR(dpy, sync);
-}
-
-EGLint eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout)
-{
-     return getDispatch()->eglClientWaitSyncKHR(dpy, sync, flags, timeout);
-}
-
-EGLBoolean eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode)
-{
-     return getDispatch()->eglSignalSyncKHR(dpy, sync, mode);
-}
-
-EGLBoolean eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value)
-{
-     return getDispatch()->eglGetSyncAttribKHR(dpy, sync, attribute, value);
-}
-
-EGLBoolean eglSetSwapRectangleANDROID(EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height)
-{
-     return getDispatch()->eglSetSwapRectangleANDROID(dpy, draw, left, top, width, height);
-}
diff --git a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_dispatch.cpp b/tools/emulator/opengl/tests/EGL_host_wrapper/egl_dispatch.cpp
deleted file mode 100644
index a9b8214..0000000
--- a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_dispatch.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <stdio.h>
-#include <dlfcn.h>
-#include "egl_dispatch.h"
-
-
-egl_dispatch *loadEGL(const char *p_eglPath)
-{
-    void *libEGL = dlopen(p_eglPath, RTLD_NOW);
-    if (!libEGL) {
-        return NULL;
-    }
-
-    egl_dispatch *disp = new egl_dispatch;
-
-    void *ptr;
-    ptr = dlsym(libEGL,"eglGetError"); disp->set_eglGetError((eglGetError_t)ptr);
-    ptr = dlsym(libEGL,"eglGetDisplay"); disp->set_eglGetDisplay((eglGetDisplay_t)ptr);
-    ptr = dlsym(libEGL,"eglInitialize"); disp->set_eglInitialize((eglInitialize_t)ptr);
-    ptr = dlsym(libEGL,"eglTerminate"); disp->set_eglTerminate((eglTerminate_t)ptr);
-    ptr = dlsym(libEGL,"eglQueryString"); disp->set_eglQueryString((eglQueryString_t)ptr);
-    ptr = dlsym(libEGL,"eglGetConfigs"); disp->set_eglGetConfigs((eglGetConfigs_t)ptr);
-    ptr = dlsym(libEGL,"eglChooseConfig"); disp->set_eglChooseConfig((eglChooseConfig_t)ptr);
-    ptr = dlsym(libEGL,"eglGetConfigAttrib"); disp->set_eglGetConfigAttrib((eglGetConfigAttrib_t)ptr);
-    ptr = dlsym(libEGL,"eglCreateWindowSurface"); disp->set_eglCreateWindowSurface((eglCreateWindowSurface_t)ptr);
-    ptr = dlsym(libEGL,"eglCreatePbufferSurface"); disp->set_eglCreatePbufferSurface((eglCreatePbufferSurface_t)ptr);
-    ptr = dlsym(libEGL,"eglCreatePixmapSurface"); disp->set_eglCreatePixmapSurface((eglCreatePixmapSurface_t)ptr);
-    ptr = dlsym(libEGL,"eglDestroySurface"); disp->set_eglDestroySurface((eglDestroySurface_t)ptr);
-    ptr = dlsym(libEGL,"eglQuerySurface"); disp->set_eglQuerySurface((eglQuerySurface_t)ptr);
-    ptr = dlsym(libEGL,"eglBindAPI"); disp->set_eglBindAPI((eglBindAPI_t)ptr);
-    ptr = dlsym(libEGL,"eglQueryAPI"); disp->set_eglQueryAPI((eglQueryAPI_t)ptr);
-    ptr = dlsym(libEGL,"eglWaitClient"); disp->set_eglWaitClient((eglWaitClient_t)ptr);
-    ptr = dlsym(libEGL,"eglReleaseThread"); disp->set_eglReleaseThread((eglReleaseThread_t)ptr);
-    ptr = dlsym(libEGL,"eglCreatePbufferFromClientBuffer"); disp->set_eglCreatePbufferFromClientBuffer((eglCreatePbufferFromClientBuffer_t)ptr);
-    ptr = dlsym(libEGL,"eglSurfaceAttrib"); disp->set_eglSurfaceAttrib((eglSurfaceAttrib_t)ptr);
-    ptr = dlsym(libEGL,"eglBindTexImage"); disp->set_eglBindTexImage((eglBindTexImage_t)ptr);
-    ptr = dlsym(libEGL,"eglReleaseTexImage"); disp->set_eglReleaseTexImage((eglReleaseTexImage_t)ptr);
-    ptr = dlsym(libEGL,"eglSwapInterval"); disp->set_eglSwapInterval((eglSwapInterval_t)ptr);
-    ptr = dlsym(libEGL,"eglCreateContext"); disp->set_eglCreateContext((eglCreateContext_t)ptr);
-    ptr = dlsym(libEGL,"eglDestroyContext"); disp->set_eglDestroyContext((eglDestroyContext_t)ptr);
-    ptr = dlsym(libEGL,"eglMakeCurrent"); disp->set_eglMakeCurrent((eglMakeCurrent_t)ptr);
-    ptr = dlsym(libEGL,"eglGetCurrentContext"); disp->set_eglGetCurrentContext((eglGetCurrentContext_t)ptr);
-    ptr = dlsym(libEGL,"eglGetCurrentSurface"); disp->set_eglGetCurrentSurface((eglGetCurrentSurface_t)ptr);
-    ptr = dlsym(libEGL,"eglGetCurrentDisplay"); disp->set_eglGetCurrentDisplay((eglGetCurrentDisplay_t)ptr);
-    ptr = dlsym(libEGL,"eglQueryContext"); disp->set_eglQueryContext((eglQueryContext_t)ptr);
-    ptr = dlsym(libEGL,"eglWaitGL"); disp->set_eglWaitGL((eglWaitGL_t)ptr);
-    ptr = dlsym(libEGL,"eglWaitNative"); disp->set_eglWaitNative((eglWaitNative_t)ptr);
-    ptr = dlsym(libEGL,"eglSwapBuffers"); disp->set_eglSwapBuffers((eglSwapBuffers_t)ptr);
-    ptr = dlsym(libEGL,"eglCopyBuffers"); disp->set_eglCopyBuffers((eglCopyBuffers_t)ptr);
-    ptr = dlsym(libEGL,"eglGetProcAddress"); disp->set_eglGetProcAddress((eglGetProcAddress_t)ptr);
-    ptr = dlsym(libEGL,"eglLockSurfaceKHR"); disp->set_eglLockSurfaceKHR((eglLockSurfaceKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglUnlockSurfaceKHR"); disp->set_eglUnlockSurfaceKHR((eglUnlockSurfaceKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglCreateImageKHR"); disp->set_eglCreateImageKHR((eglCreateImageKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglDestroyImageKHR"); disp->set_eglDestroyImageKHR((eglDestroyImageKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglCreateSyncKHR"); disp->set_eglCreateSyncKHR((eglCreateSyncKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglDestroySyncKHR"); disp->set_eglDestroySyncKHR((eglDestroySyncKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglClientWaitSyncKHR"); disp->set_eglClientWaitSyncKHR((eglClientWaitSyncKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglSignalSyncKHR"); disp->set_eglSignalSyncKHR((eglSignalSyncKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglGetSyncAttribKHR"); disp->set_eglGetSyncAttribKHR((eglGetSyncAttribKHR_t)ptr);
-    ptr = dlsym(libEGL,"eglSetSwapRectangleANDROID"); disp->set_eglSetSwapRectangleANDROID((eglSetSwapRectangleANDROID_t)ptr);
-
-    return disp;
-}
diff --git a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_dispatch.h b/tools/emulator/opengl/tests/EGL_host_wrapper/egl_dispatch.h
deleted file mode 100644
index e5f67c9..0000000
--- a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_dispatch.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _EGL_DISPATCH_H
-#define _EGL_DISPATCH_H
-
-#include "egl_proc.h"
-
-struct egl_dispatch {
-    eglGetError_t eglGetError;
-    eglGetDisplay_t eglGetDisplay;
-    eglInitialize_t eglInitialize;
-    eglTerminate_t eglTerminate;
-    eglQueryString_t eglQueryString;
-    eglGetConfigs_t eglGetConfigs;
-    eglChooseConfig_t eglChooseConfig;
-    eglGetConfigAttrib_t eglGetConfigAttrib;
-    eglCreateWindowSurface_t eglCreateWindowSurface;
-    eglCreatePbufferSurface_t eglCreatePbufferSurface;
-    eglCreatePixmapSurface_t eglCreatePixmapSurface;
-    eglDestroySurface_t eglDestroySurface;
-    eglQuerySurface_t eglQuerySurface;
-    eglBindAPI_t eglBindAPI;
-    eglQueryAPI_t eglQueryAPI;
-    eglWaitClient_t eglWaitClient;
-    eglReleaseThread_t eglReleaseThread;
-    eglCreatePbufferFromClientBuffer_t eglCreatePbufferFromClientBuffer;
-    eglSurfaceAttrib_t eglSurfaceAttrib;
-    eglBindTexImage_t eglBindTexImage;
-    eglReleaseTexImage_t eglReleaseTexImage;
-    eglSwapInterval_t eglSwapInterval;
-    eglCreateContext_t eglCreateContext;
-    eglDestroyContext_t eglDestroyContext;
-    eglMakeCurrent_t eglMakeCurrent;
-    eglGetCurrentContext_t eglGetCurrentContext;
-    eglGetCurrentSurface_t eglGetCurrentSurface;
-    eglGetCurrentDisplay_t eglGetCurrentDisplay;
-    eglQueryContext_t eglQueryContext;
-    eglWaitGL_t eglWaitGL;
-    eglWaitNative_t eglWaitNative;
-    eglSwapBuffers_t eglSwapBuffers;
-    eglCopyBuffers_t eglCopyBuffers;
-    eglGetProcAddress_t eglGetProcAddress;
-    eglLockSurfaceKHR_t eglLockSurfaceKHR;
-    eglUnlockSurfaceKHR_t eglUnlockSurfaceKHR;
-    eglCreateImageKHR_t eglCreateImageKHR;
-    eglDestroyImageKHR_t eglDestroyImageKHR;
-    eglCreateSyncKHR_t eglCreateSyncKHR;
-    eglDestroySyncKHR_t eglDestroySyncKHR;
-    eglClientWaitSyncKHR_t eglClientWaitSyncKHR;
-    eglSignalSyncKHR_t eglSignalSyncKHR;
-    eglGetSyncAttribKHR_t eglGetSyncAttribKHR;
-    eglSetSwapRectangleANDROID_t eglSetSwapRectangleANDROID;
-    //Accessors
-    eglGetError_t set_eglGetError(eglGetError_t f) { eglGetError_t retval = eglGetError; eglGetError = f; return retval;}
-    eglGetDisplay_t set_eglGetDisplay(eglGetDisplay_t f) { eglGetDisplay_t retval = eglGetDisplay; eglGetDisplay = f; return retval;}
-    eglInitialize_t set_eglInitialize(eglInitialize_t f) { eglInitialize_t retval = eglInitialize; eglInitialize = f; return retval;}
-    eglTerminate_t set_eglTerminate(eglTerminate_t f) { eglTerminate_t retval = eglTerminate; eglTerminate = f; return retval;}
-    eglQueryString_t set_eglQueryString(eglQueryString_t f) { eglQueryString_t retval = eglQueryString; eglQueryString = f; return retval;}
-    eglGetConfigs_t set_eglGetConfigs(eglGetConfigs_t f) { eglGetConfigs_t retval = eglGetConfigs; eglGetConfigs = f; return retval;}
-    eglChooseConfig_t set_eglChooseConfig(eglChooseConfig_t f) { eglChooseConfig_t retval = eglChooseConfig; eglChooseConfig = f; return retval;}
-    eglGetConfigAttrib_t set_eglGetConfigAttrib(eglGetConfigAttrib_t f) { eglGetConfigAttrib_t retval = eglGetConfigAttrib; eglGetConfigAttrib = f; return retval;}
-    eglCreateWindowSurface_t set_eglCreateWindowSurface(eglCreateWindowSurface_t f) { eglCreateWindowSurface_t retval = eglCreateWindowSurface; eglCreateWindowSurface = f; return retval;}
-    eglCreatePbufferSurface_t set_eglCreatePbufferSurface(eglCreatePbufferSurface_t f) { eglCreatePbufferSurface_t retval = eglCreatePbufferSurface; eglCreatePbufferSurface = f; return retval;}
-    eglCreatePixmapSurface_t set_eglCreatePixmapSurface(eglCreatePixmapSurface_t f) { eglCreatePixmapSurface_t retval = eglCreatePixmapSurface; eglCreatePixmapSurface = f; return retval;}
-    eglDestroySurface_t set_eglDestroySurface(eglDestroySurface_t f) { eglDestroySurface_t retval = eglDestroySurface; eglDestroySurface = f; return retval;}
-    eglQuerySurface_t set_eglQuerySurface(eglQuerySurface_t f) { eglQuerySurface_t retval = eglQuerySurface; eglQuerySurface = f; return retval;}
-    eglBindAPI_t set_eglBindAPI(eglBindAPI_t f) { eglBindAPI_t retval = eglBindAPI; eglBindAPI = f; return retval;}
-    eglQueryAPI_t set_eglQueryAPI(eglQueryAPI_t f) { eglQueryAPI_t retval = eglQueryAPI; eglQueryAPI = f; return retval;}
-    eglWaitClient_t set_eglWaitClient(eglWaitClient_t f) { eglWaitClient_t retval = eglWaitClient; eglWaitClient = f; return retval;}
-    eglReleaseThread_t set_eglReleaseThread(eglReleaseThread_t f) { eglReleaseThread_t retval = eglReleaseThread; eglReleaseThread = f; return retval;}
-    eglCreatePbufferFromClientBuffer_t set_eglCreatePbufferFromClientBuffer(eglCreatePbufferFromClientBuffer_t f) { eglCreatePbufferFromClientBuffer_t retval = eglCreatePbufferFromClientBuffer; eglCreatePbufferFromClientBuffer = f; return retval;}
-    eglSurfaceAttrib_t set_eglSurfaceAttrib(eglSurfaceAttrib_t f) { eglSurfaceAttrib_t retval = eglSurfaceAttrib; eglSurfaceAttrib = f; return retval;}
-    eglBindTexImage_t set_eglBindTexImage(eglBindTexImage_t f) { eglBindTexImage_t retval = eglBindTexImage; eglBindTexImage = f; return retval;}
-    eglReleaseTexImage_t set_eglReleaseTexImage(eglReleaseTexImage_t f) { eglReleaseTexImage_t retval = eglReleaseTexImage; eglReleaseTexImage = f; return retval;}
-    eglSwapInterval_t set_eglSwapInterval(eglSwapInterval_t f) { eglSwapInterval_t retval = eglSwapInterval; eglSwapInterval = f; return retval;}
-    eglCreateContext_t set_eglCreateContext(eglCreateContext_t f) { eglCreateContext_t retval = eglCreateContext; eglCreateContext = f; return retval;}
-    eglDestroyContext_t set_eglDestroyContext(eglDestroyContext_t f) { eglDestroyContext_t retval = eglDestroyContext; eglDestroyContext = f; return retval;}
-    eglMakeCurrent_t set_eglMakeCurrent(eglMakeCurrent_t f) { eglMakeCurrent_t retval = eglMakeCurrent; eglMakeCurrent = f; return retval;}
-    eglGetCurrentContext_t set_eglGetCurrentContext(eglGetCurrentContext_t f) { eglGetCurrentContext_t retval = eglGetCurrentContext; eglGetCurrentContext = f; return retval;}
-    eglGetCurrentSurface_t set_eglGetCurrentSurface(eglGetCurrentSurface_t f) { eglGetCurrentSurface_t retval = eglGetCurrentSurface; eglGetCurrentSurface = f; return retval;}
-    eglGetCurrentDisplay_t set_eglGetCurrentDisplay(eglGetCurrentDisplay_t f) { eglGetCurrentDisplay_t retval = eglGetCurrentDisplay; eglGetCurrentDisplay = f; return retval;}
-    eglQueryContext_t set_eglQueryContext(eglQueryContext_t f) { eglQueryContext_t retval = eglQueryContext; eglQueryContext = f; return retval;}
-    eglWaitGL_t set_eglWaitGL(eglWaitGL_t f) { eglWaitGL_t retval = eglWaitGL; eglWaitGL = f; return retval;}
-    eglWaitNative_t set_eglWaitNative(eglWaitNative_t f) { eglWaitNative_t retval = eglWaitNative; eglWaitNative = f; return retval;}
-    eglSwapBuffers_t set_eglSwapBuffers(eglSwapBuffers_t f) { eglSwapBuffers_t retval = eglSwapBuffers; eglSwapBuffers = f; return retval;}
-    eglCopyBuffers_t set_eglCopyBuffers(eglCopyBuffers_t f) { eglCopyBuffers_t retval = eglCopyBuffers; eglCopyBuffers = f; return retval;}
-    eglGetProcAddress_t set_eglGetProcAddress(eglGetProcAddress_t f) { eglGetProcAddress_t retval = eglGetProcAddress; eglGetProcAddress = f; return retval;}
-    eglLockSurfaceKHR_t set_eglLockSurfaceKHR(eglLockSurfaceKHR_t f) { eglLockSurfaceKHR_t retval = eglLockSurfaceKHR; eglLockSurfaceKHR = f; return retval;}
-    eglUnlockSurfaceKHR_t set_eglUnlockSurfaceKHR(eglUnlockSurfaceKHR_t f) { eglUnlockSurfaceKHR_t retval = eglUnlockSurfaceKHR; eglUnlockSurfaceKHR = f; return retval;}
-    eglCreateImageKHR_t set_eglCreateImageKHR(eglCreateImageKHR_t f) { eglCreateImageKHR_t retval = eglCreateImageKHR; eglCreateImageKHR = f; return retval;}
-    eglDestroyImageKHR_t set_eglDestroyImageKHR(eglDestroyImageKHR_t f) { eglDestroyImageKHR_t retval = eglDestroyImageKHR; eglDestroyImageKHR = f; return retval;}
-    eglCreateSyncKHR_t set_eglCreateSyncKHR(eglCreateSyncKHR_t f) { eglCreateSyncKHR_t retval = eglCreateSyncKHR; eglCreateSyncKHR = f; return retval;}
-    eglDestroySyncKHR_t set_eglDestroySyncKHR(eglDestroySyncKHR_t f) { eglDestroySyncKHR_t retval = eglDestroySyncKHR; eglDestroySyncKHR = f; return retval;}
-    eglClientWaitSyncKHR_t set_eglClientWaitSyncKHR(eglClientWaitSyncKHR_t f) { eglClientWaitSyncKHR_t retval = eglClientWaitSyncKHR; eglClientWaitSyncKHR = f; return retval;}
-    eglSignalSyncKHR_t set_eglSignalSyncKHR(eglSignalSyncKHR_t f) { eglSignalSyncKHR_t retval = eglSignalSyncKHR; eglSignalSyncKHR = f; return retval;}
-    eglGetSyncAttribKHR_t set_eglGetSyncAttribKHR(eglGetSyncAttribKHR_t f) { eglGetSyncAttribKHR_t retval = eglGetSyncAttribKHR; eglGetSyncAttribKHR = f; return retval;}
-    eglSetSwapRectangleANDROID_t set_eglSetSwapRectangleANDROID(eglSetSwapRectangleANDROID_t f) { eglSetSwapRectangleANDROID_t retval = eglSetSwapRectangleANDROID; eglSetSwapRectangleANDROID = f; return retval;}
-};
-
-egl_dispatch *loadEGL(const char *p_eglPath);
-
-#endif
diff --git a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_ftable.h b/tools/emulator/opengl/tests/EGL_host_wrapper/egl_ftable.h
deleted file mode 100644
index ee40585..0000000
--- a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_ftable.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-static struct _egl_funcs_by_name {
-    const char *name;
-    void *proc;
-} egl_funcs_by_name[] = {
-    {"eglGetError", (void *)eglGetError},
-    {"eglGetDisplay", (void *)eglGetDisplay},
-    {"eglInitialize", (void *)eglInitialize},
-    {"eglTerminate", (void *)eglTerminate},
-    {"eglQueryString", (void *)eglQueryString},
-    {"eglGetConfigs", (void *)eglGetConfigs},
-    {"eglChooseConfig", (void *)eglChooseConfig},
-    {"eglGetConfigAttrib", (void *)eglGetConfigAttrib},
-    {"eglCreateWindowSurface", (void *)eglCreateWindowSurface},
-    {"eglCreatePbufferSurface", (void *)eglCreatePbufferSurface},
-    {"eglCreatePixmapSurface", (void *)eglCreatePixmapSurface},
-    {"eglDestroySurface", (void *)eglDestroySurface},
-    {"eglQuerySurface", (void *)eglQuerySurface},
-    {"eglBindAPI", (void *)eglBindAPI},
-    {"eglQueryAPI", (void *)eglQueryAPI},
-    {"eglWaitClient", (void *)eglWaitClient},
-    {"eglReleaseThread", (void *)eglReleaseThread},
-    {"eglCreatePbufferFromClientBuffer", (void *)eglCreatePbufferFromClientBuffer},
-    {"eglSurfaceAttrib", (void *)eglSurfaceAttrib},
-    {"eglBindTexImage", (void *)eglBindTexImage},
-    {"eglReleaseTexImage", (void *)eglReleaseTexImage},
-    {"eglSwapInterval", (void *)eglSwapInterval},
-    {"eglCreateContext", (void *)eglCreateContext},
-    {"eglDestroyContext", (void *)eglDestroyContext},
-    {"eglMakeCurrent", (void *)eglMakeCurrent},
-    {"eglGetCurrentContext", (void *)eglGetCurrentContext},
-    {"eglGetCurrentSurface", (void *)eglGetCurrentSurface},
-    {"eglGetCurrentDisplay", (void *)eglGetCurrentDisplay},
-    {"eglQueryContext", (void *)eglQueryContext},
-    {"eglWaitGL", (void *)eglWaitGL},
-    {"eglWaitNative", (void *)eglWaitNative},
-    {"eglSwapBuffers", (void *)eglSwapBuffers},
-    {"eglCopyBuffers", (void *)eglCopyBuffers},
-    {"eglGetProcAddress", (void *)eglGetProcAddress},
-    {"eglLockSurfaceKHR", (void *)eglLockSurfaceKHR},
-    {"eglUnlockSurfaceKHR", (void *)eglUnlockSurfaceKHR},
-    {"eglCreateImageKHR", (void *)eglCreateImageKHR},
-    {"eglDestroyImageKHR", (void *)eglDestroyImageKHR},
-    {"eglCreateSyncKHR", (void *)eglCreateSyncKHR},
-    {"eglDestroySyncKHR", (void *)eglDestroySyncKHR},
-    {"eglClientWaitSyncKHR", (void *)eglClientWaitSyncKHR},
-    {"eglSignalSyncKHR", (void *)eglSignalSyncKHR},
-    {"eglGetSyncAttribKHR", (void *)eglGetSyncAttribKHR},
-    {"eglSetSwapRectangleANDROID", (void *)eglSetSwapRectangleANDROID}
-};
-
-static int egl_num_funcs = sizeof(egl_funcs_by_name) / sizeof(struct _egl_funcs_by_name);
diff --git a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_proc.h b/tools/emulator/opengl/tests/EGL_host_wrapper/egl_proc.h
deleted file mode 100644
index 140c030..0000000
--- a/tools/emulator/opengl/tests/EGL_host_wrapper/egl_proc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _EGL_PROC_H
-#define _EGL_PROC_H
-
-#include <EGL/egl.h>
-#define EGL_EGLEXT_PROTOTYPES
-#include <EGL/eglext.h>
-
-typedef EGLint (* eglGetError_t) ();
-typedef EGLDisplay (* eglGetDisplay_t) (EGLNativeDisplayType);
-typedef EGLBoolean (* eglInitialize_t) (EGLDisplay, EGLint*, EGLint*);
-typedef EGLBoolean (* eglTerminate_t) (EGLDisplay);
-typedef char* (* eglQueryString_t) (EGLDisplay, EGLint);
-typedef EGLBoolean (* eglGetConfigs_t) (EGLDisplay, EGLConfig*, EGLint, EGLint*);
-typedef EGLBoolean (* eglChooseConfig_t) (EGLDisplay, const EGLint*, EGLConfig*, EGLint, EGLint*);
-typedef EGLBoolean (* eglGetConfigAttrib_t) (EGLDisplay, EGLConfig, EGLint, EGLint*);
-typedef EGLSurface (* eglCreateWindowSurface_t) (EGLDisplay, EGLConfig, EGLNativeWindowType, const EGLint*);
-typedef EGLSurface (* eglCreatePbufferSurface_t) (EGLDisplay, EGLConfig, const EGLint*);
-typedef EGLSurface (* eglCreatePixmapSurface_t) (EGLDisplay, EGLConfig, EGLNativePixmapType, const EGLint*);
-typedef EGLBoolean (* eglDestroySurface_t) (EGLDisplay, EGLSurface);
-typedef EGLBoolean (* eglQuerySurface_t) (EGLDisplay, EGLSurface, EGLint, EGLint*);
-typedef EGLBoolean (* eglBindAPI_t) (EGLenum);
-typedef EGLenum (* eglQueryAPI_t) ();
-typedef EGLBoolean (* eglWaitClient_t) ();
-typedef EGLBoolean (* eglReleaseThread_t) ();
-typedef EGLSurface (* eglCreatePbufferFromClientBuffer_t) (EGLDisplay, EGLenum, EGLClientBuffer, EGLConfig, const EGLint*);
-typedef EGLBoolean (* eglSurfaceAttrib_t) (EGLDisplay, EGLSurface, EGLint, EGLint);
-typedef EGLBoolean (* eglBindTexImage_t) (EGLDisplay, EGLSurface, EGLint);
-typedef EGLBoolean (* eglReleaseTexImage_t) (EGLDisplay, EGLSurface, EGLint);
-typedef EGLBoolean (* eglSwapInterval_t) (EGLDisplay, EGLint);
-typedef EGLContext (* eglCreateContext_t) (EGLDisplay, EGLConfig, EGLContext, const EGLint*);
-typedef EGLBoolean (* eglDestroyContext_t) (EGLDisplay, EGLContext);
-typedef EGLBoolean (* eglMakeCurrent_t) (EGLDisplay, EGLSurface, EGLSurface, EGLContext);
-typedef EGLContext (* eglGetCurrentContext_t) ();
-typedef EGLSurface (* eglGetCurrentSurface_t) (EGLint);
-typedef EGLDisplay (* eglGetCurrentDisplay_t) ();
-typedef EGLBoolean (* eglQueryContext_t) (EGLDisplay, EGLContext, EGLint, EGLint*);
-typedef EGLBoolean (* eglWaitGL_t) ();
-typedef EGLBoolean (* eglWaitNative_t) (EGLint);
-typedef EGLBoolean (* eglSwapBuffers_t) (EGLDisplay, EGLSurface);
-typedef EGLBoolean (* eglCopyBuffers_t) (EGLDisplay, EGLSurface, EGLNativePixmapType);
-typedef __eglMustCastToProperFunctionPointerType (* eglGetProcAddress_t) (const char*);
-typedef EGLBoolean (* eglLockSurfaceKHR_t) (EGLDisplay, EGLSurface, const EGLint*);
-typedef EGLBoolean (* eglUnlockSurfaceKHR_t) (EGLDisplay, EGLSurface);
-typedef EGLImageKHR (* eglCreateImageKHR_t) (EGLDisplay, EGLContext, EGLenum, EGLClientBuffer, const EGLint*);
-typedef EGLBoolean (* eglDestroyImageKHR_t) (EGLDisplay, EGLImageKHR image);
-typedef EGLSyncKHR (* eglCreateSyncKHR_t) (EGLDisplay, EGLenum, const EGLint*);
-typedef EGLBoolean (* eglDestroySyncKHR_t) (EGLDisplay, EGLSyncKHR sync);
-typedef EGLint (* eglClientWaitSyncKHR_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLTimeKHR timeout);
-typedef EGLBoolean (* eglSignalSyncKHR_t) (EGLDisplay, EGLSyncKHR, EGLenum);
-typedef EGLBoolean (* eglGetSyncAttribKHR_t) (EGLDisplay, EGLSyncKHR, EGLint, EGLint*);
-typedef EGLBoolean (* eglSetSwapRectangleANDROID_t) (EGLDisplay, EGLSurface, EGLint, EGLint, EGLint, EGLint);
-
-#endif // of  _EGL_PROC_H
diff --git a/tools/emulator/opengl/tests/emulator_test_renderer/Android.mk b/tools/emulator/opengl/tests/emulator_test_renderer/Android.mk
deleted file mode 100644
index 52a1c8e..0000000
--- a/tools/emulator/opengl/tests/emulator_test_renderer/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-LOCAL_PATH:=$(call my-dir)
-
-$(call emugl-begin-host-executable,emulator_test_renderer)
-$(call emugl-import,libOpenglRender event_injector)
-
-LOCAL_SRC_FILES := main.cpp
-
-PREBUILT := $(HOST_PREBUILT_TAG)
-LOCAL_SDL_CONFIG ?= prebuilt/$(PREBUILT)/sdl/bin/sdl-config
-LOCAL_SDL_CFLAGS := $(shell $(LOCAL_SDL_CONFIG) --cflags)
-LOCAL_SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(LOCAL_SDL_CONFIG) --static-libs))
-
-LOCAL_CFLAGS += $(LOCAL_SDL_CFLAGS) -g -O0
-LOCAL_LDLIBS += $(LOCAL_SDL_LDLIBS)
-
-ifeq ($(HOST_OS),windows)
-LOCAL_LDLIBS += -lws2_32
-endif
-
-LOCAL_STATIC_LIBRARIES += libSDL libSDLmain
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/tests/emulator_test_renderer/main.cpp b/tools/emulator/opengl/tests/emulator_test_renderer/main.cpp
deleted file mode 100644
index 06abce7..0000000
--- a/tools/emulator/opengl/tests/emulator_test_renderer/main.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#undef HAVE_MALLOC_H
-#include <SDL.h>
-#include <SDL_syswm.h>
-#include <stdio.h>
-#include <string.h>
-#include "libOpenglRender/render_api.h"
-#include <EventInjector.h>
-
-static int convert_keysym(int sym); // forward
-
-#ifdef __linux__
-#include <X11/Xlib.h>
-#endif
-#ifdef _WIN32
-
-#include <winsock2.h>
-int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
-#else
-int main(int argc, char *argv[])
-#endif
-{
-    int portNum = 22468;
-    int winWidth = 320;
-    int winHeight = 480;
-    int width, height;
-    int mouseDown = 0;
-    const char* env = getenv("ANDROID_WINDOW_SIZE");
-    FBNativeWindowType windowId = NULL;
-    EventInjector* injector;
-    int consolePort = 5554;
-
-    if (env && sscanf(env, "%dx%d", &width, &height) == 2) {
-        winWidth = width;
-        winHeight = height;
-    }
-
-#ifdef __linux__
-    // some OpenGL implementations may call X functions
-    // it is safer to synchronize all X calls made by all the
-    // rendering threads. (although the calls we do are locked
-    // in the FrameBuffer singleton object).
-    XInitThreads();
-#endif
-
-    //
-    // Inialize SDL window
-    //
-    if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_VIDEO)) {
-        fprintf(stderr,"SDL init failed: %s\n", SDL_GetError());
-        return -1;
-    }
-
-    SDL_Surface *surface = SDL_SetVideoMode(winWidth, winHeight, 32, SDL_SWSURFACE);
-    if (surface == NULL) {
-        fprintf(stderr,"Failed to set video mode: %s\n", SDL_GetError());
-        return -1;
-    }
-
-    SDL_SysWMinfo  wminfo;
-    memset(&wminfo, 0, sizeof(wminfo));
-    SDL_GetWMInfo(&wminfo);
-#ifdef _WIN32
-    windowId = wminfo.window;
-    WSADATA  wsaData;
-    int      rc = WSAStartup( MAKEWORD(2,2), &wsaData);
-    if (rc != 0) {
-            printf( "could not initialize Winsock\n" );
-    }
-#elif __linux__
-    windowId = wminfo.info.x11.window;
-#elif __APPLE__
-    windowId = wminfo.nsWindowPtr;
-#endif
-
-    printf("initializing renderer process\n");
-
-    //
-    // initialize OpenGL renderer to render in our window
-    //
-    bool inited = initOpenGLRenderer(winWidth, winHeight, portNum);
-    if (!inited) {
-        return -1;
-    }
-    printf("renderer process started\n");
-
-    float zRot = 0.0f;
-    inited = createOpenGLSubwindow(windowId, 0, 0,
-                                   winWidth, winHeight, zRot);
-    if (!inited) {
-        printf("failed to create OpenGL subwindow\n");
-        stopOpenGLRenderer();
-        return -1;
-    }
-    int subwinWidth = winWidth;
-    int subwinHeight = winHeight;
-
-    injector = new EventInjector(consolePort);
-
-    // Just wait until the window is closed
-    SDL_Event ev;
-
-    for (;;) {
-        injector->wait(1000/15);
-        injector->poll();
-
-        while (SDL_PollEvent(&ev)) {
-            switch (ev.type) {
-            case SDL_MOUSEBUTTONDOWN:
-                if (!mouseDown) {
-                    injector->sendMouseDown(ev.button.x, ev.button.y);
-                    mouseDown = 1;
-                }
-                break;
-            case SDL_MOUSEBUTTONUP:
-                if (mouseDown) {
-                    injector->sendMouseUp(ev.button.x,ev.button.y);
-                    mouseDown = 0;
-                }
-                break;
-            case SDL_MOUSEMOTION:
-                if (mouseDown)
-                    injector->sendMouseMotion(ev.button.x,ev.button.y);
-                break;
-
-            case SDL_KEYDOWN:
-#ifdef __APPLE__
-                /* special code to deal with Command-Q properly */
-                if (ev.key.keysym.sym == SDLK_q &&
-                    ev.key.keysym.mod & KMOD_META) {
-                  goto EXIT;
-                }
-#endif
-                injector->sendKeyDown(convert_keysym(ev.key.keysym.sym));
-
-                if (ev.key.keysym.sym == SDLK_KP_MINUS) {
-                    subwinWidth /= 2;
-                    subwinHeight /= 2;
-                    
-                    bool stat = destroyOpenGLSubwindow();
-                    printf("destroy subwin returned %d\n", stat);
-                    stat = createOpenGLSubwindow(windowId,
-                                                (winWidth - subwinWidth) / 2,
-                                                (winHeight - subwinHeight) / 2,
-                                                subwinWidth, subwinHeight, 
-                                                zRot);
-                    printf("create subwin returned %d\n", stat);
-                }
-                else if (ev.key.keysym.sym == SDLK_KP_PLUS) {
-                    subwinWidth *= 2;
-                    subwinHeight *= 2;
-
-                    bool stat = destroyOpenGLSubwindow();
-                    printf("destroy subwin returned %d\n", stat);
-                    stat = createOpenGLSubwindow(windowId,
-                                                (winWidth - subwinWidth) / 2,
-                                                (winHeight - subwinHeight) / 2,
-                                                subwinWidth, subwinHeight, 
-                                                zRot);
-                    printf("create subwin returned %d\n", stat);
-                }
-                else if (ev.key.keysym.sym == SDLK_KP_MULTIPLY) {
-                    zRot += 10.0f;
-                    setOpenGLDisplayRotation(zRot);
-                }
-                else if (ev.key.keysym.sym == SDLK_KP_ENTER) {
-                    repaintOpenGLDisplay();
-                }
-                break;
-            case SDL_KEYUP:
-                injector->sendKeyUp(convert_keysym(ev.key.keysym.sym));
-                break;
-            case SDL_QUIT:
-                goto EXIT;
-            }
-        }
-    }
-EXIT:
-    //
-    // stop the renderer
-    //
-    printf("stopping the renderer process\n");
-    stopOpenGLRenderer();
-
-    return 0;
-}
-
-static int convert_keysym(int sym)
-{
-#define  EE(x,y)   SDLK_##x, EventInjector::KEY_##y,
-    static const int keymap[] = {
-        EE(LEFT,LEFT)
-        EE(RIGHT,RIGHT)
-        EE(DOWN,DOWN)
-        EE(UP,UP)
-        EE(RETURN,ENTER)
-        EE(F1,SOFT1)
-        EE(ESCAPE,BACK)
-        EE(HOME,HOME)
-        -1
-    };
-    int nn;
-    for (nn = 0; keymap[nn] >= 0; nn += 2) {
-        if (keymap[nn] == sym)
-            return keymap[nn+1];
-    }
-    return sym;
-}
diff --git a/tools/emulator/opengl/tests/event_injector/Android.mk b/tools/emulator/opengl/tests/event_injector/Android.mk
deleted file mode 100644
index 26eb476..0000000
--- a/tools/emulator/opengl/tests/event_injector/Android.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-host-static-library,event_injector)
-
-LOCAL_SRC_FILES := \
-    EventInjector.cpp \
-    sockets.c \
-    emulator-console.c \
-    iolooper-select.c
-
-$(call emugl-export,C_INCLUDES,$(LOCAL_PATH))
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/tests/event_injector/EventInjector.cpp b/tools/emulator/opengl/tests/event_injector/EventInjector.cpp
deleted file mode 100644
index 6dade6e..0000000
--- a/tools/emulator/opengl/tests/event_injector/EventInjector.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "EventInjector.h"
-#include "emulator-console.h"
-
-#define PRIVATE  EventInjectorPrivate
-
-class PRIVATE
-{
-public:
-    IoLooper*         mLooper;
-    EmulatorConsole*  mConsole;
-
-    EventInjectorPrivate(int port) {
-        mLooper = iolooper_new();
-        mConsole = emulatorConsole_new(port, mLooper);
-    }
-};
-
-EventInjector::EventInjector(int consolePort)
-{
-    mPrivate = new PRIVATE(consolePort);
-}
-
-EventInjector::~EventInjector()
-{
-    delete mPrivate;
-}
-
-void EventInjector::wait(int timeout_ms)
-{
-    iolooper_wait(mPrivate->mLooper, timeout_ms);
-}
-
-void EventInjector::poll(void)
-{
-    emulatorConsole_poll(mPrivate->mConsole);
-}
-
-void EventInjector::sendMouseDown( int x, int y )
-{
-    emulatorConsole_sendMouseDown(mPrivate->mConsole, x, y);
-}
-
-void EventInjector::sendMouseUp( int x, int y )
-{
-    emulatorConsole_sendMouseUp(mPrivate->mConsole, x, y);
-}
-
-void EventInjector::sendMouseMotion( int x, int y )
-{
-    emulatorConsole_sendMouseMotion(mPrivate->mConsole, x, y);
-}
-
-void EventInjector::sendKeyDown( int keycode )
-{
-    emulatorConsole_sendKey(mPrivate->mConsole, keycode, 1);
-}
-
-void EventInjector::sendKeyUp( int keycode )
-{
-    emulatorConsole_sendKey(mPrivate->mConsole, keycode, 0);
-}
diff --git a/tools/emulator/opengl/tests/event_injector/EventInjector.h b/tools/emulator/opengl/tests/event_injector/EventInjector.h
deleted file mode 100644
index a8fded7..0000000
--- a/tools/emulator/opengl/tests/event_injector/EventInjector.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-/* Event redirector is used to inject user events from a GL window
- * into the emulated program.
- */
-#ifndef EVENT_INJECTOR_H
-#define EVENT_INJECTOR_H
-
-class EventInjectorPrivate;
-
-class EventInjector
-{
-public:
-    EventInjector(int consolePort);
-    virtual ~EventInjector();
-
-    void wait( int timeout_ms );
-    void poll( void );
-
-    void sendMouseDown( int x, int y );
-    void sendMouseUp( int x, int y );
-    void sendMouseMotion( int x, int y );
-    void sendKeyDown( int keycode );
-    void sendKeyUp( int keycode );
-
-    /* Keycode values expected by the Linux kernel, and the emulator */
-    enum {
-        KEY_BACK = 158,
-        KEY_HOME = 102,
-        KEY_SOFT1 = 229,
-        KEY_LEFT = 105,
-        KEY_UP   = 103,
-        KEY_DOWN =  108,
-        KEY_RIGHT = 106,
-        KEY_VOLUMEUP = 115,
-        KEY_VOLUMEDOWN = 114,
-        KEY_SEND = 231,
-        KEY_END = 107,
-        KEY_ENTER = 28,
-    };
-
-private:
-    EventInjectorPrivate* mPrivate;
-};
-
-#endif /* EVENT_INJECTOR_H */
diff --git a/tools/emulator/opengl/tests/event_injector/emulator-console.c b/tools/emulator/opengl/tests/event_injector/emulator-console.c
deleted file mode 100644
index a8c49b2..0000000
--- a/tools/emulator/opengl/tests/event_injector/emulator-console.c
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "emulator-console.h"
-#include "sockets.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#define DEBUG  0
-#if DEBUG >= 1
-#  define D(...)  printf(__VA_ARGS__), printf("\n")
-#else
-#  define D(...)  ((void)0)
-#endif
-#if DEBUG >= 2
-#  define DD(...)  printf(__VA_ARGS__), printf("\n")
-#else
-#  define DD(...)  ((void)0)
-#endif
-
-#define ANEW0(p)  (p) = calloc(sizeof(*(p)), 1)
-
-enum {
-    STATE_CONNECTING = 0,
-    STATE_CONNECTED,
-    STATE_WAITING,
-    STATE_ERROR = 2
-};
-
-typedef struct Msg {
-    const char*   data;  // pointer to data
-    int           size;  // size of data
-    int           sent;  // already sent (so sent..size remain in buffer).
-    struct Msg*  next;  // next message in queue.
-} Msg;
-
-static Msg*
-msg_alloc( const char* data, int  datalen )
-{
-    Msg*  msg;
-
-    msg = malloc(sizeof(*msg) + datalen);
-    msg->data = (const char*)(msg + 1);
-    msg->size = datalen;
-    msg->sent = 0;
-    memcpy((char*)msg->data, data, datalen);
-    msg->next = NULL;
-
-    return msg;
-}
-
-static void
-msg_free( Msg*  msg )
-{
-    free(msg);
-}
-
-struct EmulatorConsole {
-    int        fd;
-    IoLooper*  looper;
-    int        state;
-    Msg*       out_msg;
-    SockAddress address;
-    int64_t     waitUntil;
-};
-
-/* Read as much from the input as possible, ignoring it.
- */
-static int
-emulatorConsole_eatInput( EmulatorConsole* con )
-{
-    for (;;) {
-        char temp[64];
-        int ret = socket_recv(con->fd, temp, sizeof temp);
-        if (ret < 0) {
-            if (errno == EAGAIN || errno == EWOULDBLOCK) {
-                return 0;
-            }
-            return -1;
-        }
-        if (ret == 0) {
-            return -1;
-        }
-        DD("Console received: '%.*s'", ret, temp);
-    }
-}
-
-static int
-emulatorConsole_sendOutput( EmulatorConsole* con )
-{
-    if (con->state != STATE_CONNECTED) {
-        errno = EINVAL;
-        return -1;
-    }
-
-    while (con->out_msg != NULL) {
-        Msg* msg = con->out_msg;
-        int  ret;
-
-        ret = socket_send(con->fd,
-                          msg->data + msg->sent,
-                          msg->size - msg->sent);
-        if (ret > 0) {
-            DD("Console sent: '%.*s'", ret, msg->data + msg->sent);
-
-            msg->sent += ret;
-            if (msg->sent == msg->size) {
-                con->out_msg = msg->next;
-                msg_free(msg);
-            }
-            continue;
-        }
-        if (ret < 0 && (errno == EAGAIN || errno == EWOULDBLOCK)) {
-            return 0;
-        }
-        con->state = STATE_ERROR;
-        D("Console error when sending: %s", strerror(errno));
-        return -1;
-    }
-    iolooper_del_write(con->looper, con->fd);
-    return 0;
-}
-
-static void
-emulatorConsole_completeConnect(EmulatorConsole* con)
-{
-    D("Console connected!");
-    iolooper_add_read(con->looper, con->fd);
-    iolooper_del_write(con->looper, con->fd);
-    con->state = STATE_CONNECTED;
-    if (con->out_msg != NULL) {
-        iolooper_add_write(con->looper, con->fd);
-        emulatorConsole_sendOutput(con);
-    }
-}
-
-static void
-emulatorConsole_retry(EmulatorConsole* con)
-{
-    /* Not possible yet, wait one second */
-    D("Could not connect to emulator, waiting 1 second: %s", errno_str);
-    con->state = STATE_WAITING;
-    con->waitUntil = iolooper_now() + 5000;
-}
-
-static void
-emulatorConsole_connect(EmulatorConsole* con)
-{
-    D("Trying to connect!");
-    if (con->fd < 0) {
-        con->fd = socket_create_inet( SOCKET_STREAM );
-        if (con->fd < 0) {
-    	    D("ERROR: Could not create socket: %s", errno_str);
-	    con->state = STATE_ERROR;
-	    return;
-        }
-        socket_set_nonblock(con->fd);
-    }
-    con->state = STATE_CONNECTING;
-    if (socket_connect(con->fd, &con->address) < 0) {
-        if (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINPROGRESS) {
-            iolooper_add_write(con->looper, con->fd);
-        } else {
-            emulatorConsole_retry(con);
-        }
-        return;
-    }
-
-    emulatorConsole_completeConnect(con);
-}
-
-static void
-emulatorConsole_reset( EmulatorConsole* con )
-{
-    D("Resetting console connection");
-    while (con->out_msg) {
-        Msg* msg = con->out_msg;
-        con->out_msg = msg->next;
-        msg_free(msg);
-    }
-    iolooper_del_read(con->looper, con->fd);
-    iolooper_del_write(con->looper, con->fd);
-    socket_close(con->fd);
-    con->fd = -1;
-    emulatorConsole_connect(con);
-}
-
-/* Create a new EmulatorConsole object to connect asynchronously to
- * a given emulator port. Note that this should always succeeds since
- * the connection is asynchronous.
- */
-EmulatorConsole*
-emulatorConsole_new(int port, IoLooper* looper)
-{
-    EmulatorConsole*  con;
-    SockAddress  addr;
-
-    ANEW0(con);
-    con->looper = looper;
-    con->fd     = -1;
-    sock_address_init_inet(&con->address, SOCK_ADDRESS_INET_LOOPBACK, port);
-
-    emulatorConsole_connect(con);
-    return con;
-}
-
-int
-emulatorConsole_poll( EmulatorConsole*  con )
-{
-    int ret;
-
-    if (con->state == STATE_WAITING) {
-        if (iolooper_now() >= con->waitUntil)
-            emulatorConsole_connect(con);
-        return 0;
-    }
-
-    if (!iolooper_is_read(con->looper, con->fd) &&
-        !iolooper_is_write(con->looper, con->fd))
-    {
-        return 0;
-    }
-
-LOOP:
-    switch (con->state) {
-        case STATE_ERROR:
-            return -1;
-
-        case STATE_CONNECTING:
-            // read socket error to determine success / error.
-            if (socket_get_error(con->fd) != 0) {
-                emulatorConsole_retry(con);
-            } else {
-                emulatorConsole_completeConnect(con);
-            }
-            return 0;
-
-        case STATE_CONNECTED:
-            /* ignore input, if any */
-            if (iolooper_is_read(con->looper, con->fd)) {
-                if (emulatorConsole_eatInput(con) < 0) {
-                    goto SET_ERROR;
-                }
-            }
-            /* send outgoing data, if any */
-            if (iolooper_is_write(con->looper, con->fd)) {
-                if (emulatorConsole_sendOutput(con) < 0) {
-                    goto SET_ERROR;
-                }
-            }
-            return 0;
-
-	default:
-	    D("UNSUPPORTED STATE!");
-            break;
-    }
-
-SET_ERROR:
-    D("Console ERROR!: %s\n", errno_str);
-    con->state = STATE_ERROR;
-    emulatorConsole_reset(con);
-    return -1;
-}
-
-/* Send a message to the console asynchronously. Any answer will be
- * ignored. */
-void
-emulatorConsole_send( EmulatorConsole*  con, const char* command )
-{
-    int  cmdlen = strlen(command);
-    Msg* msg;
-    Msg** plast;
-
-    if (cmdlen == 0)
-        return;
-
-    /* Append new message at end of outgoing list */
-    msg = msg_alloc(command, cmdlen);
-    plast = &con->out_msg;
-    while (*plast) {
-        plast = &(*plast)->next;
-    }
-    *plast = msg;
-    if (con->out_msg == msg) {
-        iolooper_add_write(con->looper, con->fd);
-    }
-    emulatorConsole_sendOutput(con);
-}
-
-
-void
-emulatorConsole_sendMouseDown( EmulatorConsole* con, int x, int y )
-{
-    char temp[128];
-
-    D("sendMouseDown(%d,%d)", x, y);
-    snprintf(temp, sizeof temp,
-             "event send 3:0:%d 3:1:%d 1:330:1 0:0:0\r\n",
-             x, y);
-    emulatorConsole_send(con, temp);
-}
-
-void
-emulatorConsole_sendMouseMotion( EmulatorConsole* con, int x, int y )
-{
-    /* Same as mouse down */
-    emulatorConsole_sendMouseDown(con, x, y);
-}
-
-void
-emulatorConsole_sendMouseUp( EmulatorConsole* con, int x, int y )
-{
-    char temp[128];
-
-    D("sendMouseUp(%d,%d)", x, y);
-    snprintf(temp, sizeof temp,
-             "event send 3:0:%d 3:1:%d 1:330:0 0:0:0\r\n",
-             x, y);
-    emulatorConsole_send(con, temp);
-}
-
-#define EE(x,y)  if (keycode == x) return y;
-
-void
-emulatorConsole_sendKey( EmulatorConsole* con, int keycode, int down )
-{
-    char temp[128];
-
-    snprintf(temp, sizeof temp,
-             "event send EV_KEY:%d:%d 0:0:0\r\n", keycode, down);
-    emulatorConsole_send(con, temp);
-}
diff --git a/tools/emulator/opengl/tests/event_injector/emulator-console.h b/tools/emulator/opengl/tests/event_injector/emulator-console.h
deleted file mode 100644
index 19e9687..0000000
--- a/tools/emulator/opengl/tests/event_injector/emulator-console.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef ANDROID_EMULATOR_CONSOLE_H
-#define ANDROID_EMULATOR_CONSOLE_H
-
-#include "iolooper.h"
-#include "sockets.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct EmulatorConsole  EmulatorConsole;
-
-/* Create a new EmulatorConsole object to connect asynchronously to
- * a given emulator port. Note that this always succeeds since the
- * connection is asynchronous.
- */
-EmulatorConsole* emulatorConsole_new(int port, IoLooper* looper);
-
-/* Call this after an iolooper_poll() or iolooper_wait() to check
- * the status of the console's socket and act upon it.
- *
- * Returns 0 on success, or -1 on error (which indicates disconnection!)
- */
-int  emulatorConsole_poll( EmulatorConsole*  console );
-
-/* Send a message to the console asynchronously. Any answer will be
- * ignored. */
-void emulatorConsole_send( EmulatorConsole*  console, const char* command );
-
-void emulatorConsole_sendMouseDown( EmulatorConsole* con, int x, int y );
-void emulatorConsole_sendMouseMotion( EmulatorConsole* con, int x, int y );
-void emulatorConsole_sendMouseUp( EmulatorConsole* con, int x, int y );
-
-void emulatorConsole_sendKey( EmulatorConsole* con, int keycode, int down );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ANDROID_EMULATOR_CONSOLE_H */
diff --git a/tools/emulator/opengl/tests/event_injector/iolooper-select.c b/tools/emulator/opengl/tests/event_injector/iolooper-select.c
deleted file mode 100644
index c5fc7c2..0000000
--- a/tools/emulator/opengl/tests/event_injector/iolooper-select.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <errno.h>
-#include <stdlib.h>
-#include "iolooper.h"
-#include "sockets.h"
-
-/* An implementation of iolooper.h based on Unix select() */
-#ifdef _WIN32
-#  include <winsock2.h>
-#  include <time.h>
-#else
-#  include <sys/types.h>
-#  include <sys/select.h>
-#  include <sys/time.h>
-#endif
-
-struct IoLooper {
-    fd_set   reads[1];
-    fd_set   writes[1];
-    fd_set   reads_result[1];
-    fd_set   writes_result[1];
-    int      max_fd;
-    int      max_fd_valid;
-};
-
-IoLooper*
-iolooper_new(void)
-{
-    IoLooper*  iol = malloc(sizeof(*iol));
-    iolooper_reset(iol);
-    return iol;
-}
-
-void
-iolooper_free( IoLooper*  iol )
-{
-    free(iol);
-}
-
-void
-iolooper_reset( IoLooper*  iol )
-{
-    FD_ZERO(iol->reads);
-    FD_ZERO(iol->writes);
-    iol->max_fd = -1;
-    iol->max_fd_valid = 1;
-}
-
-static void
-iolooper_add_fd( IoLooper*  iol, int fd )
-{
-    if (iol->max_fd_valid && fd > iol->max_fd) {
-        iol->max_fd = fd;
-    }
-}
-
-static void
-iolooper_del_fd( IoLooper*  iol, int fd )
-{
-    if (iol->max_fd_valid && fd == iol->max_fd)
-        iol->max_fd_valid = 0;
-}
-
-void
-iolooper_modify( IoLooper* iol, int fd, int oldflags, int newflags )
-{
-    if (fd < 0)
-        return;
-
-    int changed = oldflags ^ newflags;
-
-    if ((changed & IOLOOPER_READ) != 0) {
-        if ((newflags & IOLOOPER_READ) != 0)
-            iolooper_add_read(iol, fd);
-        else
-            iolooper_del_read(iol, fd);
-    }
-    if ((changed & IOLOOPER_WRITE) != 0) {
-        if ((newflags & IOLOOPER_WRITE) != 0)
-            iolooper_add_write(iol, fd);
-        else
-            iolooper_del_write(iol, fd);
-    }
-}
-
-
-static int
-iolooper_fd_count( IoLooper*  iol )
-{
-    int  max_fd = iol->max_fd;
-    int  fd;
-
-    if (iol->max_fd_valid)
-        return max_fd + 1;
-
-    /* recompute max fd */
-    for (fd = 0; fd < FD_SETSIZE; fd++) {
-        if (!FD_ISSET(fd, iol->reads) && !FD_ISSET(fd, iol->writes))
-            continue;
-
-        max_fd = fd;
-    }
-    iol->max_fd       = max_fd;
-    iol->max_fd_valid = 1;
-
-    return max_fd + 1;
-}
-
-void
-iolooper_add_read( IoLooper*  iol, int  fd )
-{
-    if (fd >= 0) {
-        iolooper_add_fd(iol, fd);
-        FD_SET(fd, iol->reads);
-    }
-}
-
-void
-iolooper_add_write( IoLooper*  iol, int  fd )
-{
-    if (fd >= 0) {
-        iolooper_add_fd(iol, fd);
-        FD_SET(fd, iol->writes);
-    }
-}
-
-void
-iolooper_del_read( IoLooper*  iol, int  fd )
-{
-    if (fd >= 0) {
-        iolooper_del_fd(iol, fd);
-        FD_CLR(fd, iol->reads);
-    }
-}
-
-void
-iolooper_del_write( IoLooper*  iol, int  fd )
-{
-    if (fd >= 0) {
-        iolooper_del_fd(iol, fd);
-        FD_CLR(fd, iol->writes);
-    }
-}
-
-int
-iolooper_poll( IoLooper*  iol )
-{
-    int     count = iolooper_fd_count(iol);
-    int     ret;
-    fd_set  errs;
-
-    if (count == 0)
-        return 0;
-
-    FD_ZERO(&errs);
-
-    do {
-        struct timeval  tv;
-
-        tv.tv_sec = tv.tv_usec = 0;
-
-        iol->reads_result[0]  = iol->reads[0];
-        iol->writes_result[0] = iol->writes[0];
-
-        ret = select( count, iol->reads_result, iol->writes_result, &errs, &tv);
-    } while (ret < 0 && errno == EINTR);
-
-    return ret;
-}
-
-int
-iolooper_wait( IoLooper*  iol, int64_t  duration )
-{
-    int     count = iolooper_fd_count(iol);
-    int     ret;
-    fd_set  errs;
-    struct timeval tm0, *tm = NULL;
-
-    if (count == 0)
-        return 0;
-
-    if (duration < 0)
-        tm = NULL;
-    else {
-        tm = &tm0;
-        tm->tv_sec  = duration / 1000;
-        tm->tv_usec = (duration - 1000*tm->tv_sec) * 1000;
-    }
-
-    FD_ZERO(&errs);
-
-    do {
-        iol->reads_result[0]  = iol->reads[0];
-        iol->writes_result[0] = iol->writes[0];
-
-        ret = select( count, iol->reads_result, iol->writes_result, &errs, tm);
-        if (ret == 0) {
-            // Indicates timeout
-            errno = ETIMEDOUT;
-        }
-    } while (ret < 0 && errno == EINTR);
-
-    return ret;
-}
-
-
-int
-iolooper_is_read( IoLooper*  iol, int  fd )
-{
-    return FD_ISSET(fd, iol->reads_result);
-}
-
-int
-iolooper_is_write( IoLooper*  iol, int  fd )
-{
-    return FD_ISSET(fd, iol->writes_result);
-}
-
-int
-iolooper_has_operations( IoLooper* iol )
-{
-    return iolooper_fd_count(iol) > 0;
-}
-
-int64_t
-iolooper_now(void)
-{
-#ifdef _WIN32
-    FILETIME now;
-    int64_t now_100ns;
-
-    GetSystemTimeAsFileTime(&now);
-
-    /* Get the time as hundreds of nanosecond intervals since
-       12:00 AM January 1t 1601 UTC. We don't really need
-       to compute the value relative to the Posix epoch */
-    now_100ns = ((int64_t)now.dwHighDateTime << 32) | now.dwLowDateTime;
-
-    /* 100 ns == 0.1 us == 0.0001 ms */
-    return now_100ns / 10000LL;
-
-#else /* !_WIN32 */
-    struct timeval time_now;
-    return gettimeofday(&time_now, NULL) ? -1 : (int64_t)time_now.tv_sec * 1000LL +
-                                                time_now.tv_usec / 1000;
-#endif /* !_WIN32 */
-}
-
-int
-iolooper_wait_absolute(IoLooper* iol, int64_t deadline)
-{
-    int64_t timeout = deadline - iolooper_now();
-
-    /* If the deadline has passed, set the timeout to 0, this allows us
-     * to poll the file descriptor nonetheless */
-    if (timeout < 0)
-        timeout = 0;
-
-    return iolooper_wait(iol, timeout);
-}
diff --git a/tools/emulator/opengl/tests/event_injector/iolooper.h b/tools/emulator/opengl/tests/event_injector/iolooper.h
deleted file mode 100644
index 4aa3db7..0000000
--- a/tools/emulator/opengl/tests/event_injector/iolooper.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef IOLOOPER_H
-#define IOLOOPER_H
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* An IOLooper is an abstraction for select() */
-
-typedef struct IoLooper  IoLooper;
-
-IoLooper*  iolooper_new(void);
-void       iolooper_free( IoLooper*  iol );
-void       iolooper_reset( IoLooper*  iol );
-
-void       iolooper_add_read( IoLooper*  iol, int  fd );
-void       iolooper_add_write( IoLooper*  iol, int  fd );
-void       iolooper_del_read( IoLooper*  iol, int  fd );
-void       iolooper_del_write( IoLooper*  iol, int  fd );
-
-enum {
-    IOLOOPER_READ = (1<<0),
-    IOLOOPER_WRITE = (1<<1),
-};
-void       iolooper_modify( IoLooper*  iol, int fd, int oldflags, int newflags);
-
-int        iolooper_poll( IoLooper*  iol );
-/* Wrapper around select()
- * Return:
- *  > 0 in case an I/O has occurred, or < 0 on error, or 0 on timeout with
- *  errno set to ETIMEDOUT.
- */
-int        iolooper_wait( IoLooper*  iol, int64_t  duration );
-
-int        iolooper_is_read( IoLooper*  iol, int  fd );
-int        iolooper_is_write( IoLooper*  iol, int  fd );
-/* Returns 1 if this IoLooper has one or more file descriptor to interact with */
-int        iolooper_has_operations( IoLooper*  iol );
-/* Gets current time in milliseconds.
- * Return:
- *  Number of milliseconds corresponded to the current time on success, or -1
- *  on failure.
- */
-int64_t    iolooper_now(void);
-/* Waits for an I/O to occur before specific absolute time.
- * This routine should be used (instead of iolooper_wait) in cases when multiple
- * sequential I/O should be completed within given time interval. For instance,
- * consider the scenario, when "server" does two sequential writes, and "client"
- * now has to read data transferred with these two distinct writes. It might be
- * wasteful to do two reads, each with the same (large) timeout. Instead, it
- * would be better to assign a deadline for both reads before the first read,
- * and call iolooper_wait_absoulte with the same deadline value:
- *  int64_t deadline = iolooper_now() + TIMEOUT;
- *  if (iolooper_wait_absoulte(iol, deadline)) {
- *      // Process first buffer.
- *      (iolooper_wait_absoulte(iol, deadline)) {
- *          // Process second read
- *      }
- *  }
- * Param:
- *  iol IoLooper instance for an I/O.
- *  deadline Deadline (absoulte time in milliseconds) before which an I/O should
- *      occur.
- * Return:
- *  Number of I/O descriptors set in iol, if an I/O has occurred, 0 if no I/O
- *  occurred before the deadline, or -1 on error.
- */
-int iolooper_wait_absolute(IoLooper* iol, int64_t deadline);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* IOLOOPER_H */
diff --git a/tools/emulator/opengl/tests/event_injector/sockets.c b/tools/emulator/opengl/tests/event_injector/sockets.c
deleted file mode 100644
index a2cc334..0000000
--- a/tools/emulator/opengl/tests/event_injector/sockets.c
+++ /dev/null
@@ -1,1554 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifdef __linux__ /* Recent versions of glibc only define EAI_NODATA, which is an
-                    extension to the POSIX standard, if _GNU_SOURCE is defined. */
-#  define _GNU_SOURCE 1
-#endif
-
-#include "sockets.h"
-#include <fcntl.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-//#include "android/utils/path.h"
-//#include "android/utils/debug.h"
-//#include "android/utils/misc.h"
-//#include "android/utils/system.h"
-
-#define  D(...) ((void)0)
-
-#ifdef _WIN32
-#  define xxWIN32_LEAN_AND_MEAN
-#  define _WIN32_WINNT 0x501
-#  include <windows.h>
-#  include <winsock2.h>
-#  include <ws2tcpip.h>
-#else /* !_WIN32 */
-#  include <sys/ioctl.h>
-#  include <sys/socket.h>
-#  include <netinet/in.h>
-#  include <netinet/tcp.h>
-#  include <netdb.h>
-#  if HAVE_UNIX_SOCKETS
-#    include <sys/un.h>
-#    ifndef UNIX_PATH_MAX
-#      define  UNIX_PATH_MAX  (sizeof(((struct sockaddr_un*)0)->sun_path)-1)
-#    endif
-#  endif
-#endif /* !_WIN32 */
-
-#define MIN(x,y) ({ typeof(x)  _x = (x); typeof(y)  _y = (y); _x <= _y ? _x : _y; })
-#define AFREE(p)              free(p)
-#define AARRAY_NEW(p,count)   (p) = malloc(sizeof(*(p))*(count))
-#define AARRAY_NEW0(p,count)  (p) = calloc(sizeof(*(p)),(count))
-
-/* QSOCKET_CALL is used to deal with the fact that EINTR happens pretty
- * easily in QEMU since we use SIGALRM to implement periodic timers
- */
-#ifdef _WIN32
-#  define  QSOCKET_CALL(_ret,_cmd)   \
-    do { _ret = (_cmd); } while ( _ret < 0 && WSAGetLastError() == WSAEINTR )
-#else
-#  define  QSOCKET_CALL(_ret,_cmd)   \
-    do { \
-        errno = 0; \
-        do { _ret = (_cmd); } while ( _ret < 0 && errno == EINTR ); \
-    } while (0);
-#endif
-
-#ifdef _WIN32
-
-#include <errno.h>
-
-static int  winsock_error;
-
-#define  WINSOCK_ERRORS_LIST \
-    EE(WSA_INVALID_HANDLE,EINVAL,"invalid handle") \
-    EE(WSA_NOT_ENOUGH_MEMORY,ENOMEM,"not enough memory") \
-    EE(WSA_INVALID_PARAMETER,EINVAL,"invalid parameter") \
-    EE(WSAEINTR,EINTR,"interrupted function call") \
-    EE(WSAEALREADY,EALREADY,"operation already in progress") \
-    EE(WSAEBADF,EBADF,"bad file descriptor") \
-    EE(WSAEACCES,EACCES,"permission denied") \
-    EE(WSAEFAULT,EFAULT,"bad address") \
-    EE(WSAEINVAL,EINVAL,"invalid argument") \
-    EE(WSAEMFILE,EMFILE,"too many opened files") \
-    EE(WSAEWOULDBLOCK,EWOULDBLOCK,"resource temporarily unavailable") \
-    EE(WSAEINPROGRESS,EINPROGRESS,"operation now in progress") \
-    EE(WSAEALREADY,EAGAIN,"operation already in progress") \
-    EE(WSAENOTSOCK,EBADF,"socket operation not on socket") \
-    EE(WSAEDESTADDRREQ,EDESTADDRREQ,"destination address required") \
-    EE(WSAEMSGSIZE,EMSGSIZE,"message too long") \
-    EE(WSAEPROTOTYPE,EPROTOTYPE,"wrong protocol type for socket") \
-    EE(WSAENOPROTOOPT,ENOPROTOOPT,"bad protocol option") \
-    EE(WSAEADDRINUSE,EADDRINUSE,"address already in use") \
-    EE(WSAEADDRNOTAVAIL,EADDRNOTAVAIL,"cannot assign requested address") \
-    EE(WSAENETDOWN,ENETDOWN,"network is down") \
-    EE(WSAENETUNREACH,ENETUNREACH,"network unreachable") \
-    EE(WSAENETRESET,ENETRESET,"network dropped connection on reset") \
-    EE(WSAECONNABORTED,ECONNABORTED,"software caused connection abort") \
-    EE(WSAECONNRESET,ECONNRESET,"connection reset by peer") \
-    EE(WSAENOBUFS,ENOBUFS,"no buffer space available") \
-    EE(WSAEISCONN,EISCONN,"socket is already connected") \
-    EE(WSAENOTCONN,ENOTCONN,"socket is not connected") \
-    EE(WSAESHUTDOWN,ESHUTDOWN,"cannot send after socket shutdown") \
-    EE(WSAETOOMANYREFS,ETOOMANYREFS,"too many references") \
-    EE(WSAETIMEDOUT,ETIMEDOUT,"connection timed out") \
-    EE(WSAECONNREFUSED,ECONNREFUSED,"connection refused") \
-    EE(WSAELOOP,ELOOP,"cannot translate name") \
-    EE(WSAENAMETOOLONG,ENAMETOOLONG,"name too long") \
-    EE(WSAEHOSTDOWN,EHOSTDOWN,"host is down") \
-    EE(WSAEHOSTUNREACH,EHOSTUNREACH,"no route to host") \
-
-typedef struct {
-    int          winsock;
-    int          unix;
-    const char*  string;
-} WinsockError;
-
-static const WinsockError  _winsock_errors[] = {
-#define  EE(w,u,s)   { w, u, s },
-    WINSOCK_ERRORS_LIST
-#undef   EE
-    { -1, -1, NULL }
-};
-
-/* this function reads the latest winsock error code and updates
- * errno to a matching value. It also returns the new value of
- * errno.
- */
-static int
-_fix_errno( void )
-{
-    const WinsockError*  werr = _winsock_errors;
-    int                  unix = EINVAL;  /* generic error code */
-
-    winsock_error = WSAGetLastError();
-
-    for ( ; werr->string != NULL; werr++ ) {
-        if (werr->winsock == winsock_error) {
-            unix = werr->unix;
-            break;
-        }
-    }
-    errno = unix;
-    return -1;
-}
-
-static int
-_set_errno( int  code )
-{
-    winsock_error = -1;
-    errno         = code;
-    return -1;
-}
-
-/* this function returns a string describing the latest Winsock error */
-const char*
-_errno_str(void)
-{
-    const WinsockError*  werr   = _winsock_errors;
-    const char*          result = NULL;
-
-    for ( ; werr->string; werr++ ) {
-        if (werr->winsock == winsock_error) {
-            result = werr->string;
-            break;
-        }
-    }
-
-    if (result == NULL) {
-        result = "Unknown socket error";
-    }
-    return result;
-}
-#else
-static int
-_fix_errno( void )
-{
-    return -1;
-}
-
-static int
-_set_errno( int  code )
-{
-    errno = code;
-    return -1;
-}
-#endif
-
-/* socket types */
-
-static int
-socket_family_to_bsd( SocketFamily  family )
-{
-    switch (family) {
-    case SOCKET_INET: return AF_INET;
-    case SOCKET_IN6:  return AF_INET6;
-#if HAVE_UNIX_SOCKETS
-    case SOCKET_UNIX: return AF_LOCAL;
-#endif
-    default: return -1;
-    }
-}
-
-static int
-socket_type_to_bsd( SocketType  type )
-{
-    switch (type) {
-        case SOCKET_DGRAM:  return SOCK_DGRAM;
-        case SOCKET_STREAM: return SOCK_STREAM;
-        default: return 0;
-    }
-}
-
-static SocketType
-socket_type_from_bsd( int  type )
-{
-    switch (type) {
-        case SOCK_DGRAM:  return SOCKET_DGRAM;
-        case SOCK_STREAM: return SOCKET_STREAM;
-        default:          return (SocketType) SOCKET_UNSPEC;
-    }
-}
-
-#if 0
-static int
-socket_type_check( SocketType  type )
-{
-    return (type == SOCKET_DGRAM || type == SOCKET_STREAM);
-}
-#endif
-
-typedef union {
-    struct sockaddr     sa[1];
-    struct sockaddr_in  in[1];
-#if HAVE_IN6_SOCKETS
-    struct sockaddr_in6 in6[1];
-#endif
-#if HAVE_UNIX_SOCKETS
-    struct sockaddr_un  un[1];
-#endif
-} sockaddr_storage;
-
-/* socket addresses */
-
-void
-sock_address_init_inet( SockAddress*  a, uint32_t  ip, uint16_t  port )
-{
-    a->family         = SOCKET_INET;
-    a->u.inet.port    = port;
-    a->u.inet.address = ip;
-}
-
-void
-sock_address_init_in6 ( SockAddress*  a, const uint8_t*  ip6[16], uint16_t  port )
-{
-    a->family = SOCKET_IN6;
-    a->u.in6.port = port;
-    memcpy( a->u.in6.address, ip6, sizeof(a->u.in6.address) );
-}
-
-void
-sock_address_init_unix( SockAddress*  a, const char*  path )
-{
-    a->family       = SOCKET_UNIX;
-    a->u._unix.path  = strdup(path ? path : "");
-    a->u._unix.owner = 1;
-}
-
-void  sock_address_done( SockAddress*  a )
-{
-    if (a->family == SOCKET_UNIX && a->u._unix.owner) {
-        a->u._unix.owner = 0;
-        free((char*)a->u._unix.path);
-    }
-}
-
-static char*
-format_char( char*  buf, char*  end, int  c )
-{
-    if (buf < end) {
-        if (buf+1 == end) {
-            *buf++ = 0;
-        } else {
-            *buf++ = (char) c;
-            *buf    = 0;
-        }
-    }
-    return buf;
-}
-
-static char*
-format_str( char*  buf, char*  end, const char*  str )
-{
-    int  len   = strlen(str);
-    int  avail = end - buf;
-
-    if (len > avail)
-        len = avail;
-
-    memcpy( buf, str, len );
-    buf += len;
-
-    if (buf == end)
-        buf[-1] = 0;
-    else
-        buf[0] = 0;
-
-    return buf;
-}
-
-static char*
-format_unsigned( char*  buf, char*  end, unsigned  val )
-{
-    char  temp[16];
-    int   nn;
-
-    for ( nn = 0; val != 0; nn++ ) {
-        int  rem = val % 10;
-        temp[nn] = '0'+rem;
-        val /= 10;
-    }
-
-    if (nn == 0)
-        temp[nn++] = '0';
-
-    while (nn > 0)
-        buf = format_char(buf, end, temp[--nn]);
-
-    return buf;
-}
-
-static char*
-format_hex( char*  buf, char*  end, unsigned  val, int  ndigits )
-{
-    int   shift = 4*ndigits;
-    static const char   hex[16] = "0123456789abcdef";
-
-    while (shift >= 0) {
-        buf = format_char(buf, end, hex[(val >> shift) & 15]);
-        shift -= 4;
-    }
-    return buf;
-}
-
-static char*
-format_ip4( char*  buf, char*  end, uint32_t  ip )
-{
-    buf = format_unsigned( buf, end, (unsigned)(ip >> 24) );
-    buf = format_char( buf, end, '.');
-    buf = format_unsigned( buf, end, (unsigned)((ip >> 16) & 255));
-    buf = format_char( buf, end, '.');
-    buf = format_unsigned( buf, end, (unsigned)((ip >> 8) & 255));
-    buf = format_char( buf, end, '.');
-    buf = format_unsigned( buf, end, (unsigned)(ip & 255));
-    return buf;
-}
-
-static char*
-format_ip6( char*  buf, char*  end, const uint8_t*  ip6 )
-{
-    int  nn;
-    for (nn = 0; nn < 8; nn++) {
-        int  val = (ip6[0] << 16) | ip6[1];
-        ip6 += 2;
-        if (nn > 0)
-            buf = format_char(buf, end, ':');
-        if (val == 0)
-            continue;
-        buf  = format_hex(buf, end, val, 4);
-    }
-    return buf;
-}
-
-const char*
-sock_address_to_string( const SockAddress*  a )
-{
-    static char buf0[PATH_MAX];
-    char *buf = buf0, *end = buf + sizeof(buf0);
-
-    switch (a->family) {
-    case SOCKET_INET:
-        buf = format_ip4( buf, end, a->u.inet.address );
-        buf = format_char( buf, end, ':' );
-        buf = format_unsigned( buf, end, (unsigned) a->u.inet.port );
-        break;
-
-    case SOCKET_IN6:
-        buf = format_ip6( buf, end, a->u.in6.address );
-        buf = format_char( buf, end, ':' );
-        buf = format_unsigned( buf, end, (unsigned) a->u.in6.port );
-        break;
-
-    case SOCKET_UNIX:
-        buf = format_str( buf, end, a->u._unix.path );
-        break;
-
-    default:
-        return NULL;
-    }
-
-    return buf0;
-}
-
-int
-sock_address_equal( const SockAddress*  a, const SockAddress*  b )
-{
-    if (a->family != b->family)
-        return 0;
-
-    switch (a->family) {
-    case SOCKET_INET:
-        return (a->u.inet.address == b->u.inet.address &&
-                a->u.inet.port    == b->u.inet.port);
-
-    case SOCKET_IN6:
-        return (!memcmp(a->u.in6.address, b->u.in6.address, 16) &&
-                a->u.in6.port == b->u.in6.port);
-
-    case SOCKET_UNIX:
-        return (!strcmp(a->u._unix.path, b->u._unix.path));
-
-    default:
-        return 0;
-    }
-}
-
-int
-sock_address_get_port( const SockAddress*  a )
-{
-    switch (a->family) {
-    case SOCKET_INET:
-        return a->u.inet.port;
-    case SOCKET_IN6:
-        return a->u.in6.port;
-    default:
-        return -1;
-    }
-}
-
-void
-sock_address_set_port( SockAddress*  a, uint16_t  port )
-{
-    switch (a->family) {
-    case SOCKET_INET:
-        a->u.inet.port = port;
-        break;
-    case SOCKET_IN6:
-        a->u.in6.port = port;
-        break;
-    default:
-        ;
-    }
-}
-
-const char*
-sock_address_get_path( const SockAddress*  a )
-{
-    if (a->family == SOCKET_UNIX)
-        return a->u._unix.path;
-    else
-        return NULL;
-}
-
-int
-sock_address_get_ip( const SockAddress*  a )
-{
-    if (a->family == SOCKET_INET)
-        return a->u.inet.address;
-
-    return -1;
-}
-
-#if 0
-char*
-bufprint_sock_address( char*  p, char*  end, const SockAddress*  a )
-{
-    switch (a->family) {
-    case SOCKET_INET:
-        {
-            uint32_t  ip = a->u.inet.address;
-
-            return bufprint( p, end, "%d.%d.%d.%d:%d",
-                         (ip >> 24) & 255, (ip >> 16) & 255,
-                         (ip >> 8) & 255, ip & 255,
-                         a->u.inet.port );
-        }
-    case SOCKET_IN6:
-        {
-            int             nn     = 0;
-            const char*     column = "";
-            const uint8_t*  tab    = a->u.in6.address;
-            for (nn = 0; nn < 16; nn += 2) {
-                p = bufprint(p, end, "%s%04x", column, (tab[n] << 8) | tab[n+1]);
-                column = ":";
-            }
-            return bufprint(p, end, ":%d", a->u.in6.port);
-        }
-    case SOCKET_UNIX:
-        {
-            return bufprint(p, end, "%s", a->u._unix.path);
-        }
-    default:
-        return p;
-    }
-}
-#endif
-
-static int
-sock_address_to_bsd( const SockAddress*  a, sockaddr_storage*  paddress, socklen_t  *psize )
-{
-    switch (a->family) {
-    case SOCKET_INET:
-        {
-            struct sockaddr_in*  dst = paddress->in;
-
-            *psize = sizeof(*dst);
-
-            memset( paddress, 0, *psize );
-
-            dst->sin_family      = AF_INET;
-            dst->sin_port        = htons(a->u.inet.port);
-            dst->sin_addr.s_addr = htonl(a->u.inet.address);
-        }
-        break;
-
-#if HAVE_IN6_SOCKETS
-    case SOCKET_IN6:
-        {
-            struct sockaddr_in6*  dst = paddress->in6;
-
-            *psize = sizeof(*dst);
-
-            memset( paddress, 0, *psize );
-
-            dst->sin6_family = AF_INET6;
-            dst->sin6_port   = htons(a->u.in6.port);
-            memcpy( dst->sin6_addr.s6_addr, a->u.in6.address, 16 );
-        }
-        break;
-#endif /* HAVE_IN6_SOCKETS */
-
-#if HAVE_UNIX_SOCKETS
-    case SOCKET_UNIX:
-        {
-            int                  slen = strlen(a->u._unix.path);
-            struct sockaddr_un*  dst = paddress->un;
-
-            if (slen >= (int)UNIX_PATH_MAX)
-                return -1;
-
-            memset( dst, 0, sizeof(*dst) );
-
-            dst->sun_family = AF_LOCAL;
-            memcpy( dst->sun_path, a->u._unix.path, slen );
-            dst->sun_path[slen] = 0;
-
-            *psize = (char*)&dst->sun_path[slen+1] - (char*)dst;
-        }
-        break;
-#endif /* HAVE_UNIX_SOCKETS */
-
-    default:
-        return _set_errno(EINVAL);
-    }
-
-    return 0;
-}
-
-static int
-sock_address_from_bsd( SockAddress*  a, const void*  from, size_t  fromlen )
-{
-    switch (((struct sockaddr *)from)->sa_family) {
-    case AF_INET:
-        {
-           const struct sockaddr_in*  src = from;
-
-            if (fromlen < sizeof(*src))
-                return _set_errno(EINVAL);
-
-            a->family         = SOCKET_INET;
-            a->u.inet.port    = ntohs(src->sin_port);
-            a->u.inet.address = ntohl(src->sin_addr.s_addr);
-        }
-        break;
-
-#ifdef HAVE_IN6_SOCKETS
-    case AF_INET6:
-        {
-            const struct sockaddr_in6*  src = from;
-
-            if (fromlen < sizeof(*src))
-                return _set_errno(EINVAL);
-
-            a->family     = SOCKET_IN6;
-            a->u.in6.port = ntohs(src->sin6_port);
-            memcpy(a->u.in6.address, src->sin6_addr.s6_addr, 16);
-        }
-        break;
-#endif
-
-#ifdef HAVE_UNIX_SOCKETS
-    case AF_LOCAL:
-        {
-            const struct sockaddr_un*  src = from;
-            char*                end;
-
-            if (fromlen < sizeof(*src))
-                return _set_errno(EINVAL);
-
-            /* check that the path is zero-terminated */
-            end = memchr(src->sun_path, 0, UNIX_PATH_MAX);
-            if (end == NULL)
-                return _set_errno(EINVAL);
-
-            a->family = SOCKET_UNIX;
-            a->u._unix.owner = 1;
-            a->u._unix.path  = strdup(src->sun_path);
-        }
-        break;
-#endif
-
-    default:
-        return _set_errno(EINVAL);
-    }
-    return 0;
-}
-
-
-int
-sock_address_init_resolve( SockAddress*  a, const char*  hostname, uint16_t  port, int  preferIn6 )
-{
-    struct addrinfo   hints[1];
-    struct addrinfo*  res;
-    int                ret;
-
-    memset(hints, 0, sizeof(hints));
-    hints->ai_family   = preferIn6 ? AF_INET6 : AF_UNSPEC;
-
-    ret = getaddrinfo(hostname, NULL, hints, &res);
-    if (ret != 0) {
-        int  err;
-
-        switch (ret) {
-        case EAI_AGAIN:  /* server is down */
-        case EAI_FAIL:   /* server is sick */
-            err = EHOSTDOWN;
-            break;
-
-#ifdef EAI_NODATA
-        case EAI_NODATA:
-#endif
-        case EAI_NONAME:
-            err = ENOENT;
-            break;
-
-        case EAI_MEMORY:
-            err = ENOMEM;
-            break;
-
-        default:
-            err = EINVAL;
-        }
-        return _set_errno(err);
-    }
-
-    /* Parse the returned list of addresses. */
-    {
-        struct addrinfo*  res_ipv4 = NULL;
-        struct addrinfo*  res_ipv6 = NULL;
-        struct addrinfo*  r;
-
-       /* If preferIn6 is false, we stop on the first IPv4 address,
-        * otherwise, we stop on the first IPv6 one
-        */
-        for (r = res; r != NULL; r = r->ai_next) {
-            if (r->ai_family == AF_INET && res_ipv4 == NULL) {
-                res_ipv4 = r;
-                if (!preferIn6)
-                    break;
-            }
-            else if (r->ai_family == AF_INET6 && res_ipv6 == NULL) {
-                res_ipv6 = r;
-                if (preferIn6)
-                    break;
-            }
-        }
-
-        /* Select the best address in 'r', which will be NULL
-         * if there is no corresponding address.
-         */
-        if (preferIn6) {
-            r = res_ipv6;
-            if (r == NULL)
-                r = res_ipv4;
-        } else {
-            r = res_ipv4;
-            if (r == NULL)
-                r = res_ipv6;
-        }
-
-        if (r == NULL) {
-            ret = _set_errno(ENOENT);
-            goto Exit;
-        }
-
-        /* Convert to a SockAddress */
-        ret = sock_address_from_bsd( a, r->ai_addr, r->ai_addrlen );
-        if (ret < 0)
-            goto Exit;
-    }
-
-    /* need to set the port */
-    switch (a->family) {
-    case SOCKET_INET: a->u.inet.port = port; break;
-    case SOCKET_IN6:  a->u.in6.port  = port; break;
-    default: ;
-    }
-
-Exit:
-    freeaddrinfo(res);
-    return ret;
-}
-
-/* The Winsock headers for mingw lack some definitions */
-#ifndef AI_ADDRCONFIG
-#  define  AI_ADDRCONFIG  0
-#endif
-
-SockAddress**
-sock_address_list_create( const char*  hostname,
-                          const char*  port,
-                          unsigned     flags )
-{
-    SockAddress**    list = NULL;
-    SockAddress*     addr;
-    int              nn, count, ret;
-    struct addrinfo  ai, *res, *e;
-
-    memset(&ai, 0, sizeof(ai));
-    ai.ai_flags   |= AI_ADDRCONFIG;
-    ai.ai_family   = PF_UNSPEC;
-
-    if (flags & SOCKET_LIST_FORCE_INET)
-        ai.ai_family = PF_INET;
-    else if (flags & SOCKET_LIST_FORCE_IN6)
-        ai.ai_family = PF_INET6;
-
-    if (flags & SOCKET_LIST_PASSIVE)
-        ai.ai_flags |= AI_PASSIVE;
-    else
-        ai.ai_flags |= AI_CANONNAME;
-
-    if (flags & SOCKET_LIST_DGRAM)
-        ai.ai_socktype = SOCK_DGRAM;
-
-    while (1) {
-        struct addrinfo  hints = ai;
-
-        ret = getaddrinfo(hostname, port, &hints, &res);
-        if (ret == 0)
-            break;
-
-        switch (ret) {
-#ifdef EAI_ADDRFAMILY
-        case EAI_ADDRFAMILY:
-#endif
-        case EAI_NODATA:
-            _set_errno(ENOENT);
-            break;
-        case EAI_FAMILY:
-            _set_errno(EAFNOSUPPORT);
-            break;
-        case EAI_AGAIN:
-            _set_errno(EAGAIN);
-            break;
-#ifdef EAI_SYSTEM
-        case EAI_SYSTEM:
-            if (errno == EINTR)
-                continue;
-            break;
-#endif
-        default:
-            _set_errno(EINVAL);
-        }
-        return NULL;
-    }
-
-    /* allocate result list */
-    for (count = 0, e = res; e != NULL; e = e->ai_next)
-        count += 1;
-
-    AARRAY_NEW(list, count+1);
-    AARRAY_NEW(addr, count);
-
-    for (nn = 0, e = res; e != NULL; e = e->ai_next) {
-
-        ret = sock_address_from_bsd(addr, e->ai_addr, e->ai_addrlen);
-        if (ret < 0)
-            continue;
-
-        list[nn++] = addr++;
-    }
-    list[nn] = NULL;
-    freeaddrinfo(res);
-    return list;
-}
-
-SockAddress**
-sock_address_list_create2(const char* host_and_port, unsigned flags )
-{
-    char host_name[512];
-    const char* actual_host_name = "localhost";
-    // Parse host and port name.
-    const char* port_name = strchr(host_and_port, ':');
-    if (port_name != NULL) {
-        int to_copy = MIN((int)sizeof(host_name)-1, port_name - host_and_port);
-        if (to_copy != 0) {
-            memcpy(host_name, host_and_port, to_copy);
-            host_name[to_copy] = '\0';
-            actual_host_name = host_name;
-            port_name++;
-        } else {
-            return NULL;
-        }
-    } else {
-        port_name = host_and_port;
-    }
-    // Make sure that port_name is not empty.
-    if (port_name[0] == '\0') {
-        return NULL;
-    }
-    return sock_address_list_create(actual_host_name, port_name, flags);
-}
-
-void
-sock_address_list_free( SockAddress**  list )
-{
-    int  nn;
-    SockAddress*  addr;
-
-    if (list == NULL)
-        return;
-
-    addr = list[0];
-    for (nn = 0; list[nn] != NULL; nn++) {
-        sock_address_done(list[nn]);
-        list[nn] = NULL;
-    }
-    AFREE(addr);
-    AFREE(list);
-}
-
-int
-sock_address_get_numeric_info( SockAddress*  a,
-                               char*         host,
-                               size_t        hostlen,
-                               char*         serv,
-                               size_t        servlen )
-{
-    struct sockaddr*  saddr;
-    socklen_t         slen;
-    int               ret;
-
-    switch (a->family) {
-    case SOCKET_INET:
-        saddr = (struct sockaddr*) &a->u.inet.address;
-        slen  = sizeof(a->u.inet.address);
-        break;
-
-#if HAVE_IN6_SOCKET
-    case SOCKET_IN6:
-        saddr = (struct sockaddr*) &a->u.in6.address;
-        slen  = sizeof(a->u.in6.address);
-        break;
-#endif
-    default:
-        return _set_errno(EINVAL);
-    }
-
-    ret = getnameinfo( saddr, slen, host, hostlen, serv, servlen,
-                       NI_NUMERICHOST | NI_NUMERICSERV );
-
-    switch (ret) {
-    case 0:
-        break;
-    case EAI_AGAIN:
-        ret = EAGAIN;
-        break;
-    default:
-        ret = EINVAL;
-    }
-    return ret;
-}
-
-int
-socket_create( SocketFamily  family, SocketType  type )
-{
-    int   ret;
-    int   sfamily = socket_family_to_bsd(family);
-    int   stype   = socket_type_to_bsd(type);
-
-    if (sfamily < 0 || stype < 0) {
-        return _set_errno(EINVAL);
-    }
-
-    QSOCKET_CALL(ret, socket(sfamily, stype, 0));
-    if (ret < 0)
-        return _fix_errno();
-
-    return ret;
-}
-
-
-int
-socket_create_inet( SocketType  type )
-{
-    return socket_create( SOCKET_INET, type );
-}
-
-#if HAVE_IN6_SOCKETS
-int
-socket_create_in6 ( SocketType  type )
-{
-    return socket_create( SOCKET_IN6, type );
-}
-#endif
-
-#if HAVE_UNIX_SOCKETS
-int
-socket_create_unix( SocketType  type )
-{
-    return socket_create( SOCKET_UNIX, type );
-}
-#endif
-
-int  socket_can_read(int  fd)
-{
-#ifdef _WIN32
-    unsigned long  opt;
-
-    if (ioctlsocket(fd, FIONREAD, &opt) < 0)
-        return 0;
-
-    return opt;
-#else
-    int  opt;
-
-    if (ioctl(fd, FIONREAD, &opt) < 0)
-        return 0;
-
-    return opt;
-#endif
-}
-
-#define   SOCKET_CALL(cmd)  \
-    int  ret; \
-    QSOCKET_CALL(ret, (cmd)); \
-    if (ret < 0) \
-        return _fix_errno(); \
-    return ret; \
-
-int
-socket_send(int  fd, const void*  buf, int  buflen)
-{
-    SOCKET_CALL(send(fd, buf, buflen, 0))
-}
-
-int
-socket_send_oob( int  fd, const void*  buf, int  buflen )
-{
-    SOCKET_CALL(send(fd, buf, buflen, MSG_OOB));
-}
-
-int
-socket_sendto(int  fd, const void*  buf, int  buflen, const SockAddress*  to)
-{
-    sockaddr_storage  sa;
-    socklen_t         salen;
-
-    if (sock_address_to_bsd(to, &sa, &salen) < 0)
-        return -1;
-
-    SOCKET_CALL(sendto(fd, buf, buflen, 0, sa.sa, salen));
-}
-
-int
-socket_recv(int  fd, void*  buf, int  len)
-{
-    SOCKET_CALL(recv(fd, buf, len, 0));
-}
-
-int
-socket_recvfrom(int  fd, void*  buf, int  len, SockAddress*  from)
-{
-    sockaddr_storage  sa;
-    socklen_t         salen = sizeof(sa);
-    int               ret;
-
-    QSOCKET_CALL(ret,recvfrom(fd,buf,len,0,sa.sa,&salen));
-    if (ret < 0)
-        return _fix_errno();
-
-    if (sock_address_from_bsd(from, &sa, salen) < 0)
-        return -1;
-
-    return ret;
-}
-
-int
-socket_connect( int  fd, const SockAddress*  address )
-{
-    sockaddr_storage  addr;
-    socklen_t         addrlen;
-
-    if (sock_address_to_bsd(address, &addr, &addrlen) < 0)
-        return -1;
-
-    SOCKET_CALL(connect(fd,addr.sa,addrlen));
-}
-
-int
-socket_bind( int  fd, const SockAddress*  address )
-{
-    sockaddr_storage  addr;
-    socklen_t         addrlen;
-
-    if (sock_address_to_bsd(address, &addr, &addrlen) < 0)
-        return -1;
-
-    SOCKET_CALL(bind(fd, addr.sa, addrlen));
-}
-
-int
-socket_get_address( int  fd, SockAddress*  address )
-{
-    sockaddr_storage  addr;
-    socklen_t         addrlen = sizeof(addr);
-    int               ret;
-
-    QSOCKET_CALL(ret, getsockname(fd, addr.sa, &addrlen));
-    if (ret < 0)
-        return _fix_errno();
-
-    return sock_address_from_bsd(address, &addr, addrlen);
-}
-
-int
-socket_get_peer_address( int  fd, SockAddress*  address )
-{
-    sockaddr_storage  addr;
-    socklen_t         addrlen = sizeof(addr);
-    int               ret;
-
-    QSOCKET_CALL(ret, getpeername(fd, addr.sa, &addrlen));
-    if (ret < 0)
-        return _fix_errno();
-
-    return sock_address_from_bsd(address, &addr, addrlen);
-}
-
-int
-socket_listen( int  fd, int  backlog )
-{
-    SOCKET_CALL(listen(fd, backlog));
-}
-
-int
-socket_accept( int  fd, SockAddress*  address )
-{
-    sockaddr_storage  addr;
-    socklen_t         addrlen = sizeof(addr);
-    int               ret;
-
-    QSOCKET_CALL(ret, accept(fd, addr.sa, &addrlen));
-    if (ret < 0)
-        return _fix_errno();
-
-    if (address) {
-        if (sock_address_from_bsd(address, &addr, addrlen) < 0) {
-            socket_close(ret);
-            return -1;
-        }
-    }
-    return ret;
-}
-
-static int
-socket_getoption(int  fd, int  domain, int  option, int  defaut)
-{
-    int  ret;
-    while (1) {
-#ifdef _WIN32
-        DWORD opt = (DWORD)-1;
-#else
-        int  opt  = -1;
-#endif
-        socklen_t  optlen = sizeof(opt);
-        ret = getsockopt(fd, domain, option, (char*)&opt, &optlen);
-        if (ret == 0)
-            return (int)opt;
-        if (errno != EINTR)
-            return defaut;
-    }
-#undef OPT_CAST
-}
-
-
-SocketType socket_get_type(int fd)
-{
-    int   so_type = socket_getoption(fd, SOL_SOCKET, SO_TYPE, -1);
-    return socket_type_from_bsd(so_type);
-}
-
-int socket_set_nonblock(int fd)
-{
-#ifdef _WIN32
-    unsigned long opt = 1;
-    return ioctlsocket(fd, FIONBIO, &opt);
-#else
-    int   flags = fcntl(fd, F_GETFL);
-    return fcntl(fd, F_SETFL, flags | O_NONBLOCK);
-#endif
-}
-
-int socket_set_blocking(int fd)
-{
-#ifdef _WIN32
-    unsigned long opt = 0;
-    return ioctlsocket(fd, FIONBIO, &opt);
-#else
-    int   flags = fcntl(fd, F_GETFL);
-    return fcntl(fd, F_SETFL, flags & ~O_NONBLOCK);
-#endif
-}
-
-static int
-socket_setoption(int  fd, int  domain, int  option, int  _flag)
-{
-#ifdef _WIN32
-    DWORD  flag = (DWORD) _flag;
-#else
-    int    flag = _flag;
-#endif
-    return setsockopt( fd, domain, option, (const char*)&flag, sizeof(flag) );
-}
-
-int socket_set_xreuseaddr(int  fd)
-{
-#ifdef _WIN32
-   /* on Windows, SO_REUSEADDR is used to indicate that several programs can
-    * bind to the same port. this is completely different from the Unix
-    * semantics. instead of SO_EXCLUSIVEADDR to ensure that explicitely prevent
-    * this.
-    */
-    return socket_setoption(fd, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, 1);
-#else
-    return socket_setoption(fd, SOL_SOCKET, SO_REUSEADDR, 1);
-#endif
-}
-
-
-int socket_set_oobinline(int  fd)
-{
-    return socket_setoption(fd, SOL_SOCKET, SO_OOBINLINE, 1);
-}
-
-
-int  socket_set_nodelay(int  fd)
-{
-    return socket_setoption(fd, IPPROTO_TCP, TCP_NODELAY, 1);
-}
-
-int socket_set_ipv6only(int  fd)
-{
-/* IPV6_ONLY is only supported since Vista on Windows,
- * and the Mingw headers lack its definition anyway.
- */
-#if defined(_WIN32) && !defined(IPV6_V6ONLY)
-	return 0;
-#else
-    return socket_setoption(fd, IPPROTO_IPV6, IPV6_V6ONLY, 1);
-#endif
-}
-
-
-int socket_get_error(int fd)
-{
-    return socket_getoption(fd, SOL_SOCKET, SO_ERROR, -1);
-}
-
-#ifdef _WIN32
-#include <stdlib.h>
-
-static void socket_cleanup(void)
-{
-    WSACleanup();
-}
-
-int socket_init(void)
-{
-    WSADATA Data;
-    int ret, err;
-
-    ret = WSAStartup(MAKEWORD(2,2), &Data);
-    if (ret != 0) {
-        err = WSAGetLastError();
-        return -1;
-    }
-    atexit(socket_cleanup);
-    return 0;
-}
-
-#else /* !_WIN32 */
-
-int socket_init(void)
-{
-   return 0;   /* nothing to do on Unix */
-}
-
-#endif /* !_WIN32 */
-
-#ifdef _WIN32
-
-void
-socket_close( int  fd )
-{
-    int  old_errno = errno;
-
-    shutdown( fd, SD_BOTH );
-    /* we want to drain the socket before closing it */
-    //qemu_set_fd_handler( fd, socket_close_handler, NULL, (void*)fd );
-    closesocket(fd);
-
-    errno = old_errno;
-}
-
-#else /* !_WIN32 */
-
-#include <unistd.h>
-
-void
-socket_close( int  fd )
-{
-    int  old_errno = errno;
-
-    shutdown( fd, SHUT_RDWR );
-    close( fd );
-
-    errno = old_errno;
-}
-
-#endif /* !_WIN32 */
-
-
-static int
-socket_bind_server( int  s, const SockAddress*  to, SocketType  type )
-{
-    socket_set_xreuseaddr(s);
-
-    if (socket_bind(s, to) < 0) {
-        D("could not bind server socket address %s: %s",
-          sock_address_to_string(to), errno_str);
-        goto FAIL;
-    }
-
-    if (type == SOCKET_STREAM) {
-        if (socket_listen(s, 4) < 0) {
-            D("could not listen server socket %s: %s",
-              sock_address_to_string(to), errno_str);
-            goto FAIL;
-        }
-    }
-    return  s;
-
-FAIL:
-    socket_close(s);
-    return -1;
-}
-
-
-static int
-socket_connect_client( int  s, const SockAddress*  to )
-{
-    if (socket_connect(s, to) < 0) {
-        D( "could not connect client socket to %s: %s\n",
-           sock_address_to_string(to), errno_str );
-        socket_close(s);
-        return -1;
-    }
-
-    socket_set_nonblock( s );
-    return s;
-}
-
-
-static int
-socket_in_server( int  address, int  port, SocketType  type )
-{
-    SockAddress  addr;
-    int          s;
-
-    sock_address_init_inet( &addr, address, port );
-    s = socket_create_inet( type );
-    if (s < 0)
-        return -1;
-
-    return socket_bind_server( s, &addr, type );
-}
-
-
-static int
-socket_in_client( SockAddress*  to, SocketType  type )
-{
-    int  s;
-
-    s = socket_create_inet( type );
-    if (s < 0) return -1;
-
-    return socket_connect_client( s, to );
-}
-
-
-int
-socket_loopback_server( int  port, SocketType  type )
-{
-    return socket_in_server( SOCK_ADDRESS_INET_LOOPBACK, port, type );
-}
-
-int
-socket_loopback_client( int  port, SocketType  type )
-{
-    SockAddress  addr;
-
-    sock_address_init_inet( &addr, SOCK_ADDRESS_INET_LOOPBACK, port );
-    return socket_in_client( &addr, type );
-}
-
-
-int
-socket_network_client( const char*  host, int  port, SocketType  type )
-{
-    SockAddress  addr;
-
-    if (sock_address_init_resolve( &addr, host, port, 0) < 0)
-        return -1;
-
-    return socket_in_client( &addr, type );
-}
-
-
-int
-socket_anyaddr_server( int  port, SocketType  type )
-{
-    return socket_in_server( SOCK_ADDRESS_INET_ANY, port, type );
-}
-
-int
-socket_accept_any( int  server_fd )
-{
-    int  fd;
-
-    QSOCKET_CALL(fd, accept( server_fd, NULL, 0 ));
-    if (fd < 0) {
-        D( "could not accept client connection from fd %d: %s",
-           server_fd, errno_str );
-        return -1;
-    }
-
-    /* set to non-blocking */
-    socket_set_nonblock( fd );
-    return fd;
-}
-
-
-#if HAVE_UNIX_SOCKETS
-
-int
-socket_unix_server( const char*  name, SocketType  type )
-{
-    SockAddress   addr;
-    int           s, ret;
-
-    s = socket_create_unix( type );
-    if (s < 0)
-        return -1;
-
-    sock_address_init_unix( &addr, name );
-
-    do {
-        ret = unlink( name );
-    } while (ret < 0 && errno == EINTR);
-
-    ret = socket_bind_server( s, &addr, type );
-
-    sock_address_done( &addr );
-    return ret;
-}
-
-int
-socket_unix_client( const char*  name, SocketType  type )
-{
-    SockAddress   addr;
-    int           s, ret;
-
-    s = socket_create_unix(type);
-    if (s < 0)
-        return -1;
-
-    sock_address_init_unix( &addr, name );
-
-    ret =  socket_connect_client( s, &addr );
-
-    sock_address_done( &addr );
-    return ret;
-}
-
-#endif /* HAVE_UNIX_SOCKETS */
-
-
-
-int
-socket_pair(int *fd1, int *fd2)
-{
-#ifndef _WIN32
-    int   fds[2];
-    int   ret = socketpair(AF_UNIX, SOCK_STREAM, 0, fds);
-
-    if (!ret) {
-        socket_set_nonblock(fds[0]);
-        socket_set_nonblock(fds[1]);
-        *fd1 = fds[0];
-        *fd2 = fds[1];
-    }
-    return ret;
-#else /* _WIN32 */
-    /* on Windows, select() only works with network sockets, which
-     * means we absolutely cannot use Win32 PIPEs to implement
-     * socket pairs with the current event loop implementation.
-     * We're going to do like Cygwin: create a random pair
-     * of localhost TCP sockets and connect them together
-     */
-    int                 s0, s1, s2, port;
-    struct sockaddr_in  sockin;
-    socklen_t           len;
-
-    /* first, create the 'server' socket.
-     * a port number of 0 means 'any port between 1024 and 5000.
-     * see Winsock bind() documentation for details */
-    s0 = socket_loopback_server( 0, SOCK_STREAM );
-    if (s0 < 0)
-        return -1;
-
-    /* now connect a client socket to it, we first need to
-     * extract the server socket's port number */
-    len = sizeof sockin;
-    if (getsockname(s0, (struct sockaddr*) &sockin, &len) < 0) {
-        closesocket (s0);
-        return -1;
-    }
-
-    port = ntohs(sockin.sin_port);
-    s2   = socket_loopback_client( port, SOCK_STREAM );
-    if (s2 < 0) {
-        closesocket(s0);
-        return -1;
-    }
-
-    /* we need to accept the connection on the server socket
-     * this will create the second socket for the pair
-     */
-    len = sizeof sockin;
-    s1  = accept(s0, (struct sockaddr*) &sockin, &len);
-    if (s1 == INVALID_SOCKET) {
-        closesocket (s0);
-        closesocket (s2);
-        return -1;
-    }
-    socket_set_nonblock(s1);
-
-    /* close server socket */
-    closesocket(s0);
-    *fd1 = s1;
-    *fd2 = s2;
-    return 0;
-#endif /* _WIN32 */
-}
-
-
-
-int
-socket_mcast_inet_add_membership( int  s, uint32_t  ip )
-{
-    struct ip_mreq imr;
-
-    imr.imr_multiaddr.s_addr = htonl(ip);
-    imr.imr_interface.s_addr = htonl(INADDR_ANY);
-
-    if ( setsockopt( s, IPPROTO_IP, IP_ADD_MEMBERSHIP,
-                     (const char *)&imr,
-                     sizeof(struct ip_mreq)) < 0 )
-    {
-        return _fix_errno();
-    }
-    return 0;
-}
-
-int
-socket_mcast_inet_drop_membership( int  s, uint32_t  ip )
-{
-    struct ip_mreq imr;
-
-    imr.imr_multiaddr.s_addr = htonl(ip);
-    imr.imr_interface.s_addr = htonl(INADDR_ANY);
-
-    if ( setsockopt( s, IPPROTO_IP, IP_DROP_MEMBERSHIP,
-                     (const char *)&imr,
-                     sizeof(struct ip_mreq)) < 0 )
-    {
-        return _fix_errno();
-    }
-    return 0;
-}
-
-int
-socket_mcast_inet_set_loop( int  s, int  enabled )
-{
-    return socket_setoption( s, IPPROTO_IP, IP_MULTICAST_LOOP, !!enabled );
-}
-
-int
-socket_mcast_inet_set_ttl( int  s, int  ttl )
-{
-    return socket_setoption( s, IPPROTO_IP, IP_MULTICAST_TTL, ttl );
-}
-
-
-char*
-host_name( void )
-{
-    static char buf[256];  /* 255 is the max host name length supported by DNS */
-    int         ret;
-
-    QSOCKET_CALL(ret, gethostname(buf, sizeof(buf)));
-
-    if (ret < 0)
-        return "localhost";
-    else
-        return buf;
-}
diff --git a/tools/emulator/opengl/tests/event_injector/sockets.h b/tools/emulator/opengl/tests/event_injector/sockets.h
deleted file mode 100644
index ea48c5f..0000000
--- a/tools/emulator/opengl/tests/event_injector/sockets.h
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-/* headers to use the BSD sockets */
-#ifndef ANDROID_SOCKET_H
-#define ANDROID_SOCKET_H
-
-#include <stddef.h>
-#include <stdint.h>
-#include <errno.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* we're going to hide the implementation details of sockets behind
- * a simple wrapper interface declared here.
- *
- * all socket operations set the global 'errno' variable on error.
- * this is unlike Winsock which instead modifies another internal
- * variable accessed through WSAGetLastError() and WSASetLastError()
- */
-
-/* the wrapper will convert any Winsock error message into an errno
- * code for you. There are however a few standard Unix error codes
- * that are not defined by the MS C library headers, so we add them
- * here. We use the official Winsock error codes, which are documented
- * even though we don't want to include the Winsock headers
- */
-#ifdef _WIN32
-#  ifndef EINTR
-#    define EINTR        10004
-#  endif
-#  ifndef EAGAIN
-#    define EAGAIN       10035
-#  endif
-#  ifndef EWOULDBLOCK
-#    define EWOULDBLOCK  EAGAIN
-#  endif
-#  ifndef EINPROGRESS
-#    define EINPROGRESS  10036
-#  endif
-#  ifndef EALREADY
-#    define EALREADY     10037
-#  endif
-#  ifndef EDESTADDRREQ
-#    define EDESTADDRREQ 10039
-#  endif
-#  ifndef EMSGSIZE
-#    define EMSGSIZE     10040
-#  endif
-#  ifndef EPROTOTYPE
-#    define EPROTOTYPE   10041
-#  endif
-#  ifndef ENOPROTOOPT
-#    define ENOPROTOOPT  10042
-#  endif
-#  ifndef EAFNOSUPPORT
-#    define EAFNOSUPPORT 10047
-#  endif
-#  ifndef EADDRINUSE
-#    define EADDRINUSE   10048
-#  endif
-#  ifndef EADDRNOTAVAIL
-#    define EADDRNOTAVAIL 10049
-#  endif
-#  ifndef ENETDOWN
-#    define ENETDOWN     10050
-#  endif
-#  ifndef ENETUNREACH
-#    define ENETUNREACH  10051
-#  endif
-#  ifndef ENETRESET
-#    define ENETRESET    10052
-#  endif
-#  ifndef ECONNABORTED
-#    define ECONNABORTED 10053
-#  endif
-#  ifndef ECONNRESET
-#    define ECONNRESET   10054
-#  endif
-#  ifndef ENOBUFS
-#    define ENOBUFS      10055
-#  endif
-#  ifndef EISCONN
-#    define EISCONN      10056
-#  endif
-#  ifndef ENOTCONN
-#    define ENOTCONN     10057
-#  endif
-#  ifndef ESHUTDOWN
-#    define ESHUTDOWN     10058
-#  endif
-#  ifndef ETOOMANYREFS
-#    define ETOOMANYREFS  10059
-#  endif
-#  ifndef ETIMEDOUT
-#    define ETIMEDOUT     10060
-#  endif
-#  ifndef ECONNREFUSED
-#    define ECONNREFUSED  10061
-#  endif
-#  ifndef ELOOP
-#    define ELOOP         10062
-#  endif
-#  ifndef EHOSTDOWN
-#    define EHOSTDOWN     10064
-#  endif
-#  ifndef EHOSTUNREACH
-#    define EHOSTUNREACH  10065
-#  endif
-#endif /* _WIN32 */
-
-/* Define 'errno_str' as a handy macro to return the string
- * corresponding to a given errno code. On Unix, this is
- * equivalent to strerror(errno), but on Windows, this will
- * take care of Winsock-originated errors as well.
- */
-#ifdef _WIN32
-  extern const char*  _errno_str(void);
-#  define  errno_str   _errno_str()
-#else
-#  define  errno_str   strerror(errno)
-#endif
-
-/* always enable IPv6 sockets for now.
- * the QEMU internal router is not capable of
- * supporting them, but we plan to replace it
- * with something better in the future.
- */
-#define  HAVE_IN6_SOCKETS   1
-
-/* Unix sockets are not available on Win32 */
-#ifndef _WIN32
-#  define  HAVE_UNIX_SOCKETS  1
-#endif
-
-/* initialize the socket sub-system. this must be called before
- * using any of the declarations below.
- */
-int  socket_init( void );
-
-/* return the name of the current host */
-char*  host_name( void );
-
-/* supported socket types */
-typedef enum {
-    SOCKET_DGRAM = 0,
-    SOCKET_STREAM
-} SocketType;
-
-/* supported socket families */
-typedef enum {
-    SOCKET_UNSPEC,
-    SOCKET_INET,
-    SOCKET_IN6,
-    SOCKET_UNIX
-} SocketFamily;
-
-/* Generic socket address structure. Note that for Unix
- * sockets, the path is stored in a heap-allocated block,
- * unless the 'owner' field is cleared. If this is the case,
- */
-typedef struct {
-    SocketFamily  family;
-    union {
-        struct {
-            uint16_t   port;
-            uint32_t   address;
-        } inet;
-        struct {
-            uint16_t   port;
-            uint8_t    address[16];
-        } in6;
-        struct {
-            int          owner;
-            const char*  path;
-        } _unix;
-    } u;
-} SockAddress;
-
-#define  SOCK_ADDRESS_INET_ANY       0x00000000
-#define  SOCK_ADDRESS_INET_LOOPBACK  0x7f000001
-
-/* initialize a new IPv4 socket address, the IP address and port are
- * in host endianess.
- */
-void  sock_address_init_inet( SockAddress*  a, uint32_t  ip, uint16_t  port );
-
-/* Initialize an IPv6 socket address, the address is in network order
- * and the port in host endianess.
- */
-#if HAVE_IN6_SOCKETS
-void  sock_address_init_in6 ( SockAddress*  a, const uint8_t*  ip6[16], uint16_t  port );
-#endif
-
-/* Intialize a Unix socket address, this will copy the 'path' string into the
- * heap. You need to call sock_address_done() to release the copy
- */
-#if HAVE_UNIX_SOCKETS
-void  sock_address_init_unix( SockAddress*  a, const char*  path );
-#endif
-
-/* Finalize a socket address, only needed for now for Unix addresses */
-void  sock_address_done( SockAddress*  a );
-
-int   sock_address_equal( const SockAddress*  a, const SockAddress*  b );
-
-/* return a static string describing the address */
-const char*  sock_address_to_string( const SockAddress*  a );
-
-static __inline__
-SocketFamily  sock_address_get_family( const SockAddress*  a )
-{
-    return a->family;
-}
-
-/* return the port number of a given socket address, or -1 if it's a Unix one */
-int   sock_address_get_port( const SockAddress*  a );
-
-/* set the port number of a given socket address, don't do anything for Unix ones */
-void  sock_address_set_port( SockAddress*  a, uint16_t  port );
-
-/* return the path of a given Unix socket, returns NULL for non-Unix ones */
-const char*  sock_address_get_path( const SockAddress*  a );
-
-/* return the inet address, or -1 if it's not SOCKET_INET */
-int   sock_address_get_ip( const SockAddress*  a );
-
-/* bufprint a socket address into a human-readable string */
-char* bufprint_sock_address( char*  p, char*  end, const SockAddress*  a );
-
-/* resolve a hostname or decimal IPv4/IPv6 address into a socket address.
- * returns 0 on success, or -1 on failure. Note that the values or errno
- * set by this function are the following:
- *
- *   EINVAL    : invalid argument
- *   EHOSTDOWN : could not reach DNS server
- *   ENOENT    : no host with this name, or host doesn't have any IP address
- *   ENOMEM    : not enough memory to perform request
- */
-int   sock_address_init_resolve( SockAddress*  a,
-                                 const char*   hostname,
-                                 uint16_t      port,
-                                 int           preferIn6 );
-
-int  sock_address_get_numeric_info( SockAddress*  a,
-                                    char*         host,
-                                    size_t        hostlen,
-                                    char*         serv,
-                                    size_t        servlen );
-
-/* Support for listing all socket addresses of a given host */
-enum {
-    SOCKET_LIST_PASSIVE    = (1 << 0),
-    SOCKET_LIST_FORCE_INET = (1 << 1),
-    SOCKET_LIST_FORCE_IN6  = (1 << 2),
-    SOCKET_LIST_DGRAM      = (1 << 3),
-};
-
-/* resolve a host and service/port name into a list of SockAddress objects.
- * returns a NULL-terminated array of SockAddress pointers on success,
- * or NULL in case of failure, with the value of errno set to one of the
- * following:
- *
- *    EINVAL    : invalid argument
- *    EHOSTDOWN : could not reach DNS server
- *    ENOENT    : no host with this name, or host doesn't have IP address
- *    ENOMEM    : not enough memory to perform request
- *
- * other system-level errors can also be set depending on the host sockets
- * implementation.
- *
- * This function loops on EINTR so the caller shouldn't have to check for it.
- */
-SockAddress**  sock_address_list_create( const char*  hostname,
-                                         const char*  port,
-                                         unsigned     flags );
-
-/* resolve a string containing host and port name into a list of SockAddress
- * objects. Parameter host_and_port should be in format [host:]port, where
- * 'host' addresses the machine and must be resolvable into an IP address, and
- * 'port' is a decimal numeric value for the port. 'host' is optional, and if
- * ommited, localhost will be used.
- * returns a NULL-terminated array of SockAddress pointers on success,
- * or NULL in case of failure, with the value of errno set to one of the
- * following:
- *
- *    EINVAL    : invalid argument
- *    EHOSTDOWN : could not reach DNS server
- *    ENOENT    : no host with this name, or host doesn't have IP address
- *    ENOMEM    : not enough memory to perform request
- *
- * other system-level errors can also be set depending on the host sockets
- * implementation.
- *
- * This function loops on EINTR so the caller shouldn't have to check for it.
- */
-SockAddress**  sock_address_list_create2(const char*  host_and_port,
-                                         unsigned     flags );
-
-void sock_address_list_free( SockAddress**  list );
-
-/* create a new socket, return the socket number of -1 on failure */
-int  socket_create( SocketFamily  family, SocketType  type );
-
-/* create a new socket intended for IPv4 communication. returns the socket number,
- * or -1 on failure.
- */
-int   socket_create_inet( SocketType  type );
-
-/* create a new socket intended for IPv6 communication. returns the socket number,
- * or -1 on failure.
- */
-#if HAVE_IN6_SOCKETS
-int   socket_create_in6 ( SocketType  type );
-#endif
-
-/* create a unix/local domain socket. returns the socket number,
- * or -1 on failure.
- */
-#if HAVE_UNIX_SOCKETS
-int   socket_create_unix( SocketType  type );
-#endif
-
-/* return the type of a given socket */
-SocketType  socket_get_type(int  fd);
-
-/* set SO_REUSEADDR on Unix, SO_EXCLUSIVEADDR on Windows */
-int  socket_set_xreuseaddr(int  fd);
-
-/* set socket in non-blocking mode */
-int  socket_set_nonblock(int fd);
-
-/* set socket in blocking mode */
-int  socket_set_blocking(int fd);
-
-/* disable the TCP Nagle algorithm for lower latency */
-int  socket_set_nodelay(int fd);
-
-/* send OOB data inline for this socket */
-int  socket_set_oobinline(int  fd);
-
-/* force listening to IPv6 interfaces only */
-int  socket_set_ipv6only(int  fd);
-
-/* retrieve last socket error code */
-int  socket_get_error(int  fd);
-
-/* close an opened socket. Note that this is unlike the Unix 'close' because:
- * - it will properly shutdown the socket in the background
- * - it does not modify errno
- */
-void  socket_close( int  fd );
-
-/* the following functions are equivalent to the BSD sockets ones
- */
-int   socket_recv    ( int  fd, void*  buf, int  buflen );
-int   socket_recvfrom( int  fd, void*  buf, int  buflen, SockAddress*  from );
-
-int   socket_send  ( int  fd, const void*  buf, int  buflen );
-int   socket_send_oob( int  fd, const void*  buf, int  buflen );
-int   socket_sendto( int  fd, const void*  buf, int  buflen, const SockAddress*  to );
-
-int   socket_connect( int  fd, const SockAddress*  address );
-int   socket_bind( int  fd, const SockAddress*  address );
-int   socket_get_address( int  fd, SockAddress*  address );
-int   socket_get_peer_address( int  fd, SockAddress*  address );
-int   socket_listen( int  fd, int  backlog );
-int   socket_accept( int  fd, SockAddress*  address );
-
-/* returns the number of bytes that can be read from a socket */
-int   socket_can_read( int  fd );
-
-/* this call creates a pair of non-blocking sockets connected
- * to each other. this is equivalent to calling the Unix function:
- * socketpair(AF_LOCAL,SOCK_STREAM,0,&fds)
- *
- * on Windows, this will use a pair of TCP loopback sockets instead
- * returns 0 on success, -1 on error.
- */
-int  socket_pair(int  *fd1, int *fd2);
-
-/* create a server socket listening on the host's loopback interface */
-int  socket_loopback_server( int  port, SocketType  type );
-
-/* connect to a port on the host's loopback interface */
-int  socket_loopback_client( int  port, SocketType  type );
-
-/* create a server socket listening to a Unix domain path */
-#if HAVE_UNIX_SOCKETS
-int  socket_unix_server( const char*  name, SocketType  type );
-#endif
-
-/* create a Unix sockets and connects it to a Unix server */
-#if HAVE_UNIX_SOCKETS
-int  socket_unix_client( const char*  name, SocketType  type );
-#endif
-
-/* create an IPv4 client socket and connect it to a given host */
-int  socket_network_client( const char*  host, int  port, SocketType  type );
-
-/* create an IPv4 socket and binds it to a given port of the host's interface */
-int  socket_anyaddr_server( int  port, SocketType  type );
-
-/* accept a connection from the host's any interface, return the new socket
- * descriptor or -1 */
-int  socket_accept_any( int  server_fd );
-
-
-int  socket_mcast_inet_add_membership( int  s, uint32_t  ip );
-int  socket_mcast_inet_drop_membership( int  s, uint32_t  ip );
-int  socket_mcast_inet_set_loop( int  s, int  enabled );
-int  socket_mcast_inet_set_ttl( int  s, int  ttl );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ANDROID_SOCKET_H */
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/Android.mk b/tools/emulator/opengl/tests/gles_android_wrapper/Android.mk
index f7c8fed..f5254b7 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/Android.mk
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/Android.mk
@@ -48,7 +48,7 @@
 # Other builds are device-specific and will provide their own
 # version of this file to point to the appropriate HW EGL libraries.
 #
-ifneq (,$(filter full full_x86 sdk sdk_x86,$(TARGET_PRODUCT)))
+ifneq (,$(filter full full_x86 full_mips sdk sdk_x86 sdk_mips,$(TARGET_PRODUCT)))
 ifeq (,$(BUILD_EMULATOR_OPENGL_DRIVER))
 include $(CLEAR_VARS)
 
@@ -61,7 +61,7 @@
 
 include $(BUILD_PREBUILT)
 endif # building 'real' driver BUILD_EMULATOR_OPENGL_DRIVER
-endif # TARGET_PRODUCT in 'full sdk full_x86 sdk_x86'
+endif # TARGET_PRODUCT in 'full sdk full_x86 sdk_x86 full_mips sdk_mips'
 
 #### gles_emul.cfg ####
 include $(CLEAR_VARS)
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/ApiInitializer.h b/tools/emulator/opengl/tests/gles_android_wrapper/ApiInitializer.h
index 7dc5006..793c735 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/ApiInitializer.h
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/ApiInitializer.h
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #ifndef _API_INITIALIZER_H_
 #define _API_INITIALIZER_H_
 #include <stdlib.h>
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/ServerConnection.cpp b/tools/emulator/opengl/tests/gles_android_wrapper/ServerConnection.cpp
index 1204264..ff4e390 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/ServerConnection.cpp
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/ServerConnection.cpp
@@ -83,7 +83,7 @@
         QemuPipeStream*  pipeStream = new QemuPipeStream(bufsize);
 
         if (pipeStream->connect() < 0) {
-            LOGE("couldn't connect to host server\n");
+            ALOGE("couldn't connect to host server\n");
             delete pipeStream;
             return -1;
         }
@@ -102,7 +102,7 @@
         }
 
         if (tcpStream->connect(hostname, CODEC_SERVER_PORT) < 0) {
-            LOGE("couldn't connect to %s\n", hostname);
+            ALOGE("couldn't connect to %s\n", hostname);
             free(hostname);
             delete tcpStream;
             return -1;
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp b/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp
index 1ee2b6a..1e2e456 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/egl.cpp
@@ -58,7 +58,7 @@
 {
     void *driverLib = dlopen(driverLibName, RTLD_NOW | RTLD_LOCAL);
     if (driverLib == NULL) {
-        LOGE("failed to load %s : %s\n", driverLibName, dlerror());
+        ALOGE("failed to load %s : %s\n", driverLibName, dlerror());
         return -1;
     }
 
@@ -66,13 +66,13 @@
     createFcn_t createFcn;
     createFcn = (createFcn_t) dlsym(driverLib, "createFromLib");
     if (createFcn == NULL) {
-        LOGE("failed to load createFromLib constructor function\n");
+        ALOGE("failed to load createFromLib constructor function\n");
         return -1;
     }
 
     void *implLib = dlopen(implLibName, RTLD_NOW | RTLD_LOCAL);
     if (implLib == NULL) {
-        LOGE("couldn't open %s", implLibName);
+        ALOGE("couldn't open %s", implLibName);
         return -2;
     }
     *dispatchTable = createFcn(implLib, accessor);
@@ -85,7 +85,7 @@
 
     // XXX - we do not dlclose the driver library, so its not initialized when
     // later loaded by android - is this required?
-    LOGD("loading %s into %s complete\n", implLibName, driverLibName);
+    ALOGD("loading %s into %s complete\n", implLibName, driverLibName);
     return 0;
 
 }
@@ -112,20 +112,20 @@
             // we need to obtain our process name from the command line;
             FILE *fp = fopen("/proc/self/cmdline", "rt");
             if (fp == NULL) {
-                LOGE("couldn't open /proc/self/cmdline\n");
+                ALOGE("couldn't open /proc/self/cmdline\n");
                 return NULL;
             }
 
             char line[1000];
             if (fgets(line, sizeof(line), fp) == NULL) {
-                LOGE("couldn't read the self cmdline from \n");
+                ALOGE("couldn't read the self cmdline from \n");
                 fclose(fp);
                 return NULL;
             }
             fclose(fp);
 
             if (line[0] == '\0') {
-                LOGE("cmdline is empty\n");
+                ALOGE("cmdline is empty\n");
                 return NULL;
             }
 
@@ -155,11 +155,11 @@
 {
     const char *procname = getProcName();
     if (procname == NULL) return false;
-    LOGD("isNeedEncode? for %s\n", procname);
+    ALOGD("isNeedEncode? for %s\n", procname);
     // check on our whitelist
     FILE *fp = fopen(GLES_EMUL_TARGETS_FILE, "rt");
     if (fp == NULL) {
-        LOGE("couldn't open %s\n", GLES_EMUL_TARGETS_FILE);
+        ALOGE("couldn't open %s\n", GLES_EMUL_TARGETS_FILE);
         return false;
     }
 
@@ -173,7 +173,7 @@
             char c = line[procnameLen];
             if (c == '\0' || c == ' ' || c == '\t' || c == '\n') {
                 found = true;
-                LOGD("should use encoder for %s\n", procname);
+                ALOGD("should use encoder for %s\n", procname);
                 break;
             }
         }
@@ -187,7 +187,7 @@
     //
     // Load our back-end implementation of EGL/GLES
     //
-    LOGD("Loading egl dispatch for %s\n", getProcName());
+    ALOGD("Loading egl dispatch for %s\n", getProcName());
 
     void *gles_android = dlopen("/system/lib/egl/libGLES_android.so", RTLD_NOW | RTLD_LOCAL);
     if (!gles_android) {
@@ -213,7 +213,7 @@
         // initialize a connection to the server, and the GLESv1/v2 encoders;
         ServerConnection * connection = ServerConnection::s_getServerConnection();
         if (connection == NULL) {
-            LOGE("couldn't create server connection\n");
+            ALOGE("couldn't create server connection\n");
             s_needEncode = false;
         }
     }
@@ -231,7 +231,7 @@
     }
 
     if (!s_needEncode) {
-        LOGD("Initializing native opengl for %s\n", getProcName());
+        ALOGD("Initializing native opengl for %s\n", getProcName());
         initApi<gl_wrapper_context_t>(GLESv1_DRIVER, GLES_android_LIB, &g_gl_dispatch, getGLContext);
         // try to initialize gl2 from GLES, though its probably going to fail
         initApi<gl2_wrapper_context_t>(GLESv2_DRIVER, GLES_android_LIB, &g_gl2_dispatch, getGL2Context);
@@ -313,7 +313,7 @@
             if (attribs[i + 1] & EGL_OPENGL_ES2_BIT) {
                 attribs[i + 1] &= ~EGL_OPENGL_ES2_BIT;
                 attribs[i + 1] |= EGL_OPENGL_ES_BIT;
-                LOGD("removing ES2 bit 0x%x\n", attribs[i + 1]);
+                ALOGD("removing ES2 bit 0x%x\n", attribs[i + 1]);
                 if (isES2 != NULL) *isES2 = true;
             }
         }
@@ -331,11 +331,11 @@
                                               configs,
                                               config_size,
                                               num_config);
-        LOGD("eglChooseConfig: %d configs found\n", *num_config);
+        ALOGD("eglChooseConfig: %d configs found\n", *num_config);
         if (*num_config == 0 && attribs != NULL) {
-            LOGD("requested attributes:\n");
+            ALOGD("requested attributes:\n");
             for (int i = 0; attribs[i] != EGL_NONE; i++) {
-                LOGD("%d: 0x%x\n", i, attribs[i]);
+                ALOGD("%d: 0x%x\n", i, attribs[i]);
             }
         }
 
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/gles.cpp b/tools/emulator/opengl/tests/gles_android_wrapper/gles.cpp
index f0a22aa..c0949c8 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/gles.cpp
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/gles.cpp
@@ -27,7 +27,7 @@
 {
     s_dispatch = create_gles_dispatch(gles_android);
     if (s_dispatch == NULL) {
-        LOGE("failed to create gles dispatch\n");
+        ALOGE("failed to create gles dispatch\n");
     }
 }
 
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/glesv1_emul_ifc.cpp b/tools/emulator/opengl/tests/gles_android_wrapper/glesv1_emul_ifc.cpp
index 41e7b7a..26c98a8 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/glesv1_emul_ifc.cpp
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/glesv1_emul_ifc.cpp
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include <stdlib.h>
 #include "ApiInitializer.h"
 #include <dlfcn.h>
diff --git a/tools/emulator/opengl/tests/gles_android_wrapper/glesv2_emul_ifc.cpp b/tools/emulator/opengl/tests/gles_android_wrapper/glesv2_emul_ifc.cpp
index cf0dfed..4ae13dd 100644
--- a/tools/emulator/opengl/tests/gles_android_wrapper/glesv2_emul_ifc.cpp
+++ b/tools/emulator/opengl/tests/gles_android_wrapper/glesv2_emul_ifc.cpp
@@ -1,3 +1,19 @@
+/*
+* Copyright 2011 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
 #include <stdlib.h>
 #include "ApiInitializer.h"
 #include <dlfcn.h>
diff --git a/tools/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk b/tools/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk
deleted file mode 100644
index a73f6b8..0000000
--- a/tools/emulator/opengl/tests/translator_tests/GLES_CM/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-$(call emugl-begin-host-executable,triangleCM)
-$(call emugl-import,libEGL_translator libGLES_CM_translator)
-
-PREBUILT := $(HOST_PREBUILT_TAG)
-LOCAL_SDL_CONFIG ?= prebuilt/$(PREBUILT)/sdl/bin/sdl-config
-LOCAL_SDL_CFLAGS := $(shell $(LOCAL_SDL_CONFIG) --cflags)
-LOCAL_SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(LOCAL_SDL_CONFIG) --static-libs))
-
-ifeq ($(HOST_OS),darwin)
-  DARWIN_VERSION := $(strip $(shell sw_vers -productVersion))
-  ifneq ($(filter 10.7 10.7.%,$(DARWIN_VERSION)),)
-    # Lion needs to be forced to link dylib to avoid problems
-    # with the dynamic function lookups in SDL 1.2
-    LOCAL_SDL_LDLIBS += /usr/lib/dylib1.o
-  endif
-endif
-
-LOCAL_SRC_FILES:= \
-        triangleCM.cpp
-
-LOCAL_CFLAGS += $(LOCAL_SDL_CFLAGS) -g -O0
-LOCAL_LDLIBS += $(LOCAL_SDL_LDLIBS)
-
-LOCAL_STATIC_LIBRARIES += libSDL libSDLmain
-
-ifeq ($(HOST_OS),darwin)
-$(call emugl-import,libMac_view)
-endif
-
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/tests/translator_tests/GLES_CM/triangleCM.cpp b/tools/emulator/opengl/tests/translator_tests/GLES_CM/triangleCM.cpp
deleted file mode 100644
index 7d681ad..0000000
--- a/tools/emulator/opengl/tests/translator_tests/GLES_CM/triangleCM.cpp
+++ /dev/null
@@ -1,447 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-//#define GL_API
-//#define GL_APIENTRY
-
-#undef ANDROID
-#include <EGL/egl.h>
-#include <GLES/gl.h>
-
-#ifdef __APPLE__
-extern "C" void * createGLView(void *nsWindowPtr, int x, int y, int width, int height);
-#endif
-
-#undef HAVE_MALLOC_H
-#include <SDL.h>
-#include <SDL_syswm.h>
-
-
-#define WINDOW_WIDTH    500
-#define WINDOW_HEIGHT   500
-
-#define TEX_WIDTH 256
-#define TEX_HEIGHT 256
-
-
-#define F_to_X(d) ((d) > 32767.65535 ? 32767 * 65536 + 65535 :  \
-               (d) < -32768.65535 ? -32768 * 65536 + 65535 : \
-               ((GLfixed) ((d) * 65536)))
-#define X_to_F(x)  ((float)(x))/65536.0f
-
-static EGLint const attribute_list[] = {
-    EGL_RED_SIZE, 1,
-    EGL_GREEN_SIZE, 1,
-    EGL_BLUE_SIZE, 1,
-    EGL_NONE
-};
-
-unsigned char *genTexture(int width, int height, int comp)
-{
-    unsigned char *img = new unsigned char[width * height * comp];
-    unsigned char *ptr = img;
-    for (int i = 0; i < height; i++) {
-        for (int j = 0; j < width; j++) {
-            unsigned char col = ((i / 8 + j / 8) % 2) * 255 ;
-            if (j>(width/2)) col/=2;
-            for (int c = 0; c < comp; c++) {
-                *ptr = col; ptr++;
-            }
-        }
-    }
-    return img;
-}
-
-unsigned char *genRedTexture(int width, int height, int comp)
-{
-    unsigned char *img = new unsigned char[width * height * comp];
-        memset(img,0,width*height*comp);
-    unsigned char *ptr = img;
-    for (int i = 0; i < height; i++) {
-        for (int j = 0; j < width; j++) {
-            unsigned char col = ((i / 8 + j / 8) % 2) * 255 ;
-                        *ptr = col;
-                         ptr+=comp;
-        }
-    }
-    return img;
-}
-
-//mip 0;
-unsigned char *genPalette4_rgb8(int width, int height,int color)
-{
-        int size = width*height/2 + 16*3/*palette size*/;
-    unsigned char *img = new unsigned char[size];
-
-        memset(img,0,size);
-        img[0] = 255; img[1] = 0; img[2] = 0;     // red
-        img[3] = 0; img[4] = 0; img[5] = 255;    //blue
-        img[7] = 128; img[8] = 0; img[9] = 128;  //fucsia
-        //rest of the palette is empty
-
-    unsigned char *ptr = img+(16*3);
-    for (int i = 0; i < (height*width/2); i++) {
-             ptr[i] = (i%2)?0x0|color:0x11|color;
-    }
-    return img;
-}
-
-void usage(const char *progname)
-{
-    fprintf(stderr, "usage: %s [-n <nframes> -i -h]\n", progname);
-    fprintf(stderr, "\t-h: this message\n");
-    fprintf(stderr, "\t-i: immidate mode\n");
-    fprintf(stderr, "\t-n nframes: generate nframes\n");
-    fprintf(stderr, "\t-e: use index arrays\n");
-    fprintf(stderr, "\t-t: use texture\n");
-    fprintf(stderr, "\t-f: use fixed points\n");
-    fprintf(stderr, "\t-p: use point size OES extention\n");
-}
-
-#define SWITCH_SOURCE(add)\
-            if(useConvertedType){                            \
-                if(useFixed){                                \
-                      data = (GLvoid*)(fixedVertices+(add)); \
-                } else {                                     \
-                      data = (GLvoid*)(byteVertices +(add)); \
-                }                                            \
-            } else {                                         \
-                      data = (GLvoid*)(afVertices+(add));    \
-            }                                                \
-
-#ifdef _WIN32
-int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
-#else
-int main(int argc, char **argv)
-#endif
-{
-    GLuint  ui32Vbo = 0; // Vertex buffer object handle
-    GLuint  ui32IndexVbo;
-    GLuint  ui32Texture;
-
-    int nframes = 100;
-    bool immidateMode     = false;
-    bool useIndices       = true;
-    bool useTexture       = false;
-    bool useCompTexture   = false;
-    bool useConvertedType = true;
-    bool useFixed         = false;
-    bool usePoints        = false;
-    bool useCopy          = false;
-    bool useSubCopy       = false;
-
-    int c;
-    extern char *optarg;
-
-    #ifdef _WIN32
-        HWND   windowId = NULL;
-    #elif __linux__
-        Window windowId = NULL;
-    #elif __APPLE__
-        void* windowId = NULL;
-    #endif
-
-        //      // Inialize SDL window
-        //
-        if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_VIDEO)) {
-            fprintf(stderr,"SDL init failed: %s\n", SDL_GetError());
-            return -1;
-        }
-
-        SDL_Surface *surface = SDL_SetVideoMode(WINDOW_WIDTH,WINDOW_HEIGHT, 32, SDL_HWSURFACE);
-        if (surface == NULL) {
-            fprintf(stderr,"Failed to set video mode: %s\n", SDL_GetError());
-            return -1;
-        }
-
-        SDL_SysWMinfo  wminfo;
-        memset(&wminfo, 0, sizeof(wminfo));
-        SDL_GetWMInfo(&wminfo);
-    #ifdef _WIN32
-        windowId = wminfo.window;
-    #elif __linux__
-        windowId = wminfo.info.x11.window;
-    #elif __APPLE__
-        windowId = createGLView(wminfo.nsWindowPtr,0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
-
-    #endif
-
-        int major,minor,num_config;
-        EGLConfig configs[150];
-        EGLSurface egl_surface;
-        EGLContext ctx;
-        EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-        eglInitialize(d,&major,&minor);
-        printf("DISPLAY == %p major =%d minor = %d\n",d,major,minor);
-        eglChooseConfig(d, attribute_list, configs, 150, &num_config);
-        printf("config returned %d\n",num_config);
-        egl_surface = eglCreateWindowSurface(d,configs[0],windowId,NULL);
-        printf("before creating context..\n");
-        ctx = eglCreateContext(d,configs[0],EGL_NO_CONTEXT,NULL);
-        printf("SURFACE == %p CONTEXT == %p\n",egl_surface,ctx);
-        if(eglMakeCurrent(d,egl_surface,egl_surface,ctx)!= EGL_TRUE){
-            printf("make current failed\n");
-            return false;
-        }
-        printf("after make current\n");
-
-        GLenum err = glGetError();
-        if(err != GL_NO_ERROR) {
-        printf("error before drawing ->>> %d  \n",err);
-        } else {
-        printf("no error before drawing\n");
-        }
-
-    if (useTexture) {
-
-        glEnable(GL_TEXTURE_2D);
-        ui32Texture = 1;
-        glBindTexture(GL_TEXTURE_2D, ui32Texture);
-                GLenum err = glGetError();
-
-        unsigned char *pixels = NULL;
-                if(useCompTexture) {
-                        pixels = genPalette4_rgb8(TEX_WIDTH,TEX_HEIGHT,3);
-                        glCompressedTexImage2D(GL_TEXTURE_2D,0,GL_PALETTE4_RGB8_OES,TEX_WIDTH,TEX_HEIGHT,0,3*16+TEX_WIDTH*TEX_HEIGHT/2,pixels);
-
-                } else {
-                        pixels = genTexture(TEX_WIDTH, TEX_HEIGHT, 4);
-            glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, TEX_WIDTH, TEX_HEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
-                }
-
-        delete pixels;
-
-                err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error %d after image \n",err);
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-                err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error after min filter \n");
-        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-                err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error after mag filter \n");
-        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-                err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error after env mode \n");
-
-                if(useCompTexture) {
-                    pixels = genPalette4_rgb8(TEX_WIDTH,TEX_HEIGHT,1);
-                    glCompressedTexSubImage2D(GL_TEXTURE_2D,0,TEX_WIDTH/4,TEX_HEIGHT/4,TEX_WIDTH/8,TEX_HEIGHT/8,GL_PALETTE4_RGB8_OES,3*16+(TEX_WIDTH*TEX_HEIGHT/128),pixels);
-                } else {
-            pixels = genRedTexture(TEX_WIDTH/8, TEX_HEIGHT/8, 4);
-                    glTexSubImage2D(GL_TEXTURE_2D,0,TEX_WIDTH/4,TEX_HEIGHT/4,TEX_WIDTH/8,TEX_HEIGHT/8,GL_RGBA,GL_UNSIGNED_BYTE,pixels);
-                }
-                 err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error %d after subimage \n",err);
-        delete pixels;
-
-    }
-
-    glClearColor(0.6f, 0.8f, 1.0f, 1.0f); // clear blue
-
-    float afVertices[] = {  -0.4f,-0.4f,0.0f, // Position
-                 1.0f,0.0f,0.0f,1.0f, // Color
-                 0.0f, 0.0f, // texture
-                 12.f, //point size
-
-                 0.4f,-0.4f,0.0f,
-                 0.0f,1.0f,0.0f,1.0f,
-                 1.0f, 0.0f,
-                 47.0f,
-
-                 0.0f,0.4f,0.0f,
-                 0.0f,0.0f,1.0f,1.0f,
-                 0.5f, 1.0f,
-                 14.0f
-    };
-
-#define MAX_T 1
-#define MID_T 0
-#define MIN_T 0
-
-    GLbyte byteVertices[] = { -1,-1,0, // Position
-                             255,0,0,255, // Color
-                             MIN_T, MIN_T, // texture
-                             12, //point size
-
-                             1,-1,0,
-                             0,255,0,255,
-                             MAX_T,MIN_T,
-                             47,
-
-                            0,1,0,
-                            0,0,255,255,
-                            MID_T, MAX_T,
-                            14
-    };
-
-    GLfixed fixedVertices[] = { F_to_X(-0.4f),F_to_X(-0.4f),F_to_X(0.0f), // Position
-                    F_to_X(1.0f),F_to_X(0.0f),F_to_X(0.0f),F_to_X(1.0f), // Color
-                    F_to_X(0.0f),F_to_X(0.0f), // texture
-                    F_to_X(12.0f),//points size
-
-                    F_to_X(0.4f),F_to_X(-0.4f),F_to_X(0.0f),
-                    F_to_X(0.0f),F_to_X(1.0f),F_to_X(0.0f),F_to_X(1.0f),
-                    F_to_X(1.0f),F_to_X( 0.0f),
-                    F_to_X(30.0f),
-
-                    F_to_X(0.0f),F_to_X(0.4f),F_to_X(0.0f),
-                    F_to_X(0.0f),F_to_X(0.0f),F_to_X(1.0f),F_to_X(1.0f),
-                    F_to_X(0.5f), F_to_X(1.0f),
-                    F_to_X(30.0)
-    };
-
-    unsigned short indices[] = { 2, 1, 0 };
-
-    if (!immidateMode) {
-        glGenBuffers(1, &ui32Vbo);
-        ui32Vbo = 1;
-         printf("ui32Vbo = %d\n", ui32Vbo);
-
-        glBindBuffer(GL_ARRAY_BUFFER, ui32Vbo);
-        void* data = (void*)afVertices;
-        unsigned int uiSize = 3*(sizeof(float)*10);
-        if(useConvertedType){
-           if(useFixed){
-               data = (void*)fixedVertices;
-           } else {
-               data   = (void*)byteVertices;
-               uiSize = 3*(sizeof(GLbyte)*10);
-           }
-        }
-        glBufferData(GL_ARRAY_BUFFER, uiSize,data, GL_STATIC_DRAW);
-
-        ui32IndexVbo = 2;
-        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ui32IndexVbo);
-        glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
-    }
-
-    // Draws a triangle for 800 frames
-    float angle = 0.0;
-    glMatrixMode(GL_PROJECTION);
-    glLoadIdentity();
-    glMatrixMode(GL_MODELVIEW);
-    glLoadIdentity();
-
-    GLvoid* arr = NULL;
-    GLenum  type;
-    GLenum  drawType;
-    GLenum  colorType;
-    int     size_of;
-
-    if(useConvertedType){
-        if(useFixed)
-        {
-            arr = fixedVertices;
-            colorType = type = GL_FIXED;
-            size_of = sizeof(GLfixed);
-        } else {
-            arr = byteVertices;
-            colorType = GL_UNSIGNED_BYTE;
-            type = GL_BYTE;
-            size_of = sizeof(GLbyte);
-        }
-    }else {
-        arr = afVertices;
-        colorType = type = GL_FLOAT;
-        size_of = sizeof(float);
-    }
-
-    if(usePoints)
-    {
-        drawType = GL_POINTS;
-    }
-    else
-        drawType = GL_TRIANGLES;
-
-    GLvoid* data = NULL;
-    for (int i = 0; i < 100; i++) {
-
-        glClear(GL_COLOR_BUFFER_BIT);
-        glPushMatrix();
-        glRotatef(angle, 0.0, 0.0, 1.0);
-        angle += 360.0 / nframes;
-        // Enable vertex arrays
-        glEnableClientState(GL_VERTEX_ARRAY);
-        if (immidateMode) {
-            glVertexPointer(3,type, size_of * 10, arr);
-        } else {
-            glVertexPointer(3,type, size_of * 10, 0);
-        }
-
-        // Set color data in the same way
-        glEnableClientState(GL_COLOR_ARRAY);
-        if (immidateMode) {
-            SWITCH_SOURCE(3)
-            glColorPointer(4, colorType, size_of * 10, data);
-        } else {
-            glColorPointer(4,colorType,size_of * 10, (GLvoid*) (size_of * 3) );
-        }
-        if (useTexture) {
-            glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-            if (immidateMode) {
-                SWITCH_SOURCE(7)
-                glTexCoordPointer(2, type, size_of * 10,data);
-            } else {
-                glTexCoordPointer(2, type, size_of * 10, (GLvoid*)(size_of * 7));
-            }
-        }
-        if(usePoints)
-        {
-            glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
-            if (immidateMode) {
-                SWITCH_SOURCE(9)
-                glPointSizePointerOES(type,size_of * 10,data);
-                        } else {
-                glPointSizePointerOES(type,size_of * 10,(GLvoid*)(size_of * 9));
-                        }
-        }
-
-        if (useIndices) {
-            if (immidateMode) {
-                glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
-                glDrawElements(drawType, 3, GL_UNSIGNED_SHORT, indices);
-            } else {
-                glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ui32IndexVbo);
-                glDrawElements(drawType, 3, GL_UNSIGNED_SHORT, 0);
-            }
-        } else {
-            glDrawArrays(drawType, 0, 3);
-        }
-
-                GLenum err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf(" error %d has occured while drawing\n",err);
-
-
-        glPopMatrix();
-                eglSwapBuffers(d,egl_surface);
-
-                if(useTexture && useCopy)
-                    glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,0,0,256,256,0);
-                else if(useTexture && useSubCopy)
-                    glCopyTexSubImage2D(GL_TEXTURE_2D,0,100,100,WINDOW_WIDTH/2,WINDOW_HEIGHT/2,50,50);
-    }
-                err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error ->>> %d  \n",err);
-        eglDestroySurface(d,egl_surface);
-        eglDestroyContext(d,ctx);
-
-// Just wait until the window is closed
-        SDL_Event ev;
-        while( SDL_WaitEvent(&ev) ) {
-            if (ev.type == SDL_QUIT) {
-                break;
-            }
-        }
-    return 0;
-}
-
-
diff --git a/tools/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk b/tools/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk
deleted file mode 100644
index efbe6bd..0000000
--- a/tools/emulator/opengl/tests/translator_tests/GLES_V2/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-$(call emugl-begin-host-executable,triangleV2)
-$(call emugl-import,libEGL_translator libGLES_V2_translator)
-
-PREBUILT := $(HOST_PREBUILT_TAG)
-LOCAL_SDL_CONFIG ?= prebuilt/$(PREBUILT)/sdl/bin/sdl-config
-LOCAL_SDL_CFLAGS := $(shell $(LOCAL_SDL_CONFIG) --cflags)
-LOCAL_SDL_LDLIBS := $(filter-out %.a %.lib,$(shell $(LOCAL_SDL_CONFIG) --static-libs))
-
-LOCAL_SRC_FILES:= \
-        triangleV2.cpp
-
-LOCAL_CFLAGS += $(LOCAL_SDL_CFLAGS) -g -O0
-LOCAL_LDLIBS += $(LOCAL_SDL_LDLIBS)
-
-LOCAL_STATIC_LIBRARIES += libSDL libSDLmain
-
-ifeq ($(HOST_OS),darwin)
-DARWIN_VERSION := $(strip $(shell sw_vers -productVersion))
-ifneq ($(filter 10.7 10.7.%,$(DARWIN_VERSION)),)
-  # Lion needs to be forced to link dylib to avoid problems
-  # with the dynamic function lookups in SDL 1.2
-  LOCAL_LDLIBS += /usr/lib/dylib1.o
-endif
-$(call emugl-import,libMac_view)
-endif
-
-$(call emugl-end-module)
-
diff --git a/tools/emulator/opengl/tests/translator_tests/GLES_V2/triangleV2.cpp b/tools/emulator/opengl/tests/translator_tests/GLES_V2/triangleV2.cpp
deleted file mode 100644
index d231b36..0000000
--- a/tools/emulator/opengl/tests/translator_tests/GLES_V2/triangleV2.cpp
+++ /dev/null
@@ -1,441 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-//#define GL_API
-//#define GL_APIENTRY
-
-#undef ANDROID
-#include <EGL/egl.h>
-#include <GLES2/gl2.h>
-
-#ifdef __APPLE__
-extern "C" void * createGLView(void *nsWindowPtr, int x, int y, int width, int height);
-#endif
-
-#undef HAVE_MALLOC_H
-#include <SDL.h>
-#include <SDL_syswm.h>
-
-
-#define WINDOW_WIDTH    500
-#define WINDOW_HEIGHT   500
-
-#define TEX_WIDTH 256
-#define TEX_HEIGHT 256
-
-
-#define F_to_X(d) ((d) > 32767.65535 ? 32767 * 65536 + 65535 :  \
-               (d) < -32768.65535 ? -32768 * 65536 + 65535 : \
-               ((GLfixed) ((d) * 65536)))
-#define X_to_F(x)  ((float)(x))/65536.0f
-
-//#define __FIXED__
-
-const char *def_vShaderStr =
-       "attribute vec4 vPosition;   \n"
-       "void main()                 \n"
-       "{                           \n"
-       "   gl_Position = vPosition; \n"
-       "}                           \n";
-
-const char *def_fShaderStr =
-       "precision mediump float;                   \n"
-       "void main()                                \n"
-       "{                                          \n"
-#ifndef __FIXED__
-       " gl_FragColor = vec4(0.2, 0.5, 0.1, 1.0); \n"
-#else
-       " gl_FragColor = vec4(0.4, 0.3, 0.7, 1.0); \n"
-#endif
-       "}                                          \n";
-
-static EGLint const attribute_list[] = {
-    EGL_RED_SIZE, 1,
-    EGL_GREEN_SIZE, 1,
-    EGL_BLUE_SIZE, 1,
-    EGL_NONE
-};
-
-unsigned char *genTexture(int width, int height, int comp)
-{
-    unsigned char *img = new unsigned char[width * height * comp];
-    unsigned char *ptr = img;
-    for (int i = 0; i < height; i++) {
-        for (int j = 0; j < width; j++) {
-            unsigned char col = ((i / 8 + j / 8) % 2) * 255 ;
-            for (int c = 0; c < comp; c++) {
-                *ptr = col; ptr++;
-            }
-        }
-    }
-    return img;
-}
-
-unsigned char *genRedTexture(int width, int height, int comp)
-{
-    unsigned char *img = new unsigned char[width * height * comp];
-        memset(img,0,width*height*comp);
-    unsigned char *ptr = img;
-    for (int i = 0; i < height; i++) {
-        for (int j = 0; j < width; j++) {
-            unsigned char col = ((i / 8 + j / 8) % 2) * 255 ;
-                        *ptr = col;
-                         ptr+=comp;
-        }
-    }
-    return img;
-}
-
-
-void printUsage(const char *progname)
-{
-    fprintf(stderr, "usage: %s [options]\n", progname);
-    fprintf(stderr, "\t-vs <filename>  - vertex shader to use\n");
-    fprintf(stderr, "\t-fs <filename>  - fragment shader to use\n");
-}
-
-
-
-GLuint LoadShader(GLenum type,const char *shaderSrc)
-{
-   GLuint shader;
-   GLint compiled;
-   // Create the shader object
-    shader = glCreateShader(type);
-   if(shader == 0)
-       return 0;
-   // Load the shader source
-   glShaderSource(shader, 1, &shaderSrc, NULL);
-    // Compile the shader
-   glCompileShader(shader);
-    // Check the compile status
-   glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
-   if(!compiled)
-   {
-       GLint infoLen = 0;
-       glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
-       if(infoLen > 1)
-       {
-          char* infoLog = (char*)malloc(sizeof(char) * infoLen);
-          glGetShaderInfoLog(shader, infoLen, NULL, infoLog);
-          printf("Error compiling shader:\n%s\n", infoLog);
-          free(infoLog);
-       }
-       glDeleteShader(shader);
-       return 0;
-   }
-   return shader;
-}
-
-const char *readShader(const char *fileName)
-{
-    FILE *fp = fopen(fileName, "rb");
-    if (!fp) return NULL;
-   
-    int bSize = 1024;
-    int nBufs = 1;
-    char *buf = (char *)malloc(bSize);
-    int n;
-    int len = 0;
-    n = fread(&buf[0], 1, bSize, fp);
-    while( n == bSize ) {
-        len += n;
-        nBufs++;
-        buf = (char *)realloc(buf, bSize * nBufs);
-        n = fread(&buf[len], 1, bSize, fp);
-    }
-    len += n;
-
-    buf[len] = '\0';
-    return (const char *)buf;
-}
-
-void dumpUniforms(GLuint program)
-{
-    GLint numU;
-    glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &numU);
-    printf("==== Program %d has %d active uniforms ===\n", program, numU);
-    char name[512];
-    GLsizei len;
-    GLint size;
-    GLenum type;
-    for (int i=0; i<numU; i++) {
-        glGetActiveUniform(program, i,
-                           512, &len, &size, &type, name);
-        printf("\t%s : type=0x%x size=%d\n", name, type, size);
-    }
-}
-
-///
-// Initialize the shader and program object
-//
-int Init(const char *vShaderStr, const char *fShaderStr)
-{
-   GLuint vertexShader;
-   GLuint fragmentShader;
-   GLuint programObject;
-   GLint linked;
-  // Load the vertex/fragment shaders
-  vertexShader = LoadShader(GL_VERTEX_SHADER, vShaderStr);
-  fragmentShader = LoadShader(GL_FRAGMENT_SHADER, fShaderStr);
-  // Create the program object
-  programObject = glCreateProgram();
-  if(programObject == 0)
-     return -1;
-  glAttachShader(programObject, vertexShader);
-  glAttachShader(programObject, fragmentShader);
-  // Bind vPosition to attribute 0
-  glBindAttribLocation(programObject, 0, "vPosition");
-  // Link the program
-  glLinkProgram(programObject);
-  // Check the link status
-  glGetProgramiv(programObject, GL_LINK_STATUS, &linked);
-  if(!linked)
-  {
-     GLint infoLen = 0;
-     glGetProgramiv(programObject, GL_INFO_LOG_LENGTH, &infoLen);
-     if(infoLen > 1)
-     {
-        char* infoLog = (char*)malloc(sizeof(char) * infoLen);
-        glGetProgramInfoLog(programObject, infoLen, NULL, infoLog);
-        printf("Error linking program:\n%s\n", infoLog);
-        free(infoLog);
-     }
-     glDeleteProgram(programObject);
-     return -1;
-  }
-
-  // dump active uniforms
-  dumpUniforms(programObject);
-
-  // Store the program object
-#ifndef __FIXED__
-  glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
-#else
-  glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
-#endif
-  return programObject;
-}
-
-
-///
-// Draw a triangle using the shader pair created in Init()
-//
-void Draw(EGLDisplay display,EGLSurface surface,int width,int height,GLuint program)
-{
-#ifndef __FIXED__
-   GLfloat vVertices[] = {0.0f, 0.5f, 0.0f,
-                           -0.5f, -0.5f, 0.0f,
-                           0.5f, -0.5f, 0.0f};
-#else
-
-   GLfixed vVertices[] = {F_to_X(0.0f), F_to_X(0.5f),F_to_X(0.0f),
-                           F_to_X(-0.5f),F_to_X(-0.5f), F_to_X(0.0f),
-                           F_to_X(0.5f),F_to_X(-0.5f),F_to_X(0.0f)};
-#endif    
-   
-    // Set the viewport
-   glViewport(0, 0,width,height);
-    // Clear the color buffer
-   glClear(GL_COLOR_BUFFER_BIT);
-    // Use the program object
-   glUseProgram(program);
-   // Load the vertex data
-#ifndef __FIXED__
-   glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vVertices);
-#else
-   glVertexAttribPointer(0, 3, GL_FIXED, GL_FALSE, 0, vVertices);
-#endif
-   glEnableVertexAttribArray(0);
-   glDrawArrays(GL_TRIANGLES, 0, 3);
-   eglSwapBuffers(display,surface);
-}
-
-#ifdef _WIN32
-char **parseCmdLine(char *cmdLine, int *argc)
-{
-    int argvSize = 10;
-    char **argv = (char **)malloc(argvSize * sizeof(char *));
-    *argc = 0;
-    int i=0;
-    bool prevIsSpace = true;
-    int argStart = 0;
-
-    argv[(*argc)++] = strdup("playdump");
-
-    while(cmdLine[i] != '\0') {
-        bool isSpace = (cmdLine[i] == ' ' || cmdLine[i] == '\t');
-        if ( !isSpace && prevIsSpace ) {
-            argStart = i;
-        }
-        else if (isSpace && !prevIsSpace) {
-            cmdLine[i] = '\0';
-            if (*argc >= argvSize) {
-                argvSize *= 2;
-                argv = (char **)realloc(argv, argvSize * sizeof(char *));
-            }
-            argv[(*argc)++] = &cmdLine[argStart];
-            argStart = i+1;
-        }
-
-        prevIsSpace = isSpace;
-        i++;
-    }
-
-    if (i > argStart) {
-        argv[(*argc)++] = &cmdLine[argStart];
-    }
-    return argv;
-}
-#endif
-
-#ifdef _WIN32
-int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
-#else
-int main(int argc, char **argv)
-#endif
-{
-    GLuint  ui32Vbo = 0; // Vertex buffer object handle
-    GLuint  ui32IndexVbo;
-    GLuint  ui32Texture;
-
-    int nframes = 100;
-    bool immidateMode     = false;
-    bool useIndices       = false;
-    bool useTexture       = true;
-    bool useCompTexture   = false;
-    bool useFixed         = true;
-    bool usePoints        = false;
-    bool useCopy          = false;
-    bool useSubCopy       = false;
-
-#ifdef _WIN32
-    int argc;
-    char **argv = parseCmdLine(lpCmdLine, &argc);
-#endif
-    const char *vShader = def_vShaderStr;
-    const char *fShader = def_fShaderStr;
-
-    for (int i=1; i<argc; i++) {
-        if (!strcmp(argv[i],"-vs")) {
-            if (++i >= argc) {
-                printUsage(argv[0]);
-                return -1;
-            }
-            vShader = readShader(argv[i]);
-            if (!vShader) {
-                vShader = def_vShaderStr;
-                printf("Failed to load vshader %s, using defualt\n", argv[i]);
-            }
-            else {
-                printf("Using vshader %s\n", argv[i]);
-            }
-        }
-        else if (!strcmp(argv[i],"-fs")) {
-            if (++i >= argc) {
-                printUsage(argv[0]);
-                return -1;
-            }
-            fShader = readShader(argv[i]);
-            if (!fShader) {
-                fShader = def_fShaderStr;
-                printf("Failed to load fshader %s, using defualt\n", argv[i]);
-            }
-            else {
-                printf("Using fshader %s\n", argv[i]);
-            }
-        }
-        else {
-            printUsage(argv[0]);
-            return -1;
-        }
-    }
-
-    #ifdef _WIN32
-        HWND   windowId = NULL;
-    #elif __linux__
-        Window windowId = NULL;
-    #elif __APPLE__
-        void* windowId  = NULL;
-    #endif
-
-        //      // Inialize SDL window
-        //
-        if (SDL_Init(SDL_INIT_NOPARACHUTE | SDL_INIT_VIDEO)) {
-            fprintf(stderr,"SDL init failed: %s\n", SDL_GetError());
-            return -1;
-        }
-
-        SDL_Surface *surface = SDL_SetVideoMode(WINDOW_WIDTH,WINDOW_HEIGHT, 32, SDL_HWSURFACE);
-        if (surface == NULL) {
-            fprintf(stderr,"Failed to set video mode: %s\n", SDL_GetError());
-            return -1;
-        }
-
-        SDL_SysWMinfo  wminfo;
-        memset(&wminfo, 0, sizeof(wminfo));
-        SDL_GetWMInfo(&wminfo);
-    #ifdef _WIN32
-        windowId = wminfo.window;
-    #elif __linux__
-        windowId = wminfo.info.x11.window;
-    #elif __APPLE__
-        windowId = createGLView(wminfo.nsWindowPtr,0,0,WINDOW_WIDTH,WINDOW_HEIGHT);
-    #endif
-
-        int major,minor,num_config;
-        int attrib_list[] ={    
-                                EGL_CONTEXT_CLIENT_VERSION, 2,
-                                EGL_NONE
-                           };
-        EGLConfig configs[150];
-        EGLSurface egl_surface;
-        EGLContext ctx;
-        EGLDisplay d = eglGetDisplay(EGL_DEFAULT_DISPLAY);
-        eglInitialize(d,&major,&minor);
-        printf("DISPLAY == %p major =%d minor = %d\n",d,major,minor);
-        eglChooseConfig(d, attribute_list, configs, 150, &num_config);
-        printf("config returned %d\n",num_config);
-        egl_surface = eglCreateWindowSurface(d,configs[0],windowId,NULL);
-        ctx = eglCreateContext(d,configs[0],EGL_NO_CONTEXT,attrib_list);
-        printf("SURFACE == %p CONTEXT == %p\n",egl_surface,ctx);
-        if(eglMakeCurrent(d,egl_surface,egl_surface,ctx)!= EGL_TRUE){
-            printf("make current failed\n");
-            return false;
-        }
-        printf("after make current\n");
-
-        GLenum err = glGetError();
-        if(err != GL_NO_ERROR) {
-        printf("error before drawing ->>> %d  \n",err);
-        } else {
-        printf("no error before drawing\n");
-        }
-
-        int program = Init(vShader, fShader);
-        if(program  < 0){
-            printf("failed init shaders\n");
-            return false;
-        }
-
-        Draw(d,egl_surface,WINDOW_WIDTH,WINDOW_HEIGHT,program);
-
-                err = glGetError();
-                if(err != GL_NO_ERROR)
-            printf("error ->>> %d  \n",err);
-        eglDestroySurface(d,egl_surface);
-        eglDestroyContext(d,ctx);
-
-// Just wait until the window is closed
-        SDL_Event ev;
-        while( SDL_WaitEvent(&ev) ) {
-            if (ev.type == SDL_QUIT) {
-                break;
-            }
-        }
-    return 0;
-}
-
-
diff --git a/tools/emulator/opengl/tests/translator_tests/MacCommon/Android.mk b/tools/emulator/opengl/tests/translator_tests/MacCommon/Android.mk
deleted file mode 100644
index 4c4ae6b..0000000
--- a/tools/emulator/opengl/tests/translator_tests/MacCommon/Android.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-ifeq ($(HOST_OS),darwin)
-$(call emugl-begin-host-static-library,libMac_view)
-
-LIBMACVIEW_FRAMEWORKS := AppKit AudioToolbox AudioUnit
-LIBMACVIEW_PREFIX := -Wl,-framework,
-
-$(call emugl-export,LDLIBS,$(foreach _framework,$(LIBMACVIEW_FRAMEWORKS),$(LIBMACVIEW_PREFIX)$(_framework)))
-LOCAL_SRC_FILES := setup_gl.m
-LOCAL_CFLAGS += -g -O0
-$(call emugl-end-module)
-endif # HOST_OS == darwin
diff --git a/tools/emulator/opengl/tests/translator_tests/MacCommon/setup_gl.m b/tools/emulator/opengl/tests/translator_tests/MacCommon/setup_gl.m
deleted file mode 100644
index 43b72ba..0000000
--- a/tools/emulator/opengl/tests/translator_tests/MacCommon/setup_gl.m
+++ /dev/null
@@ -1,19 +0,0 @@
-#include <stdio.h>
-#include <Cocoa/Cocoa.h>
-
- void * createGLView(void *nsWindowPtr, int x, int y, int width, int height)
-{
-	NSRect contentRect = NSMakeRect(x, y, width, height);
-	NSView *glView = [[NSView alloc] initWithFrame:contentRect];
-	if (glView == nil) {
-		printf("couldn't create opengl view\n");
-		return nil;
-	}
-	[glView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
-	NSWindow *win = (NSWindow *)nsWindowPtr;
-	[[win contentView] addSubview:glView];
-	[win makeKeyAndOrderFront:nil];
-	return (void *)glView;
-}
-
-	
diff --git a/tools/emulator/opengl/tests/ut_rendercontrol_dec/Android.mk b/tools/emulator/opengl/tests/ut_rendercontrol_dec/Android.mk
deleted file mode 100644
index a5a01e8..0000000
--- a/tools/emulator/opengl/tests/ut_rendercontrol_dec/Android.mk
+++ /dev/null
@@ -1,7 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-$(call emugl-begin-host-shared-library,libut_rendercontrol_dec)
-$(call emugl-import, libOpenglCodecCommon)
-$(call emugl-gen-decoder,$(EMUGL_PATH)/tests/ut_rendercontrol_enc,ut_rendercontrol)
-$(call emugl-export,C_INCLUDES,$(EMUGL_PATH)/tests/ut_rendercontrol_enc)
-$(call emugl-end-module)
diff --git a/tools/emulator/opengl/tests/ut_renderer/Android.mk b/tools/emulator/opengl/tests/ut_renderer/Android.mk
deleted file mode 100644
index fe8e7ac..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:=$(call my-dir)
-
-ifeq ($(HOST_OS), linux)
-
-$(call emugl-begin-host-executable,ut_renderer)
-$(call emugl-import,libut_rendercontrol_dec libGLESv1_dec libGLESv2_dec libEGL_host_wrapper)
-
-LOCAL_SRC_FILES := ut_renderer.cpp \
-        RenderingThread.cpp \
-	ReadBuffer.cpp \
-	Renderer.cpp \
-	RendererContext.cpp \
-	RendererSurface.cpp \
-	X11Windowing.cpp
-
-# define PVR_WAR to support imgtec PVR opengl-ES implementation
-#
-# specifically this MACRO enables code that work arounds a bug
-# in the implementation where glTextureParameter(...,GL_TEXTURE_RECT,...)
-# is called would cause a crash if the texture dimensions have not been
-# defined yet.
-
-LOCAL_CFLAGS += -DPVR_WAR
-#LOCAL_CFLAGS += -g -O0
-
-LOCAL_LDLIBS += -lpthread -lX11 -lrt
-
-$(call emugl-end-module)
-
-endif # HOST_OS == linux
diff --git a/tools/emulator/opengl/tests/ut_renderer/NativeWindowing.h b/tools/emulator/opengl/tests/ut_renderer/NativeWindowing.h
deleted file mode 100644
index 9468066..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/NativeWindowing.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _NATIVE_WINDOWING_H
-#define _NATIVE_WINDOWING_H
-
-#include <EGL/egl.h>
-
-class NativeWindowing {
-public:
-    virtual NativeDisplayType getNativeDisplay() = 0;
-    virtual NativeWindowType createNativeWindow(NativeDisplayType dpy, int width, int height) = 0;
-    virtual int destroyNativeWindow(NativeDisplayType dpy, NativeWindowType win) = 0;
-};
-
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/ReadBuffer.cpp b/tools/emulator/opengl/tests/ut_renderer/ReadBuffer.cpp
deleted file mode 100644
index e0073c0..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/ReadBuffer.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "ReadBuffer.h"
-#include <string.h>
-#include <assert.h>
-
-ReadBuffer::ReadBuffer(SocketStream *stream, size_t bufsize)
-{
-    m_size = bufsize;
-    m_stream = stream;
-    m_buf = new unsigned char[m_size];
-    m_validData = 0;
-    m_readPtr = m_buf;
-}
-
-ReadBuffer::~ReadBuffer()
-{
-    delete m_buf;
-}
-
-int ReadBuffer::getData()
-{
-    if (m_validData > 0) {
-        memcpy(m_buf, m_readPtr, m_validData);
-    }
-    m_readPtr = m_buf;
-    // get fresh data into the buffer;
-    int stat = m_stream->recv(m_buf + m_validData, m_size - m_validData);
-    if (stat > 0) {
-        m_validData += (size_t) stat;
-    }
-    return stat;
-}
-
-void ReadBuffer::consume(size_t amount)
-{
-    assert(amount <= m_validData);
-    m_validData -= amount;
-    m_readPtr += amount;
-}
diff --git a/tools/emulator/opengl/tests/ut_renderer/ReadBuffer.h b/tools/emulator/opengl/tests/ut_renderer/ReadBuffer.h
deleted file mode 100644
index b039b19..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/ReadBuffer.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _READ_BUFFER_H
-#define _READ_BUFFER_H
-
-#include "SocketStream.h"
-
-class ReadBuffer {
-public:
-    ReadBuffer(SocketStream *stream, size_t bufSize);
-    ~ReadBuffer();
-    int getData(); // get fresh data from the stream
-    unsigned char *buf() { return m_readPtr; } // return the next read location
-    size_t validData() { return m_validData; } // return the amount of valid data in readptr
-    void consume(size_t amount); // notify that 'amount' data has been consumed;
-private:
-    unsigned char *m_buf;
-    unsigned char *m_readPtr;
-    size_t m_size;
-    size_t m_validData;
-    SocketStream *m_stream;
-};
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp b/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp
deleted file mode 100644
index 22afadb..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/Renderer.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <assert.h>
-#include "RenderingThread.h"
-#include "Renderer.h"
-
-// include operating-system dependent windowing system impelemntation
-#ifdef _WIN32
-#    error "WINDOWS IS NOT SUPPORTED AT THE MOMENT"
-#elif defined __APPLE__
-#    error "Apple OS-X IS NOT SUPPORTED"
-#elif defined (__unix__)
-# include "X11Windowing.h"
-#endif
-
-
-
-
-
-Renderer * Renderer::m_instance = NULL;
-
-Renderer * Renderer::instance()
-{
-    if (m_instance == NULL) m_instance = new Renderer;
-    return m_instance;
-}
-
-Renderer::Renderer()
-{
-    // Unix specific, use your platform specific windowing implementation
-#ifdef __unix__
-    m_nw = new X11Windowing;
-#endif
-
-    m_dpy = eglGetDisplay(m_nw->getNativeDisplay());
-    EGLint major, minor;
-    eglInitialize(m_dpy, &major, &minor);
-    fprintf(stderr, "egl initialized : %d.%d\n", major, minor);
-}
-
-int Renderer::createSurface(RenderingThread *thread, const ClientHandle & handle)
-{
-    android::Mutex::Autolock(this->m_mutex);
-
-    assert(m_surfaces.find(handle) == m_surfaces.end());
-    if (handle.handle == 0) {
-        fprintf(stderr, "trying to create surface for EGL_NO_SURFACE !!!\n");
-        return -1;
-    } else {
-        RendererSurface  *surface = RendererSurface::create(m_dpy, RendererSurface::CONFIG_DEPTH, m_nw);
-        if (surface == NULL) {
-            printf("failed to create surface !!\n");
-            return -1;
-        }
-        m_surfaces.insert(SurfaceMap::value_type(handle, surface));
-    }
-    return 0;
-}
-
-int Renderer::destroySurface(RenderingThread *thread, const ClientHandle &handle)
-{
-    android::Mutex::Autolock(this->m_mutex);
-
-    SurfaceMap::iterator i = m_surfaces.find(handle);
-    if (i == m_surfaces.end()) {
-        printf("removing surface that doesn't exists\n");
-        return -1;
-    }
-    if (i->second->destroy(m_nw)) {
-        m_surfaces.erase(handle);
-    }
-    return 0;
-}
-
-int Renderer::createContext(RenderingThread *thread, const ClientHandle &handle, ClientHandle shareCtx, int version)
-{
-    android::Mutex::Autolock(this->m_mutex);
-
-    assert(m_ctxs.find(handle) == m_ctxs.end());
-    RendererContext *shared = NULL;
-    if (shareCtx.handle != 0) {
-        ContextMap::iterator sctx = m_ctxs.find(shareCtx);
-        if (sctx != m_ctxs.end()) {
-            shared = sctx->second;
-        }
-    }
-
-    RendererContext *ctx =
-        RendererContext::create(m_dpy,
-                                RendererSurface::getEglConfig(m_dpy, RendererSurface::CONFIG_DEPTH),
-                                shared, version);
-    if (ctx == NULL) {
-        fprintf(stderr, "failed to create context\n");
-        return -1;
-    }
-    m_ctxs.insert(ContextMap::value_type(handle, ctx));
-    return 0;
-}
-
-int Renderer::destroyContext(RenderingThread *thread, const ClientHandle &handle)
-{
-    android::Mutex::Autolock(this->m_mutex);
-
-    ContextMap::iterator i = m_ctxs.find(handle);
-    if (i == m_ctxs.end()) {
-        printf("removing context that doesn't exists\n");
-        return -1;
-    }
-    if (i->second->destroy()) {
-        m_ctxs.erase(handle);
-    }
-    return 0;
-}
-
-int Renderer::makeCurrent(RenderingThread *thread,
-                          const ClientHandle &drawSurface,
-                          const ClientHandle &readSurface,
-                          const ClientHandle & ctx)
-{
-    android::Mutex::Autolock(this->m_mutex);
-
-    RendererContext *currentContext = thread->currentContext();
-
-    ContextMap::iterator c = m_ctxs.find(ctx);
-    EGLContext eglContext;
-    if (ctx.handle != 0 && c != m_ctxs.end()) {
-        if (c->second != currentContext) {
-            // new context is set
-            if (currentContext != NULL) currentContext->unref();
-            c->second->ref();
-            eglContext = c->second->eglContext();
-            thread->setCurrentContext(c->second);
-            thread->glDecoder().setContextData(&c->second->decoderContextData());
-            thread->gl2Decoder().setContextData(&c->second->decoderContextData());
-        } else {
-            // same context is already set
-            eglContext = c->second->eglContext();
-        }
-    } else {
-        eglContext = EGL_NO_CONTEXT;
-        if (currentContext != NULL) currentContext->unref();
-        thread->setCurrentContext(NULL);
-        thread->glDecoder().setContextData(NULL);
-        thread->gl2Decoder().setContextData(NULL);
-    }
-
-    EGLSurface draw = EGL_NO_SURFACE;
-    EGLSurface read = EGL_NO_SURFACE;
-    SurfaceMap::iterator i;
-    i = m_surfaces.find(drawSurface);   if (i != m_surfaces.end()) draw = i->second->eglSurface();
-    i = m_surfaces.find(readSurface);   if (i != m_surfaces.end()) read = i->second->eglSurface();
-
-    return eglMakeCurrent(m_dpy, draw, read, eglContext);
-}
-
-int Renderer::swapBuffers(RenderingThread *thread,
-                          const ClientHandle &surface)
-{
-    android::Mutex::Autolock(this->m_mutex);
-
-    SurfaceMap::iterator s = m_surfaces.find(surface);
-    if (s == m_surfaces.end()) {
-        fprintf(stderr, "swapping buffers for non existing surface\n");
-        return -1;
-    }
-    return eglSwapBuffers(m_dpy, s->second->eglSurface());
-}
diff --git a/tools/emulator/opengl/tests/ut_renderer/Renderer.h b/tools/emulator/opengl/tests/ut_renderer/Renderer.h
deleted file mode 100644
index cdf10b6..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/Renderer.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _RENDERER_H_
-#define _RENDERER_H_
-#include <map>
-#include "RendererSurface.h"
-#include "RendererContext.h"
-#include "NativeWindowing.h"
-#include <utils/threads.h>
-
-class RenderingThread;
-
-class Renderer {
-public:
-
-    class ClientHandle {
-    public:
-        unsigned int pid;
-        unsigned int handle;
-        ClientHandle(unsigned int _pid, unsigned int _handle) : pid(_pid), handle(_handle) {}
-
-        bool operator< (const ClientHandle & p) const {
-            bool val = (pid == p.pid) ? handle < p.handle : pid < p.pid;
-            return val;
-        }
-    };
-
-    static Renderer *instance();
-    int createSurface(RenderingThread *thread, const ClientHandle & handle);
-    int destroySurface(RenderingThread *thread, const ClientHandle &handle);
-    int createContext(RenderingThread *thread, const ClientHandle & ctx, const ClientHandle shareCtx, int version);
-    int destroyContext(RenderingThread *thread,const ClientHandle & ctx);
-    int makeCurrent(RenderingThread *thread,
-                    const ClientHandle & drawSurface, const ClientHandle & readSurface, const ClientHandle & ctx);
-    int swapBuffers(RenderingThread *thread, const ClientHandle & surface);
-
-private:
-    typedef std::map<ClientHandle, RendererSurface *> SurfaceMap;
-    typedef std::map<ClientHandle, RendererContext *> ContextMap;
-    static Renderer *m_instance;
-    Renderer();
-    SurfaceMap m_surfaces;
-    ContextMap m_ctxs;
-    NativeWindowing *m_nw;
-    EGLDisplay m_dpy;
-
-    android::Mutex m_mutex; // single global mutex for the renderer class;
-};
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp b/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp
deleted file mode 100644
index 0f93acd..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RendererContext.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RendererContext.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-RendererContext * RendererContext::create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx, int version)
-{
-    EGLContext ctx;
-    EGLContext shared = shareCtx == NULL ? EGL_NO_CONTEXT : shareCtx->eglContext();
-
-    EGLint context_attributes[] = { EGL_CONTEXT_CLIENT_VERSION, 1, EGL_NONE };
-    context_attributes[1] = version;
-
-    ctx = eglCreateContext(dpy, config, shared, context_attributes);
-    if (eglGetError() != EGL_SUCCESS) return NULL;
-
-    return new RendererContext(dpy, ctx, version);
-}
-
-int RendererContext::destroy()
-{
-    if (count() <= 0) {
-        eglDestroyContext(m_dpy, m_ctx);
-        return 1;
-    }
-    return 0;
-}
-
-#ifdef PVR_WAR
-void RendererContext::setActiveTexture(GLenum texture)
-{
-    m_activeTexture = texture - GL_TEXTURE0;
-}
-
-void RendererContext::setTex2DBind(GLuint texture)
-{
-    m_tex2DBind[m_activeTexture] = texture;
-}
-
-GLuint RendererContext::getTex2DBind()
-{
-    return m_tex2DBind[m_activeTexture];
-}
-
-void RendererContext::addPendingCropRect(const int *rect)
-{
-    PendingCropRect *r = new PendingCropRect;
-    r->texture = m_tex2DBind[m_activeTexture];
-    memcpy(r->rect, rect, 4*sizeof(int));
-    m_pendingCropRects.insert(r);
-}
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererContext.h b/tools/emulator/opengl/tests/ut_renderer/RendererContext.h
deleted file mode 100644
index bb24a2e..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RendererContext.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _RENDERER_CONTEXT_H_
-#define _RENDERER_CONTEXT_H_
-
-#include "RendererObject.h"
-#include "GLDecoderContextData.h"
-
-#include <EGL/egl.h>
-#define GL_API
-#define GL_APIENTRY
-#include <GLES/gl.h>
-#include <string.h>
-
-#ifdef PVR_WAR
-#include <set>
-struct PendingCropRect
-{
-    GLuint texture;
-    int rect[4];
-};
-
-typedef std::set<PendingCropRect *> PendingCropRectSet;
-#endif
-
-class RendererContext : public RendererObject {
-public:
-    static RendererContext *create(EGLDisplay dpy, EGLConfig config, RendererContext *shareCtx, int version);
-    EGLContext eglContext() { return m_ctx; }
-    int destroy();
-    GLDecoderContextData & decoderContextData() { return m_contextData; }
-#ifdef PVR_WAR
-    void setActiveTexture(GLenum texture);
-    GLenum getActiveTexture() { return GL_TEXTURE0 + m_activeTexture; }
-    void setTex2DBind(GLuint texture);
-    void setTex2DEnable(bool enable) {
-        m_tex2DEnable[m_activeTexture] = enable;
-    }
-    bool isTex2DEnable(int texunit) { return m_tex2DEnable[texunit]; }
-    GLuint getTex2DBind();
-    void addPendingCropRect(const int *rect);
-    PendingCropRectSet &getPendingCropRects() { return m_pendingCropRects; }
-
-    void setClientActiveTexture(GLenum texture) { m_clientActiveTexture = texture - GL_TEXTURE0; }
-    GLenum getClientActiveTexture() { return m_clientActiveTexture + GL_TEXTURE0; }
-    void enableClientState(GLenum cap, bool enable) {
-        switch(cap) {
-            case GL_VERTEX_ARRAY:
-                m_clientStateEnable[0] = enable;
-                break;
-            case GL_NORMAL_ARRAY:
-                m_clientStateEnable[1] = enable;
-                break;
-            case GL_COLOR_ARRAY:
-                m_clientStateEnable[2] = enable;
-                break;
-            case GL_POINT_SIZE_ARRAY_OES:
-                m_clientStateEnable[3] = enable;
-                break;
-            case GL_TEXTURE_COORD_ARRAY:
-                m_clientStateEnable[4 + m_clientActiveTexture] = enable;
-                break;
-        }
-    }
-
-    bool getClientState(GLenum cap, int texUnit) {
-        switch(cap) {
-            case GL_VERTEX_ARRAY:
-                return m_clientStateEnable[0];
-            case GL_NORMAL_ARRAY:
-                return m_clientStateEnable[1];
-            case GL_COLOR_ARRAY:
-                return m_clientStateEnable[2];
-            case GL_POINT_SIZE_ARRAY_OES:
-                return m_clientStateEnable[3];
-                break;
-            case GL_TEXTURE_COORD_ARRAY:
-                return m_clientStateEnable[4 + texUnit];
-                break;
-        }
-        return false;
-    }
-#endif
-
-private:
-    EGLDisplay m_dpy;
-    EGLContext m_ctx;
-    GLDecoderContextData m_contextData;
-    int m_version;
-
-    RendererContext(EGLDisplay dpy, EGLContext ctx, int version) :
-        m_dpy(dpy),
-        m_ctx(ctx),
-        m_version(version)
-    {
-#ifdef PVR_WAR
-        m_activeTexture = 0;
-        m_clientActiveTexture = 0;
-        memset(m_tex2DBind, 0, 8*sizeof(GLuint));
-        memset(m_tex2DEnable, 0, 8*sizeof(bool));
-        memset(m_clientStateEnable, 0, 16*sizeof(bool));
-#endif
-    }
-
-#ifdef PVR_WAR
-    int m_tex2DBind[8];
-    bool m_tex2DEnable[8];
-    int m_activeTexture;
-    int m_clientActiveTexture;
-    bool m_clientStateEnable[16];
-    PendingCropRectSet m_pendingCropRects;
-#endif
-};
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererObject.h b/tools/emulator/opengl/tests/ut_renderer/RendererObject.h
deleted file mode 100644
index 18c89be..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RendererObject.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _RENDERER_OBJECT_H_
-#define _RENDERER_OBJECT_H_
-
-class RendererObject {
-public:
-    RendererObject() { m_count = 0; }
-
-    int count() { return m_count; }
-    void ref() { m_count++; }
-    void unref() { m_count--; }
-private:
-    int m_count;
-};
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererSurface.cpp b/tools/emulator/opengl/tests/ut_renderer/RendererSurface.cpp
deleted file mode 100644
index 7d8d8c6..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RendererSurface.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RendererSurface.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "NativeWindowing.h"
-
-#define MAX_ATTRIB 100
-
-
-EGLConfig RendererSurface::getEglConfig(EGLDisplay eglDisplay, SurfaceConfig config)
-{
-    EGLConfig eglConfig;
-    int nConfigs;
-
-    EGLint attrib[MAX_ATTRIB];
-    int pos =0;
-
-    attrib[pos++] = EGL_SURFACE_TYPE; attrib[pos++] = EGL_WINDOW_BIT;
-    if (config & CONFIG_DEPTH) {attrib[pos++] = EGL_DEPTH_SIZE; attrib[pos++] = 1;}
-    attrib[pos++] = EGL_NONE;
-
-    if (!eglChooseConfig(eglDisplay, attrib, &eglConfig, 1, &nConfigs)) {
-        return 0;
-    }
-    /***/
-    int ibuf;
-    if (eglGetConfigAttrib(eglDisplay, eglConfig, EGL_BUFFER_SIZE, &ibuf)) {
-        fprintf(stderr, "EGL COLOR Buffer size: %d\n", ibuf);
-    } else {
-        fprintf(stderr, "eglGetConfigAttrib error: %d\n", eglGetError());
-    }
-    if (eglGetConfigAttrib(eglDisplay, eglConfig, EGL_DEPTH_SIZE, &ibuf)) {
-        fprintf(stderr, "EGL DEPTH Buffer size: %d\n", ibuf);
-    } else {
-        fprintf(stderr, "eglGetConfigAttrib error: %d\n", eglGetError());
-    }
-    /***/
-
-
-    if (nConfigs != 1) {
-        return 0;
-    }
-    return eglConfig;
-}
-
-RendererSurface * RendererSurface::create(EGLDisplay eglDisplay, SurfaceConfig config, NativeWindowing *nw)
-{
-    int width = 0, height = 0;
-    const char* env;
-
-    env = getenv("ANDROID_WINDOW_WIDTH");
-    if (env && *env) {
-        width = atoi(env);
-    }
-    env = getenv("ANDROID_WINDOW_HEIGHT");
-    if (env && *env) {
-        height = atoi(env);
-    }
-    if (width <= 160)
-        width = DEFAULT_WIDTH;
-    if (height <= 160)
-        height = DEFAULT_HEIGHT;
-
-    printf("%s: Using width=%d height=%d\n", __FUNCTION__, width, height);
-
-    EGLConfig eglConfig = getEglConfig(eglDisplay, config);
-    if (eglConfig == 0) {
-        return NULL;
-    }
-
-    NativeWindowType window = nw->createNativeWindow(nw->getNativeDisplay(), width, height);
-    if (window == 0) {
-        return NULL;
-    }
-
-    EGLSurface eglSurface = eglCreateWindowSurface(eglDisplay,
-                                                   eglConfig,
-                                                   window, NULL);
-
-    if (eglGetError() != EGL_SUCCESS) {
-        return NULL;
-    }
-
-    return new RendererSurface(eglDisplay, window, eglSurface, eglConfig);
-}
-
-int RendererSurface::destroy(NativeWindowing *nw)
-{
-    eglDestroySurface(m_eglDisplay, m_eglSurface);
-    nw->destroyNativeWindow(nw->getNativeDisplay(), m_window);
-    return 1;
-}
-
diff --git a/tools/emulator/opengl/tests/ut_renderer/RendererSurface.h b/tools/emulator/opengl/tests/ut_renderer/RendererSurface.h
deleted file mode 100644
index 4f6709c..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RendererSurface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _RENDERER_SURFACE_H_
-#define _RENDERER_SURFACE_H_
-
-#include <EGL/egl.h>
-#include "NativeWindowing.h"
-#include "RendererObject.h"
-
-#define DEFAULT_HEIGHT 480
-#define DEFAULT_WIDTH 320
-
-class RendererSurface : public RendererObject {
-public:
-    typedef enum { CONFIG_DEPTH = 1 << 0 } SurfaceConfig;
-
-    EGLSurface eglSurface() { return m_eglSurface; }
-    EGLConfig eglConfig() { return m_config; }
-    EGLDisplay eglDisplay() { return m_eglDisplay; }
-
-    static RendererSurface * create(EGLDisplay eglDisplay, SurfaceConfig config, NativeWindowing *nw);
-    static EGLConfig getEglConfig(EGLDisplay eglDisplay, SurfaceConfig config);
-
-    int destroy(NativeWindowing *nw);
-
-private:
-    RendererSurface(EGLDisplay display, NativeWindowType window, EGLSurface surface, EGLConfig config) :
-        m_eglDisplay(display),
-        m_config(config),
-        m_window(window),
-        m_eglSurface(surface)
-    {}
-
-    EGLDisplay m_eglDisplay;
-    EGLConfig m_config;
-    NativeWindowType m_window;
-    EGLSurface m_eglSurface;
-};
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp b/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp
deleted file mode 100644
index 70eee20..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.cpp
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "RenderingThread.h"
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <pthread.h>
-#include "ReadBuffer.h"
-#include "Renderer.h"
-#include "TimeUtils.h"
-
-#include <GLES/glext.h>
-
-__thread RenderingThread * RenderingThread::m_tls;
-
-#ifdef PVR_WAR
-void RenderingThread::s_glTexParameteriv(GLenum target, GLenum param, const int *p)
-{
-    if (target == GL_TEXTURE_2D && param == GL_TEXTURE_CROP_RECT_OES) {
-        m_tls->m_currentContext->addPendingCropRect(p);
-    } else {
-        m_tls->m_glTexParameteriv(target, param, p);
-    }
-}
-
-void RenderingThread::s_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexfOES(x, y, z, w, h);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort w, GLshort h)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexsOES(x, y, z, w, h);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexiOES(GLint x, GLint y, GLint z, GLint w, GLint h)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexiOES(x, y, z, w, h);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexxOES(x, y, z, w, h);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexfvOES(const GLfloat *coords)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexfvOES(coords);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexsvOES(const GLshort *coords)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexsvOES(coords);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexivOES(const GLint *coords)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexivOES(coords);
-    m_tls->fixTextureEnable();
-}
-
-void RenderingThread::s_glDrawTexxvOES(const GLfixed *coords)
-{
-    m_tls->applyPendingCropRects();
-    m_tls->m_glDrawTexxvOES(coords);
-    m_tls->fixTextureEnable();
-}
-
-
-void RenderingThread::s_glActiveTexture(GLenum texture)
-{
-    if (texture - GL_TEXTURE0 >= m_tls->m_backendCaps.maxTextureUnits) return;
-
-    m_tls->m_currentContext->setActiveTexture(texture);
-    m_tls->m_glActiveTexture(texture);
-}
-
-void RenderingThread::s_glBindTexture(GLenum target, GLuint texture)
-{
-    if (target == GL_TEXTURE_2D) m_tls->m_currentContext->setTex2DBind(texture);
-    m_tls->m_glBindTexture(target, texture);
-}
-
-void RenderingThread::s_glEnable(GLenum cap)
-{
-    if (cap == GL_TEXTURE_2D) m_tls->m_currentContext->setTex2DEnable(true);
-    m_tls->m_glEnable(cap);
-}
-
-void RenderingThread::s_glDisable(GLenum cap)
-{
-    if (cap == GL_TEXTURE_2D) m_tls->m_currentContext->setTex2DEnable(false);
-    m_tls->m_glDisable(cap);
-}
-
-void RenderingThread::s_glClientActiveTexture(GLenum texture)
-{
-    if (texture - GL_TEXTURE0 >= m_tls->m_backendCaps.maxTextureUnits) return;
-    m_tls->m_currentContext->setClientActiveTexture(texture);
-    m_tls->m_glClientActiveTexture(texture);
-}
-
-void RenderingThread::s_glEnableClientState(GLenum cap)
-{
-    m_tls->m_currentContext->enableClientState(cap, true);
-    m_tls->m_glEnableClientState(cap);
-}
-
-void RenderingThread::s_glDisableClientState(GLenum cap)
-{
-    m_tls->m_currentContext->enableClientState(cap, false);
-    m_tls->m_glDisableClientState(cap);
-}
-
-void RenderingThread::applyPendingCropRects()
-{
-    PendingCropRectSet &rset = m_currentContext->getPendingCropRects();
-    if (rset.size() > 0) {
-        GLuint currBindedTex = m_currentContext->getTex2DBind();
-        for (PendingCropRectSet::iterator i = rset.begin();
-             i != rset.end();
-             i++) {
-            m_glBindTexture(GL_TEXTURE_2D, (*i)->texture);
-            m_glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_CROP_RECT_OES, (int *)(*i)->rect);
-            delete (*i);
-        }
-        m_glBindTexture(GL_TEXTURE_2D, currBindedTex);
-        rset.clear();
-    }
-}
-
-void RenderingThread::fixTextureEnable()
-{
-    // restore texture units enable state
-    for (unsigned int i=0; i<m_backendCaps.maxTextureUnits; i++) {
-        m_glActiveTexture(GL_TEXTURE0 + i);
-        if (m_currentContext->isTex2DEnable(i)) {
-            m_glEnable(GL_TEXTURE_2D);
-        }
-        else {
-            m_glDisable(GL_TEXTURE_2D);
-        }
-        m_glClientActiveTexture(GL_TEXTURE0 + i);
-        if (m_currentContext->getClientState(GL_TEXTURE_COORD_ARRAY, i)) {
-            m_glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-        }
-        else {
-            m_glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-        }
-    }
-    // restore current active texture
-    m_glActiveTexture(m_currentContext->getActiveTexture());
-    m_glClientActiveTexture(m_currentContext->getClientActiveTexture());
-
-    // restore other client state enable bits
-    if (m_currentContext->getClientState(GL_VERTEX_ARRAY, 0)) {
-        m_glEnableClientState(GL_VERTEX_ARRAY);
-    }
-    else {
-        m_glDisableClientState(GL_VERTEX_ARRAY);
-    }
-
-    if (m_currentContext->getClientState(GL_NORMAL_ARRAY, 0)) {
-        m_glEnableClientState(GL_NORMAL_ARRAY);
-    }
-    else {
-        m_glDisableClientState(GL_NORMAL_ARRAY);
-    }
-
-    if (m_currentContext->getClientState(GL_COLOR_ARRAY, 0)) {
-        m_glEnableClientState(GL_COLOR_ARRAY);
-    }
-    else {
-        m_glDisableClientState(GL_COLOR_ARRAY);
-    }
-
-    if (m_currentContext->getClientState(GL_POINT_SIZE_ARRAY_OES, 0)) {
-        m_glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
-    }
-    else {
-        m_glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
-    }
-}
-#endif
-
-
-int RenderingThread::s_createContext(uint32_t pid, uint32_t handle, uint32_t shareCtx, int version)
-{
-    return Renderer::instance()->createContext(m_tls, Renderer::ClientHandle(pid, handle),
-                                               Renderer::ClientHandle(pid, shareCtx),
-                                               version);
-
-}
-
-
-int RenderingThread::s_createSurface(uint32_t pid, uint32_t handle)
-{
-    return Renderer::instance()->createSurface(m_tls, Renderer::ClientHandle(pid, handle));
-}
-
-int RenderingThread::s_destroySurface(uint32_t pid, uint32_t handle)
-{
-    return Renderer::instance()->destroySurface(m_tls, Renderer::ClientHandle(pid, handle));
-}
-
-int RenderingThread::s_destroyContext(uint32_t pid, uint32_t handle)
-{
-    return Renderer::instance()->destroyContext(m_tls, Renderer::ClientHandle(pid, handle));
-}
-
-
-int RenderingThread::s_makeCurrent(uint32_t pid, uint32_t drawSurface, uint32_t readSurface, uint32_t ctx)
-{
-    int ret = Renderer::instance()->makeCurrent(m_tls,
-                                             Renderer::ClientHandle(pid, drawSurface),
-                                             Renderer::ClientHandle(pid, readSurface),
-                                             Renderer::ClientHandle(pid, ctx));
-
-    if (ret && ctx) {
-        m_tls->initBackendCaps();
-    }
-
-    return ret;
-}
-
-void RenderingThread::s_swapBuffers(uint32_t pid, uint32_t surface)
-{
-    Renderer::instance()->swapBuffers(m_tls, Renderer::ClientHandle(pid, surface));
-}
-
-
-RenderingThread::RenderingThread(SocketStream *stream) :
-    m_stream(stream),
-    m_currentContext(NULL)
-{
-    m_backendCaps.initialized = false;
-}
-
-int RenderingThread::start(void)
-{
-    if (pthread_create(&m_thread, NULL, s_thread, this) < 0) {
-        perror("pthread_create");
-        return -1;
-    }
-    return 0;
-}
-
-
-void * RenderingThread::s_thread(void *data)
-{
-    RenderingThread *self = (RenderingThread *)data;
-    m_tls = self;
-    return self->thread();
-}
-
-void RenderingThread::initBackendCaps()
-{
-    if (m_backendCaps.initialized) return;
-
-    m_glDec.glGetIntegerv(GL_MAX_TEXTURE_UNITS, (GLint *)&m_backendCaps.maxTextureUnits);
-    m_backendCaps.initialized = true;
-}
-
-void *RenderingThread::thread()
-{
-
-    // initialize our decoders;
-    m_glDec.initGL();
-
-#ifdef PVR_WAR
-    m_glTexParameteriv = m_glDec.set_glTexParameteriv(s_glTexParameteriv);
-    m_glDrawTexfOES = m_glDec.set_glDrawTexfOES(s_glDrawTexfOES);
-    m_glDrawTexsOES = m_glDec.set_glDrawTexsOES(s_glDrawTexsOES);
-    m_glDrawTexiOES = m_glDec.set_glDrawTexiOES(s_glDrawTexiOES);
-    m_glDrawTexxOES = m_glDec.set_glDrawTexxOES(s_glDrawTexxOES);
-    m_glDrawTexfvOES = m_glDec.set_glDrawTexfvOES(s_glDrawTexfvOES);
-    m_glDrawTexsvOES = m_glDec.set_glDrawTexsvOES(s_glDrawTexsvOES);
-    m_glDrawTexivOES = m_glDec.set_glDrawTexivOES(s_glDrawTexivOES);
-    m_glDrawTexxvOES = m_glDec.set_glDrawTexxvOES(s_glDrawTexxvOES);
-    m_glActiveTexture = m_glDec.set_glActiveTexture(s_glActiveTexture);
-    m_glBindTexture = m_glDec.set_glBindTexture(s_glBindTexture);
-    m_glEnable = m_glDec.set_glEnable(s_glEnable);
-    m_glDisable = m_glDec.set_glDisable(s_glDisable);
-    m_glClientActiveTexture = m_glDec.set_glClientActiveTexture(s_glClientActiveTexture);
-    m_glEnableClientState = m_glDec.set_glEnableClientState(s_glEnableClientState);
-    m_glDisableClientState = m_glDec.set_glDisableClientState(s_glDisableClientState);
-#endif
-
-    m_gl2Dec.initGL();
-
-    m_utDec.set_swapBuffers(s_swapBuffers);
-    m_utDec.set_createContext(s_createContext);
-    m_utDec.set_destroyContext(s_destroyContext);
-    m_utDec.set_createSurface(s_createSurface);
-    m_utDec.set_destroySurface(s_destroySurface);
-    m_utDec.set_makeCurrentContext(s_makeCurrent);
-
-    ReadBuffer readBuf(m_stream, DECODER_BUF_SIZE);
-
-    int stats_totalBytes = 0;
-    long long stats_t0 = GetCurrentTimeMS();
-
-    while (1) {
-
-        int stat = readBuf.getData();
-        if (stat == 0) {
-            fprintf(stderr, "client shutdown\n");
-            break;
-        } else if (stat < 0) {
-            perror("getData");
-            break;
-        }
-
-        //
-        // log received bandwidth statistics
-        //
-        stats_totalBytes += readBuf.validData();
-        long long dt = GetCurrentTimeMS() - stats_t0;
-        if (dt > 1000) {
-            float dts = (float)dt / 1000.0f;
-            printf("Used Bandwidth %5.3f MB/s\n", ((float)stats_totalBytes / dts) / (1024.0f*1024.0f));
-            stats_totalBytes = 0;
-            stats_t0 = GetCurrentTimeMS();
-        }
-
-        bool progress = true;
-        while (progress) {
-            progress = false;
-            // we need at least one header (8 bytes) in our buffer
-            if (readBuf.validData() >= 8) {
-                size_t last = m_glDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
-                if (last > 0) {
-                    progress = true;
-                    readBuf.consume(last);
-                }
-            }
-
-            if (readBuf.validData() >= 8) {
-                size_t last = m_gl2Dec.decode(readBuf.buf(), readBuf.validData(), m_stream);
-                if (last > 0) {
-                    readBuf.consume(last);
-                    progress = true;
-                }
-            }
-
-            if (readBuf.validData() >= 8) {
-                size_t last = m_utDec.decode(readBuf.buf(), readBuf.validData(), m_stream);
-                if (last > 0) {
-                    readBuf.consume(last);
-                    progress = true;
-                }
-            }
-        }
-    }
-    // shutdown
-    if (m_currentContext != NULL) {
-        m_currentContext->unref();
-    }
-
-    return NULL;
-}
diff --git a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h b/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h
deleted file mode 100644
index 0b4ebe6..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/RenderingThread.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _RENDERING_THREAD_H_
-#define _RENDERING_THREAD_H_
-
-#include "SocketStream.h"
-#include "GLDecoder.h"
-#include "GL2Decoder.h"
-#include "ut_rendercontrol_dec.h"
-#include <pthread.h>
-
-#define GL_API
-#define GL_APIENTRY
-
-#include <GLES/egl.h>
-#include <GLES/gl.h>
-
-
-#define WINDOW_WIDTH    320
-#define WINDOW_HEIGHT   480
-
-#define DECODER_BUF_SIZE (4 * 1024 * 1024)
-
-class RendererContext;
-
-class RenderingThread {
-public:
-    RenderingThread(SocketStream *stream);
-    int start();
-    void *thread();
-    RendererContext *currentContext() { return m_currentContext; }
-    void setCurrentContext(RendererContext *ctx) { m_currentContext = ctx; }
-    GLDecoder & glDecoder() { return m_glDec; }
-    GL2Decoder & gl2Decoder() { return m_gl2Dec; }
-
-private:
-    void initBackendCaps();
-
-private:
-    GLDecoder   m_glDec;
-    ut_rendercontrol_decoder_context_t m_utDec;
-    GL2Decoder m_gl2Dec;
-
-    SocketStream   *m_stream;
-    pthread_t m_thread;
-    RendererContext * m_currentContext;
-
-    struct BackendCaps {
-        bool initialized;
-        GLuint maxTextureUnits;
-    } m_backendCaps;
-
-    static void * s_thread(void *data);
-    static __thread RenderingThread *m_tls;
-
-    static int s_createContext(uint32_t pid, uint32_t handle, uint32_t shareCtx, int version);
-    static int s_createSurface(uint32_t pid, uint32_t handle);
-    static int s_destroySurface(uint32_t pid, uint32_t handle);
-    static int s_destroyContext(uint32_t pid, uint32_t handle);
-    static int s_makeCurrent(uint32_t pid, uint32_t drawSurface, uint32_t readSurface, uint32_t ctx);
-    static void s_swapBuffers(uint32_t pid, uint32_t surface);
-#ifdef PVR_WAR
-    static void s_glTexParameteriv(GLenum target, GLenum param, const int *p);
-    static void s_glDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat w, GLfloat h);
-    static void s_glDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort w, GLshort h);
-    static void s_glDrawTexiOES(GLint x, GLint y, GLint z, GLint w, GLint h);
-    static void s_glDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed w, GLfixed h);
-    static void s_glDrawTexfvOES(const GLfloat *coords);
-    static void s_glDrawTexsvOES(const GLshort *coords);
-    static void s_glDrawTexivOES(const GLint *coords);
-    static void s_glDrawTexxvOES(const GLfixed *coords);
-
-    static void s_glActiveTexture(GLenum texture);
-    static void s_glBindTexture(GLenum target, GLuint texture);
-    static void s_glEnable(GLenum cap);
-    static void s_glDisable(GLenum cap);
-    static void s_glClientActiveTexture(GLenum texture);
-    static void s_glEnableClientState(GLenum cap);
-    static void s_glDisableClientState(GLenum cap);
-
-    void applyPendingCropRects();
-    void fixTextureEnable();
-
-    glTexParameteriv_server_proc_t m_glTexParameteriv;
-    glDrawTexfOES_server_proc_t m_glDrawTexfOES;
-    glDrawTexiOES_server_proc_t m_glDrawTexiOES;
-    glDrawTexsOES_server_proc_t m_glDrawTexsOES;
-    glDrawTexxOES_server_proc_t m_glDrawTexxOES;
-    glDrawTexfvOES_server_proc_t m_glDrawTexfvOES;
-    glDrawTexivOES_server_proc_t m_glDrawTexivOES;
-    glDrawTexsvOES_server_proc_t m_glDrawTexsvOES;
-    glDrawTexxvOES_server_proc_t m_glDrawTexxvOES;
-    glActiveTexture_server_proc_t m_glActiveTexture;
-    glBindTexture_server_proc_t m_glBindTexture;
-    glEnable_server_proc_t m_glEnable;
-    glDisable_server_proc_t m_glDisable;
-    glClientActiveTexture_server_proc_t m_glClientActiveTexture;
-    glEnableClientState_server_proc_t m_glEnableClientState;
-    glDisableClientState_server_proc_t m_glDisableClientState;
-#endif
-
-};
-
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/X11RendererSurface.cpp b/tools/emulator/opengl/tests/ut_renderer/X11RendererSurface.cpp
deleted file mode 100644
index 121ee87..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/X11RendererSurface.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "X11RendererSurface.h"
-
-NativeDisplayType X11RendererSurface::getNativeDisplay()
-{
-    if (m_display == NULL) {
-        m_display = XOpenDisplay(NULL);
-    }
-    return NativeDisplayType(m_display);
-}
-
-int X11RendererSurface::destoryNativeWindow(NativeWindowType win)
-{
-    if (m_display == NULL) return -1;
-
-    Window x11Window = (Window)(win);
-    return XDestroyWindow(m_display, x11Window);
-}
-
-NativeWindowType GlesX11Win::createNativeWindow()
-{
-
-    getNativeDisplay();
-    if (m_display == NULL) {
-        return -1;
-    }
-
-    long defaultScreen = DefaultScreen( dpy );
-    Window rootWindow = RootWindow(dpy, defaultScreen);
-    int depth = DefaultDepth(dpy, defaultScreen);
-    XVisualInfo *visualInfo = new XVisualInfo;
-
-    XMatchVisualInfo(m_display, defaultScreen, , dpeth, TrueColor, visualInfo);
-    if (visualInfo == NULL) {
-        fprintf(stderr, "couldn't find matching visual\n");
-        return -1;
-    }
-
-    Colormap x11Colormap = XCreateColormap(m_display, rootWindow, visualInfo->visual, AllocNone);
-    XSetWindowAttributes sWA;
-    sWA.Colormap = x11Colormap;
-    sWA.event_mask = StructureNotifyMask | ExposureMask;
-    unsigned int eventMask = CWBackPixel | CWBorderPixel | CWEventMask | CWColormap;
-
-    Window win = XCreateWindow( m_display,
-                                rootWindow,
-                               0, 0, width, height,
-                                 0, CopyFromParent, InputOutput,
-                               CopyFromParent, eventMask, &sWA);
-
-    XMapWindow(m_display, win);
-    XFlush(m_display);
-    return NativeWindowType(win);
-}
-
diff --git a/tools/emulator/opengl/tests/ut_renderer/X11RendererSurface.h b/tools/emulator/opengl/tests/ut_renderer/X11RendererSurface.h
deleted file mode 100644
index be9bcec..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/X11RendererSurface.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _X11_RENDERER_SURFACE_H_
-#define _X11_RENDERER_SURFACE_H_
-
-#include <X11/Xutil.h>
-#include <X11/Xlib.h>
-#include <EGL/egl.h>
-
-include "RendererSurface.h"
-
-class X11RendererSurface : public RendererSurface
-{
-public:
-    X11RendererSurface() : RendererSurface() {
-        m_display = NULL;
-    }
-    NativeDisplayType getNativeDisplay();
-    NativeWindowType createNativeWindow();
-    int destroyNativeWindow(NativeWindowType win);
-private:
-    Display m_display;
-};
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/X11Windowing.cpp b/tools/emulator/opengl/tests/ut_renderer/X11Windowing.cpp
deleted file mode 100644
index cc94fdd..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/X11Windowing.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include "X11Windowing.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-#define DEBUG 0
-#if DEBUG
-#  define D(...) printf(__VA_ARGS__), printf("\n")
-#else
-#  define D(...) ((void)0)
-#endif
-
-/* Try to remember the window position between creates/destroys */
-static int X11_wmXPos = 100;
-static int X11_wmYPos = 100;
-
-static int X11_wmXAdjust = 0;
-static int X11_wmYAdjust = 0;
-
-static void
-get_window_pos( Display *disp, Window win, int *px, int *py )
-{
-    Window  child;
-
-    XTranslateCoordinates( disp, win, DefaultRootWindow(disp),  0, 0, px, py, &child );
-}
-
-
-static void
-set_window_pos(Display *disp, Window win, int x, int y)
-{
-    int   xNew, yNew;
-    int   xAdjust = X11_wmXAdjust;
-    int   yAdjust = X11_wmYAdjust;
-
-    /* this code is tricky because some window managers, but not all,
-     * will translate the final window position by a given offset
-     * corresponding to the frame decoration.
-     *
-     * so we first try to move the window, get the position that the
-     * window manager has set, and if they are different, re-position the
-     * window again with an adjustment.
-     *
-     * this causes a slight flicker since the window 'jumps' very
-     * quickly from one position to the other.
-     */
-
-    D("%s: move to [%d,%d] adjusted to [%d,%d]", __FUNCTION__,
-      x, y, x+xAdjust, y+yAdjust);
-    XMoveWindow(disp, win, x + xAdjust, y + yAdjust);
-    XSync(disp, True);
-    get_window_pos(disp, win, &xNew, &yNew);
-    if (xNew != x || yNew != y) {
-        X11_wmXAdjust = xAdjust = x - xNew;
-        X11_wmYAdjust = yAdjust = y - yNew;
-        D("%s: read pos [%d,%d], recomputing adjust=[%d,%d] moving to [%d,%d]\n",
-          __FUNCTION__, xNew, yNew, xAdjust, yAdjust, x+xAdjust, y+yAdjust);
-        XMoveWindow(disp, win, x + xAdjust, y + yAdjust );
-    }
-    XSync(disp, False);
-}
-
-
-NativeDisplayType X11Windowing::getNativeDisplay()
-{
-    Display *dpy = XOpenDisplay(NULL);
-    return (NativeDisplayType)dpy;
-}
-
-NativeWindowType X11Windowing::createNativeWindow(NativeDisplayType _dpy, int width, int height)
-{
-    Display *dpy = (Display *) _dpy;
-
-    long defaultScreen = DefaultScreen( dpy );
-    Window rootWindow = RootWindow(dpy, defaultScreen);
-    int depth = DefaultDepth(dpy, defaultScreen);
-    XVisualInfo *visualInfo = new XVisualInfo;
-
-    XMatchVisualInfo(dpy, defaultScreen, depth, TrueColor, visualInfo);
-    if (visualInfo == NULL) {
-        fprintf(stderr, "couldn't find matching visual\n");
-        return NULL;
-    }
-
-    Colormap x11Colormap = XCreateColormap(dpy, rootWindow, visualInfo->visual, AllocNone);
-    XSetWindowAttributes sWA;
-    sWA.colormap = x11Colormap;
-    sWA.event_mask = StructureNotifyMask | ExposureMask;
-    sWA.background_pixel = 0;
-    sWA.border_pixel = 0;
-    unsigned int attributes_mask = CWBackPixel | CWBorderPixel | CWEventMask | CWColormap;
-
-    Window win = XCreateWindow( dpy,
-                                rootWindow,
-                                X11_wmXPos, X11_wmYPos, width, height,
-                                0, CopyFromParent, InputOutput,
-                                CopyFromParent, attributes_mask, &sWA);
-
-    XMapWindow(dpy, win);
-    XFlush(dpy);
-    set_window_pos(dpy, win, X11_wmXPos, X11_wmYPos);
-    return NativeWindowType(win);
-}
-
-int X11Windowing::destroyNativeWindow(NativeDisplayType _dpy, NativeWindowType _win)
-{
-    Display *dpy = (Display *)_dpy;
-    Window win = (Window)_win;
-    get_window_pos(dpy, win, &X11_wmXPos, &X11_wmYPos);
-    D("%s: Saved window position [%d, %d]\n", __FUNCTION__, X11_wmXPos, X11_wmYPos);
-    XDestroyWindow(dpy, win);
-    XFlush(dpy);
-    return 0;
-}
diff --git a/tools/emulator/opengl/tests/ut_renderer/X11Windowing.h b/tools/emulator/opengl/tests/ut_renderer/X11Windowing.h
deleted file mode 100644
index 0f0c76b..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/X11Windowing.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#ifndef _X11WINDOWING_H_
-#define _X11WINDOWING_H_
-
-#include "NativeWindowing.h"
-
-class X11Windowing : public NativeWindowing {
-    NativeDisplayType getNativeDisplay();
-    NativeWindowType createNativeWindow(NativeDisplayType _dpy, int width, int height);
-    int destroyNativeWindow(NativeDisplayType dpy, NativeWindowType win);
-};
-
-#endif
diff --git a/tools/emulator/opengl/tests/ut_renderer/ut_renderer.cpp b/tools/emulator/opengl/tests/ut_renderer/ut_renderer.cpp
deleted file mode 100644
index f2b2bc3..0000000
--- a/tools/emulator/opengl/tests/ut_renderer/ut_renderer.cpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-* Copyright (C) 2011 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include "codec_defs.h"
-#include "RenderingThread.h"
-#include "TcpStream.h"
-#ifndef _WIN32
-#include "UnixStream.h"
-#endif
-
-
-int main(int argc, char **argv)
-{
-#ifdef _WIN32
-    TcpStream *socket = new TcpStream();
-
-    if (socket->listen(CODEC_SERVER_PORT) < 0) {
-        perror("listen");
-        exit(1);
-    }
-#else
-    UnixStream *socket = new UnixStream();
-
-    if (socket->listen(CODEC_SERVER_PORT) < 0) {
-        perror("listen");
-        exit(1);
-    }
-#endif
-
-    printf("waiting for client connection on port: %d\n", CODEC_SERVER_PORT);
-    while (1) {
-        // wait for client connection
-        SocketStream  *glStream = socket->accept();
-        if (glStream == NULL) {
-            printf("failed to get client.. aborting\n");
-            exit(3);
-        }
-        printf("Got client connection, creating a rendering thread;\n");
-        // create a thread to handle this connection
-        RenderingThread *rt = new RenderingThread(glStream);
-        rt->start();
-    }
-
-    return 0;
-}
-
-
diff --git a/tools/emulator/system/camera/JpegCompressor.h b/tools/emulator/system/camera/JpegCompressor.h
index 1f97ae4..504ffcd 100644
--- a/tools/emulator/system/camera/JpegCompressor.h
+++ b/tools/emulator/system/camera/JpegCompressor.h
@@ -23,6 +23,7 @@
  */
 
 #include <YuvToJpegEncoder.h>
+#include <utils/threads.h>
 
 namespace android {
 
